
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