[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [VAC] now - undefined (was Re: ICU transition status)



tags 454605 patch
thanks

On Sun, Dec 16, 2007 at 01:45:45PM -0500, Jay Berkenbilt wrote:
> I hadn't looked carefully at the packages yet.  Now that I am looking
> at it, I see clearly from the changelog that 1.34.1-3 was an ABI
> change, so you're right -- I definitely don't want to upload it.
> (Though I'm surprised that going from gcc 4.1 to 4.2 is really an ABI
> change.)

It's not, except that the boost Debian packages are encoding the gcc version
in the soname by hand.  This is wrong, but needs to be addressed in order to
get icu through in a timely fashion.

The attached patch looks to me like it does the necessary handling of
switching to gcc-4.2 without breaking the ABI.  I'm still going through the
QA on it, but so far it looks sane; if anyone notices a problem with it,
please let me know, otherwise I'll plan to NMU once I have a good build and
am happy that I haven't broken anything.

In the future, it might be a good idea to switch away from "g++-4.2" to just
"g++"; the -3 upload in experimental actually has a latent RC bug, because
it invokes g++-4.2 but doesn't build-depend on it, so that package will
break suddenly the next time the default g++ version changes.

> In any case, I wouldn't have uploaded without testing carefully.  I
> have software that uses some of the boost libraries.  I would at least
> have locally installed boost and checked my software, openoffice, and
> perhaps some other reverse dependencies.  My initial comments were
> based on my memory of earlier conversations, not a careful analysis.
> But you're right, this is not to be taken lightly.

> In any case, I can either do an NMU based on 1.34.1-2 (which really
> should be safe since 1.34.1-2 is already in testing), or I can just
> drop it and let someone else take care of it.  Unless someone says to
> go ahead with 1.34.1-2.1, I'll just leave it alone.  If it is not
> resolved by the time I'm back from vacation, I probably will upload
> 1.34.1-2.1 though.  Given that this fixes a 10-day-old RC bug, anyone
> could do an NMU at this point anyway.

Jay, if you have time to check on your side that this patch gives a useful
set of packages, that would certainly be helpful; I don't have anything than
uses boost, so I'm really checking that the packages look right on paper
after the change, not confirming that the libs still work the same at
runtime.  This /shouldn't/ be an issue given that there's no magic in -3 to
make the packages work, but the extra assurance wouldn't hurt either.

And maybe you'd have a working package sooner than I at the rate I'm
currently going, and could feel free to upload it before me. :)

-- 
Steve Langasek                   Give me a lever long enough and a Free OS
Debian Developer                   to set it on, and I can move the world.
Ubuntu Developer                                    http://www.debian.org/
slangasek@ubuntu.com                                     vorlon@debian.org
diff -u boost-1.34.1/debian/control boost-1.34.1/debian/control
--- boost-1.34.1/debian/control
+++ boost-1.34.1/debian/control
@@ -3,7 +3,7 @@
 Priority: optional
 Maintainer: Debian Boost Team <pkg-boost-devel@lists.alioth.debian.org>
 Uploaders: Steve M. Robbins <smr@debian.org>, Domenico Andreoli <cavok@debian.org>, Christophe Prud'homme <prudhomm@debian.org>
-Build-Depends: debhelper (>= 4), bison, flex, docbook-to-man, xsltproc, doxygen, zlib1g-dev, libbz2-dev, libicu36-dev, python-dev | python-all-dev, python2.4-dev, python-support (>= 0.3), g++-4.1
+Build-Depends: debhelper (>= 4), bison, flex, docbook-to-man, xsltproc, doxygen, zlib1g-dev, libbz2-dev, libicu-dev, python-dev | python-all-dev, python2.4-dev, python-support (>= 0.3), g++-4.2
 Standards-Version: 3.7.2
 
 Package: bcp
diff -u boost-1.34.1/debian/changelog boost-1.34.1/debian/changelog
--- boost-1.34.1/debian/changelog
+++ boost-1.34.1/debian/changelog
@@ -1,3 +1,15 @@
+boost (1.34.1-2.1) unstable; urgency=low
+
+  * Non-maintainer upload.
+  * Build-depend on libicu-dev instead of libicu36-dev for the icu library
+    transition.  Closes: #454605.
+  * Drop the gcc version out of the library soname since it's no longer part
+    of what determines the ABI, and add backwards-compatibility "-gcc41"
+    symlinks for all libraries to avoid gratuitous ABI breakage when
+    rebuilding with gcc 4.2.  Bump the shlibs to match.
+
+ -- Steve Langasek <vorlon@debian.org>  Sun, 16 Dec 2007 13:59:29 -0800
+
 boost (1.34.1-2) unstable; urgency=low
 
   [ Steve Robbins ]
diff -u boost-1.34.1/debian/rules boost-1.34.1/debian/rules
--- boost-1.34.1/debian/rules
+++ boost-1.34.1/debian/rules
@@ -10,12 +10,12 @@
 
 # Boost does not guarantee any ABI, it uses the full version in SONAME
 SOVERSION = 1.34.1
-SHLIBS_VERSION =
+SHLIBS_VERSION = (>= 1.34.1-2.1)
 DEBIAN_SUFFIX =
 
 # tags for library name decoration
 boost_version = $(subst .,_,$(SOVERSION))
-gcc_version = gcc41
+gcc_version = gcc42
 
 # Boost libraries for which we want separate packages
 boost_libs := date-time filesystem graph iostreams program-options python regex serialization signals test thread wave
@@ -35,7 +35,8 @@
 
 # helpers to make basic and decorated library names
 mk_base_name = usr/lib/libboost_$(subst -,_,$(1))$(2)
-mk_full_name = usr/lib/libboost_$(subst -,_,$(1))-$(gcc_version)$(2)-$(boost_version)
+mk_full_name = usr/lib/libboost_$(subst -,_,$(1))$(2)-$(boost_version)
+mk_compat_name = usr/lib/libboost_$(subst -,_,$(1))-$(gcc_version)$(2)-$(boost_version)
 
 # helpers to make proper release/debug package names
 mk_pkg_lib = libboost-$(if $(findstring -d,$(2)),dbg,$(1)$(SOVERSION)$(DEBIAN_SUFFIX))
@@ -49,7 +50,8 @@
 mk_ln_files = $(shell echo $(call mk_full_name,$(2),$(3)).so.$(SOVERSION) $(call mk_full_name,$(2),$(3)).so >> $(call mk_deb_dev,$(1),$(3)).links)
 mk_ln2_files = $(shell echo $(call mk_full_name,$(2),$(3)).so $(call mk_base_name,$(2),$(3)).so >> $(call mk_deb_dev,$(1),$(3)).links)
 mk_ln3_files = $(shell echo $(call mk_full_name,$(2),$(3)).a $(call mk_base_name,$(2),$(3)).a >> $(call mk_deb_dev,$(1),$(3)).links)
-mk_files = $(foreach fn,a so ln ln2 ln3,$(call mk_$(fn)_files,$(1),$(2),$(3)))
+mk_ln4_files = $(shell echo $(call mk_full_name,$(2),$(3)).so.$(SOVERSION) $(call mk_compat_name,$(2),$(3)).so >> $(call mk_deb_dev,$(1),$(3)).links)
+mk_files = $(foreach fn,a so ln ln2 ln3 ln4,$(call mk_$(fn)_files,$(1),$(2),$(3)))
 
 # invokes mk_files of every variant of every shared library of every Boost library
 mk_debhelper_files = \
@@ -62,9 +64,9 @@
 		) \
 	)
 
-TOOLSET_CONFIG="using gcc : 4.1 : g++-4.1 : <define>_REENTRANT ;"
+TOOLSET_CONFIG="using gcc : 4.2 : g++-4.2 : <define>_REENTRANT ;"
 ifeq ($(DEB_BUILD_ARCH), hppa)
-TOOLSET_CONFIG="using gcc : 4.1 : g++-4.1 : <define>_REENTRANT <compileflags>-mlong-calls ;"
+TOOLSET_CONFIG="using gcc : 4.2 : g++-4.2 : <define>_REENTRANT <compileflags>-mlong-calls ;"
 endif
 PYTHON_CONFIG="using python : 2.4 : /usr ;"
 

Reply to: