Sat Nov 24 19:52:30 2012: Request 81375 was acted upon. Transaction: Correspondence added by SISYPHUS Queue: Inline Subject: chdir without cc Broken in: 0.50 Severity: Normal Owner: Nobody Requestors: bernhard+c...@lsmod.de Status: open Ticket <URL: https://rt.cpan.org/Ticket/Display.html?id=81375 >
On Sat Nov 24 07:56:37 2012, bmwiedemann wrote: > I appended to your script: > system("pwd"); [snip] > Using Pure Perl Implementation > 42 > /home/bernhard/temp/_Inline/build/testc_pl_b91d > > and it showed that it changed the current dir for the perl process Yes, this could be fixed from within the script I provided as follows: ################################# use strict; use warnings; use Cwd; my $cwd = getcwd(); eval { require Inline; Inline->import (C => Config => #CC => 'bogus', # Easy way to make the build fail BUILD_NOISY => 1); require Inline; Inline->import (C =><<' EOC'); int foo() { warn("Using Inline\n"); return 42; } EOC }; # If Inline is unavailable, foo() simply calls # the sub bar() pure perl implementation. if($@) { chdir $cwd or warn "Couldn't chdir to $cwd"; *foo =\&bar; } sub bar { warn("Using Pure Perl Implementation\n"); return 42; } my $x = foo(); print "$x\n"; print $cwd, "\n"; ################################# (I've used Cwd::getcwd instead of the pwd system call because pwd is not available on all systems.) However, I think (not yet fully tested) this can also be fixed quite simply from within C.pm by rewriting sub compile as: ################################# sub compile { my $o = shift; my $build_dir = $o->{API}{build_dir}; my $cwd = &cwd; ($cwd) = $cwd =~ /(.*)/ if $o->UNTAINT; chdir $build_dir; eval { $o->call('makefile_pl', '"perl Makefile.PL"', 2); $o->call('make', '"make"', 2); $o->call('make_install', '"make install"', 2); }; chdir $cwd; die if $@; $o->call('cleanup', 'Cleaning Up', 2); } ################################# So I'll go with that changed version of C.pm's sub compile unless, in the course of more thorough testing, I discover a problem with it. If it tests ok for me, I'll release an Inline-0.51_03 that contains the fix in a day or two. Thanks for the report ! Cheers, Rob