|
|
|
|
@ -515,8 +515,9 @@ sub get_installed () {
|
|
|
|
|
# compute reverse dependency map |
|
|
|
|
# |
|
|
|
|
# |
|
|
|
|
sub get_revdep ($$) { |
|
|
|
|
my($env, $i) = @_; |
|
|
|
|
sub get_revdep ($) { |
|
|
|
|
my($env) = @_; |
|
|
|
|
my($i) = $env->{'installed'}; |
|
|
|
|
my($r) = $env->{'repository'}; |
|
|
|
|
my($pkg, %dep, %dlist, %rev); |
|
|
|
|
my(@vers,$t,$t1,$t2,$with,$name,$vmap); |
|
|
|
|
@ -548,9 +549,9 @@ sub get_revdep ($$) {
|
|
|
|
|
%d = unique_map($d,$k); |
|
|
|
|
# resolve package |
|
|
|
|
unless (exists $pkg{$pkg}) { |
|
|
|
|
($t2,$old) = dep2target({ name => $pkg }, $env); |
|
|
|
|
($t2,$old) = dep2target({ name => $pkg }, $env, 1); |
|
|
|
|
$t2 = undef if $old; |
|
|
|
|
$pkg{$pkg} = undef; |
|
|
|
|
$pkg{$pkg} = $t2; |
|
|
|
|
} |
|
|
|
|
$t2 = $pkg{$pkg}; |
|
|
|
|
next unless $t2; |
|
|
|
|
@ -558,7 +559,7 @@ sub get_revdep ($$) {
|
|
|
|
|
next if $_ eq 'OpenPKG'; |
|
|
|
|
# resolve target |
|
|
|
|
unless (exists $name{$_}) { |
|
|
|
|
($t1,$old) = dep2target($d{$_}, $env); |
|
|
|
|
($t1,$old) = dep2target($d{$_}, $env, 0); |
|
|
|
|
$name{$_} = $t1 ? $t1->{name} : $_; |
|
|
|
|
} |
|
|
|
|
$name = $name{$_}; |
|
|
|
|
@ -1615,8 +1616,8 @@ sub depend_option ($$$) {
|
|
|
|
|
# |
|
|
|
|
# locate target for a dependency |
|
|
|
|
# |
|
|
|
|
sub dep2target ($$) { |
|
|
|
|
my($dep, $env) = @_; |
|
|
|
|
sub dep2target ($$$) { |
|
|
|
|
my($dep, $env, $source) = @_; |
|
|
|
|
my($name,$op,@vers); |
|
|
|
|
my($i,$r,$b,$cond,$version); |
|
|
|
|
my($t,$tdef,$why); |
|
|
|
|
@ -1654,11 +1655,11 @@ sub dep2target ($$) {
|
|
|
|
|
if ($i && (@vers = get_versions($i, $cond))) { |
|
|
|
|
foreach (@vers) { |
|
|
|
|
$t = $i->{$_}->[0]; |
|
|
|
|
next unless $t && |
|
|
|
|
next unless $t; |
|
|
|
|
get_with($t); |
|
|
|
|
if (target_suitable($t, $env->{with}, 0)) { |
|
|
|
|
$tdef = $t; |
|
|
|
|
unless ($env->{upgrade} || $env->{zero}) { |
|
|
|
|
unless ($env->{upgrade} || $env->{zero} || $source) { |
|
|
|
|
return ($t, 1); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
@ -1685,7 +1686,7 @@ sub dep2target ($$) {
|
|
|
|
|
if (!$tdef || ( |
|
|
|
|
($why = target_better($env, $t, $env->{installed})) && |
|
|
|
|
$why ne 'new' |
|
|
|
|
)) { |
|
|
|
|
) || $source) { |
|
|
|
|
return ($t, 0); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
@ -1795,7 +1796,7 @@ sub make_dep ($$$$$$$) {
|
|
|
|
|
# old index misses a OpenPKG provider in the index... skip it |
|
|
|
|
next if $_ eq 'OpenPKG'; |
|
|
|
|
|
|
|
|
|
($t,$old) = dep2target($d{$_}, $env); |
|
|
|
|
($t,$old) = dep2target($d{$_}, $env, 0); |
|
|
|
|
if ($t) { |
|
|
|
|
if ($old) { |
|
|
|
|
print "# $target->{name} uses ".vsn($t)." for $_\n"; |
|
|
|
|
@ -1864,7 +1865,7 @@ sub make_dep ($$$$$$$) {
|
|
|
|
|
if (!$env->{quick} && $target->{name} ne 'openpkg' ) { |
|
|
|
|
|
|
|
|
|
unless ($env->{revdep}) { |
|
|
|
|
$env->{revdep} = get_revdep($env, $env->{installed}); |
|
|
|
|
$env->{revdep} = get_revdep($env); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
foreach $t (@{$env->{revdep}->{$target->{name}}}) { |
|
|
|
|
@ -2021,7 +2022,7 @@ sub build_deps ($$) {
|
|
|
|
|
# cache reverse dependencies |
|
|
|
|
# |
|
|
|
|
unless ($env->{revdep}) { |
|
|
|
|
$env->{revdep} = get_revdep($env, $env->{repository}); |
|
|
|
|
$env->{revdep} = get_revdep($env); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
# |
|
|
|
|
|