Bug#1063102: swi-prolog: NMU diff for 64-bit time_t transition

2024-03-01 Thread Steve Langasek
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 +, 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/changelog2023-11-20 01:24:18.0 
> -0800
> +++ swi-prolog-9.0.4+dfsg/debian/changelog2024-02-04 18:46:16.0 
> -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   Mon, 05 Feb 2024 02:46:16 +
> +
>  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.0 
> -0800
> +++ swi-prolog-9.0.4+dfsg/debian/control  2024-02-04 18:42:29.0 
> -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/rules2023-11-20 01:24:18.0 
> -0800
> +++ swi-prolog-9.0.4+dfsg/debian/rules2024-02-04 18:45:32.0 
> -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)) 
> 

Bug#1063102: swi-prolog: NMU diff for 64-bit time_t transition

2024-02-04 Thread Steve Langasek
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.0 
-0800
+++ swi-prolog-9.0.4+dfsg/debian/changelog  2024-02-04 18:46:16.0 
-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   Mon, 05 Feb 2024 02:46:16 +
+
 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/control2023-11-20 01:24:18.0 
-0800
+++ swi-prolog-9.0.4+dfsg/debian/control2024-02-04 18:42:29.0 
-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.0 -0800
+++ swi-prolog-9.0.4+dfsg/debian/rules  2024-02-04 18:45:32.0 -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