Dear maintainer,

Please find attached a final version of this patch for the time_t
transition.  This patch is being uploaded to unstable.

Note that this adds a versioned build-dependency on dpkg-dev, to guard
against accidental backports with a wrong ABI.

Thanks!

On Mon, Feb 05, 2024 at 03:58:23AM +0000, Steve Langasek wrote:
> Source: swi-prolog
> Version: 1:5.107.0-1
> Severity: serious
> Tags: patch 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
> swi-prolog as a source package shipping runtime libraries whose ABI could
> not be analyzed via abi-compliance-checker (and therefore to be on the
> safe side we assume is affected).[0]
> 
> To ensure that inconsistent combinations of libraries with their
> reverse-dependencies are never installed together, it is necessary to
> have a library transition.  In the case of swi-prolog, since shlibs point
> to a virtual package (libswipl9), it is sufficient to change the Provides of
> the runtime package without changing the actual binary package names.
> 
> 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 swi-prolog, which I plan to upload to unstable once the necessary
> dpkg changes have been made.
> 
> Please find the patch for this NMU attached.
> 
> If you have any concerns about this patch, please reach out ASAP.  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.
> 
> Thanks,
> -- 
> 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
> 
> [0] 
> https://adrien.dcln.fr/misc/armhf-time_t/2024-02-01T09:53:00/logs/swi-prolog-core/base/log.txt

> diff -Nru swi-prolog-9.0.4+dfsg/debian/changelog 
> swi-prolog-9.0.4+dfsg/debian/changelog
> --- swi-prolog-9.0.4+dfsg/debian/changelog    2023-11-20 01:24:18.000000000 
> -0800
> +++ swi-prolog-9.0.4+dfsg/debian/changelog    2024-02-04 18:46:16.000000000 
> -0800
> @@ -1,3 +1,10 @@
> +swi-prolog (9.0.4+dfsg-3.1) experimental; urgency=medium
> +
> +  * Non-maintainer upload.
> +  * Adjust Provides for 64-bit time_t transition.
> +
> + -- Steve Langasek <vor...@debian.org>  Mon, 05 Feb 2024 02:46:16 +0000
> +
>  swi-prolog (9.0.4+dfsg-3) unstable; urgency=medium
>  
>    * Add upstream patch bumping Java compatibility version
> diff -Nru swi-prolog-9.0.4+dfsg/debian/control 
> swi-prolog-9.0.4+dfsg/debian/control
> --- swi-prolog-9.0.4+dfsg/debian/control      2023-11-20 01:24:18.000000000 
> -0800
> +++ swi-prolog-9.0.4+dfsg/debian/control      2024-02-04 18:42:29.000000000 
> -0800
> @@ -107,7 +107,7 @@
>            swi-prolog-abi-binary-${swi-prolog:BABI},
>            swi-prolog-abi-qlf-${swi-prolog:QLF},
>            swi-prolog-abi-states-${swi-prolog:SSTATES},
> -          libswipl9
> +          libswipl9t64, ${t64:Provides}
>  Description: ISO/Edinburgh-style Prolog interpreter - core system
>   SWI-Prolog is a fast and powerful ISO/Edinburgh-style Prolog compiler with a
>   rich set of built-in predicates. It offers a fast, robust and small
> diff -Nru swi-prolog-9.0.4+dfsg/debian/rules 
> swi-prolog-9.0.4+dfsg/debian/rules
> --- swi-prolog-9.0.4+dfsg/debian/rules        2023-11-20 01:24:18.000000000 
> -0800
> +++ swi-prolog-9.0.4+dfsg/debian/rules        2024-02-04 18:45:32.000000000 
> -0800
> @@ -6,6 +6,13 @@
>  DPKG_EXPORT_BUILDFLAGS = 1
>  include /usr/share/dpkg/buildflags.mk
>  
> +DEB_HOST_ARCH_BITS ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_BITS)
> +DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH)
> +
> +ifneq (,$(filter 64,$(DEB_HOST_ARCH_BITS))$(filter i386,$(DEB_HOST_ARCH)))
> +  t64_provides := libswipl9
> +endif
> +
>  ifeq ($(DEB_BUILD_ARCH),riscv64)
>      DEB_LDFLAGS_MAINT_APPEND += -Wl,--no-as-needed -Wl,-latomic 
> -Wl,--as-needed
>      export DEB_LDFLAGS_MAINT_APPEND
> @@ -114,7 +121,9 @@
>       -cd build && ctest -V -E jpl:
>  
>  override_dh_gencontrol:
> +     echo 't64:Provides=$(t64_provides)' >> debian/swi-prolog-core.substvars
>       dh_gencontrol -- -Vswi-prolog:ABI="$(shell LD_LIBRARY_PATH=$(shell 
> dirname $(shell find debian/swi-prolog-core -name libswipl.so)) 
> debian/swi-prolog-core/usr/bin/swipl --abi-version | sed 's/.*-abi-//')" 
> -Vswi-prolog:FABI="$(shell LD_LIBRARY_PATH=$(shell dirname $(shell find 
> debian/swi-prolog-core -name libswipl.so)) 
> debian/swi-prolog-core/usr/bin/swipl --abi-version | sed 's/.*-abi-//' | cut 
> --delimiter=- -f 1)" -Vswi-prolog:BABI="$(shell LD_LIBRARY_PATH=$(shell 
> dirname $(shell find debian/swi-prolog-core -name libswipl.so)) 
> debian/swi-prolog-core/usr/bin/swipl --abi-version | sed 's/.*-abi-//' | cut 
> --delimiter=- -f 2)" -Vswi-prolog:QLF="$(shell LD_LIBRARY_PATH=$(shell 
> dirname $(shell find debian/swi-prolog-core -name libswipl.so)) 
> debian/swi-prolog-core/usr/bin/swipl --abi-version | sed 's/.*-abi-//' | cut 
> --delimiter=- -f 3)" -Vswi-prolog:SSTATES="$(shell LD_LIBRARY_PATH=$(shell 
> dirname $(shell find debian/swi-prolog-core -name libswipl.so)) 
> debian/swi-prolog-core/usr/bin/swipl --abi-version | sed 's/.*-abi-//' | cut 
> --delimiter=- -f 4)"
>  
>  .PHONY: override_dh_auto_configure override_dh_auto_install 
> override_dh_auto_test
>  .PHONY: override_dh_install override_dh_gencontrol
> +


-- 
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 swi-prolog-9.0.4+dfsg/debian/changelog 
swi-prolog-9.0.4+dfsg/debian/changelog
--- swi-prolog-9.0.4+dfsg/debian/changelog      2023-11-20 09:24:18.000000000 
+0000
+++ swi-prolog-9.0.4+dfsg/debian/changelog      2024-03-02 06:10:07.000000000 
+0000
@@ -1,3 +1,10 @@
+swi-prolog (9.0.4+dfsg-3.1) unstable; urgency=medium
+
+  * Non-maintainer upload.
+  * Rename libraries for 64-bit time_t transition.  Closes: #1063102.
+
+ -- Steve Langasek <vor...@debian.org>  Sat, 02 Mar 2024 06:10:07 +0000
+
 swi-prolog (9.0.4+dfsg-3) unstable; urgency=medium
 
   * Add upstream patch bumping Java compatibility version
diff -Nru swi-prolog-9.0.4+dfsg/debian/control 
swi-prolog-9.0.4+dfsg/debian/control
--- swi-prolog-9.0.4+dfsg/debian/control        2023-11-20 09:24:18.000000000 
+0000
+++ swi-prolog-9.0.4+dfsg/debian/control        2024-03-02 06:09:37.000000000 
+0000
@@ -6,6 +6,7 @@
                dctrl-tools,
                debhelper-compat (= 13),
                default-jdk [alpha amd64 arm64 armel armhf i386 ia64 
kfreebsd-amd64 kfreebsd-i386 m68k mips mips64el mipsel powerpc powerpcspe ppc64 
ppc64el riscv64 s390x sh4 sparc64 x32],
+               dpkg-dev (>= 1.22.5),
                junit       [alpha amd64 arm64 armel armhf i386 ia64 
kfreebsd-amd64 kfreebsd-i386 m68k mips mips64el mipsel powerpc powerpcspe ppc64 
ppc64el riscv64 s390x sh4 sparc64 x32],
                emacs-common,
                ncurses-dev,
@@ -107,7 +108,7 @@
           swi-prolog-abi-binary-${swi-prolog:BABI},
           swi-prolog-abi-qlf-${swi-prolog:QLF},
           swi-prolog-abi-states-${swi-prolog:SSTATES},
-          libswipl9
+          libswipl9t64, ${t64:Provides}
 Description: ISO/Edinburgh-style Prolog interpreter - core system
  SWI-Prolog is a fast and powerful ISO/Edinburgh-style Prolog compiler with a
  rich set of built-in predicates. It offers a fast, robust and small
diff -Nru swi-prolog-9.0.4+dfsg/debian/rules swi-prolog-9.0.4+dfsg/debian/rules
--- swi-prolog-9.0.4+dfsg/debian/rules  2023-11-20 09:24:18.000000000 +0000
+++ swi-prolog-9.0.4+dfsg/debian/rules  2024-02-22 04:28:53.000000000 +0000
@@ -6,6 +6,13 @@
 DPKG_EXPORT_BUILDFLAGS = 1
 include /usr/share/dpkg/buildflags.mk
 
+DEB_HOST_ARCH_BITS ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_BITS)
+DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH)
+
+ifneq (,$(filter 64,$(DEB_HOST_ARCH_BITS))$(filter i386,$(DEB_HOST_ARCH)))
+  t64_provides := libswipl9
+endif
+
 ifeq ($(DEB_BUILD_ARCH),riscv64)
     DEB_LDFLAGS_MAINT_APPEND += -Wl,--no-as-needed -Wl,-latomic -Wl,--as-needed
     export DEB_LDFLAGS_MAINT_APPEND
@@ -114,7 +121,9 @@
        -cd build && ctest -V -E jpl:
 
 override_dh_gencontrol:
+       echo 't64:Provides=$(t64_provides)' >> debian/swi-prolog-core.substvars
        dh_gencontrol -- -Vswi-prolog:ABI="$(shell LD_LIBRARY_PATH=$(shell 
dirname $(shell find debian/swi-prolog-core -name libswipl.so)) 
debian/swi-prolog-core/usr/bin/swipl --abi-version | sed 's/.*-abi-//')" 
-Vswi-prolog:FABI="$(shell LD_LIBRARY_PATH=$(shell dirname $(shell find 
debian/swi-prolog-core -name libswipl.so)) debian/swi-prolog-core/usr/bin/swipl 
--abi-version | sed 's/.*-abi-//' | cut --delimiter=- -f 1)" 
-Vswi-prolog:BABI="$(shell LD_LIBRARY_PATH=$(shell dirname $(shell find 
debian/swi-prolog-core -name libswipl.so)) debian/swi-prolog-core/usr/bin/swipl 
--abi-version | sed 's/.*-abi-//' | cut --delimiter=- -f 2)" 
-Vswi-prolog:QLF="$(shell LD_LIBRARY_PATH=$(shell dirname $(shell find 
debian/swi-prolog-core -name libswipl.so)) debian/swi-prolog-core/usr/bin/swipl 
--abi-version | sed 's/.*-abi-//' | cut --delimiter=- -f 3)" 
-Vswi-prolog:SSTATES="$(shell LD_LIBRARY_PATH=$(shell dirname $(shell find 
debian/swi-prolog-core -name libswipl.so)) debian/swi-prolog-core/usr/bin/swipl 
--abi-version | sed 's/.*-abi-//' | cut --delimiter=- -f 4)"
 
 .PHONY: override_dh_auto_configure override_dh_auto_install 
override_dh_auto_test
 .PHONY: override_dh_install override_dh_gencontrol
+

Attachment: signature.asc
Description: PGP signature

Reply via email to