--- cvsroot/App-Staticperl/mkbundle 2011/01/10 14:12:03 1.15 +++ cvsroot/App-Staticperl/mkbundle 2011/02/10 08:58:36 1.19 @@ -67,6 +67,8 @@ close $TRACER_R; close $TRACER_W; + my $pkg = "pkg000000"; + unshift @INC, sub { my $dir = find_incdir $_[1] or return; @@ -82,7 +84,11 @@ while (<$R_TRACER>) { if (/use (.*)$/) { my $mod = $1; - eval "require $mod"; + my $pkg = ++$pkg; + my $eval = $mod = $mod =~ /[^A-Za-z0-9_:]/ + ? "require $mod" + : "{ package $pkg; use $mod; }"; + eval $eval; warn "ERROR: $@ (while loading '$mod')\n" if $@; } elsif (/eval (.*)$/) { @@ -262,7 +268,7 @@ ############################################################################# sub cmd_boot { - $pm{"//boot"} = $_[0]; + $pm{"&&boot"} = $_[0]; } sub cmd_add { @@ -270,7 +276,7 @@ or die "$_[0]: cannot parse"; my $file = $1; - my $as = defined $2 ? $2 : "/$1"; + my $as = defined $2 ? $2 : "&$1"; $pm{$as} = $file; $pmbin{$as} = 1 if $_[1]; @@ -725,7 +731,7 @@ /* public API */ EXTERN_C PerlInterpreter *staticperl; EXTERN_C void staticperl_xs_init (pTHX); -EXTERN_C void staticperl_init (void); +EXTERN_C void staticperl_init (XSINIT_t xs_init); /* argument can be 0 */ EXTERN_C void staticperl_cleanup (void); EOF @@ -804,8 +810,8 @@ } '; -$bootstrap .= "require '//boot';" - if exists $pm{"//boot"}; +$bootstrap .= "require '&&boot';" + if exists $pm{"&&boot"}; $bootstrap =~ s/\s+/ /g; $bootstrap =~ s/(\W) /$1/g; @@ -935,6 +941,9 @@ print $fh <