0.49 2011-03-30 rurban Fixes for spaces in current dir (Windows and cygwin mostly). With spaces in pwd we get a harmless EUMM warning: "Typemap ...C/t/typemap not found." but I don't to fix EUMM also now. diff -u ./C/C.pm.orig --- ./C/C.pm.orig 2011-02-21 08:46:27.000000000 +0100 +++ ./C/C.pm 2011-03-30 14:22:21.107305700 +0200 @@ -1,5 +1,5 @@ package Inline::C; -$VERSION = '0.48'; +$VERSION = '0.49'; use strict; require Inline; @@ -38,12 +38,13 @@ sub validate { my $o = shift; + print STDERR "validate Stage\n" if $o->{CONFIG}{BUILD_NOISY}; $o->{ILSM} ||= {}; $o->{ILSM}{XS} ||= {}; $o->{ILSM}{MAKEFILE} ||= {}; if (not $o->UNTAINT) { require FindBin; - $o->{ILSM}{MAKEFILE}{INC} = "-I$FindBin::Bin"; + $o->{ILSM}{MAKEFILE}{INC} = "-I\"$FindBin::Bin\""; } $o->{ILSM}{AUTOWRAP} = 0 if not defined $o->{ILSM}{AUTOWRAP}; $o->{ILSM}{XSMODE} = 0 if not defined $o->{ILSM}{XSMODE}; @@ -79,8 +80,11 @@ $o->add_list($o->{ILSM}{MAKEFILE}, $key, $value, []); next; } - if ($key eq 'INC' or - $key eq 'MYEXTLIB' or + if ($key eq 'INC') { + $o->add_string($o->{ILSM}{MAKEFILE}, $key, quote_space($value), ''); + next; + } + if ($key eq 'MYEXTLIB' or $key eq 'OPTIMIZE' or $key eq 'CCFLAGS' or $key eq 'LDDLFLAGS') { @@ -94,14 +98,14 @@ $value = File::Spec->rel2abs($value); } else { - for (my $i = 0; $i < scalar(@$value); $i++) { + for (my $i = 0; $i < scalar(@$value); $i++) { croak "TYPEMAPS file '${$value}[$i]' not found" unless -f ${$value}[$i]; - ${$value}[$i] = File::Spec->rel2abs(${$value}[$i]); + ${$value}[$i] = File::Spec->rel2abs(${$value}[$i]); } } - $o->add_list($o->{ILSM}{MAKEFILE}, $key, $value, []); - next; + $o->add_list($o->{ILSM}{MAKEFILE}, $key, $value, []); + next; } if ($key eq 'AUTO_INCLUDE') { $o->add_text($o->{ILSM}, $key, $value, ''); @@ -338,6 +342,7 @@ sub get_maps { my $o = shift; + print STDERR "get_maps Stage\n" if $o->{CONFIG}{BUILD_NOISY}; my $typemap = ''; my $file; $file = File::Spec->catfile($Config::Config{installprivlib},"ExtUtils","typemap"); @@ -353,7 +358,9 @@ if (not $o->UNTAINT) { require FindBin; $file = File::Spec->catfile($FindBin::Bin,"typemap"); - push(@{$o->{ILSM}{MAKEFILE}{TYPEMAPS}}, $file) if -f $file; + if ( -f $file ) { + push(@{$o->{ILSM}{MAKEFILE}{TYPEMAPS}}, $file); + } } } @@ -691,8 +698,10 @@ sub write_Makefile_PL { my $o = shift; $o->{ILSM}{xsubppargs} = ''; + my $i = 0; for (@{$o->{ILSM}{MAKEFILE}{TYPEMAPS}}) { - $o->{ILSM}{xsubppargs} .= "-typemap $_ "; + $o->{ILSM}{xsubppargs} .= "-typemap \"$_\" "; + $o->{ILSM}{MAKEFILE}{TYPEMAPS}->[$i++] = fix_space($_); } my %options = ( @@ -847,7 +856,9 @@ if (/^(\w+)\s*=\s*\S+.*$/ and $fix = $fixes{$1} ) { - print MAKEFILE "$1 = $o->{ILSM}{$fix}\n" + my $fixed = $o->{ILSM}{$fix}; + $fixed = fix_space($fixed) if $fix eq 'install_lib'; + print MAKEFILE "$1 = $fixed\n"; } else { print MAKEFILE; @@ -856,6 +867,16 @@ close MAKEFILE; } +sub quote_space { + $_[0] = '"'.$_[0].'"' if $_[0] and $_[0] =~ /\s/; + $_[0]; +} + +sub fix_space { + $_[0] =~ s/ /\\ /g if $_[0] =~ / /; + $_[0]; +} + #============================================================================== # This routine used by C/t/09parser to test that the expected parser is in use #============================================================================== diff -u ./C/Changes.orig --- ./C/Changes.orig 2011-03-30 08:19:13.287481700 +0200 +++ ./C/Changes 2011-03-30 14:22:08.410041700 +0200 @@ -1,6 +1,6 @@ Revision history for Perl extension Inline::C. -0.48_01 2011-03-30 08:16:26 +0.49 Tue 30 Mar 2011 - [cpan #67053] Space in pwd. Patch from Reini Urban to work with spaces in the current dir diff -u ./Changes.orig --- ./Changes.orig 2011-02-21 08:46:27.000000000 +0100 +++ ./Changes 2011-03-30 14:22:45.610719000 +0200 @@ -1,6 +1,12 @@ # Revision history for Perl extension Inline. --- +version: 0.49 +date: Tue 30 Mar 2011 +C/C.pm - [cpan #67053] Space in pwd. Patch from Reini Urban to work with spaces + in the current dir + +--- version: 0.48 date: Mon 21 Feb 2011 Version 0.48 released to CPAN. (No changes from 0.47_02.) diff -u ./Inline.pm.orig --- ./Inline.pm.orig 2011-03-29 14:10:00.322060400 +0200 +++ ./Inline.pm 2011-03-30 14:22:27.253909900 +0200 @@ -2,7 +2,7 @@ use strict; require 5.006; -$Inline::VERSION = '0.48'; +$Inline::VERSION = '0.49'; use AutoLoader 'AUTOLOAD'; use Inline::denter; diff -u ./Makefile.PL.orig --- ./Makefile.PL.orig 2011-02-01 10:06:03.000000000 +0100 +++ ./Makefile.PL 2011-03-30 08:15:39.805028300 +0200 @@ -4,7 +4,7 @@ { Data::Dumper => 2.09, Digest::MD5 => 2.09, - Parse::RecDescent => 1.80, + Parse::RecDescent => 1.80, File::Spec => 0.8, Test::Warn => 0.21, } @@ -13,7 +13,7 @@ { Data::Dumper => 2.09, Digest::MD5 => 2.09, - Parse::RecDescent => 1.80, + Parse::RecDescent => 1.80, File::Spec => 0.8, };