|
|
|
|
@ -420,27 +420,28 @@ sub depend_list ($) {
|
|
|
|
|
# |
|
|
|
|
sub get_installed () { |
|
|
|
|
my(%map); |
|
|
|
|
my(@l) = run("$RPM --provides -qa"); |
|
|
|
|
my($p); |
|
|
|
|
my(@l,$p); |
|
|
|
|
my($nam,$val,%options); |
|
|
|
|
my($vs,$rec,@provides); |
|
|
|
|
my($vs,$rec,@list); |
|
|
|
|
my($name,$version,$release); |
|
|
|
|
my($req); |
|
|
|
|
|
|
|
|
|
@provides = (); |
|
|
|
|
@l = run("$RPM --provides -qa"); |
|
|
|
|
@list = (); |
|
|
|
|
foreach (@l) { |
|
|
|
|
$p = parse_provides($_); |
|
|
|
|
next unless $p = parse_provides($_); |
|
|
|
|
|
|
|
|
|
# is this an option ? |
|
|
|
|
if (defined $p->{with}) { |
|
|
|
|
$options{$p->{prefix}}->{$p->{with}} = $p->{version}; |
|
|
|
|
push @provides, $p; |
|
|
|
|
push @list, $p; |
|
|
|
|
next; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
# is this a virtual target ? |
|
|
|
|
$vs = vs($p); |
|
|
|
|
if ($vs eq '') { |
|
|
|
|
push @provides,$p; |
|
|
|
|
push @list,$p; |
|
|
|
|
next; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -448,7 +449,7 @@ sub get_installed () {
|
|
|
|
|
$version = defined $p->{version} ? $p->{version} : '*'; |
|
|
|
|
$release = defined $p->{release} ? $p->{release} : '*'; |
|
|
|
|
|
|
|
|
|
push(@provides, { |
|
|
|
|
push(@list, { |
|
|
|
|
name => $name, |
|
|
|
|
version => $version, |
|
|
|
|
release => $release |
|
|
|
|
@ -459,18 +460,20 @@ sub get_installed () {
|
|
|
|
|
name => $name, |
|
|
|
|
version => $version, |
|
|
|
|
release => $release, |
|
|
|
|
PROXY => $p->{proxy} |
|
|
|
|
PROXY => $p->{proxy}, |
|
|
|
|
depends => [], |
|
|
|
|
keeps => [] |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
foreach (@provides) { |
|
|
|
|
foreach (@list) { |
|
|
|
|
push @{$map{$_->{name}}->{vs($_)}}, $rec; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@provides = (); |
|
|
|
|
@list = (); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (@provides) { |
|
|
|
|
print "# ATTENTION: ",scalar(@provides)," froods found\n" |
|
|
|
|
if (@list) { |
|
|
|
|
print "# ATTENTION: ",scalar(@list)," froods found\n" |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
# |
|
|
|
|
@ -485,6 +488,27 @@ sub get_installed () {
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@l = run("$RPM --qf '%{NAME} %{VERSION} %{RELEASE}[ .%{REQUIRENAME} .%{REQUIREFLAGS:depflags} .%{REQUIREVERSION}]\n' -qa"); |
|
|
|
|
@list = (); |
|
|
|
|
foreach (@l) { |
|
|
|
|
($name,$version,$release,$req) = /^(\S+)\s+(\S+)\s+(\S+)\s*(.*?)\s*$/; |
|
|
|
|
while ($req =~ /\.(\S+)\s+\.(\S*)\s+\.(\S*)/g) { |
|
|
|
|
$p = parse_depends("$1 $2 $3"); |
|
|
|
|
next if $p->{name} =~ /^rpmlib\(/; |
|
|
|
|
|
|
|
|
|
$vs = vs({ version => $version, release => $release}); |
|
|
|
|
$p = { cond => '', value => $p }; |
|
|
|
|
foreach $rec (@{$map{$name}->{$vs}}) { |
|
|
|
|
push @{$rec->{depends}}, $p; |
|
|
|
|
push @{$rec->{keeps}}, $p; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (@list) { |
|
|
|
|
print "# ATTENTION: ",scalar(@list)," fnords found\n" |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return \%map; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -496,7 +520,7 @@ sub get_revdep ($$) {
|
|
|
|
|
my($env, $i) = @_; |
|
|
|
|
my($r) = $env->{'repository'}; |
|
|
|
|
my($pkg, %dep, %dlist, %rev); |
|
|
|
|
my(@vers,$t,$t1,$t2,$with,$name); |
|
|
|
|
my(@vers,$t,$t1,$with,$name); |
|
|
|
|
my($d,$k,%d,$old,%name); |
|
|
|
|
|
|
|
|
|
print "# computing reverse dependencies\n"; |
|
|
|
|
@ -509,21 +533,15 @@ sub get_revdep ($$) {
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
# |
|
|
|
|
# get forward dependencies from repository packages |
|
|
|
|
# but blend in options from installed packages |
|
|
|
|
# get forward dependencies from installed packages |
|
|
|
|
# |
|
|
|
|
# dep{a}{b} is true if b depends directly on a |
|
|
|
|
# dlist{a} is list of packages that depend on a |
|
|
|
|
# |
|
|
|
|
@vers = get_versions($r->{$pkg}, sub { 1; }); |
|
|
|
|
@vers = get_versions($i->{$pkg}, sub { 1; }); |
|
|
|
|
foreach (@vers) { |
|
|
|
|
foreach $t (@{$r->{$pkg}->{$_}}) { |
|
|
|
|
foreach $t (@{$i->{$pkg}->{$_}}) { |
|
|
|
|
$with = get_with($t); |
|
|
|
|
$t2 = find_target($t->{name}, $i); |
|
|
|
|
if ($t2) { |
|
|
|
|
$with = { %$with }; |
|
|
|
|
override_options($with, get_with($t2), ''); |
|
|
|
|
} |
|
|
|
|
$d = target_attribute($t, $env, 'depends', $with); |
|
|
|
|
$k = target_attribute($t, $env, 'keeps', $with); |
|
|
|
|
next unless @$d || @$k; |
|
|
|
|
|