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
+

Reply via email to