Bug#794402: libproxy: library transition is needed when GCC 5 is the default

Matthias Klose doko at debian.org
Sun Aug 2 16:23:16 UTC 2015


Package: src:libproxy
Version: 0.4.11-4
Severity: serious
Tags: sid stretch patch confirmed
User: debian-gcc at lists.debian.org
Usertags: libstdc++-cxx11

confirmed, see
https://people.debian.org/~doko/logs/gcc5-20150701/libproxy_0.4.11-4_unstable_gcc5.log

cmake should binNMUed immediately after this upload.

the qt5 stack depends on this, so it is important to get this done soon.

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 at bugs.debian.org:

     user release.debian.org at 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
-------------- next part --------------
diff -Nru libproxy-0.4.11/debian/changelog libproxy-0.4.11/debian/changelog
--- libproxy-0.4.11/debian/changelog	2013-11-03 13:34:44.000000000 +0100
+++ libproxy-0.4.11/debian/changelog	2015-08-02 18:17:26.000000000 +0200
@@ -1,3 +1,12 @@
+libproxy (0.4.11-4.1) unstable; urgency=medium
+
+  * Non maintainer upload.
+  * Rename library libproxy1 -> libproxy1v5, needed as a follow-up transition
+    for the libstdc++6 ABI changes (patch by Sebastien Bacher).
+    Addresses: #.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 02 Aug 2015 18:11:31 +0200
+
 libproxy (0.4.11-4) unstable; urgency=low
 
   * Upload to unstable
diff -Nru libproxy-0.4.11/debian/control libproxy-0.4.11/debian/control
--- libproxy-0.4.11/debian/control	2013-11-03 13:43:09.000000000 +0100
+++ libproxy-0.4.11/debian/control	2015-08-02 18:20:15.000000000 +0200
@@ -10,6 +9,7 @@
 Uploaders: Debian GNOME Maintainers <pkg-gnome-maintainers at lists.alioth.debian.org>, Laurent Bigonville <bigon at debian.org>
 Build-Depends-Indep: cli-common-dev (>= 0.5.7~), mono-devel (>= 2.4.3)
 Build-Depends: debhelper (>= 9),
+               g++ (>= 4:5.2),
                gnome-pkg-tools,
                netbase,
                cmake,
@@ -29,12 +29,14 @@
 Vcs-Browser: http://anonscm.debian.org/viewvc/pkg-gnome/packages/unstable/libproxy/
 Homepage: http://code.google.com/p/libproxy/
 
-Package: libproxy1
+Package: libproxy1v5
 Architecture: any
 Multi-Arch: same
 Pre-Depends: ${misc:Pre-Depends}
 Depends: ${shlibs:Depends},
          ${misc:Depends}
+Conflicts: libproxy1
+Replaces: libproxy1
 Description: automatic proxy configuration management library (shared)
  libproxy is a lightweight library which makes it easy to develop
  applications proxy-aware with a simple and stable API.
@@ -46,7 +48,7 @@
 Multi-Arch: same
 Depends: ${shlibs:Depends},
          ${misc:Depends},
-         libproxy1 (= ${binary:Version})
+         libproxy1v5 (= ${binary:Version})
 Description: automatic proxy configuration management library (GSettings plugin)
  libproxy is a lightweight library which makes it easy to develop
  applications proxy-aware with a simple and stable API.
@@ -59,7 +61,7 @@
 Multi-Arch: same
 Depends: ${shlibs:Depends},
          ${misc:Depends},
-         libproxy1 (= ${binary:Version})
+         libproxy1v5 (= ${binary:Version})
 Description: automatic proxy configuration management library (KConfig plugin)
  libproxy is a lightweight library which makes it easy to develop
  applications proxy-aware with a simple and stable API.
@@ -72,7 +74,7 @@
 Multi-Arch: same
 Depends: ${shlibs:Depends},
          ${misc:Depends},
-         libproxy1 (= ${binary:Version})
+         libproxy1v5 (= ${binary:Version})
 Description: automatic proxy configuration management library (Network Manager plugin)
  libproxy is a lightweight library which makes it easy to develop
  applications proxy-aware with a simple and stable API.
@@ -98,7 +100,7 @@
 Multi-Arch: same
 Depends: ${shlibs:Depends},
          ${misc:Depends},
-         libproxy1 (= ${binary:Version})
+         libproxy1v5 (= ${binary:Version})
 Description: automatic proxy configuration management library (Webkit plugin)
  libproxy is a lightweight library which makes it easy to develop
  applications proxy-aware with a simple and stable API.
@@ -113,7 +115,7 @@
 XS-Testsuite: autopkgtest
 Depends: ${shlibs:Depends},
          ${misc:Depends},
-         libproxy1 (= ${binary:Version})
+         libproxy1v5 (= ${binary:Version})
 Description: automatic proxy configuration management library (devel)
  libproxy is a lightweight library which makes it easy to develop
  applications proxy-aware with a simple and stable API.
@@ -137,7 +139,7 @@
 Section: python
 Depends: ${python:Depends},
          ${misc:Depends},
-         libproxy1 (>= ${source:Version})
+         libproxy1v5 (>= ${source:Version})
 Description: automatic proxy configuration management library (python)
  libproxy is a lightweight library which makes it easy to develop
  applications proxy-aware with a simple and stable API.
diff -Nru libproxy-0.4.11/debian/control.in libproxy-0.4.11/debian/control.in
--- libproxy-0.4.11/debian/control.in	2013-11-03 13:33:47.000000000 +0100
+++ libproxy-0.4.11/debian/control.in	2015-08-02 18:20:03.000000000 +0200
@@ -5,6 +5,7 @@
 Uploaders: @GNOME_TEAM@
 Build-Depends-Indep: cli-common-dev (>= 0.5.7~), mono-devel (>= 2.4.3)
 Build-Depends: debhelper (>= 9),
+               g++ (>= 4:5.2),
                gnome-pkg-tools,
                netbase,
                cmake,
@@ -24,12 +25,14 @@
 Vcs-Browser: http://anonscm.debian.org/viewvc/pkg-gnome/packages/unstable/libproxy/
 Homepage: http://code.google.com/p/libproxy/
 
-Package: libproxy1
+Package: libproxy1v5
 Architecture: any
 Multi-Arch: same
 Pre-Depends: ${misc:Pre-Depends}
 Depends: ${shlibs:Depends},
          ${misc:Depends}
+Conflicts: libproxy1
+Replaces: libproxy1
 Description: automatic proxy configuration management library (shared)
  libproxy is a lightweight library which makes it easy to develop
  applications proxy-aware with a simple and stable API.
@@ -41,7 +44,7 @@
 Multi-Arch: same
 Depends: ${shlibs:Depends},
          ${misc:Depends},
-         libproxy1 (= ${binary:Version})
+         libproxy1v5 (= ${binary:Version})
 Description: automatic proxy configuration management library (GSettings plugin)
  libproxy is a lightweight library which makes it easy to develop
  applications proxy-aware with a simple and stable API.
@@ -54,7 +57,7 @@
 Multi-Arch: same
 Depends: ${shlibs:Depends},
          ${misc:Depends},
-         libproxy1 (= ${binary:Version})
+         libproxy1v5 (= ${binary:Version})
 Description: automatic proxy configuration management library (KConfig plugin)
  libproxy is a lightweight library which makes it easy to develop
  applications proxy-aware with a simple and stable API.
@@ -67,7 +70,7 @@
 Multi-Arch: same
 Depends: ${shlibs:Depends},
          ${misc:Depends},
-         libproxy1 (= ${binary:Version})
+         libproxy1v5 (= ${binary:Version})
 Description: automatic proxy configuration management library (Network Manager plugin)
  libproxy is a lightweight library which makes it easy to develop
  applications proxy-aware with a simple and stable API.
@@ -93,7 +96,7 @@
 Multi-Arch: same
 Depends: ${shlibs:Depends},
          ${misc:Depends},
-         libproxy1 (= ${binary:Version})
+         libproxy1v5 (= ${binary:Version})
 Description: automatic proxy configuration management library (Webkit plugin)
  libproxy is a lightweight library which makes it easy to develop
  applications proxy-aware with a simple and stable API.
@@ -108,7 +111,7 @@
 XS-Testsuite: autopkgtest
 Depends: ${shlibs:Depends},
          ${misc:Depends},
-         libproxy1 (= ${binary:Version})
+         libproxy1v5 (= ${binary:Version})
 Description: automatic proxy configuration management library (devel)
  libproxy is a lightweight library which makes it easy to develop
  applications proxy-aware with a simple and stable API.
@@ -132,7 +135,7 @@
 Section: python
 Depends: ${python:Depends},
          ${misc:Depends},
-         libproxy1 (>= ${source:Version})
+         libproxy1v5 (>= ${source:Version})
 Description: automatic proxy configuration management library (python)
  libproxy is a lightweight library which makes it easy to develop
  applications proxy-aware with a simple and stable API.
diff -Nru libproxy-0.4.11/debian/control.in.orig libproxy-0.4.11/debian/control.in.orig
--- libproxy-0.4.11/debian/control.in.orig	1970-01-01 01:00:00.000000000 +0100
+++ libproxy-0.4.11/debian/control.in.orig	2013-11-03 13:33:47.000000000 +0100
@@ -0,0 +1,164 @@
+Source: libproxy
+Section: libs
+Priority: optional
+Maintainer: Emilio Pozuelo Monfort <pochu at debian.org>
+Uploaders: @GNOME_TEAM@
+Build-Depends-Indep: cli-common-dev (>= 0.5.7~), mono-devel (>= 2.4.3)
+Build-Depends: debhelper (>= 9),
+               gnome-pkg-tools,
+               netbase,
+               cmake,
+               python-all-dev (>= 2.6.6-3~),
+               network-manager-dev [linux-any],
+               libdbus-1-dev,
+               libmozjs185-dev (>= 1.8.5),
+               kdelibs5-dev,
+               libqt4-dev,
+               libwebkitgtk-3.0-dev,
+               libjavascriptcoregtk-3.0-dev,
+               libglib2.0-dev (>= 2.26),
+               libxmu-dev
+Standards-Version: 3.9.4
+X-Python-Version: >= 2.5
+Vcs-Svn: svn://anonscm.debian.org/pkg-gnome/packages/unstable/libproxy
+Vcs-Browser: http://anonscm.debian.org/viewvc/pkg-gnome/packages/unstable/libproxy/
+Homepage: http://code.google.com/p/libproxy/
+
+Package: libproxy1
+Architecture: any
+Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${shlibs:Depends},
+         ${misc:Depends}
+Description: automatic proxy configuration management library (shared)
+ libproxy is a lightweight library which makes it easy to develop
+ applications proxy-aware with a simple and stable API.
+ .
+ This package contains the shared library.
+
+Package: libproxy1-plugin-gsettings
+Architecture: any
+Multi-Arch: same
+Depends: ${shlibs:Depends},
+         ${misc:Depends},
+         libproxy1 (= ${binary:Version})
+Description: automatic proxy configuration management library (GSettings plugin)
+ libproxy is a lightweight library which makes it easy to develop
+ applications proxy-aware with a simple and stable API.
+ .
+ This package contains the plugin to allow libproxy to read proxy settings from
+ GSettings (GNOME 3)
+
+Package: libproxy1-plugin-kconfig
+Architecture: any
+Multi-Arch: same
+Depends: ${shlibs:Depends},
+         ${misc:Depends},
+         libproxy1 (= ${binary:Version})
+Description: automatic proxy configuration management library (KConfig plugin)
+ libproxy is a lightweight library which makes it easy to develop
+ applications proxy-aware with a simple and stable API.
+ .
+ This package contains the plugin to allow libproxy to read proxy settings from
+ KConfig (KDE 4)
+
+Package: libproxy1-plugin-networkmanager
+Architecture: linux-any
+Multi-Arch: same
+Depends: ${shlibs:Depends},
+         ${misc:Depends},
+         libproxy1 (= ${binary:Version})
+Description: automatic proxy configuration management library (Network Manager plugin)
+ libproxy is a lightweight library which makes it easy to develop
+ applications proxy-aware with a simple and stable API.
+ .
+ This package contains the plugin to allow libproxy to read information from
+ Network Manager.
+
+Package: libproxy1-plugin-mozjs
+Architecture: any
+Multi-Arch: same
+Depends: ${shlibs:Depends},
+         ${misc:Depends},
+         libproxy1 (= ${binary:Version})
+Description: automatic proxy configuration management library (mozjs plugin)
+ libproxy is a lightweight library which makes it easy to develop
+ applications proxy-aware with a simple and stable API.
+ .
+ This package contains the plugin to allow libproxy to interpret PAC files
+ using mozjs
+
+Package: libproxy1-plugin-webkit
+Architecture: any
+Multi-Arch: same
+Depends: ${shlibs:Depends},
+         ${misc:Depends},
+         libproxy1 (= ${binary:Version})
+Description: automatic proxy configuration management library (Webkit plugin)
+ libproxy is a lightweight library which makes it easy to develop
+ applications proxy-aware with a simple and stable API.
+ .
+ This package contains the plugin to allow libproxy to interpret PAC files
+ using Webkit
+
+Package: libproxy-dev
+Architecture: any
+Multi-Arch: same
+Section: libdevel
+XS-Testsuite: autopkgtest
+Depends: ${shlibs:Depends},
+         ${misc:Depends},
+         libproxy1 (= ${binary:Version})
+Description: automatic proxy configuration management library (devel)
+ libproxy is a lightweight library which makes it easy to develop
+ applications proxy-aware with a simple and stable API.
+ .
+ This package contains the development files including vala bindings.
+
+Package: libproxy-tools
+Section: utils
+Architecture: any
+Depends: ${shlibs:Depends},
+         ${misc:Depends}
+Description: automatic proxy configuration management library (tools)
+ libproxy is a lightweight library which makes it easy to develop
+ applications proxy-aware with a simple and stable API.
+ .
+ This package contains a program to interact with libproxy from the
+ command line.
+
+Package: python-libproxy
+Architecture: all
+Section: python
+Depends: ${python:Depends},
+         ${misc:Depends},
+         libproxy1 (>= ${source:Version})
+Description: automatic proxy configuration management library (python)
+ libproxy is a lightweight library which makes it easy to develop
+ applications proxy-aware with a simple and stable API.
+ .
+ This package contains the Python bindings.
+
+Package: libproxy0.4-cil
+Architecture: all
+Section: cli-mono
+Depends: ${cli:Depends},
+         ${misc:Depends}
+Description: automatic proxy configuration management library (CLI)
+ libproxy is a lightweight library which makes it easy to develop
+ applications proxy-aware with a simple and stable API.
+ .
+ This package contains the CLI bindings.
+
+Package: libproxy-cil-dev
+Architecture: all
+Section: cli-mono
+Depends: ${cli:Depends},
+         ${misc:Depends},
+         libproxy0.4-cil (= ${binary:Version})
+Description: automatic proxy configuration management library (CLI devel)
+ libproxy is a lightweight library which makes it easy to develop
+ applications proxy-aware with a simple and stable API.
+ .
+ This package contains development files for the CLI bindings, and should be
+ used for compilation.
diff -Nru libproxy-0.4.11/debian/libproxy1.install libproxy-0.4.11/debian/libproxy1.install
--- libproxy-0.4.11/debian/libproxy1.install	2012-02-15 15:08:52.000000000 +0100
+++ libproxy-0.4.11/debian/libproxy1.install	1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-usr/lib/*/libproxy.so.*
diff -Nru libproxy-0.4.11/debian/libproxy1v5.install libproxy-0.4.11/debian/libproxy1v5.install
--- libproxy-0.4.11/debian/libproxy1v5.install	1970-01-01 01:00:00.000000000 +0100
+++ libproxy-0.4.11/debian/libproxy1v5.install	2015-08-02 18:17:06.000000000 +0200
@@ -0,0 +1 @@
+usr/lib/*/libproxy.so.*
diff -Nru libproxy-0.4.11/debian/rules libproxy-0.4.11/debian/rules
--- libproxy-0.4.11/debian/rules	2013-09-14 12:40:53.000000000 +0200
+++ libproxy-0.4.11/debian/rules	2015-08-02 18:17:06.000000000 +0200
@@ -3,7 +3,7 @@
 include /usr/share/gnome-pkg-tools/1/rules/uploaders.mk
 
 SHLIBVER := 0.4.11
-libproxy := $(shell sed -nr 's/^Package:[[:space:]]*(libproxy[0-9]+)[[:space:]]*$$/\1/p' debian/control.in)
+libproxy := $(shell sed -nr 's/^Package:[[:space:]]*(libproxy[0-9]+v5)[[:space:]]*$$/\1/p' debian/control.in)
 
 #export DH_VERBOSE=1
 


More information about the pkg-gnome-maintainers mailing list