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
signature.asc
Description: PGP signature