JHBuild
Wishlist:
- Install each module into a separate prefix. This would make it easier to uninstall individual modules.
- Allow declaring dependencies on Debian packages. This would have two uses:
- Help with installing dependencies that are not built by JHBuild and so currently not declared. e.g. For gtk, these include: libbz2-dev libgdbm-dev python-all-dev libsm-dev texinfo libxext-dev libx11-dev libice-dev libtiff4-dev libjasper-dev libcupsys2-dev libxml-simple-perl libpcre3-dev
- Avoid building from source when packages are installed via Debian.
Allow downloading all source up-front before trying to build it. JHBuild is harder to use behind a firewall where FTP is not available and SVN-over-HTTP does not work through the HTTP proxy. - This is already available via the update action.
Parallelize the download and build. It's already possible to parallelize within each build with -j 2, but it would also be possible to parallelize between builds.
Relocatability experiment
When you build an autotools-based package you give it a "prefix" via the --prefix argument to specify where it should be installed. Is it possible to build packages under one prefix but use them under another by setting environment variables? This would make it much easier to build packages in bulk for use with Zero-Install.
I started this experiment in March 2008: see my post on zero-install-devel.
My changes to JHBuild are in this Bazaar branch.
Basic plan:
Configure with ./configure --prefix=/FAKEPREFIX
Install with make install DESTDIR=/tempdest
To do the real installation, move files from /tempdest/FAKEPREFIX/* to /realprefix/*
Rewrite any references in text files from /FAKEPREFIX to /realprefix. We cannot rewrite binary files because the pathname length can change.
The hope is that there are no references to /FAKEPREFIX hardcoded into binary files, or that these references don't matter.
Cases of hardcoded paths:
libtool puts rpaths into libraries and executables. It is supposed to be possible to disable this via --disable-rpath, but that doesn't seem to work.
- evince contains several hardcoded paths:
/FAKEPREFIX/share/applications/evince.desktop /FAKEPREFIX/share/evince/evince-toolbar.xml /FAKEPREFIX/share/evince/evince-password.glade /FAKEPREFIX/share/evince/evince-properties.glade /FAKEPREFIX/share/evince/evince-ui.xml /FAKEPREFIX/share/locale
evince segfaults when it fails to open /FAKEPREFIX/share/applications/evince.desktop.
Not all packages support DESTDIR in make install:
expat-1.95.8 (see this patch)
Other problems:
Gtk does not install the file $prefix/etc/gtk-2.0/gdk-pixbuf.loaders if DESTDIR is set, which later causes libgnomeui to fail when it tries to run gdk-pixbuf-csource. See gdk-pixbuf/Makefile.am.
