Control: tags -1 moreinfo

On Tue, 15 Jan 2019 15:43:31 +0000 Luca Boccassi <bl...@debian.org> wrote:
> Package: debhelper
> Version: 12
> Severity: normal
> Control: found -1 10.10.6
> 
> Dear Maintainer,
> 
> While changing build environment from Debian 9 to Debian 10, a package
> that does cross compilation now fails to run dh_strip.
> The debhelper compat level has not changed, it stayed at level 8.
> 

Hi,

I am sorry to hear it breaks for you.


> The log says:
> 
> DEB_HOST_GNU_TYPE=x86_64-w64-mingw32 dh_strip -Xi686-w64-mingw32
> Subroutine install_dir redefined at /usr/bin/dh_strip line 14.
> dh_strip: package objcopy is not in control info
> Use of uninitialized value $command in concatenation (.) or string at 
> /usr/share/perl5/Debian/Debhelper/Dh_Lib.pm line 2217.
> dh_strip: package strip is not in control info
> Use of uninitialized value $command in concatenation (.) or string at 
> /usr/share/perl5/Debian/Debhelper/Dh_Lib.pm line 2217.
> dh_strip: package objdump is not in control info
> Use of uninitialized value $command in concatenation (.) or string at 
> /usr/share/perl5/Debian/Debhelper/Dh_Lib.pm line 2217.
> dh_strip: Compatibility levels before 9 are deprecated (level 8 in use)
>       x86_64-w64-mingw32- --strip-debug --remove-section=.comment 
> --remove-section=.note 
> debian/lzo-mingw-w64-x86-64-dev/usr/x86_64-w64-mingw32/lib/liblzo2.a
> Can't exec "x86_64-w64-mingw32-": No such file or directory at 
> /usr/share/perl5/Debian/Debhelper/Dh_Lib.pm line 475.
> 

Please attach the full build log from this.  In particularly, is this
from a clean *Debian* unstable or testing with "no funny monkey
business" (e.g. diverts or non-standard PATH with dh_strip being shadowed)?

I have seen some very weird cases where e.g. Ubuntu diverted and forked
part of debhelper.  Unsurprisingly, it would occasionally break in
"funny" and weird ways.  I would very much like to confirm quickly
whether we are dealing with stuff like that or a debhelper bug.

If needed by, try inserting the following into the build process (before
it fails):

  grep cross_command $(which dh_strip)

I have a feeling it will say:

... cross_command("objcopy");
... cross_command("strip");

Rather than:

... cross_command($package, "objcopy");
... cross_command($package, "strip");


> 
> The package (which builds 2 binary packages) is doing:
> 
> override_dh_strip:
>       DEB_HOST_GNU_TYPE=x86_64-w64-mingw32 dh_strip -Xi686-w64-mingw32
>       DEB_HOST_GNU_TYPE=i686-w64-mingw32 dh_strip -Xx86_64-w64-mingw32
> 
> I believe what's happening is that dh_strip now calls cross_command
> from the foreach $packages loop, but the "package" variable is empty
> and thus it calls cross_command( , "objcopy") which then, I think, perl
> squashes as package="objcopy", which then causes package_cross_type to
> print that error about control info, and then given $command is empty
> it just returns "-".
> 

No, perl does not squash it like that when you have explicit variables.
 I.e. cross_command if called like:

  cross_command($package, '...');

will always put '...' in the second parameter of cross_command.  Most
likely, the dh_strip on your build system does not match the version of
Dh_Lib.pm.

Not to mention that $package would then also be empty on a native build
and would have broken most of the Debian builds (indirectly via tmpdir
then being "debian/" rather than "debian/$package").

> Any suggestion? Adding -p does not seem to help, the same error happens
> (eg: ... dh_strip -pfoo ... dh_strip -pbar ...)
> 
> -- 
> Kind regards,
> Luca Boccassi
Please try the checks I described above.  At the moment, I strongly
suspect the build environment being the source of the error.

Thanks,
~Niels

Reply via email to