Browse Source

fix revdep computation, small code cleanup

master
Michael van Elst 23 years ago committed by Ralf S. Engelschall
parent
commit
c76dca82a6
  1. 27
      openpkg-tool/openpkg-build.pl

27
openpkg-tool/openpkg-build.pl

@ -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);
}
#

Loading…
Cancel
Save