My GNOME 2 Build

This document describes how I am building GNOME 2. I run Debian Sid I don't need to build everything from the core libraries upwards, as these packages (such as libgnomeand esound) are already packaged.

I use a combination of Debian packages (from Unstable aka Sid) plus Garnome and jhbuild to build GNOME2. The stable packages (which have been frozen for somet time, such as libgnome) come from Sid, applications which are freezing are built using Garnome, and applications for which I want the latest updates (gnome-python in my case) are build with jhbuild. As you can imagine this gets fun.

But first a disclaimer. Garnome is a lovely, elegegant build system but is not designed to be messed with like this. It handles dependancies. I remove the dependancy handling. It knows where certain configuration files are. I move them. If you follow what I have done below, watch out. It will break at some point, at which point you get to keep the pieces. Jeff Waugh will not be able to help you from the Garnome point of view, unless you wipe the installed software and rebuild everything from a clean Garnome tree. Hell, I won't be able to help you (in all probability) as its not my machine, so will be configured differently. Normal people wait for packages or use Garnome, this is for certified mental people only.

Now that the formalities are over with, let's get dirty.

Installing Debian Packages

Basically install it if it says GNOME 2 in the description. TODO: get a list of packages. I do not use the Experimental packages as I don't want to risk introducing other experimental packages (such as PAM). Pointing APT at experimental and using pins is one solution.

Installing Via Garnome

Many of the projects available in Garnome are already installed now and are not required. However, because of the wonderful dependency tracking in Garnome typing 'make install' into gedit/ will try and build GTK+, libgnomeui etc, all packages which have been installed. To stop this the packages we installed via apt-get must be disabled in garnome.

To assist the disabling of projects being build with Garnome I wrote a small script:

if [ -e Makefile ] ; then
	echo "Disabling build..."
	echo -en \\n >>Makefile
	echo -e install-p: >>Makefile
	echo -e \\t@true >>Makefile
	exit 0
else
	echo "No Makefile found"
	exit 1
fi

This script when run inside a directory in a garnome tree will add a rule to the Makefile which will stop it being built as a dependancy. I entered every directory under garnome/gnome and compared the version to be built with the version available in Debian. If the release in Debian was new enough I disabled the garnome build and installed the packages. This way I managed to reduce the amount of code to build by half.

Configuring Garnome

Prefix, pkg-config, etc. rip my gar.conf.mk

Normal users cannot add to the system gconf defaults, so another must be used. Add the following line to the end of gar.conf.mk

CONFIGURE_ARGS += --with-gconf-source=\
xml:readwrite:$(sysconfdir)/gconf/gconf.xml.defaults/

Create a ~/.gconf.path file to tell GConf there is more data available:

# My installed GNOME2 builds
xml:readonly:/home/users/ross/bin/gnome2/etc/gconf/gconf.xml.defaults

Installing Via jhbuild

Detail the configuration as above. Mention skip lists.

Issues

There were several issues to consider as parts of GNOME2 were installed in / and other parts in $HOME/bin/gnome2.

Application Menus

So far the GNOME applications menus will be a weird mixture. Either build gnome-vfs from inside garnome, or edit the applications vfolder ruleset in /etc/gnome-vfs-2.0/vfolders to reference the GNOME2 builds. Obviously the second option only works if all users can access the gnome2 installed.

GTK+

GTK will not look in ~/bin/gnome2 by default. To change this add GTK_PATH.

Scrollkeeper

As I use Scrollkeeper from Debian I had to edit the system scrollkeeper configuration and run scrollkeeper-update as root. TODO. OMF_DIR? Maybe use yelp from garnome instead of debian.

Application Notes

Rhythmbox

I installed gstreamer-(vorbis|misc|mad|esd) and libgstreamer-dev from Debian. This gave me enough to disable the build of gstreamer and gstreamer-plugins. I could then build monkey-sound and rhythmbox in garnome.

You may need to change the gconf key /apps/monkey-sound/audiosink to 'esdsink' for playback to work.