Boost logo

Boost-Build :

From: Steve M. Robbins (steve_at_[hidden])
Date: 2008-04-22 04:02:40


On Tue, Apr 22, 2008 at 10:59:20AM +0400, Vladimir Prus wrote:
> On Tuesday 22 April 2008 06:12:39 Steve M. Robbins wrote:

> > No, it's not true in general. I was speaking in the context of Boost
> > where -- because there is no ABI compatibility -- the SONAME has all
> > three version components.
>
> Yes, so either we:
>
> 1. Drop version from the name, leave the version in suffix only and have SONAME
> equal to file name, or
> 2. Do as above, but decide and micro-versions are ABI compatible, and strip micro-
> version from soname.
>
> Sounds right?

Either option is fine if you think you will never need two versions of
Boost simultaneously, which is Debian's practice. I had been arguing
for option #1 for that reason.

However, at the urging of my co-packager Domenico [1], I've changed my
mind. I now believe that there is utility in having multiple versions
of Boost co-installable. Mainly, this is because there is no ABI
compatibility and not even API compatibility. The latter means source
modifications each time Boost changes, which is quite painful for a
distribution of Debian's size.

If you want two versions co-installable, it is convenient to have the
version number in the link library name. So the current convention
of Boost is actually a good thing.

[1] http://lists.debian.org/debian-devel/2008/04/msg00581.html

> > Can you build a single variant that is suitable for both
> > single-threaded and multi-threaded applications? If so, why has Boost
> > been generating foo.a and foo-mt.a all these years? Ditto for the
> > -d variants.
>
> The -d, I think, is simple. They are generated just in case you need to debug
> boost. Not that users are know to routinely do that. I don't think adding debug
> options changed ABI. If it does, it's a bug because it means you cannot replace
> release library with debug should you need to find a bug, which makes debug
> library half useless.

Similarly, adding "-d" makes the debug library half useless as you have to
re-link the application to debug it. (Or play tricks with symlinks and
LD_LIBRARY_PATH)

> ST/MT variants have the potential to change ABI, and I think some libraries in
> Debian have separate -mt package. I think in this age, and given that shared_ptr
> has non-locking implementation for popular processors, Boost should be always
> built in MT mode, and clients be required to build with -pthread.

OK. As soon as Boost stops providing two variants based on threading,
we'll stop building them for Debian. ;-)

Chimo,
-Steve




Boost-Build list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk