6 January 2005

Travels

I’ve put some of the photos from my trip to Mataró, and the short stop over in Japan on the way back. The Mataró set includes a fair number taken around La Sagrida Familia, and the Japan set is mostly of things around the Naritasan temple (I didn’t have enough time to get into Tokyo).

Multi-head

A few months back, I got a second monitor for my computer and configured it in a Xinerama-style setup (I’m actually using the MergedFB feature of the radeon driver, but it looks like Xinerama to X clients). Overall it has been pretty nice, but there are a few things that Gnome could do a bit nicer in the setup:

  • Backgrounds get stretched over both screens. The Ubuntu backgrounds already looked a bit weird at a 5:4 aspect ratio. They look even worse at a 5:2 ratio 🙂. Ideally the background image would be repeated on each monitor of the virtual screen. Some details are available as bug 147808, but it looks like the fix would be in EelBackground code.
  • Most parts of the desktop treat the monitors as independent (which is good, since most people pick Xinerama over classic X multi-screen so that dragging windows between monitors works, rather than to build video walls), but there is a few bits that don’t. One of the more obvious ones is in Metacity: the alt+tab dialog pops up centred on the monitor where mouse currently resides, but it cycles through all the windows visible on the virtual screen. This is a bit confusing, since it looks like it will be a monitor-local operation based on the position of the dialog (however, if it was monitor-local I’m not sure how you’d switch focus to a window on the other monitor with only the keyboard …).

Bazaar

The new merge command in baz is quite nice. This provides support for merging in ways that tla can’t. One of the limitations of star-merge is that it can get confused if you don’t strictly follow the star topology when merging. That is, you should only merge to/from the person you branched from, and people who branched from you. If siblings merge for instance, it can cause problems with subsequent merges.

The new merge command doesn’t suffer from that problem, and allows you to merge from anyone. Of course, if you break the star topology, people wanting to merge from you will either need to be using Bazaar, or ask for you to merge from them first (so that the star-merge algorithm merges the right changes).

15 December 2004

Mataró

The conference has been great so far. The PyGTK BoF on the weekend was very productive, and I got to meet Anthony Baxter (who as well as being the Python release manager, wrote a cool VoiP application called Shtoom). There was an announcement of some of the other things Canonical have been working on, which has been reported on in LWN (currently subscriber only) among other places.

Over the weekend, I had a little time to do some tourist-type things in Barcelona. I went to La Sagrada Família. It was a great place to visit, and there was an amazing level of detail in the architecture. You can walk almost to the very top of the cathedral, and see out over the Barcelona skyline (and see various bits of the cathedral not visible from the ground). I’ll have to put my photos up online.

Bazaar

I’ve been using using Bazaar a bit more at work, and it is becoming quite usable, compared to tla. It is a little interesting using daily builds of baz from the 1.1 development branch, where some features appear, get renamed or removed as they get developped, but it has a few more useful features not found in the 1.0 release. From a user point of view, it feels like the command line interface for baz is being designed to be easy to use, while tla‘s feels like they made choices based on what was easy to implement.

I built some Fedora Core 2 i386 builds of the 1.0.1 release, and some 1.1 snapshots that are now up on the Bazaar website in case anyone wants to try them. When I get back home and install FC3 onto my AMD64 box (it only has Ubuntu on at the moment), I’ll do some FC3 x86-64 and i386 builds too.

1 November 2004

Libtool

When looking into the libtool problem I mentioned earlier, I decided to take a look at the libtool-2.0 betas. Overall, it looks pretty good. I’ve updated the gnome-common autogen.sh script to support it. So if a package uses the LT_INIT macro, it will call libtoolize for you.

One of the new features in these versions of libtool is that if you have a AC_CONFIG_MACRO_DIR(directory) call in your configure.ac file, it will copy the libtool M4 macros to that directory. If you then call aclocal with the correct -I flag, autoconf will use that version of the macro.

This means that you will get consistent versions of ltmain.sh and libtool.m4, which is a lot more reliable. With the old setup, the version of ltmain.sh you got would depend on $PATH while the version of libtool.m4 would depend on the aclocal search path. With the new setup, it just depends on $PATH.

The only problem is that aclocal doesn’t automatically check the macro dir for macros. This is pretty easy to work around. Just pass the appropriate -I flag to aclocal in autogen.sh, and make sure ACLOCAL_AMFLAGS gets set appropriately in your Makefile.am‘s. This second part can be done from the configure.in file like so:

AC_CONFIG_MACRO_DIR([m4])
...
# make sure $ACLOCAL_FLAGS are used during a rebuild.
AC_SUBST([ACLOCAL_AMFLAGS], ["-I $ac_macro_dir \${ACLOCAL_FLAGS}"])

(the above will also pass $ACLOCAL_FLAGS to aclocal on a rebuild, which is expected when building most Gnome packages).

I also updated the gnome-common autogen.sh script to check for AC_CONFIG_MACRO_DIR, and call aclocal correctly, so a package maintainer doesn’t need to do anything special.

This system could benefit some of the other Gnome related build tools like intltool and gtk-doc — I recently got CC’d on an intltool bug that seemed to be caused by mismatched macros and support files, so people are tripping over the problem. It should be pretty trivial to modify intltoolize to check for AC_CONFIG_MACRO_DIR, and copy over the macro file if it finds it. This wouldn’t affect its behaviour on existing packages, but would be more reliable on packages that have been updated to use the macro.

Bazaar

I did some initial Fedora Core 2 packages for Bazaar (a new GNU Arch command line tool sponsored by Canonical). It is only an i386 build, but I’ll add an x86-64 build once I have FC2 or FC3 set up on my desktop (so far I’ve only got round to installing Ubuntu/AMD64 on it).

At the moment baz is quite similar to tla, but there are some promising interface ideas that should make it a lot nicer to use. If you’ve avoided Arch due to tla‘s complexity, baz might be worth trying when it develops further.

Libtool Problem (continued)

Shortly after posting the last entry about the libtool problem I sent a message to the bug-libtool list, Scott helped to track down the problem.

With the help of the test script I wrote, he managed to track down the change on the libtool-2.0 branch that fixed the problem. Applying this same change to a 1.5.x release fixed the problem. He has uploaded a new Debian package with the change, and I’ve altered the jhbuild bootstrap module set to include the patch too. The copy of the patch included with JHBuild can be found here. Hopefully it will also be in a future 1.5.x release (assuming that there are any more).

Scott pointed out another case where people might run into the problem is when building binary packages for software. A packager usually builds the new version of the software into a temporary prefix (often by setting the $DESTDIR environment variable when calling make install). If the package includes a library with some applications that link to the library and there is an old version of the package installed on the system, libtool could end up linking with the library in /usr/lib, which could result in a build failure if some new APIs were added. The patch should fix this particular case too.

So if you release tarballs that make use of libtool, applying this patch may help out the people maintaining binary packages of the software for a distro too (assuming that they haven’t gone the scorched earth route and deleted all the .la files …).