Control: tags -1 moreinfo
On Tue, 15 Jan 2019 15:43:31 +0000 Luca Boccassi <[email protected]> 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