Skip Menu |

This queue is for tickets about the ExtUtils-MakeMaker CPAN distribution.

Report information
The Basics
Id: 133808
Status: open
Priority: 0/
Queue: ExtUtils-MakeMaker

People
Owner: Nobody in particular
Requestors: tzccinct [...] gmail.com
Cc:
AdminCc:

Bug Information
Severity: (no value)
Broken in:
  • 7.46
  • 7.56
Fixed in: (no value)



Subject: t/02-xsdynamic.t fails on Cygwin without libnsl-devel package
$ env LANG=C prove -bvl t/02-xsdynamic.t t/02-xsdynamic.t .. 1..72 ok 1 - setup basic ok 2 - chdir'd to XS-Testbasic ok 3 - Makefile.PL exited with zero not ok 4 - "make" exited normally ok 5 # skip Make failed - skipping test # Failed test '"make" exited normally' # at lib/MakeMaker/Test/Setup/XS.pm line 448. # got: '512' # expected: '0' # cp lib/XS/Test.pm blib/lib/XS/Test.pm # Running Mkbootstrap for Test () # chmod 644 "Test.bs" # "/usr/bin/perl" -w -MExtUtils::Command::MM -e 'cp_nonempty' -- Test.bs blib/arch/auto/XS/Test/Test.bs 644 # "/usr/bin/perl" -w "/usr/share/perl5/5.30/ExtUtils/xsubpp" -typemap '/usr/share/perl5/5.30/ExtUtils/typemap' -typemap '/home/tzccinct/.cpan/build/ExtUtils-MakeMaker-7.56-2/t/XS-Testbasic/type map' Test.xs > Test.xsc # mv Test.xsc Test.c # gcc -c -DPERL_USE_SAFE_PUTENV -U__STRICT_ANSI__ -D_GNU_SOURCE -ggdb -O2 -pipe -Wall -Werror=format-security -D_FORTIFY_SOURCE=2 -fstack-protector-strong --param=ssp-buffer-size=4 -fdebug-prefix-map=/mnt/share/cygpkgs/perl/perl.x86_64/build=/usr/src/debug/perl-5.30.3-1 -fdebug-prefix-map=/mnt/share/cygpkgs/perl/perl.x86_64/src/perl-5.30.3=/usr/src/debug/perl-5.30.3-1 -fwrapv -fno-strict-aliasing -DUSEIMPORTLIB -O3 -DVERSION=\"1.01\" -DXS_VERSION=\"1.01\" "-I/usr/lib/perl5/5.30/x86_64-cygwin-threads/CORE" Test.c # rm -f blib/arch/auto/XS/Test/Test.dll # g++ --shared -Wl,--enable-auto-import -Wl,--export-all-symbols -Wl,--enable-auto-image-base -fstack-protector-strong Test.o -o blib/arch/auto/XS/Test/Test.dll \ # /usr/lib/perl5/5.30/x86_64-cygwin-threads/CORE/cygperl5_30.dll -lpthread -lnsl -ldl -lcrypt \ # # /usr/lib/gcc/x86_64-pc-cygwin/10/../../../../x86_64-pc-cygwin/bin/ld: cannot find -lnsl # collect2: error: ld returned 1 exit status # make: *** [Makefile:471: blib/arch/auto/XS/Test/Test.dll] Error 1 ok 6 - teardown XS-Testbasic (...snip... the same kind of errors occur) ok 72 - teardown XS-Testsubdirsskip # Looks like you failed 12 tests of 72. Dubious, test returned 12 (wstat 3072, 0xc00) Failed 12/72 subtests (less 10 skipped subtests: 50 okay) Test Summary Report ------------------- t/02-xsdynamic.t (Wstat: 3072 Tests: 72 Failed: 12) Failed tests: 4, 10, 16, 22, 28, 35, 40, 46, 53, 58, 64 70 Non-zero exit status: 12 Files=1, Tests=72, 56 wallclock secs ( 0.03 usr 0.05 sys + 23.18 cusr 26.10 csys = 49.36 CPU) Result: FAIL This issue has occurred from ExtUtils-MakeMaker 7.46 by the following change: https://github.com/Perl-Toolchain-Gang/ExtUtils-MakeMaker/pull/353 I have not installed libnsl-devel Cygwin package because I am not going to develop anything to use libnsl-devel (e.g. building perl with gcc on Cygwin). It would be good if the test passes without installing libnsl-devel package as before.
On Wed Nov 25 06:25:35 2020, tzccinct@gmail.com wrote: Show quoted text
> > I have not installed libnsl-devel Cygwin package because I am not > going to develop anything to use libnsl-devel (e.g. building perl with > gcc on Cygwin). It would be good if the test passes without installing > libnsl-devel package as before.
I haven't installed libnsl-devel either, but I still build perl with gcc on Cygwin all the time. However, with the Cygwin perl I am not able to build any module that uses XS code, because it complains about -lnsl. With the perls that I have built myself, I don't have this issue.
You haven't provided the output of "perl -V". libnsl provides NIS (etc) functionality, and generally support for RPC. It appears you are using a Perl built to require libnsl. EUMM doesn't, and shouldn't, edit the libs information that Perl's config has, to remove stuff. Have you tried either installing libnsl, or building a new Perl and forcing it to not need libnsl? Given that what's failing is a -l, rather than a -I, I speculate you need not the -devel variant, only the actual libraries.
Subject: Re: [rt.cpan.org #133808] t/02-xsdynamic.t fails on Cygwin without libnsl-devel package
Date: Thu, 26 Nov 2020 13:23:23 +0100
To: bug-ExtUtils-MakeMaker [...] rt.cpan.org
From: Leon Timmermans <leont [...] cpan.org>
On Wed, Nov 25, 2020 at 12:25 PM tzccinct via RT <bug-ExtUtils-MakeMaker@rt.cpan.org> wrote: Show quoted text
> > Wed Nov 25 06:25:35 2020: Request 133808 was acted upon. > Transaction: Ticket created by tzccinct@gmail.com > Queue: ExtUtils-MakeMaker > Subject: t/02-xsdynamic.t fails on Cygwin without libnsl-devel package > Broken in: 7.46 > Severity: (no value) > Owner: Nobody > Requestors: tzccinct@gmail.com > Status: new > Ticket <URL: https://rt.cpan.org/Ticket/Display.html?id=133808 > > > > $ env LANG=C prove -bvl t/02-xsdynamic.t > t/02-xsdynamic.t .. > 1..72 > ok 1 - setup basic > ok 2 - chdir'd to XS-Testbasic > ok 3 - Makefile.PL exited with zero > not ok 4 - "make" exited normally > ok 5 # skip Make failed - skipping test > > # Failed test '"make" exited normally' > # at lib/MakeMaker/Test/Setup/XS.pm line 448. > # got: '512' > # expected: '0' > # cp lib/XS/Test.pm blib/lib/XS/Test.pm > # Running Mkbootstrap for Test () > # chmod 644 "Test.bs" > # "/usr/bin/perl" -w -MExtUtils::Command::MM -e 'cp_nonempty' -- Test.bs blib/arch/auto/XS/Test/Test.bs 644 > # "/usr/bin/perl" -w "/usr/share/perl5/5.30/ExtUtils/xsubpp" -typemap '/usr/share/perl5/5.30/ExtUtils/typemap' -typemap '/home/tzccinct/.cpan/build/ExtUtils-MakeMaker-7.56-2/t/XS-Testbasic/type map' Test.xs > Test.xsc > # mv Test.xsc Test.c > # gcc -c -DPERL_USE_SAFE_PUTENV -U__STRICT_ANSI__ -D_GNU_SOURCE -ggdb -O2 -pipe -Wall -Werror=format-security -D_FORTIFY_SOURCE=2 -fstack-protector-strong --param=ssp-buffer-size=4 -fdebug-prefix-map=/mnt/share/cygpkgs/perl/perl.x86_64/build=/usr/src/debug/perl-5.30.3-1 -fdebug-prefix-map=/mnt/share/cygpkgs/perl/perl.x86_64/src/perl-5.30.3=/usr/src/debug/perl-5.30.3-1 -fwrapv -fno-strict-aliasing -DUSEIMPORTLIB -O3 -DVERSION=\"1.01\" -DXS_VERSION=\"1.01\" "-I/usr/lib/perl5/5.30/x86_64-cygwin-threads/CORE" Test.c > # rm -f blib/arch/auto/XS/Test/Test.dll > # g++ --shared -Wl,--enable-auto-import -Wl,--export-all-symbols -Wl,--enable-auto-image-base -fstack-protector-strong Test.o -o blib/arch/auto/XS/Test/Test.dll \ > # /usr/lib/perl5/5.30/x86_64-cygwin-threads/CORE/cygperl5_30.dll -lpthread -lnsl -ldl -lcrypt \ > # > # /usr/lib/gcc/x86_64-pc-cygwin/10/../../../../x86_64-pc-cygwin/bin/ld: cannot find -lnsl > # collect2: error: ld returned 1 exit status > # make: *** [Makefile:471: blib/arch/auto/XS/Test/Test.dll] Error 1 > ok 6 - teardown XS-Testbasic > (...snip... the same kind of errors occur) > ok 72 - teardown XS-Testsubdirsskip > # Looks like you failed 12 tests of 72. > Dubious, test returned 12 (wstat 3072, 0xc00) > Failed 12/72 subtests > (less 10 skipped subtests: 50 okay) > > Test Summary Report > ------------------- > t/02-xsdynamic.t (Wstat: 3072 Tests: 72 Failed: 12) > Failed tests: 4, 10, 16, 22, 28, 35, 40, 46, 53, 58, 64 > 70 > Non-zero exit status: 12 > Files=1, Tests=72, 56 wallclock secs ( 0.03 usr 0.05 sys + 23.18 cusr 26.10 csys = 49.36 CPU) > Result: FAIL > > > This issue has occurred from ExtUtils-MakeMaker 7.46 by the following change: > https://github.com/Perl-Toolchain-Gang/ExtUtils-MakeMaker/pull/353 > > I have not installed libnsl-devel Cygwin package because I am not going to develop anything to use libnsl-devel (e.g. building perl with gcc on Cygwin). It would be good if the test passes without installing libnsl-devel package as before.
This regression is a consequence of https://github.com/Perl-Toolchain-Gang/ExtUtils-MakeMaker/pull/353 We may need a different solution for the quadmath problem. Perl's configuration logic is very unhelpful here. Leon
On 2020-11-26 07:19:00, ETJ wrote: Show quoted text
> You haven't provided the output of "perl -V".
Sorry. $ perl -V Summary of my perl5 (revision 5 version 30 subversion 3) configuration: Platform: osname=cygwin osvers=3.1.5(0.34053) archname=x86_64-cygwin-threads-multi uname='cygwin_nt-10.0 cygwinpro 3.1.5(0.34053) 2020-06-01 08:59 x86_64 cygwin ' config_args='-des -Dprefix=/usr -Dmksymlinks -Darchname=x86_64-cygwin-threads -Dlibperl=cygperl5_30.dll -Dcc=gcc -Dld=g++ -Accflags=-ggdb -O2 -pipe -Wall -Werror=format-security -D_FORTIFY_SOURCE=2 -fstack-protector-strong --param=ssp-buffer-size=4 -fdebug-prefix-map=/mnt/share/cygpkgs/perl/perl.x86_64/build=/usr/src/debug/perl-5.30.3-1 -fdebug-prefix-map=/mnt/share/cygpkgs/perl/perl.x86_64/src/perl-5.30.3=/usr/src/debug/perl-5.30.3-1 -fwrapv' hint=recommended useposix=true d_sigaction=define useithreads=define usemultiplicity=define use64bitint=define use64bitall=define uselongdouble=undef usemymalloc=n default_inc_excludes_dot=define bincompat5005=undef Compiler: cc='gcc' ccflags ='-DPERL_USE_SAFE_PUTENV -U__STRICT_ANSI__ -D_GNU_SOURCE -ggdb -O2 -pipe -Wall -Werror=format-security -D_FORTIFY_SOURCE=2 -fstack-protector-strong --param=ssp-buffer-size=4 -fdebug-prefix-map=/mnt/share/cygpkgs/perl/perl.x86_64/build=/usr/src/debug/perl-5.30.3-1 -fdebug-prefix-map=/mnt/share/cygpkgs/perl/perl.x86_64/src/perl-5.30.3=/usr/src/debug/perl-5.30.3-1 -fwrapv -fno-strict-aliasing' optimize='-O3' cppflags='-DPERL_USE_SAFE_PUTENV -U__STRICT_ANSI__ -D_GNU_SOURCE -ggdb -O2 -pipe -Wall -Werror=format-security -D_FORTIFY_SOURCE=2 -fstack-protector-strong --param=ssp-buffer-size=4 -fdebug-prefix-map=/mnt/share/cygpkgs/perl/perl.x86_64/build=/usr/src/debug/perl-5.30.3-1 -fdebug-prefix-map=/mnt/share/cygpkgs/perl/perl.x86_64/src/perl-5.30.3=/usr/src/debug/perl-5.30.3-1 -fwrapv -fno-strict-aliasing' ccversion='' gccversion='9.3.0' gccosandvers='' intsize=4 longsize=8 ptrsize=8 doublesize=8 byteorder=12345678 doublekind=3 d_longlong=define longlongsize=8 d_longdbl=define longdblsize=16 longdblkind=3 ivtype='long' ivsize=8 nvtype='double' nvsize=8 Off_t='off_t' lseeksize=8 alignbytes=8 prototype=define Linker and Libraries: ld='g++' ldflags =' -Wl,--enable-auto-import -Wl,--export-all-symbols -Wl,--enable-auto-image-base -fstack-protector-strong' libpth=/usr/lib libs=-lpthread -lnsl -lgdbm -ldb -ldl -lcrypt -lgdbm_compat perllibs=-lpthread -lnsl -ldl -lcrypt libc=/usr/lib/libcygwin.a so=dll useshrplib=true libperl=cygperl5_30.dll gnulibc_version='' Dynamic Linking: dlsrc=dl_dlopen.xs dlext=dll d_dlsymun=undef ccdlflags=' ' cccdlflags=' ' lddlflags=' --shared -Wl,--enable-auto-import -Wl,--export-all-symbols -Wl,--enable-auto-image-base -fstack-protector-strong' Characteristics of this binary (from libperl): Compile-time options: HAS_TIMES MULTIPLICITY PERLIO_LAYERS PERL_COPY_ON_WRITE PERL_DONT_CREATE_GVSV PERL_IMPLICIT_CONTEXT PERL_OP_PARENT PERL_PRESERVE_IVUV PERL_USE_SAFE_PUTENV USE_64_BIT_ALL USE_64_BIT_INT USE_ITHREADS USE_LARGE_FILES USE_LOCALE USE_LOCALE_COLLATE USE_LOCALE_CTYPE USE_LOCALE_NUMERIC USE_LOCALE_TIME USE_PERLIO USE_PERL_ATOF USE_REENTRANT_API USE_THREAD_SAFE_LOCALE Locally applied patches: Cygwin: README Cygwin: use auto-image-base instead of fixed DLL base address Cygwin: modify hints Cygwin: Configure correct libsearch Cygwin: Configure correct libpth Cygwin: Win32 correct UTF8 handling Perl: InvLists moved back to interpreter level Built under cygwin Compiled at Jun 7 2020 10:01:50 @INC: /usr/local/lib/perl5/site_perl/5.30/x86_64-cygwin-threads /usr/local/share/perl5/site_perl/5.30 /usr/lib/perl5/vendor_perl/5.30/x86_64-cygwin-threads /usr/share/perl5/vendor_perl/5.30 /usr/lib/perl5/5.30/x86_64-cygwin-threads /usr/share/perl5/5.30 Show quoted text
> libnsl provides NIS (etc) functionality, and generally support for > RPC. It appears you are using a Perl built to require libnsl. EUMM > doesn't, and shouldn't, edit the libs information that Perl's config > has, to remove stuff.
I'm using a perl provided by standard Cygwin perl package that I suppose is common for most Cygwin users. Show quoted text
> Have you tried either installing libnsl, or building a new Perl and > forcing it to not need libnsl?
Those must resolve my test fail, but those are not what I want to do. I hope most Cygwin users get able to make use of perl without troubles and extra works. Show quoted text
> I speculate you need not the -devel variant, only > the actual libraries.
Cygwin does not have a package named "libnsl". There is a package "libnsl2" that includes /usr/bin/cygnsl-2.dll, but installing libnsl2 does not resolve this issue.