From: "Roderich Schupp" <roderich.sch...@googlemail.com>
2009/4/20 Octavian Râşniţă <orasn...@gmail.com>:
I created the .par archive of that Catalyst app using:
perl Makefile.PL
nmake
nmake test
nmake catalyst_par
OK, you probably started off developing your app by running
catalyst.pl
right? That created a skeleton file tree including the Makefile.PL above.
If you run "perl Makefile.PL" this generates a stanza:
catalyst_par :: all
$(NOECHO) $(PERL) -Ilib \
-Minc::Module::Install -MModule::Install::Catalyst \
-e"Catalyst::Module::Install::_catalyst_par('', 'Foo-Bar',
{ CLASSES => [], CORE => 0, ENGINE => 'CGI',
MULTIARCH => 0, SCRIPT => '', USAGE => q## } )"
Hence "make catalyst_par" eventually invokes
Catalyst::Module::Install::_catalyst_par
(which is from Module::Install::Catalyst) which generates the .par by
calling
App::Packer::PAR. The problem is the parameter CORE => 0.
This tells PAR _not_ to pack any Perl core modules into the .par file.
Now for Perl 5.10, mro.pm _is_ a core module. So your .par file is not
fully self contained and won't run under parl.exe on a machine that
doesn't have perl (5.10) installed.
To fix add "catalyst_par_core(1)" to Makefile.PL _before_
the call to catalyst() and re-run "perl Makefile.PL". This should
change CORE => 0 to CORE => 1in the generated Makefile
and result in a .par containing (amon other stuff) mro.pm.
Thank you. This way it works (even though not well), however I don't think I
should add that line, because I tried to run the perl script from the PAR
archive on the same machine it was created, immediately after creating it,
in the same location it was created.
And here I use Perl 5.10.0...
Thank you.
Octavian