Thank you, for hinting on PAR::Packer .
Here is my receipt, how to make Mojolicious::Lite working under PAR::packer. I have taken some ideas from here
-
You should have the code like the following at the beginning of myapp.pl, before "use Mojolicious::Lite" :
BEGIN {
if(exists $ENV{PAR_TEMP}) {
my $dir = $ENV{PAR_TEMP};
chdir $dir;
my @substitutions = qw/Mojo Mojolicious/;
for(@substitutions){
next if -l;
symlink "inc/$_", $_
or die "Can't symlink $_ at $dir: $!";
}
print "I'm at at $dir\n";
}
}
NB for Win32 : the directories should be copied instead of just symlink'ed.
-
Locate the Mojo/entities.txt and Mojolicious/Commands.pm from Mojolicious distribution:
$ locate entities.txt
/home/dmol/development/perl/dev-env.new/perlbrew/perls/perl-5.16.3/lib
+/site_perl/5.16.3/Mojo/entities.txt
$ locate Commands.pm
/home/dmol/development/perl/dev-env.new/perlbrew/perls/perl-5.16.3/lib
+/site_perl/5.16.3/Mojolicious/Commands.pm
(As alternative, you could just point to them somewhere, where Mojolicious disrtibution has being manually unpacked).
-
Create standalone application via the following command line:
pp -x -a "/home/dmol/development/perl/dev-env.new/perlbrew/perls/perl-
+5.16.3/lib/site_perl/5.16.3/Mojo/entities.txt;Mojo/entities.txt" \
-a "/home/dmol/development/perl/dev-env.new/perlbrew/perls/perl-5.16.3
+/lib/site_perl/5.16.3/Mojolicious/Commands.pm;Mojolicious/Commands.pm
+" \
./myapp.pl
I haven't tried the application with external public and templates dirs, but probably, you should include them into archive (see pp's help), and may be do the same tricks as in p.1
I hope it would be useful for somebody!
| [reply] [d/l] [select] |