New pkg-config

I recently pointed jhbuild’s bootstrap module-set at the new releases of pkg-config, which seems to have triggered some problems for some people.

In some ways, it isn’t too surprising that some problems appeared, since there were two years between the 0.15 and 0.16 releases. When you go that long without testing from packages that depend on you, some incompatibilities are bound to turn up. However, Tollef has been doing a good job fixing the bugs and 0.17.1 fixes most of the problems I’ve found.

So far, I’ve run into the following problems (some reported to me as jhbuild bug reports):

  • PKG_CHECK_MODULES() stopped evaluating its second argument in 0.16.0. This caused problems for modules like gtk+ [#300232, fd.o bug #2987 — fixed in pkg-config-0.17].
  • The pkg.m4 autoconf macros now blacklist words matching PKG_* or _PKG_* in the resulting configure script (with the exception of PKG_CONFIG and PKG_CONFIG_PATH). This is to try and detect unexpanded macros, but managed to trip up ORBit2 (ORBit2 has since been fixed in CVS though). [#300151]
  • The PKG_CHECK_MODULES() macro now uses the autoconf result caching mechanism, based on the variable prefix passed as the first argument. This means that multiple PKG_CHECK_MODULES() calls using the same variable prefix will give the same result, even if they specifiy a different list of modules [#300435, #300436, #300449]
  • The pkg-config script can go into an infinite loop when expanding the link flags if a package name is repeated [fd.o bug #3006, workarounds for some Gnome modules: #300450, #300452]

(note that only the last problem is likely to affect people building existing packages from tarballs)

Appart from these problems, there are some new features that people might find useful:

  • Unknown headers are ignored in .pc files. This will make future extensions possible. Previously, if you wanted to make use of a feature in a newer version of pkg-config in your .pc, you’d probably end up making the file incompatible with older versions. This essentially meant that a new feature could not be used until the entire userbase upgraded, even if the feature was non-critical.
  • A new Url header can be used in a .pc file. If pkg-config finds a version of a required package, but it is too old, then the old .pc file can print a URL telling people where to find a newer version. Unfortunately, if you use this feature your .pc file won’t work with pkg-config <= 0.15.
  • A virtual “pkg-config” package is provided by pkg-config. It doesn’t provide any cflags or libs, but does include the version number. So the following are equivalent:
    pkg-config --atleast-pkgconfig-version=0.17.1
    pkg-config --exists pkg-config '>=' 0.17.1
    This may not sound useful at first, but you can also list the module in the Requires line of another .pc file. As an example, if you used some weird link flags that pkg-config used to mangle but has since been fixed, you can encode that requirement in the .pc file. Of course, this is only useful for checking for pkg-config versions greater than 0.16.

Fedora EULA

roozbeh: the Fedora EULA probably isn’t a GPL violation (I’m sure Red Hat has legal advice that it is okay). Section 1 says “This agreement does not limit User’s rights under, or grant User rights that supersede, the license terms of any particular component”. So the EULA explicitly says that it doesn’t limit any rights you received under the GPL. Section 2 goes on to say that your rights to copy or modify individual components of the distro are covered by the respective license.

What the EULA does cover is the particular compilation of the individual components making up the distribution. This is similar to the way a book publisher can claim copyright on a particular selection/ordering of poems that are in the public domain — while you can copy the individual poems, it would be a violation to copy the anthology as a whole.

The export controls section is just a restatement of the U.S. export regulations for cryptography, so wouldn’t affect the non cryptographic portions. I’m not sure how this section would interact with the first section in the case of GPL’d/LGPL’d cryptography software though.

14 March 2005

Eugenia’s Article

I find it amusing how Eugenia selectively quotes mailing list posts to create an article about how Gnome doesn’t care about what users want, and then in a follow-up asks that people don’t take her article out of context.

New Gettext

While looking at the new version of gettext, I noticed the libgettextpo library. Starting with the new 0.14.2 release, this library now includes a .po file writer as well as a parser. I wonder if this could be useful for tools like intltool.

One of the other things I noticed in the new release was at the end of the NEWS file entry for the release:

* Security fixes.

It gives no indication of what those fixes are though, so I don’t know how serious the problem is …

Tim Tams

There are three new varieties of Tim Tams biscuits that came out recently. The weirdest of the three is chocolate and chilli. It tastes like a normal dark chocolate Tim Tam, but after you’ve finished it leaves a chilli aftertaste.

South Africa

From the conditions of residence at the place I’m staying:

5. Where appropriate the masculine gender shall include the feminine gender and vice versa and the singular shall include the plural.

Bush fire

When I woke up this morning, there was a lot of smoke in the air from the bush fire up in the hills east of Perth. The smoke is so thick that some buildings less than a kilometer away are only just visible. Also, sunlight filtering through the smoke gives everything a yellow tinge.

It hasn’t burnt down any houses yet, and hopefully the fire services will get it under control before it does.