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

Planning for libidn shared library version transition

Hi!  This is for post-bullseye, but I appreciate guidance if anyone has
time.  Shared library version transitions trigger uncertainty in me.

I want to upload a new upstream libidn release into Debian, but upstream
has done a shared library transition.  Bullseye will ship with
libidn11-dev instead of libidn-dev too.  Is the first step on the
transition to provide a libidn-dev package experimental (and after the
release, unstable) and make all reverse build-dependencies use it?

If so, I plan to upload a new libidn version to experimental with this
libidn-dev package, and then start to file bugs to all build
reverse-dependencies to make them use libidn-dev.  Once all bugs have
been addressed, I can upload the new upstream version into unstable to
finish the transition.  Is that correct?  The reverse build dependencies
needs to be rebuilt against the new version though, and I'm not sure how
that happens.

I have prepared what I want to upload into experimental here:


and I have attempted to re-build all reverse dependencies [1] here:


The failed tests looks harmless: echoping is FTFBS and broken for other
reasons, clickhouse just takes too long to build (but no indication of
problem), and systemd appear to failed for some other reason.

A 'git diff' between the version in bullseye and what I want to upload
to experimental is shown below, together with debdiff-output between the
built packages.

Generally, does things looks okay?  Specifically, what about the
Breaks/Replaces/Conflicts?  The d/changelog entry?  Will the confusing
'Replaces: libidn11-dev' for the libidn11 (!) package in bullseye cause
any problem?  Am I right to drop it here?

Should I wait post release with the upload to experimental, and/or
filing the bugs?


[1] thanks to https://salsa.debian.org/bzed/reverse-dependency-ci

jas@latte:~/dpkg/libidn$ PAGER=cat git diff bullseye..experimental 
diff --git a/debian/changelog b/debian/changelog
index 28965c1..ebab7e8 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,14 @@
+libidn (1.33-4) UNRELEASED; urgency=low
+  * Prepare for soname bump in newer upstream releases.
+    - New libidn-dev package, contain what was in libidn11-dev before.
+    - Make libidn11-dev a dummy transitional package.
+    - Drop references to libidn9 and libidn9-dev, last seen in 2003
+      and didn't reach testing according to the tracker.
+  * For libidn11, drop confusing 'Replaces: libidn11-dev'.
+ -- Simon Josefsson <simon@josefsson.org>  Sun, 16 May 2021 00:08:06 +0200
 libidn (1.33-3) unstable; urgency=low
   [ Simon Josefsson ]
diff --git a/debian/control b/debian/control
index b5996d7..65a58b6 100644
--- a/debian/control
+++ b/debian/control
@@ -26,10 +26,20 @@ Description: Command line and Emacs interface to GNU Libidn
 Package: libidn11-dev
+Section: oldlibs
+Architecture: any
+Depends: libidn-dev, ${misc:Depends}
+Multi-Arch: same
+Description: Transitional development package for GNU Libidn
+ This is a transitional package.  It can safely be removed.
+Package: libidn-dev
 Section: libdevel
 Architecture: any
 Depends: libidn11 (= ${binary:Version}), pkg-config, ${misc:Depends}
-Conflicts: libidn9-dev
+Breaks: libidn11-dev (<< 1.33-4)
+Replaces: libidn11-dev (<< 1.33-4)
+Provides: libidn11-dev
 Multi-Arch: same
 Description: Development files for GNU Libidn, an IDN library
  GNU Libidn is a fully documented implementation of the Stringprep,
@@ -43,8 +53,6 @@ Description: Development files for GNU Libidn, an IDN library
 Package: libidn11
 Architecture: any
 Depends: ${misc:Depends}, ${shlibs:Depends}
-Conflicts: libidn9-dev
-Replaces: libidn11-dev
 Pre-Depends: ${misc:Pre-Depends}
 Multi-Arch: same
 Description: GNU Libidn library, implementation of IETF IDN specifications
diff --git a/debian/gbp.conf b/debian/gbp.conf
index 5862fad..2861725 100644
--- a/debian/gbp.conf
+++ b/debian/gbp.conf
@@ -1,4 +1,4 @@
 pristine-tar = True
 sign-tags = True
-debian-branch = bullseye
+debian-branch = experimental
diff --git a/debian/libidn11-dev.examples b/debian/libidn-dev.examples
similarity index 100%
rename from debian/libidn11-dev.examples
rename to debian/libidn-dev.examples
diff --git a/debian/libidn11-dev.info b/debian/libidn-dev.info
similarity index 100%
rename from debian/libidn11-dev.info
rename to debian/libidn-dev.info
diff --git a/debian/libidn11-dev.install b/debian/libidn-dev.install
similarity index 100%
rename from debian/libidn11-dev.install
rename to debian/libidn-dev.install
diff --git a/debian/libidn11-dev.manpages b/debian/libidn-dev.manpages
similarity index 100%
rename from debian/libidn11-dev.manpages
rename to debian/libidn-dev.manpages
diff --git a/debian/libidn11.symbols b/debian/libidn11.symbols
index a6f7a37..a5196d0 100644
--- a/debian/libidn11.symbols
+++ b/debian/libidn11.symbols
@@ -1,5 +1,5 @@
 libidn.so.11 libidn11 #MINVER#
-* Build-Depends-Package: libidn11-dev
+* Build-Depends-Package: libidn-dev
  LIBIDN_1.0@LIBIDN_1.0 1.13
  idn_free@LIBIDN_1.0 1.13
  idna_strerror@LIBIDN_1.0 1.13
diff --git a/debian/salsa-ci.yml b/debian/salsa-ci.yml
index 892f3cd..7e8a7a8 100644
--- a/debian/salsa-ci.yml
+++ b/debian/salsa-ci.yml
@@ -1,3 +1,8 @@
  - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/salsa-ci.yml
  - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/pipeline-jobs.yml
+ - https://jas.pages.debian.net/reverse-dependency-ci/libidn.yml
+# Enable reverse dependency builds with manual pipeline invoked from
+# https://salsa.debian.org/debian/libidn/-/pipelines/new with variable
jas@latte:~/dpkg/libidn$ debdiff ../libidn_1.33-3_amd64.changes ../libidn_1.33-4_amd64.changes
[The following lists of changes regard files as different if they have
different names, permissions or owners.]

Files in second .changes but not in first
-rw-r--r--  root/root   /usr/lib/debug/.build-id/fb/f45dfbc332a31df88c6486c891d26b77484f38.debug
-rw-r--r--  root/root   /usr/share/doc/libidn-dev/changelog.Debian.gz
-rw-r--r--  root/root   /usr/share/doc/libidn-dev/changelog.gz
-rw-r--r--  root/root   /usr/share/doc/libidn-dev/copyright
-rw-r--r--  root/root   /usr/share/doc/libidn-dev/examples/README
-rw-r--r--  root/root   /usr/share/doc/libidn-dev/examples/example.c
-rw-r--r--  root/root   /usr/share/doc/libidn-dev/examples/example2.c
-rw-r--r--  root/root   /usr/share/doc/libidn-dev/examples/example3.c
-rw-r--r--  root/root   /usr/share/doc/libidn-dev/examples/example4.c
-rw-r--r--  root/root   /usr/share/doc/libidn-dev/examples/example5.c

Files in first .changes but not in second
-rw-r--r--  root/root   /usr/lib/debug/.build-id/b8/51518b886fad3ef49ddda44ba667ac043e60c0.debug
-rw-r--r--  root/root   /usr/share/doc/libidn11-dev/examples/README
-rw-r--r--  root/root   /usr/share/doc/libidn11-dev/examples/example.c
-rw-r--r--  root/root   /usr/share/doc/libidn11-dev/examples/example2.c
-rw-r--r--  root/root   /usr/share/doc/libidn11-dev/examples/example3.c
-rw-r--r--  root/root   /usr/share/doc/libidn11-dev/examples/example4.c
-rw-r--r--  root/root   /usr/share/doc/libidn11-dev/examples/example5.c

Control files of package idn: lines which differ (wdiff format)
Version: [-1.33-3-] {+1.33-4+}

Control files of package idn-dbgsym: lines which differ (wdiff format)
Build-Ids: [-b851518b886fad3ef49ddda44ba667ac043e60c0-] {+fbf45dfbc332a31df88c6486c891d26b77484f38+}
Depends: idn (= [-1.33-3)-] {+1.33-4)+}
Version: [-1.33-3-] {+1.33-4+}

Control files of package libidn11: lines which differ (wdiff format)
[-Conflicts: libidn9-dev-]
[-Replaces: libidn11-dev-]
Version: [-1.33-3-] {+1.33-4+}

Control files of package libidn11-dbgsym: lines which differ (wdiff format)
Depends: libidn11 (= [-1.33-3)-] {+1.33-4)+}
Version: [-1.33-3-] {+1.33-4+}

Control files of package libidn11-dev: lines which differ (wdiff format)
[-Conflicts: libidn9-dev-]
Depends: [-libidn11 (= 1.33-3), pkg-config-] {+libidn-dev+}
Description: [-Development files-] {+Transitional development package+} for GNU [-Libidn, an IDN library-]
[- GNU-] Libidn
 {+This+} is a [-fully documented implementation of the Stringprep,-]
[- Punycode and IDNA specifications.  Libidn's purpose is to encode and-]
[- decode internationalized domain names.  The Nameprep, XMPP, SASLprep,-]
[- and iSCSI profiles are supported.-]
[- .-]
[- This package contains the header files, static library, pkg-config-]
[- information, API man pages, and the Libidn manual.-] {+transitional package.  It can safely be removed.+}
Installed-Size: [-878-] {+453+}
Section: [-libdevel-] {+oldlibs+}
Version: [-1.33-3-] {+1.33-4+}

Control files of package libidn11-java: lines which differ (wdiff format)
Version: [-1.33-3-] {+1.33-4+}

Attachment: signature.asc
Description: PGP signature

Reply to: