Browse Source

Clifford Wolf:


			
			
				rocklinux
			
			
		
Clifford Wolf 20 years ago
parent
commit
83b239e36b
1 changed files with 34 additions and 5 deletions
  1. +34
    -5
      scripts/Check-Deps-2

+ 34
- 5
scripts/Check-Deps-2

@ -4,6 +4,8 @@ use strict;
use English; use English;
my (@pkg, %opr, %pri, %dep, %rep, %rdp, %ign, %lop); my (@pkg, %opr, %pri, %dep, %rep, %rdp, %ign, %lop);
my @useddeps; # deps used for visualization of cross dependencies
my %pkg_redone; # packages built in stages 6-8
foreach (@ARGV) { $ign{$_} = 1; } foreach (@ARGV) { $ign{$_} = 1; }
@ -11,7 +13,8 @@ print "Reading package priorities ...\n";
open(F, "./scripts/Create-PkgList |") || die $!; open(F, "./scripts/Create-PkgList |") || die $!;
while (<F>) { while (<F>) {
@_ = split /\s+/; @_ = split /\s+/;
next unless $_[1] eq "-----5---9";
next if $_[1] =~ /[1234]/ or $_[1] !~ /5/;
$pkg_redone{$_[4]} = 1 if $_[1] =~ /[678]/;
next if defined $ign{$_[3]} || defined $ign{$_[4]}; next if defined $ign{$_[3]} || defined $ign{$_[4]};
$opr{$_[4]} = $_[2]; $opr{$_[4]} = $_[2];
$pri{$_[4]} = $_[2]; $pri{$_[4]} = $_[2];
@ -28,6 +31,7 @@ while () {
print "Format Error: $_\n"; print "Format Error: $_\n";
exit 1; exit 1;
} }
next if defined $pkg_redone{$1};
@{$dep{$1}} = split /\s+/, $2; @{$dep{$1}} = split /\s+/, $2;
foreach ( @{$dep{$1}} ) { foreach ( @{$dep{$1}} ) {
$rdp{$_} = () unless defined $rdp{$_}; $rdp{$_} = () unless defined $rdp{$_};
@ -53,13 +57,13 @@ sub count_errs($) {
return $errors; return $errors;
} }
my ($interation, $package, $dependency, $a, $b);
my ($iteration, $package, $dependency, $a, $b);
my $did_something=0; my $did_something=0;
print "\nLoop Old/New Errors Package Dependency\n". print "\nLoop Old/New Errors Package Dependency\n".
"------------------------------------------------------------------------\n"; "------------------------------------------------------------------------\n";
for $interation (1..99) {
for $iteration (1..99) {
my $looplog = ''; my $looplog = '';
foreach $package (@pkg) { foreach $package (@pkg) {
foreach $dependency (@{$dep{$package}}) { foreach $dependency (@{$dep{$package}}) {
@ -74,8 +78,9 @@ for $interation (1..99) {
$looplog.="[$package,$dependency]"; $looplog.="[$package,$dependency]";
$_ = sprintf "[%02d] %-7d %-7d %-25s %s\n", $_ = sprintf "[%02d] %-7d %-7d %-25s %s\n",
$interation, $a, $b, $pri{$dependency}." ".$package,
$iteration, $a, $b, $pri{$dependency}." ".$package,
$pri{$package}." ".$dependency; $pri{$package}." ".$dependency;
$useddeps[$iteration]{$package}{$dependency} = 1;
s/ / . /g; s/\. /.. /g; s/\. /.. /g; s/ / . /g; s/\. /.. /g; s/\. /.. /g;
s/\. (\s*)\./..$1./g; s/\. (\s*)\./..$1./g; s/\. (\s*)\./..$1./g; s/\. (\s*)\./..$1./g;
print; $did_something=1; print; $did_something=1;
@ -84,11 +89,35 @@ for $interation (1..99) {
} }
last if $looplog eq ""; last if $looplog eq "";
if (defined $lop{$looplog}) { if (defined $lop{$looplog}) {
my %crossdeps;
print "[XX] Detected endless-loop ". print "[XX] Detected endless-loop ".
"(cross-dependency) -> Aborting now.\n"; "(cross-dependency) -> Aborting now.\n";
print "[XX] Debug graph printed to dependencies.dot.\n";
foreach my $i ($lop{$looplog} .. $iteration) {
foreach my $p (keys %{$useddeps[$i]}) {
foreach my $d (keys %{$useddeps[$i]{$p}}) {
$crossdeps{$d}{$p} = 1;
}
}
}
open(F, ">dependencies.dot") || die $!;
print F "# run this thru e.g. 'dot -Tps dependencies.dot -o dependencies.ps'\n";
print F "digraph \"Cross-Dependencies Graph\" {\n";
foreach my $p (sort keys %crossdeps) {
foreach my $d (sort keys %{$crossdeps{$p}}) {
my $p_ = $p; $p_ =~ s/[^a-z0-9]/_/g;
my $d_ = $d; $d_ =~ s/[^a-z0-9]/_/g;
print F "\t$p_ -> $d_;\n";
}
}
print F "}\n";
close F;
last; last;
} }
$lop{$looplog} = 1;
$lop{$looplog} = $iteration;
} }
if ( $did_something ) { if ( $did_something ) {

Loading…
Cancel
Save