]> git.ipfire.org Git - thirdparty/kmod.git/blame - testsuite/setup-rootfs.sh
libkmod, depmod, modprobe: Make directory for kernel modules configurable
[thirdparty/kmod.git] / testsuite / setup-rootfs.sh
CommitLineData
4002d77a
LDM
1#!/bin/bash
2
3set -e
4
184a0707 5ROOTFS_PRISTINE=$1
4002d77a 6ROOTFS=$2
184a0707
LDM
7MODULE_PLAYGROUND=$3
8CONFIG_H=$4
3d38e322 9SYSCONFDIR=$5
184a0707
LDM
10
11# create rootfs from rootfs-pristine
12
13create_rootfs() {
14 rm -rf "$ROOTFS"
15 mkdir -p $(dirname "$ROOTFS")
16 cp -r "$ROOTFS_PRISTINE" "$ROOTFS"
17 find "$ROOTFS" -type d -exec chmod +w {} \;
18 find "$ROOTFS" -type f -name .gitignore -exec rm -f {} \;
9d1fb317
MS
19 if [ "$MODULE_DIRECTORY" != "/lib/modules" ] ; then
20 sed -i -e "s|/lib/modules|$MODULE_DIRECTORY|g" $(find "$ROOTFS" -name \*.txt -o -name \*.conf -o -name \*.dep)
21 sed -i -e "s|$MODULE_DIRECTORY/external|/lib/modules/external|g" $(find "$ROOTFS" -name \*.txt -o -name \*.conf -o -name \*.dep)
22 for i in "$ROOTFS"/*/lib/modules/* "$ROOTFS"/*/*/lib/modules/* ; do
23 version="$(basename $i)"
24 [ $version != 'external' ] || continue
25 mod="$(dirname $i)"
26 lib="$(dirname $mod)"
27 up="$(dirname $lib)$MODULE_DIRECTORY"
28 mkdir -p "$up"
29 mv "$i" "$up"
30 done
31 fi
3d38e322
LDM
32
33 if [ "$SYSCONFDIR" != "/etc" ]; then
34 find "$ROOTFS" -type d -name etc -printf "%h\n" | while read -r e; do
35 mkdir -p "$(dirname $e/$SYSCONFDIR)"
36 mv $e/{etc,$SYSCONFDIR}
37 done
38 fi
184a0707 39}
1921c370
LDM
40
41feature_enabled() {
42 local feature=$1
43 grep KMOD_FEATURES $CONFIG_H | head -n 1 | grep -q \+$feature
44}
4002d77a
LDM
45
46declare -A map
47map=(
9d1fb317
MS
48 ["test-depmod/search-order-simple$MODULE_DIRECTORY/4.4.4/kernel/crypto/"]="mod-simple.ko"
49 ["test-depmod/search-order-simple$MODULE_DIRECTORY/4.4.4/updates/"]="mod-simple.ko"
50 ["test-depmod/search-order-same-prefix$MODULE_DIRECTORY/4.4.4/foo/"]="mod-simple.ko"
51 ["test-depmod/search-order-same-prefix$MODULE_DIRECTORY/4.4.4/foobar/"]="mod-simple.ko"
52 ["test-depmod/detect-loop$MODULE_DIRECTORY/4.4.4/kernel/mod-loop-a.ko"]="mod-loop-a.ko"
53 ["test-depmod/detect-loop$MODULE_DIRECTORY/4.4.4/kernel/mod-loop-b.ko"]="mod-loop-b.ko"
54 ["test-depmod/detect-loop$MODULE_DIRECTORY/4.4.4/kernel/mod-loop-c.ko"]="mod-loop-c.ko"
55 ["test-depmod/detect-loop$MODULE_DIRECTORY/4.4.4/kernel/mod-loop-d.ko"]="mod-loop-d.ko"
56 ["test-depmod/detect-loop$MODULE_DIRECTORY/4.4.4/kernel/mod-loop-e.ko"]="mod-loop-e.ko"
57 ["test-depmod/detect-loop$MODULE_DIRECTORY/4.4.4/kernel/mod-loop-f.ko"]="mod-loop-f.ko"
58 ["test-depmod/detect-loop$MODULE_DIRECTORY/4.4.4/kernel/mod-loop-g.ko"]="mod-loop-g.ko"
59 ["test-depmod/detect-loop$MODULE_DIRECTORY/4.4.4/kernel/mod-loop-h.ko"]="mod-loop-h.ko"
60 ["test-depmod/detect-loop$MODULE_DIRECTORY/4.4.4/kernel/mod-loop-i.ko"]="mod-loop-i.ko"
61 ["test-depmod/detect-loop$MODULE_DIRECTORY/4.4.4/kernel/mod-loop-j.ko"]="mod-loop-j.ko"
62 ["test-depmod/detect-loop$MODULE_DIRECTORY/4.4.4/kernel/mod-loop-k.ko"]="mod-loop-k.ko"
63 ["test-depmod/search-order-external-first$MODULE_DIRECTORY/4.4.4/foo/"]="mod-simple.ko"
64 ["test-depmod/search-order-external-first$MODULE_DIRECTORY/4.4.4/foobar/"]="mod-simple.ko"
df492f5c 65 ["test-depmod/search-order-external-first/lib/modules/external/"]="mod-simple.ko"
9d1fb317
MS
66 ["test-depmod/search-order-external-last$MODULE_DIRECTORY/4.4.4/foo/"]="mod-simple.ko"
67 ["test-depmod/search-order-external-last$MODULE_DIRECTORY/4.4.4/foobar/"]="mod-simple.ko"
df492f5c 68 ["test-depmod/search-order-external-last/lib/modules/external/"]="mod-simple.ko"
9d1fb317
MS
69 ["test-depmod/search-order-override$MODULE_DIRECTORY/4.4.4/foo/"]="mod-simple.ko"
70 ["test-depmod/search-order-override$MODULE_DIRECTORY/4.4.4/override/"]="mod-simple.ko"
71 ["test-dependencies$MODULE_DIRECTORY/4.0.20-kmod/kernel/fs/foo/"]="mod-foo-b.ko"
72 ["test-dependencies$MODULE_DIRECTORY/4.0.20-kmod/kernel/"]="mod-foo-c.ko"
73 ["test-dependencies$MODULE_DIRECTORY/4.0.20-kmod/kernel/lib/"]="mod-foo-a.ko"
74 ["test-dependencies$MODULE_DIRECTORY/4.0.20-kmod/kernel/fs/"]="mod-foo.ko"
1669be85
LDM
75 ["test-init/"]="mod-simple.ko"
76 ["test-remove/"]="mod-simple.ko"
9d1fb317
MS
77 ["test-modprobe/show-depends$MODULE_DIRECTORY/4.4.4/kernel/mod-loop-a.ko"]="mod-loop-a.ko"
78 ["test-modprobe/show-depends$MODULE_DIRECTORY/4.4.4/kernel/mod-loop-b.ko"]="mod-loop-b.ko"
79 ["test-modprobe/show-depends$MODULE_DIRECTORY/4.4.4/kernel/mod-simple.ko"]="mod-simple.ko"
068729e3 80 ["test-modprobe/show-exports/mod-loop-a.ko"]="mod-loop-a.ko"
9d1fb317
MS
81 ["test-modprobe/softdep-loop$MODULE_DIRECTORY/4.4.4/kernel/mod-loop-a.ko"]="mod-loop-a.ko"
82 ["test-modprobe/softdep-loop$MODULE_DIRECTORY/4.4.4/kernel/mod-loop-b.ko"]="mod-loop-b.ko"
83 ["test-modprobe/install-cmd-loop$MODULE_DIRECTORY/4.4.4/kernel/mod-loop-a.ko"]="mod-loop-a.ko"
84 ["test-modprobe/install-cmd-loop$MODULE_DIRECTORY/4.4.4/kernel/mod-loop-b.ko"]="mod-loop-b.ko"
85 ["test-modprobe/force$MODULE_DIRECTORY/4.4.4/kernel/"]="mod-simple.ko"
86 ["test-modprobe/oldkernel$MODULE_DIRECTORY/3.3.3/kernel/"]="mod-simple.ko"
87 ["test-modprobe/oldkernel-force$MODULE_DIRECTORY/3.3.3/kernel/"]="mod-simple.ko"
88 ["test-modprobe/alias-to-none$MODULE_DIRECTORY/4.4.4/kernel/"]="mod-simple.ko"
89 ["test-modprobe/module-param-kcmdline$MODULE_DIRECTORY/4.4.4/kernel/"]="mod-simple.ko"
df492f5c 90 ["test-modprobe/external/lib/modules/external/"]="mod-simple.ko"
883d931d
GS
91 ["test-modprobe/module-from-abspath/home/foo/"]="mod-simple.ko"
92 ["test-modprobe/module-from-relpath/home/foo/"]="mod-simple.ko"
9d1fb317
MS
93 ["test-depmod/modules-order-compressed$MODULE_DIRECTORY/4.4.4/kernel/drivers/block/cciss.ko"]="mod-fake-cciss.ko"
94 ["test-depmod/modules-order-compressed$MODULE_DIRECTORY/4.4.4/kernel/drivers/scsi/hpsa.ko"]="mod-fake-hpsa.ko"
95 ["test-depmod/modules-order-compressed$MODULE_DIRECTORY/4.4.4/kernel/drivers/scsi/scsi_mod.ko"]="mod-fake-scsi-mod.ko"
96 ["test-depmod/modules-outdir$MODULE_DIRECTORY/4.4.4/kernel/drivers/block/cciss.ko"]="mod-fake-cciss.ko"
97 ["test-depmod/modules-outdir$MODULE_DIRECTORY/4.4.4/kernel/drivers/scsi/hpsa.ko"]="mod-fake-hpsa.ko"
98 ["test-depmod/modules-outdir$MODULE_DIRECTORY/4.4.4/kernel/drivers/scsi/scsi_mod.ko"]="mod-fake-scsi-mod.ko"
77fdc664
LDM
99 ["test-modinfo/mod-simple-i386.ko"]="mod-simple-i386.ko"
100 ["test-modinfo/mod-simple-x86_64.ko"]="mod-simple-x86_64.ko"
101 ["test-modinfo/mod-simple-sparc64.ko"]="mod-simple-sparc64.ko"
3f0eb43b
LDM
102 ["test-modinfo/mod-simple-sha1.ko"]="mod-simple.ko"
103 ["test-modinfo/mod-simple-sha256.ko"]="mod-simple.ko"
dec99048 104 ["test-modinfo/mod-simple-pkcs7.ko"]="mod-simple.ko"
df492f5c 105 ["test-modinfo/external/lib/modules/external/mod-simple.ko"]="mod-simple.ko"
9d1fb317
MS
106 ["test-tools/insert$MODULE_DIRECTORY/4.4.4/kernel/"]="mod-simple.ko"
107 ["test-tools/remove$MODULE_DIRECTORY/4.4.4/kernel/"]="mod-simple.ko"
4002d77a
LDM
108)
109
2a38870e 110gzip_array=(
9d1fb317 111 "test-depmod/modules-order-compressed$MODULE_DIRECTORY/4.4.4/kernel/drivers/block/cciss.ko"
fd71604d
LDM
112 )
113
114xz_array=(
9d1fb317 115 "test-depmod/modules-order-compressed$MODULE_DIRECTORY/4.4.4/kernel/drivers/scsi/scsi_mod.ko"
2a38870e
LDM
116 )
117
2e4ef3da 118zstd_array=(
9d1fb317 119 "test-depmod/modules-order-compressed$MODULE_DIRECTORY/4.4.4/kernel/drivers/scsi/hpsa.ko"
2e4ef3da
TM
120 )
121
3f0eb43b
LDM
122attach_sha256_array=(
123 "test-modinfo/mod-simple-sha256.ko"
124 )
125
126attach_sha1_array=(
127 "test-modinfo/mod-simple-sha1.ko"
128 )
129
dec99048
YK
130attach_pkcs7_array=(
131 "test-modinfo/mod-simple-pkcs7.ko"
132 )
133
184a0707
LDM
134create_rootfs
135
3cee67dd 136for k in "${!map[@]}"; do
4002d77a
LDM
137 dst=${ROOTFS}/$k
138 src=${MODULE_PLAYGROUND}/${map[$k]}
139
3cee67dd
DR
140 if [[ $dst = */ ]]; then
141 install -d "$dst"
142 install -t "$dst" "$src"
d9ab7abe 143 else
3cee67dd 144 install -D "$src" "$dst"
d9ab7abe 145 fi
4002d77a 146done
2a38870e
LDM
147
148# start poking the final rootfs...
149
1921c370
LDM
150# compress modules with each format if feature is enabled
151if feature_enabled ZLIB; then
152 for m in "${gzip_array[@]}"; do
153 gzip "$ROOTFS/$m"
154 done
155fi
156
fd71604d
LDM
157if feature_enabled XZ; then
158 for m in "${xz_array[@]}"; do
159 xz "$ROOTFS/$m"
160 done
161fi
162
1921c370
LDM
163if feature_enabled ZSTD; then
164 for m in "${zstd_array[@]}"; do
165 zstd --rm $ROOTFS/$m
166 done
167fi
2e4ef3da 168
3f0eb43b 169for m in "${attach_sha1_array[@]}"; do
3cee67dd 170 cat "${MODULE_PLAYGROUND}/dummy.sha1" >>"${ROOTFS}/$m"
3f0eb43b
LDM
171done
172
173for m in "${attach_sha256_array[@]}"; do
3cee67dd 174 cat "${MODULE_PLAYGROUND}/dummy.sha256" >>"${ROOTFS}/$m"
3f0eb43b 175done
dec99048
YK
176
177for m in "${attach_pkcs7_array[@]}"; do
3cee67dd 178 cat "${MODULE_PLAYGROUND}/dummy.pkcs7" >>"${ROOTFS}/$m"
dec99048 179done
184a0707
LDM
180
181touch testsuite/stamp-rootfs