From: Stefan Seefeld (seefeld_at_[hidden])
Date: 2005-06-16 06:59:49


Vladimir Prus wrote:

> I think that if packagers rename the libraries.... well nothing would work
> because then the name of the library encoded inside it will be different
> from the filename ;-)

You are right, on most systems there is more to renaming a library than
just 'mv foo.so bar.so'.

> So, packages will either
> 1. Build boost in some other way
> 2. Make Boost.Build use the conventions they want.
>
> In either case, they'll know the naming conventions used and can
> generate .pc files without any Boost.Build help.

Sure they *can*. But so far it hasn't happened, and I believe instead of
sending a RFE to RedHat and Debian and... it is simpler to make the change
to the boost build system and then encourage packagers to follow the
example.

> Boost.Build support is only desired if packages will be created by
> "bjam --some-naming-convention", it which case packages won't have to do
> anything. It's also desired for those building from CVS and installing boost
> manually, bypassing package management system.
>
> Do we agree on the above?

Yes.

>
>
>>Let's take a concrete example:
>>
>>I want to use boost.wave, so I'm looking for a 'boost_wave.pc' file.
>>
>>`pkgconfig --libs boost_wave`
>>
>>should report something like '-lboost_wave -lboost_program_options
>>-lboost_filesystem' on my FC box,
>
>
> I think Boost packages for all Linux distribution will have exactly those
> names, so static .pc file can be fine.

Ok. But who creates / maintains them ?

>>but when using boost from CVS installed
>>in /usr/local, the same command may report:
>>
>>'-L/usr/local/lib -lboost_wave-gcc-1_33 -lboost_program_options-gcc-1_33
>>-lboost_filesystem-gcc-1_33'
>>
>>You get the idea...
>
>
> Ok, for installing from CVS the name indeed can vary. Note however, that for
> shared linking you don't need -l...program_options... and
> -l...filesystem... at all.

That depends on the platform. Not everywhere is the dependency encoded in the
library itself. On some the user has to explicitly (re)link with *all* libraries.

>
> BTW, where should .pc file be installed? $prefix/lib/pkgconfig
> or /usr/lib/pkgconfig? With arbitrary prefix, the .pc file just won't be
> found, which make it useless.

I install them into <prefix>/lib/pkgconfig. That of course requires the
PKG_CONFIG_PATH to be set. That is basically the same procedure as setting
the LD_LIBRARY_PATH if libraries are installed in places not automatically
looked in by the library loader.

Regards,
                Stefan