[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#997961: debhelper: dh_perl generates unversioned perl/perl-base dependencies for XS modules



Package: debhelper
Version: 13.3
Severity: normal
X-Debbugs-Cc: debian-perl@lists.debian.org

Hi,

as noted by josch in
 https://lists.debian.org/debian-perl/2021/10/msg00020.html
dh_perl generates incorrect unversioned dependencies for packages
containing binary  Perl modules.

I think this regressed with
 https://salsa.debian.org/debian/debhelper/-/commit/7da36e893a975680654c1448c7bcba7dc1786551
which looks incorrect: $version is not always empty and when it
isn't it should be used. This got into unstable with 13.3 in
December 2020, shortly before the bullseye freeze started
and after the Perl 5.32 transition.

Quoting the Perl policy at
 https://www.debian.org/doc/packaging-manuals/perl-policy/ch-module_packages.html#s-binary-modules

   Binary modules must specify a dependency on either perl or perl-base
   with a minimum version of the perl package used to build the module.

A quick count [1] indicates that 150 or so packages are currently violating this,
presumably because of the dh_perl change.

Fortunately I don't think this is as bad as it might seem (and I guess
we'd have noticed sooner if it was.)

Clearly the policy requirement is there to guarantee that partial upgrades
don't result in a binary module getting loaded by a Perl version older
than the one it was compiled with. The perlapi-* dependencies already
ensure this for the upstream Perl version, and we have made only minimal
changes in the Debian packaging during the time, partially because of
the freeze.

I'm not sure how necessary the policy requirement is nowadays. We
certainly take care not to change the XS module ABI, and if we had
to we'd change the perlapi-* virtual package too to force a full Perl
transition.  I guess C toolchain changes might cause issues, but even
that seems improbable.

In any case, it would probably be good to fix this before the Perl 5.34
transition when all the binary modules get rebuilt. (There is no timeline
yet for that but that's just because I haven't got around to pushing it.)

[1] grep-aptavail -FDepends perlapi- | grep-dctrl -sPackage -v -FDepends -e 'perl(-base)? \('
-- 
Niko Tyni   ntyni@debian.org


Reply to: