root/floppyfw/scripts/depmod

Revision 217, 1.2 KB (checked in by root, 5 years ago)

Better have them here so we can hack them if we want to.

Line 
1#!/bin/sh
2
3local BASE="${1:-/usr/lib/modules}"
4
5find "$BASE" -name '*.ko.gz' | while read I ; do
6        N=`basename "$I" '.ko.gz'`
7        echo -n "@$N"
8        zcat "$I" | strings | grep '^depends=' | sed -e 's/^depends=$//' -e 's/^depends=/,/' -e 's/,/ @/g'
9done | awk '
10{
11        # modules which has no dependencies are resolved
12        if ( NF == 1 ) { res[$1] = ""; next }
13        # others have to be resolved based on those which already resolved
14        i = $1; $1 = ""; deps[i] = $0; ++ndeps
15}
16END {
17        # resolve implicit dependencies
18        while ( ndeps ) for (mod in deps) {
19                if ( index(deps[mod], "@") > 0 ) {
20                        $0 = deps[mod]
21                        for ( i=1; i<=NF; ++i ) {
22                                if ( substr($i,1,1) == "@" ) {
23                                        if ( $i in res ) {
24                                                $i = res[$i] " " substr($i,2)
25                                        }
26                                }
27                        }
28                        deps[mod] = $0
29                } else {
30                        res[mod] = deps[mod]
31                        delete deps[mod]
32                        --ndeps
33                }
34        }
35
36        # output dependencies in modules.dep format
37        for ( mod in res ) {
38                $0 = res[mod]
39                s = ""; delete a; for ( i=1; i<=NF; ++i ) if ( ! ($i in a) ) { a[$i] = $i ; s = s " ," $i }
40                #s = ""; for ( i in a ) s = s " ," a[i]
41                #s = ""; for ( i=1; i<=NF; ++i ) s = s " ," $i
42                print "," substr(mod,2) ":" s
43        }
44}
45' | sort | sed -r -e "s!,([^,: ]*)!$BASE/\\1.ko.gz!g" >"$BASE/modules.dep"
Note: See TracBrowser for help on using the browser.