[OM Cooker] Naming of pkgconfig *.pc files

Bernhard Rosenkraenzer bero at lindev.ch
Fri Aug 26 13:27:23 EDT 2016


On 2016-08-26 18:30, Colin Close wrote:
> Hi
> Recently I came across an issue with pkgconfig file naming and I would
> appreciate some advice.
> I recently added a BuildRequires pkgconfig(librsvg) line to a spec
> file I am working on. When I ran the build the librsvg package was not
> found.
> Further investigation showed that the package config file was named
> librsvg-2.0.pc note the appended version number. Is this correct?

Yes.

> The the major versions is contained within the *.pc file so it would
> seem that adding the major version to the name of the pc seems like
> overkill.
> Is there a convention for naming this type of file?

There's multiple convention and every library follows a different one - 
that's why there's not that much consistency.

Some people think that as soon as a new version is out, the old version 
should be deprecated anyway, so there's no point in having development 
files for 2 different versions floating around on the same system. 
That's why e.g. pkgconfig(libdrm) will always give you the latest and 
greatest version of libdrm.

Others think that something that has been released think it should be 
supported forever and then some - so when librsvg 2.0 was released a 
decade or so ago, it became pkgconfig(librsvg-2.0) while 
pkgconfig(librsvg) would still give you librsvg 1.x if that was 
installed/available.

There's also inconsistencies about whether or not there's a "lib" prefix 
(e.g. it's "libdrm" but "xcb" (not libxcb)).

It's a mess, but we can't fix it on our side because everyone's build 
scripts, Makefiles etc. are written to match the behavior of the 
libraries they're looking for -- if we made them all follow the same 
conventions, build scripts etc. written on another distribution or OS 
simply wouldn't work anymore.

pkgconfig is a mess in more ways than just this - but we don't get to 
fix it unless we also rewrite everyone's build system. Fortunately at 
least the KDE side of the world is moving more and more towards cmake 
(but then again, even some cmake modules to check for stuff use 
pkgconfig internally).

ttyl
bero



More information about the OM-Cooker mailing list