CPANPLUS
view release on metacpan or search on metacpan
lib/CPANPLUS/Dist.pm view on Meta::CPAN
if( !$dist->prereq_satisfied(modobj => $modobj, version => $version)) {
msg(loc("Module '%1' requires '%2' version '%3' to be installed ",
$self->module, $modobj->module, $version), $verbose );
push @install_me, [$modobj, $version];
### it's not an MM or Build format, that means it's a package
### manager... we'll need to install it as well, via the PM
} elsif ( INSTALL_VIA_PACKAGE_MANAGER->($format) and
!$modobj->package_is_perl_core and
($target ne TARGET_IGNORE)
) {
msg(loc("Module '%1' depends on '%2', may need to build a '%3' ".
"package for it as well", $self->module, $modobj->module,
$format));
push @install_me, [$modobj, $version];
}
}
### so you just want to ignore prereqs? ###
if( $target eq TARGET_IGNORE ) {
### but you have modules you need to install
if( @install_me ) {
msg(loc("Ignoring prereqs, this may mean your install will fail"),
$verbose);
msg(loc("'%1' listed the following dependencies:", $self->module),
$verbose);
for my $aref (@install_me) {
my ($mod,$version) = @$aref;
my $str = sprintf "\t%-35s %8s\n", $mod->module, $version;
msg($str,$verbose);
}
return;
### ok, no problem, you have all needed prereqs anyway
} else {
return 1;
}
}
for my $aref (@install_me) {
my($modobj,$version) = @$aref;
### another prereq may have already installed this one...
### so don't ask again if the module turns out to be uptodate
### see bug [#11840]
### if either force or prereq_build are given, the prereq
### should be built anyway
next if (!$force and !$prereq_build) &&
$dist->prereq_satisfied(modobj => $modobj, version => $version);
### either we're told to ignore the prereq,
### or the user wants us to ask him
if( ( $conf->get_conf('prereqs') == PREREQ_ASK and not
$cb->_callbacks->install_prerequisite->($self, $modobj)
)
) {
msg(loc("Will not install prerequisite '%1' -- Note " .
"that the overall install may fail due to this",
$modobj->module), $verbose);
next;
}
### value set and false -- means failure ###
if( defined $modobj->status->installed
&& !$modobj->status->installed
) {
error( loc( "Prerequisite '%1' failed to install before in " .
"this session", $modobj->module ) );
$flag++;
last;
}
### part of core?
if( $modobj->package_is_perl_core ) {
error(loc("Prerequisite '%1' is perl-core (%2) -- not ".
"installing that. -- Note that the overall ".
"install may fail due to this.",
$modobj->module, $modobj->package ) );
next;
}
### circular dependency code ###
my $pending = $cb->_status->pending_prereqs || {};
### recursive dependency ###
if ( $pending->{ $modobj->module } ) {
error( loc( "Recursive dependency detected (%1) -- skipping",
$modobj->module ) );
next;
}
### register this dependency as pending ###
$pending->{ $modobj->module } = $modobj;
$cb->_status->pending_prereqs( $pending );
### call $modobj->install rather than doing
### CPANPLUS::Dist->new and the like ourselves,
### since ->install will take care of fetch &&
### extract as well
my $pa = $dist->status->_prepare_args || {};
my $ca = $dist->status->_create_args || {};
my $ia = $dist->status->_install_args || {};
unless( $modobj->install( %$pa, %$ca, %$ia,
force => $force,
verbose => $verbose,
format => $format,
target => $target )
) {
error(loc("Failed to install '%1' as prerequisite " .
"for '%2'", $modobj->module, $self->module ) );
$flag++;
}
( run in 1.363 second using v1.01-cache-2.11-cpan-39bf76dae61 )