[pkg-boost-devel] Bug#426871: new proposal: boost-config

Steve M. Robbins steve at sumost.ca
Mon Aug 6 21:06:10 UTC 2007


On Sat, Aug 04, 2007 at 01:59:23AM +0200, Domenico Andreoli wrote:
> Hi,
> 
> Suppose two systems, a Fedora based on gcc 4.1 and a Debian based
> on gcc 4.2, both sporting Boost 1.35.0 built with --layout=system,
> for simplicity.
> 
> Now Joe User writes his app on the Fedora system and links Boost.DateTime
> using the familiar -lboost_date_time switch. He builds the app and
> tries it on both his Fedora system and the friend's Debian one.  What is
> going to happen?

[I like answering rhetorical questions]

If you mean he copies the BINARY from Fedora to Debian, I expect all
hell to break loose.  I expect that regardless of whether he uses
boost or not: there's likely to be version skew in dozens of other
libraries, e.g. libc.

If you mean he copies the source and rebuilds, I expect things to work
fine.  Why wouldn't it?


> BTW, the user is a free software developer and his app is going to be
> ported also to other Microsoft, UNIX and popular embedded operating
> systems, where Boost has been built mixing --layout=system and
> --layout=versioned. Now he faces the problem of linking to the Boost
> library of interest. How he is supposed to solve the problem?

I don't really know.  I vaguely thought that using JAM and Boost.Build
would carry the day.  Wouldn't it?


> This is a new summary of the binary and source portability problems
> that current build system is inflicting on the Boost libraries.
> 
> My proposal is:
> 
>  1) dump the --layout= thing, versioned/decorated sonames are always used
> 
>  2) provide symlinks like the following, when appropriate:
> 
>     /usr/lib/libboost_date_time-gcc42-1_34_1.so -> libboost_date_time-gcc42-1_34_1.so.1.34.1
>     /usr/lib/libboost_date_time-gcc42-d-1_34_1.so -> libboost_date_time-gcc42-d-1_34_1.so.1.34.1
>     /usr/lib/libboost_date_time-gcc42-mt-1_34_1.so -> libboost_date_time-gcc42-mt-1_34_1.so.1.34.1
>     /usr/lib/libboost_date_time-gcc42-mt-d-1_34_1.so -> libboost_date_time-gcc42-mt-d-1_34_1.so.1.34.1
> 
>  3) provide also these symlinks, if desired:
>     /usr/lib/libboost_date_time.so -> libboost_date_time-gcc42-1_34_1.so
>     /usr/lib/libboost_date_time-d.so -> libboost_date_time-gcc42-d-1_34_1.so
>     /usr/lib/libboost_date_time-mt.so -> libboost_date_time-gcc42-mt-1_34_1.so
>     /usr/lib/libboost_date_time-mt-d.so -> libboost_date_time-gcc42-mt-d-1_34_1.so

I'm with you so far.  I believe this is what you implemented in the experimental
1.34.1 upload, right?

I would go further and argue that --layout=system should do exactly
what you propose and also use the full boost version in the SONAME of
the libraries (which Debian has been doing all along but
--layout=system does not do currently).  


Thoughts?

-Steve


-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
Url : http://lists.alioth.debian.org/pipermail/pkg-boost-devel/attachments/20070806/9337af21/attachment-0005.pgp 


More information about the pkg-boost-devel mailing list