App-cpm
view release on metacpan or search on metacpan
lib/App/cpm/Master.pm view on Meta::CPAN
. "The local-lib may result in incomplete self-contained directory.";
App::cpm::Logger->log(result => "WARN", message => $msg);
}
}
$self;
}
sub fail ($self, $ctx) {
my @fail_resolve = sort keys $self->{_fail_resolve}->%*;
my @fail_install = sort keys $self->{_fail_install}->%*;
my @not_installed = grep { !$self->{_fail_install}{$_->distfile} && !$_->installed } $self->_final_install_distributions(1);
return if !@fail_resolve && !@fail_install && !@not_installed;
my $detector = App::cpm::CircularDependency->new;
for my $dist (@not_installed) {
my $req = $dist->requirements([qw(configure build test runtime)])->as_array;
$detector->add($dist->distfile, $dist->provides, $req);
}
$detector->finalize;
my $detected = $detector->detect;
for my $distfile (sort keys $detected->%*) {
my $distvname = $self->distribution($distfile)->distvname;
my @circular = $detected->{$distfile}->@*;
my $msg = join " -> ", map { $self->distribution($_)->distvname } @circular;
local $ctx->{logger}{context} = $distvname;
$ctx->log("Detected circular dependencies $msg");
$ctx->log("Failed to install distribution");
}
for my $dist (sort { $a->distvname cmp $b->distvname } grep { !$detected->{$_->distfile} } @not_installed) {
local $ctx->{logger}{context} = $dist->distvname;
$ctx->log("Failed to install distribution, "
."because of installing some dependencies failed");
}
my @fail_install_name = map { CPAN::DistnameInfo->new($_)->distvname || $_ } @fail_install;
my @not_installed_name = map { $_->distvname } @not_installed;
if (@fail_resolve || @fail_install_name) {
$ctx->log("--");
$ctx->log(
"Installation failed. "
. "The direct cause of the failure comes from the following packages/distributions; "
. "you may want to grep this log file by them:"
);
$ctx->log(" * $_") for @fail_resolve, sort @fail_install_name;
}
{ resolve => \@fail_resolve, install => [sort @fail_install_name, @not_installed_name] };
}
sub tasks ($self) { values $self->{tasks}->%* }
sub add_task ($self, $ctx, %task) {
my $new = App::cpm::Task->new(%task);
if (my ($existing) = grep { $_->equals($new) } $self->tasks) {
$existing->{final_target} ||= $new->{final_target};
return 0;
} else {
( run in 1.977 second using v1.01-cache-2.11-cpan-39bf76dae61 )