From bbc31e5f3cb2482f752ab6251b1d7491b5ea73eb Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Thu, 9 Jul 2009 00:28:48 -0400 Subject: [PATCH] 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 --- examples/depmod.pl | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/examples/depmod.pl b/examples/depmod.pl index 6b47bad09..8c6548d28 100755 --- a/examples/depmod.pl +++ b/examples/depmod.pl @@ -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: $!"; } -- 2.25.1