Alien-Build
view release on metacpan or search on metacpan
lib/Alien/Build/MM.pm view on Meta::CPAN
Alien::Build->load('alienfile',
root => "_alien",
(-d 'patch' ? (patch => 'patch') : ()),
meta_prop => \%meta,
)
;
if(%meta)
{
$build->meta->add_requires(configure => 'Alien::Build::MM' => '1.20');
$build->meta->add_requires(configure => 'Alien::Build' => '1.20');
}
if(defined $prop{alienfile_meta})
{
$self->{alienfile_meta} = $prop{alienfile_meta};
}
else
{
$self->{alienfile_meta} = 1;
}
$self->{clean_install} = $prop{clean_install};
$self->build->load_requires('configure');
$self->build->root;
$self->build->checkpoint;
$self;
}
sub build
{
shift->{build};
}
sub alienfile_meta
{
shift->{alienfile_meta};
}
sub clean_install
{
shift->{clean_install};
}
sub mm_args
{
my($self, %args) = @_;
if($args{DISTNAME})
{
$self->build->set_stage(Path::Tiny->new("blib/lib/auto/share/dist/$args{DISTNAME}")->absolute->stringify);
$self->build->install_prop->{mm}->{distname} = $args{DISTNAME};
my $module = $args{DISTNAME};
$module =~ s/-/::/g;
# See if there is an existing version installed, without pulling it into this process
my($old_prefix, $err, $ret) = capture { system $^X, "-M$module", -e => "print $module->dist_dir"; $? };
if($ret == 0)
{
chomp $old_prefix;
my $file = Path::Tiny->new($old_prefix, qw( _alien alien.json ));
if(-r $file)
{
my $old_runtime = eval {
require JSON::PP;
JSON::PP::decode_json($file->slurp);
};
unless($@)
{
$self->build->install_prop->{old}->{runtime} = $old_runtime;
$self->build->install_prop->{old}->{prefix} = $old_prefix;
}
}
}
}
else
{
Carp::croak "DISTNAME is required";
}
my $ab_version = '0.25';
if($self->clean_install)
{
$ab_version = '1.74';
}
$args{CONFIGURE_REQUIRES} = Alien::Build::_merge(
'Alien::Build::MM' => $ab_version,
%{ $args{CONFIGURE_REQUIRES} || {} },
%{ $self->build->requires('configure') || {} },
);
if($self->build->install_type eq 'system')
{
$args{BUILD_REQUIRES} = Alien::Build::_merge(
'Alien::Build::MM' => $ab_version,
%{ $args{BUILD_REQUIRES} || {} },
%{ $self->build->requires('system') || {} },
);
}
elsif($self->build->install_type eq 'share')
{
$args{BUILD_REQUIRES} = Alien::Build::_merge(
'Alien::Build::MM' => $ab_version,
%{ $args{BUILD_REQUIRES} || {} },
%{ $self->build->requires('share') || {} },
);
}
else
{
die "unknown install type: @{[ $self->build->install_type ]}"
}
$args{PREREQ_PM} = Alien::Build::_merge(
'Alien::Build' => $ab_version,
( run in 1.260 second using v1.01-cache-2.11-cpan-3d66aa2751a )