• Bug#1065483: perl-base: should provide perlapi-5.38.2 on i386

    From Sven Joachim@21:1/5 to Sven Joachim on Wed Mar 6 11:10:01 2024
    Control: tags -1 + patch

    On 2024-03-05 11:47 +0100, Sven Joachim wrote:

    Package: perl-base
    Version: 5.38.2-3.1
    Severity: serious
    X-Debbugs-Cc: Sven Joachim <svenjoac@gmx.de>, Steve Langasek <vorlon@debian.org>

    On i386, perl-base provides perlapi-5.38.2t64 rather than
    perlapi-5.38.2. This makes tons of packages uninstallable or
    unbuildable and is not what has been agreed upon in #1060246.

    There are already 229 packages in state BD-Uninstallable on i386,
    on amd64 there are only 19. Personally I have held back packages from src:e2fsprogs, src:util-linux and src:expat due to multiarch version
    skew. This is only going to become worse.

    The reason is a bad check in debian/rules, line 31:

    ,----
    | # If nonempty, this will determine $Config{debian_abi} and Provides: entries
    | # (otherwise, the Provides: entries will be generated by debian/mkprovides) | perlabi =
    | ifeq (,$(filter $(DEB_HOST_GNU_TYPE),i386 hurd-i386))
    | ifeq ($(DEB_HOST_ARCH_BITS),32)
    | perlabi = 5.38.2t64
    | endif
    | endif
    `----

    Unfortunately DEB_HOST_GNU_TYPE does not match i386 or hurd-i386 on
    these architectures:

    ,----
    | $ dpkg-architecture -ai386 -qDEB_HOST_GNU_TYPE 2>/dev/null
    | i686-linux-gnu
    | $ dpkg-architecture -ahurd-i386 -qDEB_HOST_GNU_TYPE 2>/dev/null
    | i686-gnu
    `----

    You may want to filter on DEB_HOST_ARCH instead (make sure it is
    defined).

    I have decided to fix the check for DEB_HOST_GNU_TYPE instead. All of
    this is going away anyway when perl moves on to version 5.40.

    A quick fix would be appreciated, because reverse dependencies are
    likely going to pick up the wrong perlapi Provides.

    There are currently six packages depending on perlapi-5.38.2t64:i386,
    but that number is likely going to grow. The second patch adds a
    hardcoded dependency not break these reverse dependencies, but it might
    be preferable to just request binNMUs for them as long as there are not
    too many.

    Cheers,
    Sven


    From 016030f4f7d4d3317016c3f9af3981030dfef913 Mon Sep 17 00:00:00 2001
    From: Sven Joachim <svenjoac@gmx.de>
    Date: Wed, 6 Mar 2024 09:53:06 +0100
    Subject: [PATCH] Fix perlapi Provides for i386 and hurd-i386

    ---
    debian/rules | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    diff --git a/debian/rules b/debian/rules
    index a5a3565..43f923e 100755
    --- a/debian/rules
    +++ b/debian/rules
    @@ -28,7 +28,7 @@ DEB_HOST_ARCH_BITS ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_BITS)
    # If nonempty, this will determine $Config{debian_abi} and Provides: entries
    # (otherwise, the Provides: entries will be generated by debian/mkprovides)
    perlabi =
    -ifeq (,$(filter $(DEB_HOST_GNU_TYPE),i386 hurd-i386))
    +ifeq (,$(filter $(DEB_HOST_GNU_TYPE),i686-linux-gnu i686-gnu))
    ifeq ($(DEB_HOST_ARCH_BITS),32)
    perlabi = 5.38.2t64
    endif
    --
    2.43.0


    --=-=-Content-Type: text/x-diff
    Content-Disposition: inline;
    filename 02-Temporarily-provide-perlapi-5.38.2t64-on-i386-and-hu.patch Content-Transfer-Encoding: quoted-printable

    From 8509b7145c29e936e4b76b83f31fbc1d397d69dc Mon Sep 17 00:00:00 2001
    From: Sven Joachim <svenjoac@gmx.de>
    Date: Wed, 6 Mar 2024 10:02:43 +0100
    Subject: [PATCH] Temporarily pr
  • From Steve Langasek@21:1/5 to Sven Joachim on Wed Mar 6 18:40:01 2024
    --+GptENCdfOQPQ6X3
    Content-Type: text/plain; charset=us-ascii
    Content-Disposition: inline
    Content-Transfer-Encoding: quoted-printable

    On Tue, Mar 05, 2024 at 11:47:39AM +0100, Sven Joachim wrote:
    Package: perl-base
    Version: 5.38.2-3.1
    Severity: serious
    X-Debbugs-Cc: Sven Joachim <svenjoac@gmx.de>, Steve Langasek <vorlon@debian.org>

    On i386, perl-base provides perlapi-5.38.2t64 rather than
    perlapi-5.38.2. This makes tons of packages uninstallable or
    unbuildable and is not what has been agreed upon in #1060246.

    The reason is a bad check in debian/rules, line 31:

    ,----
    | # If nonempty, this will determine $Config{debian_abi} and Provides: entries
    | # (otherwise, the Provides: entries will be generated by debian/mkprovides) | perlabi =
    | ifeq (,$(filter $(DEB_HOST_GNU_TYPE),i386 hurd-i386))
    | ifeq ($(DEB_HOST_ARCH_BITS),32)
    | perlabi = 5.38.2t64
    | endif
    | endif
    `----

    Sorry about this. Clearly, was untested on i386!

    I think it's preferable here to check DEB_HOST_ARCH, which was my intention, rather than DEB_HOST_GNU_TYPE. I've uploaded an NMU to that effect. Please see the NMU debdiff attached.

    --
    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/ slangasek@ubuntu.com vorlon@debian.org

    --+GptENCdfOQPQ6X3
    Content-Type: text/plain; charset=us-ascii
    Content-Disposition: attachment; filename="nmu_perl.debdiff" Content-Transfer-Encoding: quoted-printable

    diff -Nru perl-5.38.2/debian/changelog perl-5.38.2/debian/changelog
    --- perl-5.38.2/debian/changelog 2024-03-02 21:34:58.000000000 +0000
    +++ perl-5.38.2/debian/changelog 2024-03-06 17:19:01.000000000 +0000
    @@ -1,3 +1,12 @@
    +perl (5.38.2-3.2) unstable; urgency=medium
    +
    + * Non-maintainer upload.
    + * Fix check for i386 to avoid transitioning there. Closes: #1065483.
    + * Manually add perlapi-5.38.2t64 to Provides: on i386 to avoid another
    + difficult transition.
    +
    + -- Steve Langasek <vorlon@debian.org> Wed, 06 Mar 202