[pkg-boost-devel] about packaging Boost libraries

Steve M. Robbins steve at sumost.ca
Thu Jul 26 03:17:06 UTC 2007


Howdy,

On Wed, Jul 18, 2007 at 12:11:31PM -0400, Benjamin Kosnik wrote:

> I absolutely agree that system layout should be the build variant used
> across linux distros, and am glad to see debian moving to this. 

One reason for initiating this conversation is that, while the system
layout gets rid of the unnecessary compiler decoration, it also gets
rid of the version numbers in the SONAME.  The latter behaviour makes
it unsuitable for Debian.


> However, I disagree with debian packages in the SONAME they use and
> their general approach to versioning. I believe that boost breaks ABI
> with regularity, so depending on what boost sources you use you'll have
> to take that into account. (Ie, I specifically did not update to
> 1.34.0 and waited for 1.34.1 for this reason, which was similar to
> the 1.33.0 to 1.33.1 problems.) You should not be blindly trusting the
> boost developers WRT ABI issues, and should be independently verifying
> this yourself and developing a strategy that you thinks makes sense for
> your system.

I'm not sure how you understand Debian's approach to versioning, so
let me summarize it.

As you note, Boost does not maintain ABI compatibility between
releases.  Therefore we create shared libraries with the full Boost
version in the SONAME; e.g.

    libboost_signals-gcc41-mt-1_34.so.1.34.0

This file appears in a package that itself includes the SOVERSION
(libboost-signals1.34.0).  Thus Debian allows the parallel install of
different versions of the shared lib.  A binary will, of course, use
the one it was linked against so there is no breakage when a new
shared lib is installed.


> Depending on how debian resolves this, you may actually need to put in
> symlinks to the specific sonameversion to the development .so 

In the development package we provide the following links:

    libboost_signals-mt.so -> libboost_signals-gcc41-mt-1_34.so
    libboost_signals-gcc41-mt-1_34.so -> libboost_signals-gcc41-mt-1_34.so.1.34.0

Thus the user can link against -lboost_signals-mt, just as one can
with --layout=system.


For us, the issue with --layout=system is that the resulting shared
libs do not have the version in the SONAME.  We understand that
--layout=system was designed with feedback from a Redhat packager
[http://lists.boost.org/Archives/boost/2005/06/88691.php].  Were you
involved?

We are wondering whether the system layout could be modified to
include the full Boost version in the SONAME.  Would that be
acceptable for Redhat?

Regards,
-Steve
P.S.  Maybe you could summarize the Redhat strategy w.r.t. ABI change?

-------------- 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/20070725/053bf069/attachment.pgp 


More information about the pkg-boost-devel mailing list