[Cairo] Making it easier to build Cairo from CVS.

Carl Worth cworth at east.isi.edu
Wed Nov 5 09:44:42 PST 2003

On Nov 5, James Henstridge wrote:
 > For those interested in an easier way to build cairo from CVS, you might 
 > want to try out jhbuild.

Thanks James. This should help ease what has historically been a
rather painful process with cairo. I just ran through the
instructions, and after working through a couple snags during jhbuild
installation (noted below), I was able to download and build all cairo
modules with a single "jhbuild build cairo".

Well done!

 > Comments on jhbuild and the setup instructions are welcome.

Here are some of my comments after a very brief look at
jhbuild. Please let me know if there's some jhbuild-specific list
that would be more appropriate for all of this.

1) Is there a good reason to install in $(HOME)/bin by default instead
   of say, /usr/local/bin?

2) Is install-check a generic program? Or should it get a name like

3) The "make install" step says "Don't forget to create ~/.jhbuildrc"
   but doesn't provide any indication where I might find a sample file
   or instructions on how to roll my own.

4) I usually build things as a normal user, and then make install to
   /usr/local as root. Could jhbuild be made to operate in a two-user
   mode like this somehow? Maybe by cooperating with sudo or

5) I notice that the modulesets have hand-coded dependencies in
   them. Is there a way this information could be automatically lifted
   from the several *.pc files from the packages themselves?

   Maybe this information could be in a file on the CVS server
   containing the sources? And then perhaps that file could be
   automatically updated when new *.pc.in files were committed or
   something like that? I don't know.

6) It seems there should be a separation of jhbuild the tool, and the
   configuration data, (modulesets and dependencies) that it acts
   upon. That would make it easier to use jhbuild more generally with
   other repositories of code.

7) Does jhbuild have anyway to deal with changes in dependencies? For
   example cairo->xft should now be cairo->fontconfig,freetype. It
   seems it would be nice to have some sort of "jhbuild update" that
   refreshes its database of dependencies. Otherwise, I'll have to go
   manually cvs update/build/install jhbuild itself --- and that's the
   kind of thing I'm trying to get rid of by using jhbuild.

   Actually, "jhbuild update" needn't be a separate command. Since
   jhbuild already depends on a network connection, I don't see why it
   shouldn't always try to refresh its dependency database.

8) I ran "jhbuild build cairo" twice in a row. The second time it
   seemed to be doing lots of unnecessary steps, (looked like "make
   install" all over the place). This was only really a problem with
   fontconfig which has a very slow "make install" step. It would be
   nice to eliminate all that.

Thanks again,


More information about the cairo mailing list