diff --git a/urpm-repoclosure.pl b/urpm-repoclosure.pl
index 0d909f0..a3913ac 100755
--- a/urpm-repoclosure.pl
+++ b/urpm-repoclosure.pl
@@ -1,6 +1,6 @@
#!/usr/bin/perl
########################################################
-# URPM Repo Closure Checker 1.5.1 for Linux
+# URPM Repo Closure Checker 1.6 for Linux
# A tool for checking closure of a set of RPM packages
#
# Copyright (C) 2011-2012 ROSA Laboratory
@@ -38,7 +38,7 @@ use File::Copy qw(copy move);
use Data::Dumper;
use strict;
-my $TOOL_VERSION = "1.5.1";
+my $TOOL_VERSION = "1.6";
my $CmdName = get_filename($0);
my ($Help, $ShowVersion, $RPMlist, $RPMdir, $StaticMode,
@@ -743,7 +743,7 @@ sub readDeps($$$)
foreach my $D (split("\n", `rpm -qp -$Type $Path`))
{
my ($N, $O, $V) = sepDep($D);
- $Dep->{$Type}{$N}{$O}{$V}=$Name;
+ $Dep->{$Type}{$N}{$O}{$V}{$Name}=1;
$RPMdep->{$Type}{$Name}{$N}=1;
}
}
@@ -911,7 +911,7 @@ sub readHDlist($$$$$)
{
my ($N, $O, $V) = sepDep($D);
$N=~s/\[\*\]//g; # /sbin/ldconfig[*]
- $Dep->{$Type}{$N}{$O}{$V} = $Name;
+ $Dep->{$Type}{$N}{$O}{$V}{$Name} = 1;
$RPMdep->{$Type}{$Name}{$D} = 1;
}
}
@@ -1029,7 +1029,7 @@ sub staticCheck()
}
%IgnoreDeps = map {$_=>1} split(/\s+/, readFile($FileDeps));
}
- my (%Unresolved, %UnresolvedSuggested, %Broken) = ();
+ my (%Unresolved, %UnresolvedSuggested) = ();
foreach my $N (sort {lc($a) cmp lc($b)} keys(%{$Dep{"requires"}}))
{
foreach my $O (keys(%{$Dep{"requires"}{$N}}))
@@ -1049,21 +1049,21 @@ sub staticCheck()
if($IgnoreDeps{$N}) {
next;
}
- my $Name = $Dep{"requires"}{$N}{$O}{$V};
- if($RPMdep{"suggests"}{$Name}{$N}) {
- $UnresolvedSuggested{$N}{$O}{$V} = $Name;
+ foreach my $Name (keys(%{$Dep{"requires"}{$N}{$O}{$V}}))
+ {
+ if($RPMdep{"suggests"}{$Name}{$N}) {
+ $UnresolvedSuggested{$Name}{$N}{$O}{$V} = 1;
+ }
+ else {
+ $Unresolved{$Name}{$N}{$O}{$V} = 1;
+ }
}
- else {
- $Unresolved{$N}{$O}{$V} = $Name;
- }
- $Broken{$Name}=1;
}
}
}
}
my $TotalPkgs = keys(%{$RPMdep{"requires"}});
- my $TotalDeps = keys(%{$Dep{"requires"}});
my ($Report, $VReport) = ();
@@ -1090,61 +1090,57 @@ sub staticCheck()
my $UnresolvedLink = "0 (0.0%)";
if(my $Num = keys(%Unresolved)) {
- $UnresolvedLink = "".$Num.""." (".show_number($Num*100/$TotalDeps)."%)";
+ $UnresolvedLink = "".$Num.""." (".show_number($Num*100/$TotalPkgs)."%)";
}
- $VReport .= "
Unresolved Dependencies | $UnresolvedLink |
\n";
- my $BrokenLink = "0 (0.0%)";
- if(my $Num = keys(%Broken)) {
- $BrokenLink = "".$Num.""." (".show_number($Num*100/$TotalPkgs)."%)";
- }
- $VReport .= "Broken Packages | $BrokenLink |
\n";
+ $VReport .= "Broken Packages | $UnresolvedLink |
\n";
$VReport .= "\n";
$VReport .= "
\n";
$VReport .= "
\n";
- if(my @Ns = sort {lc($a) cmp lc($b)} keys(%Unresolved))
+ if(my @Pkgs = sort {lc($a) cmp lc($b)} keys(%Unresolved))
{
- my $Title = "Unresolved Dependencies (".($#Ns+1).")";
+ my $Title = "Broken Packages (".($#Pkgs+1).")";
$Report .= "\n$Title:\n\n";
$VReport .= "\n";
$VReport .= "\n";
- $VReport .= "";
- $VReport .= "Dependency (".($#Ns+1).") | RPM | ";
-
+ $VReport .= "
\n";
+ $VReport .= "RPM | \n";
if($ExtInfo) {
- $VReport .= "SRPM | ";
+ $VReport .= "SRPM | \n";
}
-
+ $VReport .= "Dependency | \n";
$VReport .= "
\n";
my $Num = 1;
-
- foreach my $N (@Ns)
+ foreach my $Pkg (@Pkgs)
{
- foreach my $O (sort keys(%{$Unresolved{$N}}))
+ foreach my $N (sort keys(%{$Unresolved{$Pkg}}))
{
- foreach my $V (sort keys(%{$Unresolved{$N}{$O}}))
+ foreach my $O (sort keys(%{$Unresolved{$Pkg}{$N}}))
{
- my $Dep = showDep($N, $O, $V);
- my $Pkg = $Unresolved{$N}{$O}{$V};
- $Report .= $Dep." (required by $Pkg)\n";
- my $Class = " class='even'";
- $Class = "" if($Num++ % 2 != 0);
- $VReport .= "";
- $VReport .= "".htmlSpecChars($Dep)." | $Pkg | ";
- if($ExtInfo) {
- $VReport .= "".$AddInfo{$Pkg}{"SRPM"}." | ";
+ foreach my $V (sort keys(%{$Unresolved{$Pkg}{$N}{$O}}))
+ {
+ my $Dep = showDep($N, $O, $V);
+ $Report .= $Dep." (required by $Pkg)\n";
+ my $Class = " class='even'";
+ $Class = "" if($Num++ % 2 != 0);
+ $VReport .= "
\n";
+ $VReport .= "$Pkg | \n";
+ if($ExtInfo) {
+ $VReport .= "".$AddInfo{$Pkg}{"SRPM"}." | \n";
+ }
+ $VReport .= "".htmlSpecChars($Dep)." | \n";
+ $VReport .= "
\n";
}
- $VReport .= "\n";
}
}
}
$VReport .= "
";
}
- if(my @Ns = sort {lc($a) cmp lc($b)} keys(%UnresolvedSuggested))
+ if(my @Pkgs = sort {lc($a) cmp lc($b)} keys(%UnresolvedSuggested))
{
if($Report)
{
@@ -1152,38 +1148,39 @@ sub staticCheck()
$VReport .= "
\n";
}
- my $Title = "Unresolved Suggests (".($#Ns+1).")";
+ my $Title = "Unresolved Suggests (".($#Pkgs+1).")";
$Report .= "\n$Title:\n\n";
$VReport .= "\n";
- $VReport .= "";
- $VReport .= "Suggestion (".($#Ns+1).") | RPM | ";
-
+ $VReport .= "
\n";
+ $VReport .= "Suggestion (".($#Pkgs+1).") | \n";
if($ExtInfo) {
- $VReport .= "SRPM | ";
+ $VReport .= "SRPM | \n";
}
-
+ $VReport .= "RPM | \n";
$VReport .= "
\n";
my $Num = 1;
-
- foreach my $N (@Ns)
+ foreach my $Pkg (@Pkgs)
{
- foreach my $O (sort keys(%{$UnresolvedSuggested{$N}}))
+ foreach my $N (sort keys(%{$UnresolvedSuggested{$Pkg}}))
{
- foreach my $V (sort keys(%{$UnresolvedSuggested{$N}{$O}}))
+ foreach my $O (sort keys(%{$UnresolvedSuggested{$Pkg}{$N}}))
{
- my $Dep = showDep($N, $O, $V);
- my $Pkg = $UnresolvedSuggested{$N}{$O}{$V};
- $Report .= $Dep." (required by $Pkg)\n";
- my $Class = " class='even'";
- $Class = "" if($Num++ % 2 != 0);
- $VReport .= "";
- $VReport .= "".htmlSpecChars($Dep)." | $Pkg | ";
- if($ExtInfo) {
- $VReport .= "".$AddInfo{$Pkg}{"SRPM"}." | ";
+ foreach my $V (sort keys(%{$UnresolvedSuggested{$Pkg}{$N}{$O}}))
+ {
+ my $Dep = showDep($N, $O, $V);
+ $Report .= $Dep." (required by $Pkg)\n";
+ my $Class = " class='even'";
+ $Class = "" if($Num++ % 2 != 0);
+ $VReport .= "
\n";
+ $VReport .= "".htmlSpecChars($Dep)." | \n";
+ if($ExtInfo) {
+ $VReport .= "".$AddInfo{$Pkg}{"SRPM"}." | \n";
+ }
+ $VReport .= "$Pkg | \n";
+ $VReport .= "
\n";
}
- $VReport .= "\n";
}
}
}
@@ -1191,35 +1188,6 @@ sub staticCheck()
$VReport .= "
";
}
- $VReport .= "
\n";
-
- if(my @Ns = sort {lc($a) cmp lc($b)} keys(%Broken))
- {
- if($Report) {
- $Report .= "\n";
- }
-
- my $Title = "Broken Packages (".($#Ns+1).")";
- $Report .= "\n$Title:\n\n";
-
- $VReport .= "\n";
- $VReport .= "\n";
- $VReport .= "Broken Packages (".($#Ns+1).") |
\n";
-
- my $Num = 1;
-
- foreach my $N (@Ns)
- {
- my $Name = parse_RPMname($N);
- $Report .= $Name."\n";
- my $Class = " class='even'";
- $Class = "" if($Num++ % 2 != 0);
- $VReport .= "$Name |
\n";
- }
-
- $VReport .= "
";
- }
-
my $Styles = "
body {
margin: 1.5em;