App-Build
view release on metacpan or search on metacpan
lib/App/Build.pm view on Meta::CPAN
sub _find_all_files {
my ($self, $dir) = @_;
return {} unless -d $dir;
return { map { $_, $_ } @{ $self->rscan_dir($dir, sub { -f $_ }) } };
}
=head2 rscan_dir()
Don't include CVS, RCS, and SVN (*/.svn/*) files.
=cut
sub rscan_dir {
my ($self, $dir, $pattern) = @_;
my $files = $self->SUPER::rscan_dir($dir, $pattern);
my @files = grep(!/[\/\\](CVS|RCS|\.svn)[\/\\]/, @$files);
return \@files;
}
######################################################################
# INSTALL: enhancements to "./Build install"
######################################################################
=head2 packlist()
This creates the name of the "packlist" file that needs to be
written with the list of all of the files that get installed.
=cut
sub packlist {
my ($self) = @_;
# Write the packlist into the same place as ExtUtils::MakeMaker.
my $archdir = $self->install_destination('arch');
my @ext = $self->module_name ? split /::/, $self->module_name :
$self->dist_name;
my $packlist = File::Spec->catfile($archdir, 'auto', @ext, '.packlist');
return($packlist);
}
=head2 install_map()
This method is only overridden in order to put in the fix so
that it creates a .packlist based on dist_name if the module_name
is not specified.
=cut
sub install_map {
my ($self, $blib) = @_;
$blib ||= $self->blib;
my %map;
foreach my $type ($self->install_types) {
my $localdir = File::Spec->catdir( $blib, $type );
next unless -e $localdir;
if (my $dest = $self->install_destination($type)) {
# thins alters the behavious of Module::Build, and
# looks into the implementation
if ( $self->install_path($type)
&& !File::Spec->file_name_is_absolute($dest)) {
$dest = File::Spec->catdir( $self->_prefix, $dest );
}
$map{$localdir} = $dest;
} else {
# Platforms like Win32, MacOS, etc. may not build man pages
die "Can't figure out where to install things of type '$type'"
unless $type =~ /^(lib|bin)doc$/;
}
}
my $extra_dirs_attrs = $self->_get_extra_dirs_attributes();
foreach my $dir ( $self->_get_extra_dirs() ) {
my $dest = $extra_dirs_attrs->{$dir}{dest_dir};
if (!File::Spec->file_name_is_absolute($dest)) {
$dest = File::Spec->catdir( $self->_prefix, $dest );
}
$map{File::Spec->catdir( $blib, $dir )} = $dest;
}
if ($self->create_packlist) {
$map{write} = $self->packlist();
}
if (length(my $destdir = $self->{properties}{destdir} || '')) {
foreach (keys %map) {
# Need to remove volume from $map{$_} using splitpath, or else
# we'll create something crazy like C:\Foo\Bar\E:\Baz\Quux
my ($volume, $path) = File::Spec->splitpath( $map{$_}, 1 );
$map{$_} = File::Spec->catdir($destdir, $path);
}
}
$map{read} = ''; # To keep ExtUtils::Install quiet
return \%map;
}
=head2 has_config_data()
No. We're not using config data.
Always return FALSE.
=cut
sub has_config_data {
my ($self) = @_;
return(0);
}
=head2 ACTION_install()
This method is overridden to put in the configure() hook so that
a module which extends App::Build can implement the configure()
method. Then the configure() method will run when
"./Build install" is invoked.
=cut
( run in 1.719 second using v1.01-cache-2.11-cpan-39bf76dae61 )