X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FPAR.pm;h=535174b90facc6d3c3b623f7d3c232e07416a820;hb=640faa87f0c572b58acd22124bfa6f6c59106873;hp=0f64b851c6c39eedd8954b394372fdcd31ea017e;hpb=5f9455c6efa99b87bf6e1cb0116db3004cc75151;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst/PAR.pm b/lib/Catalyst/PAR.pm index 0f64b85..535174b 100644 --- a/lib/Catalyst/PAR.pm +++ b/lib/Catalyst/PAR.pm @@ -24,14 +24,14 @@ Package Catalyst Applications. =over 4 -=item $self->package( $par, $engine ) +=item $self->package(\%options) =cut sub package { my ( $self, $options ) = @_; - my $par = $options->{par} || 'application.par'; + my $par = $options->{output} || 'application.par'; my $engine = $options->{engine} || 'CGI'; # Check for PAR @@ -52,9 +52,10 @@ sub package { sub { my $name = $File::Find::name; return if $name =~ /^\W*lib/; + return if $name =~ /^\W*blib/; + return if $name =~ /^\W*_build/; return if $name =~ /\.par$/; return if $name !~ /\w+/; - warn "$name\n"; push @files, $name; }, '.' @@ -63,18 +64,36 @@ sub package { my $par_test = File::Spec->catfile( $FindBin::Bin, '..', 'par_test.pl' ); unlink $par_test; + my $classes = ''; + for my $req ( split ',', $options->{classes} ) { + $classes .= "require $req;\n"; + } + my $version = $Catalyst::VERSION; my $class = $options->{class}; my $tmp_file = IO::File->new("> $par_test"); print $tmp_file <<"EOF"; +die "$class on Catalyst $version\n" if \$0 !~ /par_test.pl\.\\w+\$/; BEGIN { \$ENV{CATALYST_ENGINE} = '$engine' }; -use FindBin; use lib 'lib'; -use $class; +require $class; +import $class; +$classes EOF $tmp_file->close; # Create package - my %opt = ( 'x' => 1, 'n' => 0, 'o' => $par, 'a' => [@files] ); + local $SIG{__WARN__} = sub { }; + open my $olderr, '>&STDERR'; + open STDERR, '>', File::Spec->devnull; + my %opt = ( + 'x' => 1, + 'n' => 0, + 'o' => $par, + 'a' => [@files], + 'p' => 1, + 'B' => $options->{core}, + 'm' => $options->{multiarch} + ); App::Packer::PAR->new( frontend => 'Module::ScanDeps', backend => 'PAR::Packer', @@ -82,6 +101,7 @@ EOF backopts => \%opt, args => ['par_test.pl'], )->go; + open STDERR, '>&', $olderr; unlink $par_test; }