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


Reply via email to