Subsequent NMU uploaded to experimental with the fix for bug #1062801
(sorry).  Full debdiff vs unstable is attached.

Also I somehow referenced the wrong bug number in the changelog when
uploading, so closing 1062801 with this message.

On Fri, Feb 02, 2024 at 06:28:05PM +0000, Steve Langasek wrote:
> Source: libtirpc
> Version: 1.3.4+ds-1
> Severity: serious
> Tags: patch pending sid trixie
> Justification: library ABI skew on upgrade
> User: debian-...@lists.debian.org
> Usertags: time-t
> 
> NOTICE: these changes must not be uploaded to unstable yet!
> 
> Dear maintainer,
> 
> As part of the 64-bit time_t transition required to support 32-bit
> architectures in 2038 and beyond
> (https://wiki.debian.org/ReleaseGoals/64bit-time), we have identified
> libtirpc as a source package shipping runtime libraries whose ABI
> either is affected by the change in size of time_t, or could not be
> analyzed via abi-compliance-checker (and therefore to be on the safe
> side we assume is affected).
> 
> To ensure that inconsistent combinations of libraries with their
> reverse-dependencies are never installed together, it is necessary to
> have a library transition, which is most easily done by renaming the
> runtime library package.
> 
> Since turning on 64-bit time_t is being handled centrally through a change
> to the default dpkg-buildflags (https://bugs.debian.org/1037136), it is
> important that libraries affected by this ABI change all be uploaded close
> together in time.  Therefore I have prepared a 0-day NMU for libtirpc
> which will initially be uploaded to experimental if possible, then to
> unstable after packages have cleared binary NEW.
> 
> Please find the patch for this NMU attached.
> 
> If you have any concerns about this patch, please reach out ASAP.  Although
> this package will be uploaded to experimental immediately, there will be a
> period of several days before we begin uploads to unstable; so if information
> becomes available that your package should not be included in the transition,
> there is time for us to amend the planned uploads.
> 
> 
> 
> -- System Information:
> Debian Release: trixie/sid
>   APT prefers unstable
>   APT policy: (500, 'unstable'), (500, 'testing'), (500, 'stable'), (1, 
> 'experimental')
> Architecture: amd64 (x86_64)
> 
> Kernel: Linux 6.5.0-14-generic (SMP w/12 CPU threads; PREEMPT)
> Kernel taint flags: TAINT_PROPRIETARY_MODULE, TAINT_OOT_MODULE
> Locale: LANG=C, LC_CTYPE=C.UTF-8 (charmap=UTF-8), LANGUAGE not set
> Shell: /bin/sh linked to /usr/bin/dash
> Init: systemd (via /run/systemd/system)

> diff -Nru libtirpc-1.3.4+ds/debian/changelog 
> libtirpc-1.3.4+ds/debian/changelog
> --- libtirpc-1.3.4+ds/debian/changelog        2023-11-12 23:45:44.000000000 
> +0000
> +++ libtirpc-1.3.4+ds/debian/changelog        2024-02-02 08:35:04.000000000 
> +0000
> @@ -1,3 +1,18 @@
> +libtirpc (1.3.4+ds-1.1~exp1) experimental; urgency=medium
> +
> +  * Non-maintainer upload.
> +  * Rename libraries for 64-bit time_t transition.
> +  * Move library to /usr/; Closes: #1055959
> +  * debian/libtirpc3t64.preinst: implement 'Protective diversions' (M8 
> +    from https://subdivi.de/~helmut/dep17.html) to avoid files accidentally
> +    being deleted on upgrade when moving between packages and also moving
> +    between /lib and /usr/lib.  Because this package is present in the
> +    bootstrap set in some configurations, these diversions must be kept
> +    around until forky rather than being immediately removed in the
> +    postinst.
> +
> + -- Steve Langasek <vor...@debian.org>  Fri, 02 Feb 2024 08:35:04 +0000
> +
>  libtirpc (1.3.4+ds-1) unstable; urgency=medium
>  
>    [ Debian Janitor ]
> diff -Nru libtirpc-1.3.4+ds/debian/clean libtirpc-1.3.4+ds/debian/clean
> --- libtirpc-1.3.4+ds/debian/clean    2023-11-12 23:45:44.000000000 +0000
> +++ libtirpc-1.3.4+ds/debian/clean    2024-02-02 08:35:04.000000000 +0000
> @@ -1 +1,2 @@
>  src/config.h
> +debian/libtirpc3t64.preinst
> diff -Nru libtirpc-1.3.4+ds/debian/control libtirpc-1.3.4+ds/debian/control
> --- libtirpc-1.3.4+ds/debian/control  2023-11-12 23:45:44.000000000 +0000
> +++ libtirpc-1.3.4+ds/debian/control  2024-02-02 08:35:04.000000000 +0000
> @@ -13,7 +13,7 @@
>  Section: libdevel
>  Architecture: any
>  Multi-Arch: same
> -Depends: libtirpc3 (= ${binary:Version}), ${misc:Depends}
> +Depends: libtirpc3t64 (= ${binary:Version}), ${misc:Depends}
>  Description: transport-independent RPC library - development files
>   This package contains a port of Sun's transport-independent RPC library to
>   Linux. The library is intended as a replacement for the RPC code in the GNU 
> C
> @@ -21,12 +21,14 @@
>   .
>   This package contains the files needed for development against libtirpc.
>  
> -Package: libtirpc3
> +Package: libtirpc3t64
> +Provides: ${t64:Provides}
> +Replaces: libtirpc3
>  Architecture: any
>  Multi-Arch: same
>  Pre-Depends: ${misc:Pre-Depends}
>  Depends: ${shlibs:Depends}, ${misc:Depends}, libtirpc-common (>= 
> ${source:Version})
> -Breaks: nfs-common (<< 1:1.2.8-7), nfs-kernel-server (<< 1:1.2.8-7)
> +Breaks: libtirpc3 (<< ${source:Version}), nfs-common (<< 1:1.2.8-7), 
> nfs-kernel-server (<< 1:1.2.8-7)
>  Description: transport-independent RPC library
>   This package contains a port of Sun's transport-independent RPC library to
>   Linux. The library is intended as a replacement for the RPC code in the GNU 
> C
> @@ -36,8 +38,8 @@
>  Architecture: all
>  Multi-Arch: foreign
>  Depends: ${misc:Depends}
> -Breaks: libtirpc1, libtirpc3 (<< 1.1.4-0.1~)
> -Replaces: libtirpc1, libtirpc3 (<< 1.1.4-0.1~)
> +Breaks: libtirpc1, libtirpc3t64 (<< 1.1.4-0.1~)
> +Replaces: libtirpc1, libtirpc3t64 (<< 1.1.4-0.1~)
>  Description: transport-independent RPC library - common files
>   This package contains a port of Sun's transport-independent RPC library to
>   Linux. The library is intended as a replacement for the RPC code in the GNU 
> C
> diff -Nru libtirpc-1.3.4+ds/debian/libtirpc3.install 
> libtirpc-1.3.4+ds/debian/libtirpc3.install
> --- libtirpc-1.3.4+ds/debian/libtirpc3.install        2023-11-12 
> 23:45:44.000000000 +0000
> +++ libtirpc-1.3.4+ds/debian/libtirpc3.install        1970-01-01 
> 00:00:00.000000000 +0000
> @@ -1 +0,0 @@
> -lib/*/lib*.so.*
> diff -Nru libtirpc-1.3.4+ds/debian/libtirpc3.symbols 
> libtirpc-1.3.4+ds/debian/libtirpc3.symbols
> --- libtirpc-1.3.4+ds/debian/libtirpc3.symbols        2023-11-12 
> 23:45:44.000000000 +0000
> +++ libtirpc-1.3.4+ds/debian/libtirpc3.symbols        1970-01-01 
> 00:00:00.000000000 +0000
> @@ -1,7 +0,0 @@
> -libtirpc.so.3 libtirpc3 #MINVER#
> -* Build-Depends-Package: libtirpc-dev
> - (symver)TIRPC_0.3.0 1.0.2
> - (symver)TIRPC_0.3.1 1.0.2
> - (symver)TIRPC_0.3.2 1.0.2
> - (symver)TIRPC_0.3.3 1.0.2
> - (symver)TIRPC_PRIVATE 1.0.2
> diff -Nru libtirpc-1.3.4+ds/debian/libtirpc3t64.install 
> libtirpc-1.3.4+ds/debian/libtirpc3t64.install
> --- libtirpc-1.3.4+ds/debian/libtirpc3t64.install     1970-01-01 
> 00:00:00.000000000 +0000
> +++ libtirpc-1.3.4+ds/debian/libtirpc3t64.install     2024-02-02 
> 08:35:04.000000000 +0000
> @@ -0,0 +1 @@
> +usr/lib/*/lib*.so.*
> diff -Nru libtirpc-1.3.4+ds/debian/libtirpc3t64.lintian-overrides 
> libtirpc-1.3.4+ds/debian/libtirpc3t64.lintian-overrides
> --- libtirpc-1.3.4+ds/debian/libtirpc3t64.lintian-overrides   1970-01-01 
> 00:00:00.000000000 +0000
> +++ libtirpc-1.3.4+ds/debian/libtirpc3t64.lintian-overrides   2024-02-02 
> 08:35:04.000000000 +0000
> @@ -0,0 +1 @@
> +libtirpc3t64: package-name-doesnt-match-sonames libtirpc3
> diff -Nru libtirpc-1.3.4+ds/debian/libtirpc3t64.preinst.in 
> libtirpc-1.3.4+ds/debian/libtirpc3t64.preinst.in
> --- libtirpc-1.3.4+ds/debian/libtirpc3t64.preinst.in  1970-01-01 
> 00:00:00.000000000 +0000
> +++ libtirpc-1.3.4+ds/debian/libtirpc3t64.preinst.in  2024-02-02 
> 08:35:04.000000000 +0000
> @@ -0,0 +1,18 @@
> +#!/bin/sh
> +
> +set -e
> +
> +# per Helmut, these can't be safely removed again (in package postinst)
> +# until forky
> +case $1 in
> +     install)
> +             for file in libtirpc.so.3 libtirpc.so.3.0.0; do
> +                     dpkg-divert --package libtirpc3t64 --no-rename \
> +                             --divert \
> +                             /lib/#DEB_HOST_MULTIARCH#/$file.usr-is-merged \
> +                             /lib/#DEB_HOST_MULTIARCH#/$file
> +                done
> +                ;;
> +esac
> +
> +#DEBHELPER#
> diff -Nru libtirpc-1.3.4+ds/debian/libtirpc3t64.symbols 
> libtirpc-1.3.4+ds/debian/libtirpc3t64.symbols
> --- libtirpc-1.3.4+ds/debian/libtirpc3t64.symbols     1970-01-01 
> 00:00:00.000000000 +0000
> +++ libtirpc-1.3.4+ds/debian/libtirpc3t64.symbols     2024-02-02 
> 08:35:04.000000000 +0000
> @@ -0,0 +1,7 @@
> +libtirpc.so.3 libtirpc3t64 #MINVER#
> +* Build-Depends-Package: libtirpc-dev
> + (symver)TIRPC_0.3.0 1.0.2
> + (symver)TIRPC_0.3.1 1.0.2
> + (symver)TIRPC_0.3.2 1.0.2
> + (symver)TIRPC_0.3.3 1.0.2
> + (symver)TIRPC_PRIVATE 1.0.2
> diff -Nru libtirpc-1.3.4+ds/debian/rules libtirpc-1.3.4+ds/debian/rules
> --- libtirpc-1.3.4+ds/debian/rules    2023-11-12 23:45:44.000000000 +0000
> +++ libtirpc-1.3.4+ds/debian/rules    2024-02-02 08:35:04.000000000 +0000
> @@ -23,17 +23,13 @@
>  
>  DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
>  override_dh_install:
> -     # Move libtirpc.so.* to /lib
> -     mkdir -p debian/tmp/lib/$(DEB_HOST_MULTIARCH)
> -     mv debian/tmp/usr/lib/*/libtirpc.so.* 
> debian/tmp/lib/$(DEB_HOST_MULTIARCH)
> -
> -     # Fix up the -dev symlink
> -     LINKTARGET=`readlink 
> debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/libtirpc.so`; \
> -     ln -sf /lib/$(DEB_HOST_MULTIARCH)/$$LINKTARGET 
> debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/libtirpc.so
> -
>       dh_install -Nlibtirpc3-udeb
>       dh_install -plibtirpc3-udeb --sourcedir=debian/tmp-udeb
>  
>  override_dh_auto_clean:
>       rm -rf build-deb build-udeb
>       rm -rf debian/tmp-udeb
> +
> +override_dh_installdeb:
> +     sed -e"s/#DEB_HOST_MULTIARCH#/$(DEB_HOST_MULTIARCH)/" \
> +             debian/libtirpc3t64.preinst.in > debian/libtirpc3t64.preinst


-- 
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                                   https://www.debian.org/
slanga...@ubuntu.com                                     vor...@debian.org
diff -Nru libtirpc-1.3.4+ds/debian/changelog libtirpc-1.3.4+ds/debian/changelog
--- libtirpc-1.3.4+ds/debian/changelog  2023-11-12 23:45:44.000000000 +0000
+++ libtirpc-1.3.4+ds/debian/changelog  2024-02-03 21:26:30.000000000 +0000
@@ -1,3 +1,18 @@
+libtirpc (1.3.4+ds-1.1~exp2) experimental; urgency=medium
+
+  [ Helmut Grohne ]
+  * Non-maintainer upload.
+  * Fix /usr-move mitigation. (Closes: #1062803)
+
+ -- Steve Langasek <vor...@debian.org>  Sat, 03 Feb 2024 21:26:30 +0000
+
+libtirpc (1.3.4+ds-1.1~exp1) experimental; urgency=medium
+
+  * Non-maintainer upload.
+  * Rename libraries for 64-bit time_t transition.
+
+ -- Steve Langasek <vor...@debian.org>  Fri, 02 Feb 2024 18:28:08 +0000
+
 libtirpc (1.3.4+ds-1) unstable; urgency=medium
 
   [ Debian Janitor ]
diff -Nru libtirpc-1.3.4+ds/debian/clean libtirpc-1.3.4+ds/debian/clean
--- libtirpc-1.3.4+ds/debian/clean      2023-11-12 23:45:44.000000000 +0000
+++ libtirpc-1.3.4+ds/debian/clean      2024-02-03 21:26:24.000000000 +0000
@@ -1 +1,3 @@
 src/config.h
+debian/libtirpc3t64.preinst
+debian/libtirpc3t64.postrm
diff -Nru libtirpc-1.3.4+ds/debian/control libtirpc-1.3.4+ds/debian/control
--- libtirpc-1.3.4+ds/debian/control    2023-11-12 23:45:44.000000000 +0000
+++ libtirpc-1.3.4+ds/debian/control    2024-02-02 18:28:07.000000000 +0000
@@ -13,7 +13,7 @@
 Section: libdevel
 Architecture: any
 Multi-Arch: same
-Depends: libtirpc3 (= ${binary:Version}), ${misc:Depends}
+Depends: libtirpc3t64 (= ${binary:Version}), ${misc:Depends}
 Description: transport-independent RPC library - development files
  This package contains a port of Sun's transport-independent RPC library to
  Linux. The library is intended as a replacement for the RPC code in the GNU C
@@ -21,12 +21,14 @@
  .
  This package contains the files needed for development against libtirpc.
 
-Package: libtirpc3
+Package: libtirpc3t64
+Provides: ${t64:Provides}
+Replaces: libtirpc3
 Architecture: any
 Multi-Arch: same
 Pre-Depends: ${misc:Pre-Depends}
 Depends: ${shlibs:Depends}, ${misc:Depends}, libtirpc-common (>= 
${source:Version})
-Breaks: nfs-common (<< 1:1.2.8-7), nfs-kernel-server (<< 1:1.2.8-7)
+Breaks: libtirpc3 (<< ${source:Version}), nfs-common (<< 1:1.2.8-7), 
nfs-kernel-server (<< 1:1.2.8-7)
 Description: transport-independent RPC library
  This package contains a port of Sun's transport-independent RPC library to
  Linux. The library is intended as a replacement for the RPC code in the GNU C
@@ -36,8 +38,8 @@
 Architecture: all
 Multi-Arch: foreign
 Depends: ${misc:Depends}
-Breaks: libtirpc1, libtirpc3 (<< 1.1.4-0.1~)
-Replaces: libtirpc1, libtirpc3 (<< 1.1.4-0.1~)
+Breaks: libtirpc1, libtirpc3t64 (<< 1.1.4-0.1~)
+Replaces: libtirpc1, libtirpc3t64 (<< 1.1.4-0.1~)
 Description: transport-independent RPC library - common files
  This package contains a port of Sun's transport-independent RPC library to
  Linux. The library is intended as a replacement for the RPC code in the GNU C
diff -Nru libtirpc-1.3.4+ds/debian/libtirpc3.install 
libtirpc-1.3.4+ds/debian/libtirpc3.install
--- libtirpc-1.3.4+ds/debian/libtirpc3.install  2023-11-12 23:45:44.000000000 
+0000
+++ libtirpc-1.3.4+ds/debian/libtirpc3.install  1970-01-01 00:00:00.000000000 
+0000
@@ -1 +0,0 @@
-lib/*/lib*.so.*
diff -Nru libtirpc-1.3.4+ds/debian/libtirpc3.symbols 
libtirpc-1.3.4+ds/debian/libtirpc3.symbols
--- libtirpc-1.3.4+ds/debian/libtirpc3.symbols  2023-11-12 23:45:44.000000000 
+0000
+++ libtirpc-1.3.4+ds/debian/libtirpc3.symbols  1970-01-01 00:00:00.000000000 
+0000
@@ -1,7 +0,0 @@
-libtirpc.so.3 libtirpc3 #MINVER#
-* Build-Depends-Package: libtirpc-dev
- (symver)TIRPC_0.3.0 1.0.2
- (symver)TIRPC_0.3.1 1.0.2
- (symver)TIRPC_0.3.2 1.0.2
- (symver)TIRPC_0.3.3 1.0.2
- (symver)TIRPC_PRIVATE 1.0.2
diff -Nru libtirpc-1.3.4+ds/debian/libtirpc3t64.install 
libtirpc-1.3.4+ds/debian/libtirpc3t64.install
--- libtirpc-1.3.4+ds/debian/libtirpc3t64.install       1970-01-01 
00:00:00.000000000 +0000
+++ libtirpc-1.3.4+ds/debian/libtirpc3t64.install       2024-02-02 
18:28:07.000000000 +0000
@@ -0,0 +1 @@
+usr/lib/*/lib*.so.*
diff -Nru libtirpc-1.3.4+ds/debian/libtirpc3t64.lintian-overrides 
libtirpc-1.3.4+ds/debian/libtirpc3t64.lintian-overrides
--- libtirpc-1.3.4+ds/debian/libtirpc3t64.lintian-overrides     1970-01-01 
00:00:00.000000000 +0000
+++ libtirpc-1.3.4+ds/debian/libtirpc3t64.lintian-overrides     2024-02-02 
18:28:07.000000000 +0000
@@ -0,0 +1 @@
+libtirpc3t64: package-name-doesnt-match-sonames libtirpc3
diff -Nru libtirpc-1.3.4+ds/debian/libtirpc3t64.postrm.in 
libtirpc-1.3.4+ds/debian/libtirpc3t64.postrm.in
--- libtirpc-1.3.4+ds/debian/libtirpc3t64.postrm.in     1970-01-01 
00:00:00.000000000 +0000
+++ libtirpc-1.3.4+ds/debian/libtirpc3t64.postrm.in     2024-02-03 
21:26:24.000000000 +0000
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+set -e
+
+# per Helmut, these can't be safely removed again (in package postinst)
+# until forky
+case $1 in
+       remove)
+               for file in libtirpc.so.3 libtirpc.so.3.0.0; do
+                       dpkg-divert --package libtirpc3t64 --no-rename \
+                               --remove --divert \
+                               /lib/#DEB_HOST_MULTIARCH#/$file.usr-is-merged \
+                               /lib/#DEB_HOST_MULTIARCH#/$file
+                done
+                ;;
+esac
+
+#DEBHELPER#
diff -Nru libtirpc-1.3.4+ds/debian/libtirpc3t64.preinst.in 
libtirpc-1.3.4+ds/debian/libtirpc3t64.preinst.in
--- libtirpc-1.3.4+ds/debian/libtirpc3t64.preinst.in    1970-01-01 
00:00:00.000000000 +0000
+++ libtirpc-1.3.4+ds/debian/libtirpc3t64.preinst.in    2024-02-02 
18:28:07.000000000 +0000
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+set -e
+
+# per Helmut, these can't be safely removed again (in package postinst)
+# until forky
+case $1 in
+       install)
+               for file in libtirpc.so.3 libtirpc.so.3.0.0; do
+                       dpkg-divert --package libtirpc3t64 --no-rename \
+                               --divert \
+                               /lib/#DEB_HOST_MULTIARCH#/$file.usr-is-merged \
+                               /lib/#DEB_HOST_MULTIARCH#/$file
+                done
+                ;;
+esac
+
+#DEBHELPER#
diff -Nru libtirpc-1.3.4+ds/debian/libtirpc3t64.symbols 
libtirpc-1.3.4+ds/debian/libtirpc3t64.symbols
--- libtirpc-1.3.4+ds/debian/libtirpc3t64.symbols       1970-01-01 
00:00:00.000000000 +0000
+++ libtirpc-1.3.4+ds/debian/libtirpc3t64.symbols       2024-02-02 
18:28:07.000000000 +0000
@@ -0,0 +1,7 @@
+libtirpc.so.3 libtirpc3t64 #MINVER#
+* Build-Depends-Package: libtirpc-dev
+ (symver)TIRPC_0.3.0 1.0.2
+ (symver)TIRPC_0.3.1 1.0.2
+ (symver)TIRPC_0.3.2 1.0.2
+ (symver)TIRPC_0.3.3 1.0.2
+ (symver)TIRPC_PRIVATE 1.0.2
diff -Nru libtirpc-1.3.4+ds/debian/rules libtirpc-1.3.4+ds/debian/rules
--- libtirpc-1.3.4+ds/debian/rules      2023-11-12 23:45:44.000000000 +0000
+++ libtirpc-1.3.4+ds/debian/rules      2024-02-03 21:26:24.000000000 +0000
@@ -23,17 +23,15 @@
 
 DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
 override_dh_install:
-       # Move libtirpc.so.* to /lib
-       mkdir -p debian/tmp/lib/$(DEB_HOST_MULTIARCH)
-       mv debian/tmp/usr/lib/*/libtirpc.so.* 
debian/tmp/lib/$(DEB_HOST_MULTIARCH)
-
-       # Fix up the -dev symlink
-       LINKTARGET=`readlink 
debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/libtirpc.so`; \
-       ln -sf /lib/$(DEB_HOST_MULTIARCH)/$$LINKTARGET 
debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/libtirpc.so
-
        dh_install -Nlibtirpc3-udeb
        dh_install -plibtirpc3-udeb --sourcedir=debian/tmp-udeb
 
 override_dh_auto_clean:
        rm -rf build-deb build-udeb
        rm -rf debian/tmp-udeb
+
+execute_before_dh_installdeb:
+       sed -e"s/#DEB_HOST_MULTIARCH#/$(DEB_HOST_MULTIARCH)/" \
+               debian/libtirpc3t64.preinst.in > debian/libtirpc3t64.preinst
+       sed -e"s/#DEB_HOST_MULTIARCH#/$(DEB_HOST_MULTIARCH)/" \
+               debian/libtirpc3t64.postrm.in > debian/libtirpc3t64.postrm

Attachment: signature.asc
Description: PGP signature

Reply via email to