Archive integration is very useful because we usually download and upload archives in order to transfer folders over the Internet. By providing simple functions and GTK+ widgets, developers can easily integrate archives support into their applications.

FreeBSD porting is a work not only to let GNOME build and work out-of-the-box on FreeBSD but also to keep GNOME portable across different operating systems and compilers. GNOME version on *BSD will be more up-to-date, and package maintainers can be notified about broken GNOME modules right after the commit.

This Slide

Download this slide and its source code here:

Note These download links may not be always alive. Please download them now.
Tip There are many links included in this slide. Some links may not be shown during this talk. If you are interested in them, please download this slide and view it on your device.

Archives Integration

New library - gnome-autoar

gnome-autoar Functions and Goals

gnome-autoar Non-goals

Using gnome-autoar

  1. Retrieve user settings using autoar_pref_new_with_gsettings()
  2. Create an object to do the work using autoar_create_new() or autoar_extract_new()
  3. Connect callbacks to signals you are interested in, such as progress and completed
  4. Start the work using autoar_create_start_async() or autoar_extract_start_async()

Automatically create archives

Automatically extract archives

Epiphany with Archives Integration (1)

Epiphany with Archives Integration (2)

Epiphany with Archives Integration (3)

images/Epiphany-Upload-Dialog.png

Evolution with Archives Integration (1)

Evolution with Archives Integration (2)

images/Evolution-Attachment-Save-Dialog.png

Evolution with Archives Integration (3)

Empathy with Archives Integration (1)

Empathy with Archives Integration (2)

Common problems

When users need to create archives in order to transfer folders, temporary archives will be created under temporary directories used by the applications. However, files in temporary directories may not be removed after applications exit, which causes possbily wasted disk space.

Archive formats selecting menu

Archive formats selecting dialog

Possible problems of archive formats selecting dialog

gnome-autoar API

gnome-autoar archive format workaround

gnome-autoar signal emission hacks

gnome-autoar Security (1)

gnome-autoar Security (2)

gnome-autoar Security (3)

lrwxrwxrwx  0 test users   0 May  3 23:38 rs/.git/refs -> ../../../.repo/projects/frameworks/rs.git/refs
drwxr-xr-x  0 test users   0 May  3 23:27 rs/.git/logs/refs/remotes/
drwxr-xr-x  0 test users   0 May  3 23:27 rs/.git/refs/tags/
-rw-r--r--  0 test users  41 May  3 23:27 rs/.git/refs/tags/android-4.4_r1

gnome-autoar Stability

gnome-autoar Portibility

gnome-autoar Unfinished Functions

FreeBSD Porting

FreeBSD ports and packages

Search result of desktop environement packages using pkg search or make quichsearch in FreeBSD ports:

Desktop Ports Version

Xfce

x11-wm/xfce4

4.10

Latest version

KDE

x11/kde4

4.12.5

Released less than one month ago

Enlightenment

x11-wm/enlightenment

0.17.5

Released half a year ago

GNOME

x11/gnome2

2.32.1

Released in 2010 (no longer maintained by upstream)

GNOME packages in FreeBSD is outdated!

FreeBSD GNOME Porject

MarcusCom ports

Before this project - Using the MarcusCom ports

Before this project - Building GNOME using JHBuild

2013 status of GNOME on FreeBSD

2014 status of GNOME on FreeBSD

Who work on this project?

Here is the problem summary

FreeBSD Problem - KMS drivers

FreeBSD

FreeBSD Problem - .pc files missing

FreeBSD

Libtool Problem - Libtool is broken on FreeBSD

Libtool

FreeBSD Problem - .la files installed

FreeBSD

FreeBSD Problem - Wrong D-Bus machine-id file path

FreeBSD

FreeBSD Problem - Namespace conflict

FreeBSD

GNOME Problem - Hard-coded interpreter path

GNOME

GNOME Problem - Hard-coded command name

GNOME

GNOME Problem - "Bashisms"

GNOME

GNOME Problem - Non-POSIX command line option

GNOME

GNOME Problem - Behavior difference on non-Linux system

GNOME

GNOME Problem - User variables are overrided in Makefiles

GNOME

GNOME Problem - Function return type mismatch

GNOME

int my_object_run (MyObject* myobj, int do_something) {
  g_return_if_fail (MY_IS_OBJECT (myobj));
  /* other code */
}

GNOME Problem - Wrong main function declaration

GNOME

GNOME Problem - C99 inline functions

GNOME

inline int func (int arg) {
  return arg + 1234 /* some_result*/;
}

GNOME Problem - Format string troubles

GNOME

GNOME Problem - Missing #include

GNOME

GNOME Problem - Missing or non-existent libraries

GNOME

AC_CHECK_LIB(c, dlsym, LIBDL="", [AC_CHECK_LIB(dl, dlsym, LIBDL="-ldl")])
AC_SUBST(LIBDL)

GNOME Problem - Non-POSIX LC_* and _NL_* constants

GNOME

GNOME Problem - Non-POSIX C functions

GNOME

GNOME Problem - "Linuxisms"

GNOME

GNOME Problem - Bad X Window operations

GNOME

GNOME Problem - Hard-dependecy on udev

GNOME

GNOME Problem - Hard-dependecy on NetworkManager

GNOME

GNOME Problem - Hard-dependecy on systemd (1)

GNOME

GNOME Problem - Hard-dependecy on systemd (2)

WebKit Problems (1)

WebKit

WebKit Problems (2)

WebKit

WebKit Problems (3)

WebKit

Is GLib really cross-platform?

JHBuild Features - Condition Set

JHBuild Tinderboxes

Status of GNOME in MarcusCom ports

Help us make GNOME 3.14 work again

Setup your JHBuild environment (1)

Setup your JHBuild environment (2)

--- libtool.m4.orig 2013-09-22 10:29:14.000000000 +0800
+++ libtool.m4  2013-09-22 11:48:33.000000000 +0800
@@ -2482,7 +2482,7 @@
   version_type=freebsd-$objformat
   case $version_type in
     freebsd-elf*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      library_names_spec='${libname}${release}${shared_ext}.`expr $current - $age` ${libname}${release}${shared_ext} $libname${shared_ext}'
       need_version=no
       need_lib_prefix=no
       ;;

Setup your JHBuild environment (3)

The end