Boost logo

Boost-Build :

From: Vladimir Prus (ghost_at_[hidden])
Date: 2008-04-23 00:58:42

On Tuesday 22 April 2008 12:02:40 Steve M. Robbins wrote:
> 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]

Hmm. Probably boost is indeed unique in that it breaks ABI at a whim ;-)

Is it technically possible to have two different versions of Boost package


and have some way to select either of those during compilation. Maybe, having


as symlinks? I'm basically looking into some way to still make upgrade
from 1.35.0 to 1.35.1 to not require rebuilding applications

> > > 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

Yes, that's right.

> > 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. ;-)

Boost builds a single variant by default right now. It's Debian that forces
several variants to be created ;-)

- Volodya

Boost-Build list run by bdawes at, david.abrahams at, gregod at, cpdaniel at, john at