ingydotnet / inline-c-pm

10 stars 19 forks source link

Scripts run in /git_tree/perl/Porting won't build #12

Closed sisyphus closed 10 years ago

sisyphus commented 10 years ago

This was initially reported by demerphq to the Inline mailing list:

http://www.nntp.perl.org/group/perl.inline/2014/07/msg4714.html

Briefly, problems were experienced when he tried building a simple Inline::C script located in /git_tree/perl/Porting, though the same script built and ran fine when located in a different directory. Eventually, demerphq narrowed it down to this:

When the script was run in the "problem" directory, MakeMaker created a Makefile that contained (incorrectly):

PERL_LIB = ../../../../lib PERL_ARCHLIB = ../../../../lib

When the same script was run in another directory, MakeMaker replaced those incorrect assignments with (correctly):

PERL_LIB = /home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4 PERL_ARCHLIB = /home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4/x86_64-linux

This issue is raised here in order that it be investigated further.

Cheers, Rob

mohawk2 commented 10 years ago

I suspect it's related to this feature of EU::MM: http://search.cpan.org/~bingos/ExtUtils-MakeMaker-6.98/lib/ExtUtils/MakeMaker.pm#Determination_of_Perl_Library_and_Installation_Locations

Specifically, he will doubtless be matching these conditions in ExtUtils::MM_Unix::init_main

unless ($self->{PERL_SRC}){
    foreach my $dir_count (1..8) { # 8 is the VMS limit for nesting
        my $dir = $self->catdir(($Updir) x $dir_count);
        if (-f $self->catfile($dir,"config_h.SH")   &&
            -f $self->catfile($dir,"perl.h")        &&
            -f $self->catfile($dir,"lib","strict.pm")
        ) {
            $self->{PERL_SRC}=$dir ;
            last;
        }
    }
}

From the directory that had the problem - what is in "../../../.."?

mohawk2 commented 10 years ago

The bug reporter is @demerphq - mentioning him so he is part of the conversation. @demerphq, can you answer the above question about what is in "../../../.."?

mohawk2 commented 10 years ago

In the absence of further info from @demerphq, I'd like to close this. Any objections?

demerphq commented 10 years ago

Er, iirc ../../../.. was a perl build dir. The request has lost all the context tho.

Yves

On 29 July 2014 05:36, mohawk2 notifications@github.com wrote:

In the absence of further info from @demerphq https://github.com/demerphq, I'd like to close this. Any objections?

— Reply to this email directly or view it on GitHub https://github.com/ingydotnet/inline-c-pm/issues/12#issuecomment-50431096 .

perl -Mre=debug -e "/just|another|perl|hacker/"

mohawk2 commented 10 years ago

So EUMM has special handling for "I'm in (or up to 8 levels below) a perl build dir", and you triggered that. It's a "feature" (!)

I'm closing this as not a bug in Inline::C - thanks for the assist in tracking this!

demerphq commented 10 years ago

I believe the hope was that Inline::C could detect this and warn the user. I dont mind much. Documenting the limitation seems fine.

On 29 July 2014 09:16, mohawk2 notifications@github.com wrote:

So EUMM has special handling for "I'm in (or up to 8 levels below) a perl build dir", and you triggered that. It's a "feature" (!)

I'm closing this as not a bug in Inline::C - thanks for the assist in tracking this!

— Reply to this email directly or view it on GitHub https://github.com/ingydotnet/inline-c-pm/issues/12#issuecomment-50443288 .

perl -Mre=debug -e "/just|another|perl|hacker/"