[git commit] depmod.pl: recurse through module dependencies

Mike Frysinger vapier at gentoo.org
Thu Jul 9 04:28:48 UTC 2009


commit: http://git.busybox.net/busybox/commit/?id=bbc31e5f3cb2482f752ab6251b1d7491b5ea73eb
branch: http://git.busybox.net/busybox/commit/?id=refs/heads/1_14_stable


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 at gentoo.org>
---
 examples/depmod.pl |   31 +++++++++++++++++++++----------
 1 files changed, 21 insertions(+), 10 deletions(-)

diff --git a/examples/depmod.pl b/examples/depmod.pl
index 6b47bad..8c6548d 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: $!";
 }
-- 
1.6.3.3


More information about the busybox-cvs mailing list