kernel 4.17 with waring about ext4 soft dep on crc32c
[cinitramfs.git] / script / cpio_modules_add.sh
blob267776c8c0a54e507e92a2c3cc529991b209cfb6
1 #!/bin/sh
3 uniqify()
5 local p=
6 local paths_list=
7 for p in $MODULES_ORDERED; do
8 case "$paths_list" in
9 *"$p"*) ;;
10 *) paths_list="$paths_list,$p";;
11 esac
12 done
13 #trim spurious coma
14 MODULES_ORDERED="${paths_list#,*}"
17 modules_ordered_build()
19 local deps=
20 local m=
21 for m; do
22 if modinfo $kmod_option_basedir -k $kernel_release $m >/dev/null 2>&1;then
23 echo "module $m found, adding..."
24 else
25 echo "module $m not found, skipping..."
26 continue
28 deps=$(modinfo $kmod_option_basedir -k $kernel_release \
29 --field depends $m)
30 if test -n "$deps"; then
31 modules_ordered_build $deps
33 MODULES_ORDERED="$MODULES_ORDERED,$(modinfo $kmod_option_basedir \
34 -k $kernel_release --field filename $m)"
35 done
36 #trim spurious coma
37 MODULES_ORDERED="${MODULES_ORDERED#,*}"
40 #recursive emiting of cpio dir entries for the module
41 dirs_emit()
43 local cur=$(dirname $1)
44 if test "$cur" = "/lib/modules/$kernel_release"; then
45 return;
48 for p in $DIRS_EMITED; do
49 if test "$p" = "$cur"; then
50 return;
52 done
53 dirs_emit $cur
54 echo "dir $cur 0755 0 0" >>$cpio
55 DIRS_EMITED=$DIRS_EMITED,$cur
58 cpio_kmod_files='modules.alias.bin,modules.builtin.bin,modules.dep.bin'
60 cpio_emit()
62 local f=
63 local m=
64 for f in $cpio_kmod_files; do
65 echo "file /lib/modules/$kernel_release/$f \
66 $kernel_modules_base_dir/lib/modules/$kernel_release/$f \
67 0644 0 0" >>$cpio
68 done
70 for m in $MODULES_ORDERED; do
71 dirs_emit $m
72 echo "file $m $kernel_modules_base_dir$m 0644 0 0" >>$cpio
73 done
76 ################################################################################
78 kernel_modules_base_dir=$1
79 kernel_release=$2
80 modules=$3
81 cpio=$4
82 MODULES_ORDERED=
83 DIRS_EMITED=/lib/modules/$kernel_release
85 if test "$kernel_modules_base_dir" = '/'; then
86 kmod_option_basedir=
87 kernel_modules_base_dir=
88 else
89 kmod_option_basedir="--basedir=$kernel_modules_base_dir"
92 IFS=,
93 modules_ordered_build $3
94 uniqify
95 cpio_emit