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

Bug#791289: snappy: library transition may be needed when GCC 5 is the default



tags 791289 + patch
user release.debian.org@packages.debian.org
usertag 791289 + transition
block 791289 by 790756
reassign 791289 release.debian.org
thanks

On Fri, Jul 03, 2015 at 01:14:23PM +0000, Matthias Klose wrote:
> Package: src:snappy
> Version: 1.1.2-4
> Severity: important
> Tags: sid stretch
> User: debian-gcc@lists.debian.org
> Usertags: libstdc++-cxx11
> 
> Background [1]: libstdc++6 introduces a new ABI to conform to the
> C++11 standard, but keeps the old ABI to not break existing binaries.
> Packages which are built with g++-5 from experimental (not the one
> from testing/unstable) are using the new ABI.  Libraries built from
> this source package export some of the new __cxx11 or B5cxx11 symbols,
> and dropping other symbols.  If these symbols are part of the API of
> the library, then this rebuild with g++-5 will trigger a transition
> for the library.
> 
> What is needed:
> 
>  - Rebuild the library using g++/g++-5 from experimental. Note that
>    most likely all C++ libraries within the build dependencies need
>    a rebuild too. You can find the log for a rebuild in
>      https://people.debian.org/~doko/logs/gcc5-20150701/
>    Search for "BEGIN GCC CXX11" in the log.
> 
>  - Decide if the symbols matching __cxx11 or B5cxx11 are part of the
>    library API, and are used by the reverse dependencies of the
>    library.
> 
>  - If there are no symbols matching __cxx11 or B5cxx11 in the symbols
>    forming the library API, you should close this issue with a short
>    explanation.
>  
>  - If there are no reverse dependencies, it should be the package
>    maintainers decision if a transition is needed.  However this might
>    break software which is not in the Debian archive, and built
>    against these packages.
> 
>  - If a library transition is needed, please prepare for the change.
>    Rename the library package, append "v5" to the name of the package
>    (e.g. libfoo2 -> libfoo2v5). Such a change can be avoided, if you
>    have a soversion bump and you upload this version instead of the
>    renamed package.  Prepare a patch and attach it to this issue (mark
>    this issue with patch), so that it is possible to NMU such a
>    package. We'll probably have more than hundred transitions
>    triggered. Then reassign the issue to release.debian.org and
>    properly tag it as a transition issue, by sending an email to
>    control@bugs.debian.org:
>    
>      user release.debian.org@packages.debian.org
>      usertag <this issue> + transition
>      block <this issue> by 790756
>      reassign <this issue> release.debian.org
>    
>  - If unsure if a transition is needed, please tag the issue with help
>    to ask for feedback from other Debian developers.
> 
> The libstdc++6 transition will be a large one, and it will come with a
> lot of pain.  Please help it by preparing the follow-up transitions.
> 
> [1] https://wiki.debian.org/GCC5#libstdc.2B-.2B-_ABI_transition

-- 
Homepage: http://www.sesse.net/
diff -u snappy-1.1.2/debian/changelog snappy-1.1.2/debian/changelog
--- snappy-1.1.2/debian/changelog
+++ snappy-1.1.2/debian/changelog
@@ -1,3 +1,10 @@
+snappy (1.1.2-5) unstable; urgency=medium
+
+  * Change package name to libsnappy1v5 for rebuild with g++-5.0 with the
+    C++11 ABI; conflict with libsnappy1. (Closes: #791289)
+
+ -- Steinar H. Gunderson <sesse@debian.org>  Fri, 03 Jul 2015 23:58:01 +0200
+
 snappy (1.1.2-4) unstable; urgency=low
 
   * Make package multi-arch capable; patch from Mathieu Malaterre.
diff -u snappy-1.1.2/debian/control snappy-1.1.2/debian/control
--- snappy-1.1.2/debian/control
+++ snappy-1.1.2/debian/control
@@ -10,7 +10,7 @@
 Section: libdevel
 Architecture: any
 Multi-Arch: same
-Depends: libsnappy1 (= ${binary:Version}), ${misc:Depends}
+Depends: libsnappy1v5 (= ${binary:Version}), ${misc:Depends}
 Description: fast compression/decompression library (development files)
  Snappy is a compression/decompression library. It does not aim for
  maximum compression, or compatibility with any other compression  
@@ -26,12 +26,13 @@
  This package contains the development files required to build programs
  against Snappy.
 
-Package: libsnappy1
+Package: libsnappy1v5
 Section: libs
 Architecture: any
 Multi-Arch: same
 Pre-Depends: ${misc:Pre-Depends}
 Depends: ${shlibs:Depends}, ${misc:Depends}
+Conflicts: libsnappy1
 Description: fast compression/decompression library
  Snappy is a compression/decompression library. It does not aim for
  maximum compression, or compatibility with any other compression  
reverted:
--- snappy-1.1.2/debian/libsnappy1.dirs
+++ snappy-1.1.2.orig/debian/libsnappy1.dirs
@@ -1 +0,0 @@
-usr/lib
reverted:
--- snappy-1.1.2/debian/libsnappy1.install
+++ snappy-1.1.2.orig/debian/libsnappy1.install
@@ -1 +0,0 @@
-usr/lib/*/lib*.so.*        
only in patch2:
unchanged:
--- snappy-1.1.2.orig/debian/libsnappy1v5.dirs
+++ snappy-1.1.2/debian/libsnappy1v5.dirs
@@ -0,0 +1 @@
+usr/lib
only in patch2:
unchanged:
--- snappy-1.1.2.orig/debian/libsnappy1v5.install
+++ snappy-1.1.2/debian/libsnappy1v5.install
@@ -0,0 +1 @@
+usr/lib/*/lib*.so.*        

Reply to: