Er, sorry, I wasn't trying to argue that this is an error in Perl or a CPAN
dependency. Rather, my comment was meant for the edification of anybody
following this list of communication. As it is, if Inline doesn't mind
adding a dependency, then perhaps adding the dependency on File::chdir
would make this a little easier. But I don't think that such a dependency
is necessary by any means.

David


On Mon, Nov 26, 2012 at 8:03 PM, Xiao Yafeng via RT
<bug-inl...@rt.cpan.org>wrote:

> Mon Nov 26 21:03:00 2012: Request 81375 was acted upon.
> Transaction: Correspondence added by xyf.x...@gmail.com
>        Queue: Inline
>      Subject: Re: [rt.cpan.org #81375] 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 >
>
>
> I vote for David,  It's a bug from chdir other than Inline.
>
> On Tue, Nov 27, 2012 at 7:53 AM, dcmertens.p...@gmail.com via RT <
> bug-inl...@rt.cpan.org> wrote:
>
> > Mon Nov 26 18:53:28 2012: Request 81375 was acted upon.
> > Transaction: Correspondence added by dcmertens.p...@gmail.com
> >        Queue: Inline
> >      Subject: Re: [rt.cpan.org #81375] 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 >
> >
> >
> > For the curious, a CPAN solution that handles this *very* nicely is
> > p3rl.org/File::chdir
> >
> > David
> > On Nov 24, 2012 6:52 PM, "Sisyphus via RT" <bug-inl...@rt.cpan.org>
> wrote:
> >
> > > 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
> > >
> > >
> > >
> >
> >
>
>


-- 
 "Debugging is twice as hard as writing the code in the first place.
  Therefore, if you write the code as cleverly as possible, you are,
  by definition, not smart enough to debug it." -- Brian Kernighan

Reply via email to