ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/App-Staticperl/mkbundle
(Generate patch)

Comparing App-Staticperl/mkbundle (file contents):
Revision 1.15 by root, Mon Jan 10 14:12:03 2011 UTC vs.
Revision 1.17 by root, Wed Feb 9 09:52:27 2011 UTC

65 65
66 unless (fork) { 66 unless (fork) {
67 close $TRACER_R; 67 close $TRACER_R;
68 close $TRACER_W; 68 close $TRACER_W;
69 69
70 my $pkg = "pkg000000";
71
70 unshift @INC, sub { 72 unshift @INC, sub {
71 my $dir = find_incdir $_[1] 73 my $dir = find_incdir $_[1]
72 or return; 74 or return;
73 75
74 syswrite $W_TRACER, "-\n$dir\n$_[1]\n"; 76 syswrite $W_TRACER, "-\n$dir\n$_[1]\n";
80 }; 82 };
81 83
82 while (<$R_TRACER>) { 84 while (<$R_TRACER>) {
83 if (/use (.*)$/) { 85 if (/use (.*)$/) {
84 my $mod = $1; 86 my $mod = $1;
87 my $pkg = ++$pkg;
88 my $eval = $mod = $mod =~ /[^A-Za-z0-9_:]/
85 eval "require $mod"; 89 ? "require $mod"
90 : "{ package $pkg; use $mod; }";
91 eval $eval;
86 warn "ERROR: $@ (while loading '$mod')\n" 92 warn "ERROR: $@ (while loading '$mod')\n"
87 if $@; 93 if $@;
88 } elsif (/eval (.*)$/) { 94 } elsif (/eval (.*)$/) {
89 my $eval = $1; 95 my $eval = $1;
90 eval $eval; 96 eval $eval;
946 952
947int 953int
948main (int argc, char *argv []) 954main (int argc, char *argv [])
949{ 955{
950 extern char **environ; 956 extern char **environ;
957 int i, exitstatus;
958 char **args = malloc ((argc + 3) * sizeof (const char *));
959
960 args [0] = argv [0];
961 args [1] = "-e";
962 args [2] = "0";
963 args [3] = "--";
964
965 for (i = 1; i < argc; ++i)
966 args [i + 3] = argv [i];
967
968 PERL_SYS_INIT3 (&argc, &argv, &environ);
969 staticperl = perl_alloc ();
970 perl_construct (staticperl);
971
972 PL_exit_flags |= PERL_EXIT_DESTRUCT_END;
973
974 exitstatus = perl_parse (staticperl, staticperl_xs_init, argc + 3, args, environ);
975 free (args);
976 if (!exitstatus)
977 perl_run (staticperl);
978
979 exitstatus = perl_destruct (staticperl);
980 perl_free (staticperl);
981 PERL_SYS_TERM ();
982
983 return exitstatus;
984}
985EOF
986} elsif ($PERL) {
987 print $fh <<EOF;
988
989int
990main (int argc, char *argv [])
991{
992 extern char **environ;
951 int exitstatus; 993 int exitstatus;
952 994
995 PERL_SYS_INIT3 (&argc, &argv, &environ);
996 staticperl = perl_alloc ();
997 perl_construct (staticperl);
998
999 PL_exit_flags |= PERL_EXIT_DESTRUCT_END;
1000
1001 exitstatus = perl_parse (staticperl, staticperl_xs_init, argc, argv, environ);
1002 if (!exitstatus)
1003 perl_run (staticperl);
1004
1005 exitstatus = perl_destruct (staticperl);
1006 perl_free (staticperl);
1007 PERL_SYS_TERM ();
1008
1009 return exitstatus;
1010}
1011EOF
1012} else {
1013 print $fh <<EOF;
1014
1015EXTERN_C void
1016staticperl_init (void)
1017{
953 static char *args[] = { 1018 static char *args[] = {
954 "staticperl", 1019 "staticperl",
955 "-e", 1020 "-e",
956 "0" 1021 "0"
957 }; 1022 };
958 1023
959 PERL_SYS_INIT3 (&argc, &argv, &environ);
960 staticperl = perl_alloc ();
961 perl_construct (staticperl);
962
963 PL_exit_flags |= PERL_EXIT_DESTRUCT_END;
964
965 exitstatus = perl_parse (staticperl, staticperl_xs_init, sizeof (args) / sizeof (*args), args, environ);
966 if (!exitstatus)
967 perl_run (staticperl);
968
969 exitstatus = perl_destruct (staticperl);
970 perl_free (staticperl);
971 PERL_SYS_TERM ();
972
973 return exitstatus;
974}
975EOF
976} elsif ($PERL) {
977 print $fh <<EOF;
978
979int
980main (int argc, char *argv [])
981{
982 extern char **environ;
983 int exitstatus;
984
985 PERL_SYS_INIT3 (&argc, &argv, &environ);
986 staticperl = perl_alloc ();
987 perl_construct (staticperl);
988
989 PL_exit_flags |= PERL_EXIT_DESTRUCT_END;
990
991 exitstatus = perl_parse (staticperl, staticperl_xs_init, argc, argv, environ);
992 if (!exitstatus)
993 perl_run (staticperl);
994
995 exitstatus = perl_destruct (staticperl);
996 perl_free (staticperl);
997 PERL_SYS_TERM ();
998
999 return exitstatus;
1000}
1001EOF
1002} else {
1003 print $fh <<EOF;
1004
1005EXTERN_C void
1006staticperl_init (void)
1007{
1008 extern char **environ; 1024 extern char **environ;
1009 int argc = sizeof (args) / sizeof (args [0]); 1025 int argc = sizeof (args) / sizeof (args [0]);
1010 char **argv = args; 1026 char **argv = args;
1011
1012 static char *args[] = {
1013 "staticperl",
1014 "-e",
1015 "0"
1016 };
1017 1027
1018 PERL_SYS_INIT3 (&argc, &argv, &environ); 1028 PERL_SYS_INIT3 (&argc, &argv, &environ);
1019 staticperl = perl_alloc (); 1029 staticperl = perl_alloc ();
1020 perl_construct (staticperl); 1030 perl_construct (staticperl);
1021 PL_origalen = 1; 1031 PL_origalen = 1;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines