diff options
| author | Denis Vlasenko <vda.linux@googlemail.com> | 2008-05-24 20:54:14 +0000 |
|---|---|---|
| committer | Denis Vlasenko <vda.linux@googlemail.com> | 2008-05-24 20:54:14 +0000 |
| commit | bd23fbbd0a0491e00bac89fc30f31972525d95bb (patch) | |
| tree | 526e7e8a52ccb222a4bbf6d5e4b567a8e908139f /docs | |
| parent | 8e2c9e1518d42320ebd4b3ff09220d79a199e8ff (diff) | |
| download | busybox-w32-bd23fbbd0a0491e00bac89fc30f31972525d95bb.tar.gz busybox-w32-bd23fbbd0a0491e00bac89fc30f31972525d95bb.tar.bz2 busybox-w32-bd23fbbd0a0491e00bac89fc30f31972525d95bb.zip | |
docs/depmod: and example of depmod in shell/sed/awk...
Diffstat (limited to 'docs')
| -rw-r--r-- | docs/depmod | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/docs/depmod b/docs/depmod new file mode 100644 index 000000000..d8c4cc5aa --- /dev/null +++ b/docs/depmod | |||
| @@ -0,0 +1,57 @@ | |||
| 1 | #!/bin/sh | ||
| 2 | # | ||
| 3 | # Simple depmod, use to generate modprobe.conf | ||
| 4 | # | ||
| 5 | # Copyright (C) 2008 by Vladimir Dronnikov <dronnikov@gmail.com> | ||
| 6 | # | ||
| 7 | # Licensed under GPLv2 | ||
| 8 | # | ||
| 9 | |||
| 10 | local BASE="${1:-/usr/lib/modules}" | ||
| 11 | |||
| 12 | find "$BASE" -name '*.ko.gz' | while read I ; do | ||
| 13 | N=`basename "$I" '.ko.gz'` | ||
| 14 | echo -n "@$N" | ||
| 15 | zcat "$I" | strings | grep '^depends=' | sed -e 's/^depends=$//' -e 's/^depends=/,/' -e 's/,/ @/g' | ||
| 16 | done | awk ' | ||
| 17 | { | ||
| 18 | # modules which has no dependencies are resolved | ||
| 19 | if ( NF == 1 ) { res[$1] = ""; next } | ||
| 20 | # others have to be resolved based on those which already resolved | ||
| 21 | i = $1; $1 = ""; deps[i] = $0; ++ndeps | ||
| 22 | } | ||
| 23 | END { | ||
| 24 | # resolve implicit dependencies | ||
| 25 | while ( ndeps ) for (mod in deps) { | ||
| 26 | if ( index(deps[mod], "@") > 0 ) { | ||
| 27 | $0 = deps[mod] | ||
| 28 | for ( i=1; i<=NF; ++i ) { | ||
| 29 | if ( substr($i,1,1) == "@" ) { | ||
| 30 | if ( $i in res ) { | ||
| 31 | $i = res[$i] " " substr($i,2) | ||
| 32 | } | ||
| 33 | } | ||
| 34 | } | ||
| 35 | deps[mod] = $0 | ||
| 36 | } else { | ||
| 37 | res[mod] = deps[mod] | ||
| 38 | delete deps[mod] | ||
| 39 | --ndeps | ||
| 40 | } | ||
| 41 | } | ||
| 42 | |||
| 43 | # output dependencies in modules.dep format | ||
| 44 | for ( mod in res ) { | ||
| 45 | $0 = res[mod] | ||
| 46 | s = "" | ||
| 47 | delete a | ||
| 48 | for ( i=1; i<=NF; ++i ) { | ||
| 49 | if ( ! ($i in a) ) { | ||
| 50 | a[$i] = $i | ||
| 51 | s = " ," $i s | ||
| 52 | } | ||
| 53 | } | ||
| 54 | print "," substr(mod,2) ":" s | ||
| 55 | } | ||
| 56 | } | ||
| 57 | ' | sort | sed -r -e "s!,([^,: ]*)!/usr/lib/modules/\\1.ko.gz!g" | ||
