]> git.pld-linux.org Git - projects/geninitrd.git/blob - mod-depmod24.sh
Use kernel ready compression settings for xz.
[projects/geninitrd.git] / mod-depmod24.sh
1 #!/bin/sh
2 #
3 # geninitrd mod: depmod for 2.4 kernel
4
5 # Finds module dependencies
6 #
7 # @param        $module
8 # @param        $mode   [silent]
9 #
10 # Outputs each dependant module full path.
11 find_depmod() {
12         local module="$1"
13         local mode="$2"
14
15         typeset mods module f level depfile first
16
17         depfile=/lib/modules/$kernel/modules.dep
18
19         if [ ! -f $depfile ]; then
20                 die "No $depfile! Run depmod and rerun $PROGRAM."
21         fi
22
23         # prepend / if no path given, append $modext.gz if not given,
24         # quote /
25         origmodule="$2"
26         module=$(echo "$2" | \
27                 awk '/\// {print;next} {print "/" $0}' | \
28                 awk '/\./ {print;next} {print $0 "'$modext'.gz"}' |
29                 awk '{gsub("/","\\/");print}')
30         mods=$(awk '
31 BEGIN { here = 0 }
32 /'"$module"':(.*)/ { gsub(/:/," "); gsub(/\\/," "); print; here = 1; next }
33 /:/ { here = 0 }
34 /(.*)/ { gsub(/\\/," "); if (here) print }
35 ' $depfile | xargs)
36
37         # fallback to $modext
38         if [ "$mods" = "" ]; then
39                 module=$(echo "$module" | awk '{gsub("\'$modext'\.gz$","\'$modext'",$0);print}')
40                 # ") - vim
41         fi
42
43         mods=$(awk '
44 BEGIN { here = 0 }
45 /'"$module"':(.*)/ { gsub(/:/," "); gsub(/\\/," "); print; here = 1; next }
46 /:/ { here = 0 }
47 /(.*)/ { gsub(/\\/," "); if (here) print }
48 ' $depfile | xargs)
49
50         if [ "$mods" = "" ]; then
51                 if [ "$1" != silent ]; then
52                         warn "$origmodule: module not found in $depfile"
53                 fi
54                 if ! is_no "$EXIT_IF_MISSING"; then
55                         exit 1
56                 else
57                         warn "If $origmodule isn't compiled in kernel then this initrd may not start your system."
58                 fi
59         fi
60
61         level=$3
62         if [ "$level" = "" ]; then
63                 level=0
64         fi
65         level=$((level + 1))
66         if [ $level -gt 20 ]; then
67                 die "$origmodule: cycle in $depfile"
68         fi
69
70         first=
71         for f in $mods; do
72                 if [ "$first" = "" ]; then
73                         first=$f
74                 else
75                         find_depmod $1 $f $level
76                 fi
77         done
78
79         echo $first
80 }
This page took 0.034288 seconds and 3 git commands to generate.