depmod.pl: recurse through module dependencies
The previous fix up loaded dependencies two deep, but really that was an incomplete fix as we need to load dependencies all the way down. So change the code to run recursively through all dependencies. Signed-off-by: Mike Frysinger <vapier@gentoo.org>
This commit is contained in:
parent
b773f715d6
commit
4c8a721b45
@ -167,21 +167,32 @@ sub maybe_unshift
|
||||
}
|
||||
unshift (@{$array}, $ele);
|
||||
}
|
||||
sub add_mod_deps
|
||||
{
|
||||
my ($depth, $mod, $mod2, $module, $this_module) = @_;
|
||||
|
||||
$depth .= " ";
|
||||
warn "${depth}loading deps of module: $this_module\n" if $verbose;
|
||||
|
||||
foreach my $md (keys %{$mod->{$this_module}}) {
|
||||
add_mod_deps ($depth, $mod, $mod2, $module, $md);
|
||||
warn "${depth} outputting $md\n" if $verbose;
|
||||
maybe_unshift (\@{$$mod2->{$module}}, $md);
|
||||
}
|
||||
|
||||
if (!%{$mod->{$this_module}}) {
|
||||
warn "${depth} no deps\n" if $verbose;
|
||||
}
|
||||
}
|
||||
foreach my $module (keys %$mod) {
|
||||
warn "filling out module: $module\n" if $verbose;
|
||||
@{$mod2->{$module}} = ();
|
||||
foreach my $md (keys %{$mod->{$module}}) {
|
||||
foreach my $md2 (keys %{$mod->{$md}}) {
|
||||
warn "outputting $md2\n" if $verbose;
|
||||
maybe_unshift (\@{$mod2->{$module}}, $md2);
|
||||
}
|
||||
warn "outputting $md\n" if $verbose;
|
||||
maybe_unshift (\@{$mod2->{$module}}, $md);
|
||||
}
|
||||
warn "filling out module: $module\n" if $verbose;
|
||||
@{$mod2->{$module}} = ();
|
||||
add_mod_deps ("", $mod, \$mod2, $module, $module);
|
||||
}
|
||||
|
||||
# figure out where the output should go
|
||||
if ($stdout == 0) {
|
||||
warn "writing $basedir/modules.dep\n" if $verbose;
|
||||
open(STDOUT, ">$basedir/modules.dep")
|
||||
or die "cannot open $basedir/modules.dep: $!";
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user