On 02/02/06 11:52 -0800, Eric Wilhelm wrote: > Hi all, > > Finally got this guess worked into a patch and test (attached.) > > Patrick: does Inline::Java call fix_make() from Inline::C or do any > similar munging of the makefile? If so, you would need to apply some > similar fixes. The original entry point of the bug is in Inline.pm and > therefore applies to all inline-derived modules. The test I wrote is > just for Inline::C. Maybe Ingy can say how to write a > language-agnostic test. > > Ingy: do you have a repository for Inline.pm? May I see it? :-)
Eric, the repos is here, but I'm not sure of its current state. Best to just work with Inline-0.44. http://svn.kwiki.org/ingy/Inline/ Patrick, if this patch looks good to you, I'll apply and release it. Cheers, Ingy > > --Eric > -- > Like a lot of people, I was mathematically abused as a child. > --Paul Graham > --------------------------------------------------- > http://scratchcomputing.com > --------------------------------------------------- > === C.pm > ================================================================== > --- C.pm (revision 6) > +++ C.pm (revision 8) > @@ -800,7 +800,11 @@ > if (/^(\w+)\s*=\s*\S+.*$/ and > $fix = $fixes{$1} > ) { > - print MAKEFILE "$1 = $o->{ILSM}{$fix}\n" > + my $target = $1; > + my $f = $o->{ILSM}{$fix}; > + ($fix =~ m/^install_/) and ($f = "'$f'"); > + print MAKEFILE "$target = $f\n" > + > } > else { > print MAKEFILE; > === Inline.pm > ================================================================== > --- Inline.pm (revision 6) > +++ Inline.pm (revision 8) > @@ -740,13 +740,13 @@ > my($v,$d,$f) = File::Spec->splitpath($inline); > $f = "" if $f eq 'Inline.pm'; > $inline = File::Spec->catpath($v,$d,$f); > - my $INC = "-I$inline -I" . > - join(" -I", grep {(-d File::Spec->catdir($_,"Inline") or > + my @inc = ("-I$inline", "-I" . > + map({"-I$_"} grep {(-d File::Spec->catdir($_,"Inline") or > -d > File::Spec->catdir($_,"auto","Inline") > - )} @INC); > - system "$perl $INC -MInline=_CONFIG_ -e1 $dir" > - and croak M20_config_creation_failed($dir); > - return; > + )} @INC)); > + system($perl, @inc, qw(-MInline=_CONFIG_ -e1), $dir) > + and croak M20_config_creation_failed($dir); > + return; > } > > my ($lib, $mod, $register, %checked, > === 06spaces.t > ================================================================== > --- 06spaces.t (revision 6) > +++ 06spaces.t (revision 8) > @@ -0,0 +1,43 @@ > +use File::Spec; > +use lib (File::Spec->catdir(File::Spec->updir(),'blib','lib'), > File::Spec->catdir(File::Spec->curdir(),'blib','lib')); > +use strict; > +use Test; > +use diagnostics; > + > +BEGIN { > + plan(tests => 2, > + todo => [2], > + onfail => sub {}, > + ); > + my $dir = "_Inline_test"; > + for(0..1) { > + unless(-d $dir) { > + mkdir($dir) or die "create $dir failed"; > + } > + $dir .= "/inline dir"; > + } > +} > + > +# test 1 - make sure directories with spaces work > +BEGIN { > + eval <<'END'; > + use Inline(C => "void foo(){}", > + DIRECTORY => '_Inline_test/inline dir', > + ); > +END > + ok((not $@)); > +} > + > +# XXX maybe some more holes in that directories which don't exist but > +# contain spaces don't work? > +BEGIN { > + eval <<'END'; > + use Inline(C => "void foo(){}", > + DIRECTORY => '_Inline_test/inline dir/_Inline', > + ); > +END > + ok(not $@); > + # ok((not $@)) or warn $@; > +} > + > +