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 .= ""; - + $VReport .= "\n"; + $VReport .= "\n"; if($ExtInfo) { - $VReport .= ""; + $VReport .= "\n"; } - + $VReport .= "\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 .= ""; - if($ExtInfo) { - $VReport .= ""; + 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 .= "\n"; + if($ExtInfo) { + $VReport .= "\n"; + } + $VReport .= "\n"; + $VReport .= "\n"; } - $VReport .= "\n"; } } } $VReport .= "
Dependency (".($#Ns+1).")RPM
RPMSRPMSRPMDependency
".htmlSpecChars($Dep)."$Pkg".$AddInfo{$Pkg}{"SRPM"}."$Pkg".$AddInfo{$Pkg}{"SRPM"}."".htmlSpecChars($Dep)."
"; } - 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 .= ""; - + $VReport .= "\n"; + $VReport .= "\n"; if($ExtInfo) { - $VReport .= ""; + $VReport .= "\n"; } - + $VReport .= "\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 .= ""; - if($ExtInfo) { - $VReport .= ""; + 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 .= "\n"; + if($ExtInfo) { + $VReport .= "\n"; + } + $VReport .= "\n"; + $VReport .= "\n"; } - $VReport .= "\n"; } } } @@ -1191,35 +1188,6 @@ sub staticCheck() $VReport .= "
Suggestion (".($#Ns+1).")RPM
Suggestion (".($#Pkgs+1).")SRPMSRPMRPM
".htmlSpecChars($Dep)."$Pkg".$AddInfo{$Pkg}{"SRPM"}."".htmlSpecChars($Dep)."".$AddInfo{$Pkg}{"SRPM"}."$Pkg
"; } - $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 .= "\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 .= "\n"; - } - - $VReport .= "
Broken Packages (".($#Ns+1).")
$Name
"; - } - my $Styles = " body { margin: 1.5em;