Skip Menu |

This queue is for tickets about the Alien-libtermkey CPAN distribution.

Report information
The Basics
Id: 112917
Status: open
Priority: 0/
Queue: Alien-libtermkey

People
Owner: Nobody in particular
Requestors: SREZIC [...] cpan.org
Cc:
AdminCc:

Bug Information
Severity: (no value)
Broken in: 0.16
Fixed in: (no value)



Subject: Using prove in src/Makefile is problematic
On some smoke machines I see the following while running "./Build test": ... prove -e "" /usr/bin/perl: symbol lookup error: /home/cpansand/.cpan/build/2016031018/Time-HiRes-1.9728-cRhyOH/blib/arch/auto/Time/HiRes/HiRes.so: undefined symbol: Perl_xs_handshake make: *** [test] Error 127 Unable to make - No such file or directory at inc/Alien/make/Module/Build.pm line 108. ... So what's the problem here? src/Makefile uses the prove from $PATH. In my case I don't add the current perl's bin directory to $PATH, so prove is the system's /usr/bin/prove. During testing PERL5LIB is potentially set, and in this case it contains the path to a freshly built Time::HiRes, built for the _current_ perl. And apparently this Time::HiRes build is incompatible with the system's perl. I can think of the following workarounds, but none of them being really good: * unset PERL5LIB in src/Makefile * make sure that the current perl's prove is used (in Makefile.PL INSTALLBIN is available, which could be put into the PATH or something like $INSTALLBIN/prove be used) * rewrite ACTION_test to not use the Makefile's test ... Regards, Slaven
On 2016-03-10 14:40:00, SREZIC wrote: Show quoted text
> On some smoke machines I see the following while running "./Build > test": > > ... > prove -e "" > /usr/bin/perl: symbol lookup error: > /home/cpansand/.cpan/build/2016031018/Time-HiRes-1.9728- > cRhyOH/blib/arch/auto/Time/HiRes/HiRes.so: undefined symbol: > Perl_xs_handshake > make: *** [test] Error 127 > Unable to make - No such file or directory at > inc/Alien/make/Module/Build.pm line 108. > ... > > So what's the problem here? src/Makefile uses the prove from $PATH. In > my case I don't add the current perl's bin directory to $PATH, so > prove is the system's /usr/bin/prove. During testing PERL5LIB is > potentially set, and in this case it contains the path to a freshly > built Time::HiRes, built for the _current_ perl. And apparently this > Time::HiRes build is incompatible with the system's perl. > > I can think of the following workarounds, but none of them being > really good: > * unset PERL5LIB in src/Makefile > * make sure that the current perl's prove is used (in Makefile.PL > INSTALLBIN is available, which could be put into the PATH or something > like $INSTALLBIN/prove be used) > * rewrite ACTION_test to not use the Makefile's test > ...
BTW, I see the same problem also with Alien-unibilium-0.12
On Thu Mar 10 14:40:00 2016, SREZIC wrote: Show quoted text
> So what's the problem here? src/Makefile uses the prove from $PATH. In > my case I don't add the current perl's bin directory to $PATH, so > prove is the system's /usr/bin/prove. During testing PERL5LIB is > potentially set, and in this case it contains the path to a freshly > built Time::HiRes, built for the _current_ perl. And apparently this > Time::HiRes build is incompatible with the system's perl.
Yeah; that sounds like an awkward situation that would indeed cause this. Tricky. Show quoted text
> I can think of the following workarounds, but none of them being > really good: > * unset PERL5LIB in src/Makefile
This seems non-ideal - maybe the user intended that to apply because it's needed for their `prove`. Show quoted text
> * rewrite ACTION_test to not use the Makefile's test
I don't like this one either, because it requires a certain amount of gut-wrenching into knowing that the library's tests use prove. Show quoted text
> * make sure that the current perl's prove is used (in Makefile.PL > INSTALLBIN is available, which could be put into the PATH or something > like $INSTALLBIN/prove be used)
I think this is really the only one that can work. -- Paul Evans
On 2016-03-14 12:14:44, PEVANS wrote: Show quoted text
> On Thu Mar 10 14:40:00 2016, SREZIC wrote:
[...] Show quoted text
> > * make sure that the current perl's prove is used (in Makefile.PL > > INSTALLBIN is available, which could be put into the PATH or > > something > > like $INSTALLBIN/prove be used)
> > I think this is really the only one that can work.
If you go this way then you had to check for the case that bleadperl installations add the version number to all binaries/scripts and usually don't provide a version-less hardlink or symlink: $ ls -al /opt/perl-5.23.8t/bin/prove* -rwxr-xr-x 1 cpansand cpansand 13588 Feb 24 08:46 /opt/perl-5.23.8t/bin/prove5.23.8 $ ls -al /opt/perl-5.22.1t/bin/prove* -rwxr-xr-x 1 cpansand cpansand 13576 Dec 30 11:45 /opt/perl-5.22.1t/bin/prove