Bug#962319: libextutils-hascompiler-perl: test failures perl 5.30.3-2

Niko Tyni ntyni at debian.org
Sat Jun 6 08:28:49 BST 2020


Package: libextutils-hascompiler-perl
Version: 0.021-2
Severity: serious

This package fails its test suite with perl 5.30.3-2 from unstable.

The reasons are somewhat complicated. The failing test checks
that ExtUtils::HasCompiler and ExtUtils::MakeMaker give the
same result when trying to build a program that is statically linked
with libperl.a.

Up until perl 5.30.3-2, this test build failed with ExtUtils::HasCompiler:
it checked $Config{useshrplib} and bailed out because it concluded
that our libperl is built dynamically and we therefore don't support
static linking. On the other hand, the ExtUtils::MakeMaker reference
build failed because the package does not build depend on libperl-dev,
so libperl.a was not available.

With perl 5.30.3-2, #798626 is fixed and $Config{useshrplib} now
correctly indicates that static linking is supported. However, the
ExtUtils::HasCompiler check does not actually link, so it fails to detect
that libperl.a is missing.  ExtUtils::MakeMaker still fails in the same
way, so the results now disagree.

I suggest that we fix this in a way that's compatible with both
older and newer perl versions, by adding a build dependency on
libperl-dev and patching away the check $Config{useshrplib} check in
ExtUtils::HasCompiler::can_compile_static_library() . On Debian we build
both static and dynamic versions of libperl, so static builds should
be supported.

Transcript of the failure below. Note that the warning about
perl and Config.pm having 'different ideas about the architecture'
is not the cause of this. It is just a warning that we'll handle
separately (cf. #962138)


  #   Failed test 'MakeMaker agrees we can compile static'
  #   at t/compare.t line 67.
  #          got: '1'
  #     expected: undef
  # Couldn't run make test: make[2]: Entering directory '/tmp/BDk9YhPh04'
  # make[2]: warning: jobserver unavailable: using -j1.  Add '+' to parent make rule.
  # Writing "Makefile.aperl" for this perl
  # Have /usr/lib/x86_64-linux-gnu/perl-base
  # Want /usr/lib/x86_64-linux-gnu/perl/5.30
  # Your perl and your Config.pm seem to have different ideas about the
  # architecture they are running on.
  # Perl thinks: [perl-base]
  # Config says: [x86_64-linux-gnu-thread-multi]
  # This may or may not cause problems. Please check your installation of perl
  # if you have problems building this extension.
  # Warning: /usr/lib/x86_64-linux-gnu/perl/5.30/../../libperl.a not found
  # If you're going to build a static perl binary, make sure perl is installed
  # otherwise ignore this warning
  # Generating a Unix-style Makefile.aperl
  # Writing Makefile.aperl for EUHC::Test
  # Writing MYMETA.yml and MYMETA.json
  # make -f Makefile.aperl perl
  # make[3]: Entering directory '/tmp/BDk9YhPh04'
  # Writing perlmain.c
  # mv perlmain.ct perlmain.c
  # x86_64-linux-gnu-gcc -c   -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g   -DVERSION=\"\" -DXS_VERSION=\"\" -fPIC "-I/usr/lib/x86_64-linux-gnu/perl/5.30/CORE"   perlmain.c
  # make[3]: *** No rule to make target '/usr/lib/x86_64-linux-gnu/perl/5.30/../../libperl.a', needed by 'perl'.  Stop.
  # make[3]: Leaving directory '/tmp/BDk9YhPh04'
  # make[2]: *** [Makefile:956: perl] Error 2
  # make[2]: Leaving directory '/tmp/BDk9YhPh04'
  # Looks like you failed 1 test of 3.
 
-- 
Niko Tyni   ntyni at debian.org



More information about the pkg-perl-maintainers mailing list