Alien-Build
view release on metacpan or search on metacpan
lib/Alien/Build/MM.pm view on Meta::CPAN
"\t\$(RM_RF) _alien\n\n";
my $dirs = $self->build->meta_prop->{arch}
? '$(INSTALLARCHLIB) $(INSTALLSITEARCH) $(INSTALLVENDORARCH)'
: '$(INSTALLPRIVLIB) $(INSTALLSITELIB) $(INSTALLVENDORLIB)'
;
# set prefix
$postamble .= "alien_prefix : _alien/mm/prefix\n\n" .
"_alien/mm/prefix :\n" .
"\t\$(FULLPERL) -MAlien::Build::MM=cmd -e prefix \$(INSTALLDIRS) $dirs\n\n";
# set version
$postamble .= "alien_version : _alien/mm/version\n\n" .
"_alien/mm/version : _alien/mm/prefix\n" .
"\t\$(FULLPERL) -MAlien::Build::MM=cmd -e version \$(VERSION)\n\n";
# download
$postamble .= "alien_download : _alien/mm/download\n\n" .
"_alien/mm/download : _alien/mm/prefix _alien/mm/version\n" .
"\t\$(FULLPERL) -MAlien::Build::MM=cmd -e download\n\n";
# build
$postamble .= "alien_build : _alien/mm/build\n\n" .
"_alien/mm/build : _alien/mm/download\n" .
"\t\$(FULLPERL) -MAlien::Build::MM=cmd -e build\n\n";
# append to all
$postamble .= "pure_all :: _alien/mm/build\n\n";
$postamble .= "subdirs-test_dynamic subdirs-test_static subdirs-test :: alien_test\n\n";
$postamble .= "alien_test :\n" .
"\t\$(FULLPERL) -MAlien::Build::MM=cmd -e test\n\n";
# prop
$postamble .= "alien_prop :\n" .
"\t\$(FULLPERL) -MAlien::Build::MM=cmd -e dumpprop\n\n";
$postamble .= "alien_prop_meta :\n" .
"\t\$(FULLPERL) -MAlien::Build::MM=cmd -e dumpprop meta\n\n";
$postamble .= "alien_prop_install :\n" .
"\t\$(FULLPERL) -MAlien::Build::MM=cmd -e dumpprop install\n\n";
$postamble .= "alien_prop_runtime :\n" .
"\t\$(FULLPERL) -MAlien::Build::MM=cmd -e dumpprop runtime\n\n";
# install
$postamble .= "alien_clean_install : _alien/mm/prefix\n" .
"\t\$(FULLPERL) -MAlien::Build::MM=cmd -e clean_install\n\n";
$postamble;
}
sub mm_install
{
# NOTE: older versions of the Alien::Build::MM documentation
# didn't include this method, so anything that this method
# does has to be optional
my($self, $mm, @rest) = @_;
my $section = do {
package
MY;
$mm->SUPER::install(@rest);
};
return
".NOTPARALLEL : \n\n"
. ".NO_PARALLEL : \n\n"
. "install :: alien_clean_install\n\n"
. $section;
}
sub import
{
my(undef, @args) = @_;
foreach my $arg (@args)
{
if($arg eq 'cmd')
{
package main;
*_args = sub
{
my $build = Alien::Build->resume('alienfile', '_alien');
$build->load_requires('configure');
$build->load_requires($build->install_type);
($build, @ARGV)
};
*_touch = sub {
my($name) = @_;
my $path = Path::Tiny->new("_alien/mm/$name");
$path->parent->mkpath;
$path->touch;
};
*prefix = sub
{
my($build, $type, $perl, $site, $vendor) = _args();
my $distname = $build->install_prop->{mm}->{distname};
my $prefix = $type eq 'perl'
? $perl
: $type eq 'site'
? $site
: $type eq 'vendor'
? $vendor
: die "unknown INSTALLDIRS ($type)";
$prefix = Path::Tiny->new($prefix)->child("auto/share/dist/$distname")->absolute->stringify;
$build->log("prefix $prefix");
$build->set_prefix($prefix);
$build->checkpoint;
_touch('prefix');
};
*version = sub
{
my($build, $version) = _args();
$build->runtime_prop->{perl_module_version} = $version;
$build->checkpoint;
_touch('version');
};
*download = sub
{
my($build) = _args();
$build->download;
( run in 0.574 second using v1.01-cache-2.11-cpan-39bf76dae61 )