Chapter 4. Building Gnome from CVS

Table of Contents

Basic Instructions
General tips on resolving CVS build issues
Specific examples of resolving CVS build issues
Launching your new Gnome

In order to assist in the development of packages that are part of the official Gnome D&DP (Desktop and Developer Platform), you will need to be running the latest development version. There are a number of different build scripts/programs that can assist you in doing so: GARNOME, CVSGnome, jhbuild, and vicious-build-scripts. I will try to walk you through the steps of using jhbuild, as it is the one that I am most familiar with. jhbuild will make the otherwise hefty task of compiling Gnome from cvs relatively painless; however, there will always be one or two rough spots that will still be there. I cannot smooth those rough spots completely, because the rough spots always change. However, I will include pointers and general guidelines on how to deal with those rough spots.

To quickly address some common questions about building from CVS:

Note that the instructions I give come from my experience, meaning that they assume a Red Hat or Fedora system (with apt-get from freshrpms :). Most things (though not all) should be the same for other distributions. Also note that I originally typed up these notes during the Gnome-2.3 timeframe, but I believe the information they contain are still relevant. I did re-read them and add or change a few things. Here are those instructions:

Also keep in mind the jhbuild has a good README that comes with it and that will probably be updated more frequently than this page (in fact, when I first wrote up a lot of the stuff for this page, the README did not have as much information as it does now). Also, jhbuild has a number of options to it. 'jhbuild --help' will show you these. In particular, 'jhbuild gui' looks cool though I haven't tried it yet.

Finally, if you get stumped, there are always people you can ask for help. The IRC channel #gnome-love on is one such place. You can also send email to the gnome-love mailing list. #gnome is also a fair channel to ask such questions. These kinds of questions have also been answered on #bugs before, though that is not their focus.

Basic Instructions

Following is a list of all the steps necessary to build gnome from cvs with jhbuild. These command are NOT a shell script. It happens to be written in a format similar to a shell script (which means you can cut and paste most of it), but it is merely meant as instructions on what to do so you can learn how to do it yourself. Besides, the cvs login and su commands require user interaction to enter passwords.

export WHOAMI=`id -un`

# Create a directory for the gnome source code
mkdir -p ~/cvs/gnome2

# Download jhbuild from cvs
cd ~/cvs/gnome2
cvs -d login
  # blank password -- just hit enter
cvs -z3 -d checkout jhbuild

# Install jhbuild (just creates some stuff in ~/bin/jhbuild)
cd jhbuild
make install

# Setup .jhbuildrc to tell jhbuild what you want built (just use the
# sample for now...)
cp sample.jhbuildrc ~/.jhbuildrc

# Create the directory where gnome will be installed; Make it owned by
# the relevant user so we don't have to build as root
mkdir -p /opt/gnome2
chown $WHOAMI:$WHOAMI /opt/gnome2

# Make sure the build environment is sane--get all necessary build
# software.  IMPORTANT: You should say yes to all the questions,
# except possibly the python installation, even if you already have
# the given program installed.
jhbuild bootstrap

# Now, do all the actual downloading, building, and installing of gnome
jhbuild build

Once 'jhbuild build' completes, you will be done building gnome from cvs. See the steps to launch your newly built version of Gnome to see what to do in order to get it running.

The reason that you should say yes to all the jhbuild bootstrap questions (except maybe the python installation) is that jhbuild provides patched versions of most of those programs. I have received many questions from new users who had problems when they had not done this. (If you find yourself in a similar situation, merely re-run jhbuild bootstrap, answer yes to the appropriate questions, clean up the last module that was partially built, and then restart where you left off.) Note that jhbuild installs all these programs to the install prefix you specify in ~/.jhbuildrc (/opt/gnome2 by default) so allowing it to install these programs will not interfere with the versions you already have installed.

Note that while most of the steps should work without any extra effort, the 'jhbuild build' step always requires a fair amount of intervention from me. The next section will provide some general hints on how to deal with this.