dotReader
view release on metacpan or search on metacpan
inc/dtRdrBuilder.pm view on Meta::CPAN
if($args{nodata}) {
warn "skipping datadir generation";
}
else {
$self->depends_on('datadir');
}
require Archive::Zip;
my $filename = $self->binfilename;
my $src_dir = $self->datadir;
(-e $src_dir) or
die "you need to unset NO_DATA or manually build $src_dir";
my $zip = Archive::Zip->new();
$zip->read($filename) == Archive::Zip::AZ_OK or
die("'$filename' is not a valid zip file.");
$zip->updateTree($src_dir, 'data', sub {-f });
$zip->overwrite( $filename ) == Archive::Zip::AZ_OK or die 'write error';
undef($zip);
rename($filename, "$filename.par") or die;
system($self->which_pp, '-o', $filename, "$filename.par") and die;
unlink("$filename.par") or warn "cannot remove '$filename.par' $!";
warn "ok\n";
} # end subroutine ACTION_repar definition
########################################################################
=item datadir
Build the embedded par 'data/' directory in blib/pardata/.
=cut
sub ACTION_datadir {
my $self = shift;
# TODO up_to_date check?
my $dest_dir = $self->datadir;
$self->delete_filetree($dest_dir);
File::Path::mkpath([$dest_dir]);
warn "populating $dest_dir\n";
require File::Find;
require Cwd;
my $ret_dir = Cwd::getcwd;
chdir($self->clientdata) or die;
File::Find::find({
no_chdir => 1,
wanted => sub {
(-d $_) and return;
#warn $_;
m/\..*\.swp/ and return;
if(-d $_ and m/\.svn/) {
$File::Find::prune = 1;
return;
}
$self->copy_if_modified(
from => $_,
to => "$ret_dir/$dest_dir/$_",
verbose => 0,
);
}}, '.');
chdir($ret_dir) or die;
if(-e "$dest_dir/" . $self->release_file) {
unlink("$dest_dir/" . $self->release_file) or die;
}
$self->write_release_file($dest_dir);
require File::Copy;
for (qw(log.conf.tmpl log.conf)) {
unlink("$dest_dir/$_") or die $_;
File::Copy::copy("$dest_dir/log.conf.par", "$dest_dir/$_");
}
foreach my $file (qw(LICENSE COPYING)) {
$self->copy_if_modified(
from => $file,
to => "$dest_dir/$file",
verbose => 1,
);
}
} # end subroutine ACTION_datadir definition
########################################################################
sub ACTION_appbundle {
my $self = shift;
$self->depends_on('datadir');
local $self->{args}{deps} = 1;
my $libs = $self->find_pm_files;
local $self->{properties}{mm_also_scan} = [keys(%$libs)];
local $self->{properties}{mm_add} = [
$self->additional_deps,
map({s#/+#::#g; s/\.pm//; $_} grep({m/\.pm$/}
$self->scan_deps(string => $self->dependency_hints)
)),
];
my $mm = # TODO some way to do that with SUPER::
Module::Build::Plugins::MacBundle::ACTION_appbundle($self, @_);
# XXX ugh, bit of thrashing-about involved here
# copy
my $dest = $self->binfilename;
#if(-e $dest) {
# File::Path::rmtree($dest) or die $!;
#}
unless(-d $dest) {
File::Path::mkpath($dest) or die "$dest $!";
}
warn "copy to $dest";
system('rsync', '-a', '--delete',
$mm->built_dir . '/', $dest . '/') and die;
# datadir
system('rsync', '-a', '--delete',
$self->datadir . '/', "$dest/Contents/Resources/data/") and die;
} # end subroutine ACTION_appbundle definition
########################################################################
=item parmanifest
Extract the MANIFEST file from the current par (saves compilation time
on the next BUILD par)
=cut
sub ACTION_parmanifest {
my $self = shift;
my $filename = $self->binfilename;
my $parmanifest = $self->parmanifest;
open(my $fh, '>', $parmanifest) or
die "cannot write to $parmanifest $!";
( run in 2.381 seconds using v1.01-cache-2.11-cpan-8f98c5d2c55 )