This queue is for tickets about the CPAN CPAN distribution.

Report information
The Basics
Id:
99613
Status:
resolved
Priority:
Low/Low
Queue:

People
Owner:
Nobody in particular
Requestors:
david [...] schweikert.ch
Cc:
AdminCc:

BugTracker
Severity:
Important
Broken in:
2.05
Fixed in:
(no value)



Subject: Wrong working directory after building dependencies, causing failure
I have just spent more than one day trying to debug why a long CPAN build job sometimes produced output like this: Building Module-Runtime Installing /opt/OSAGperlm/lib/Module/Runtime.pm Installing none/Module::Runtime.3 ZEFRAM/Module-Runtime-0.014.tar.gz ./Build install -- OK make[1]: Entering directory '/usr/src/packages/src/OSAGperlm.dws/cpan/build/Module-Runtime-0.014-RFZP5p' make[1]: *** No targets specified and no makefile found. Stop. make[1]: Leaving directory '/usr/src/packages/src/OSAGperlm.dws/cpan/build/Module-Runtime-0.014-RFZP5p' DROLSKY/Module-Implementation-0.09.tar.gz make -- NOT OK Or this: make[1]: Leaving directory '/usr/src/packages/src/OSAGperlm.dws/cpan/build/Test-Warn-0.30-_wIub_' CHORNY/Test-Warn-0.30.tar.gz make install -- OK Alert: no Build file available for 'make ' in cwd[/usr/src/packages/src/OSAGperlm.dws/cpan/build/Test-Warn-0.30-_wIub_]. Danger, Will Robinson! Can't exec "./Build": No such file or directory at /opt/OSAGperl/lib/5.20.1/CPAN/Distribution.pm line 2194. BAREFOOT/Method-Signatures-20140224.tar.gz ./Build -- NOT OK Note how the cwd is Test-Warn, but CPAN is currently trying to build Method-Signatures. What I found is the following code in CPAN::Distribution::make: unless (chdir $builddir) { $CPAN::Frontend->mywarn("Couldn't chdir to '$builddir': $!"); return; } ... # this changes the "chdir": my $satisfied = eval { $self->satisfy_requires }; ... if ($self->{modulebuild}) { unless (-f "Build" || ($^O eq 'VMS' && -f 'Build.com')) { my $cwd = CPAN::anycwd(); $CPAN::Frontend->mywarn("Alert: no Build file available for 'make $self->{id}'". The fix (which I tested), is this (for CPAN 2.05): --- Distribution.pm.orig 2014-10-21 16:49:38.000000000 +0200 +++ Distribution.pm 2014-10-21 16:49:45.000000000 +0200 @@ -2130,6 +2130,13 @@ delete $self->{force_update}; return; } + + # need to chdir again, because $self->satisfy_requires might change the directory + unless (chdir $builddir) { + $CPAN::Frontend->mywarn("Couldn't chdir to '$builddir': $!"); + return; + } + my $system; my $make_commandline; if ($self->prefs->{make}) {
Patch attached
Subject: CPAN.patch
# see https://rt.cpan.org/Ticket/Display.html?id=99613 --- Distribution.pm.orig 2014-10-21 16:49:38.000000000 +0200 +++ Distribution.pm 2014-10-21 16:49:45.000000000 +0200 @@ -2130,6 +2130,13 @@ delete $self->{force_update}; return; } + + # need to chdir again, because $self->satisfy_requires might change the directory + unless (chdir $builddir) { + $CPAN::Frontend->mywarn("Couldn't chdir to '$builddir': $!"); + return; + } + my $system; my $make_commandline; if ($self->prefs->{make}) {
I have moved to github, so that merging of my patch is easier: https://github.com/andk/cpanpm/issues/79 Please close this ticket.
Patch in github ticket accepted, closing. Thanks!


This service runs on Request Tracker, is sponsored by The Perl Foundation, and maintained by Best Practical Solutions.

Please report any issues with rt.cpan.org to rt-cpan-admin@bestpractical.com.