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

dpkg-source -b failing on raspbian (and probably other derivatives)

Recently in raspbian bullseye-staging dpkg-source -b started failing. There were no error messages, it just exited with
status 127. For example

dpkg-source: info: using source format '3.0 (quilt)'
dpkg-source: info: building yubikey-personalization using existing ./yubikey-personalization_1.20.0.orig.tar.gz
dpkg-source: warning: upstream signing key but no upstream tarball signature
dpkg-source: info: using patch list from debian/patches/series
dpkg-buildpackage: error: dpkg-source -b . subprocess returned exit status 127

I am not absolutely sure what update triggered this, but the timing suggests it was most likely the update to
libdpkg-perl and/or dpkg-dev 1.20.5 (note: at the time of the test dpkg itself was still at 1.19.7 waiting
for a build slot).

After adding a whole bunch of print statements to the code I found it seems to be failing in the following block
of code in Vendor.pm (print statements mine)

    print "14.24b.5.18a.16.2\n";
    foreach my $name (@names) {
        print $name."\n";
        eval qq{
            pop \@INC if \$INC[-1] eq '.';
            require Dpkg::Vendor::$name;
            \$obj = Dpkg::Vendor::$name->new();
        unless ($@) {
            $OBJECT_CACHE{$vendor} = $obj;
            print "leaving get_vendor_object by exit 2\n";
            return $obj;

    print "14.24b.5.18a.16.3\n";

Looking at the git history the code in question doesn't seem to have been touched for several years. Did 1.20.5 change
the strictness mode for the perl interpreter or something?

I am hacking up a dirty fix and will post it when it is complete, but I suspect fixing this properly needs someone with
far more knowledge of dpkg and perl than I posses.

Reply to: