wok-undigest annotate linux/stuff/tools/copy_modules.sh @ rev 1217

copied linux receipt and stuff from wok-next
author Hans-G?nter Theisgen
date Fri Nov 15 16:49:43 2019 +0100 (2019-11-15)
parents
children
rev   line source
Hans-G?nter@1217 1 #!/bin/sh
Hans-G?nter@1217 2 # copy_modules.sh: copy Linux Kernel modules for SliTaz GNU/Linux.
Hans-G?nter@1217 3 # GNU General Public License.
Hans-G?nter@1217 4 #
Hans-G?nter@1217 5
Hans-G?nter@1217 6 kversion="$VERSION-slitaz"
Hans-G?nter@1217 7 modroot="$install/lib/modules/$kversion/kernel"
Hans-G?nter@1217 8 modlist="/tmp/modules.list.$$"
Hans-G?nter@1217 9
Hans-G?nter@1217 10 # Redefine variables for the Linux 64
Hans-G?nter@1217 11 if [ ${PACKAGE:0:7} == 'linux64' ]; then
Hans-G?nter@1217 12 src="$WOK/linux64/source/tmp"
Hans-G?nter@1217 13 install="$install/linux64"
Hans-G?nter@1217 14 kversion="$VERSION-slitaz64"
Hans-G?nter@1217 15 fi
Hans-G?nter@1217 16
Hans-G?nter@1217 17
Hans-G?nter@1217 18 list_modules() {
Hans-G?nter@1217 19 found="$(find $modroot/$1 -type f)"
Hans-G?nter@1217 20 if [ -z "$found" ]; then
Hans-G?nter@1217 21 echo -e "\n\nError: $1 does not exist.\n\n" >&2
Hans-G?nter@1217 22 exit 1
Hans-G?nter@1217 23 fi
Hans-G?nter@1217 24
Hans-G?nter@1217 25 echo "Search modules for $1..." >&2
Hans-G?nter@1217 26 for module in $(echo "$found" | sed "s|.*$kversion/||"); do
Hans-G?nter@1217 27 grep $module: "$install/lib/modules/$kversion/modules.dep"
Hans-G?nter@1217 28 done | sed 's|^kernel/||; s| kernel/| |g; s|:||' | \
Hans-G?nter@1217 29 awk '{ for (i = 1; i <= NF; i++) print $i; }' | \
Hans-G?nter@1217 30 sort -u | \
Hans-G?nter@1217 31 while read module; do
Hans-G?nter@1217 32 if grep -qs ^$module$ "$modlist"; then
Hans-G?nter@1217 33 echo " - $module" >&2
Hans-G?nter@1217 34 continue
Hans-G?nter@1217 35 else
Hans-G?nter@1217 36 echo " + $module" >&2
Hans-G?nter@1217 37 echo $module
Hans-G?nter@1217 38 fi
Hans-G?nter@1217 39 done
Hans-G?nter@1217 40 }
Hans-G?nter@1217 41
Hans-G?nter@1217 42
Hans-G?nter@1217 43 #
Hans-G?nter@1217 44 # Main
Hans-G?nter@1217 45 #
Hans-G?nter@1217 46
Hans-G?nter@1217 47 # A. Build list of "restricted" modules: all these modules should be only in the "linux" package
Hans-G?nter@1217 48
Hans-G?nter@1217 49 # A.1. Builtin modules
Hans-G?nter@1217 50 awk '{sub(/^kernel\//, ""); print $1 ".xz"}' "$install/lib/modules/$kversion/modules.builtin" > "$modlist"
Hans-G?nter@1217 51
Hans-G?nter@1217 52 # A.2. Using split.rules for the "linux" rules
Hans-G?nter@1217 53 case $PACKAGE in
Hans-G?nter@1217 54 linux|linux-libre|linux64)
Hans-G?nter@1217 55 # make exception for the base "linux" package
Hans-G?nter@1217 56 ;;
Hans-G?nter@1217 57 *)
Hans-G?nter@1217 58 while read rule_name rule_value; do
Hans-G?nter@1217 59 [ "$rule_name" != 'linux' ] && continue
Hans-G?nter@1217 60 list_modules $rule_value >> "$modlist" 2>/dev/null
Hans-G?nter@1217 61 done < "$stuff/split.rules"
Hans-G?nter@1217 62 ;;
Hans-G?nter@1217 63 esac
Hans-G?nter@1217 64
Hans-G?nter@1217 65 # A.3. Simulate deprecated (for receipts v2) variable $WANTED
Hans-G?nter@1217 66 case $PACKAGE in
Hans-G?nter@1217 67 linux-libre|linux64|linux) wanted='';;
Hans-G?nter@1217 68 linux-libre-*) wanted='linux-libre';;
Hans-G?nter@1217 69 linux64-*) wanted='linux64';;
Hans-G?nter@1217 70 linux-*) wanted='linux';;
Hans-G?nter@1217 71 esac
Hans-G?nter@1217 72
Hans-G?nter@1217 73 # A.4. If package depends on other package - make these modules "restricted" (excluded) too
Hans-G?nter@1217 74 if [ "$DEPENDS" != "$wanted" ]; then
Hans-G?nter@1217 75 for i in $DEPENDS; do
Hans-G?nter@1217 76 if [ "$i" != "$wanted" ]; then
Hans-G?nter@1217 77 pkg_subname=${i#linux-libre-}
Hans-G?nter@1217 78 pkg_subname=${pkg_subname#linux*-}
Hans-G?nter@1217 79
Hans-G?nter@1217 80 while read rule_name rule_value; do
Hans-G?nter@1217 81 [ "$pkg_subname" != "$rule_name" ] && continue
Hans-G?nter@1217 82 list_modules $rule_value >> "$modlist" 2>/dev/null
Hans-G?nter@1217 83 done < "$stuff/split.rules"
Hans-G?nter@1217 84 fi
Hans-G?nter@1217 85 done
Hans-G?nter@1217 86 fi
Hans-G?nter@1217 87
Hans-G?nter@1217 88
Hans-G?nter@1217 89 # B. Copy modules from the linux $install
Hans-G?nter@1217 90
Hans-G?nter@1217 91 # B.1. Get the name of the rule
Hans-G?nter@1217 92 # linux{,-libre,64}-subname -> subname
Hans-G?nter@1217 93 case $PACKAGE in
Hans-G?nter@1217 94 linux-libre|linux64|linux) pkg_subname="linux";;
Hans-G?nter@1217 95 linux-libre-*) pkg_subname="${PACKAGE#linux-libre-}";;
Hans-G?nter@1217 96 linux64-*) pkg_subname="${PACKAGE#linux64-}";;
Hans-G?nter@1217 97 linux-*) pkg_subname="${PACKAGE#linux-}";;
Hans-G?nter@1217 98 esac
Hans-G?nter@1217 99
Hans-G?nter@1217 100 # B.2. Process rules, copy modules
Hans-G?nter@1217 101 while read rule_name rule_value; do
Hans-G?nter@1217 102 [ "$pkg_subname" != "$rule_name" ] && continue
Hans-G?nter@1217 103
Hans-G?nter@1217 104 list_modules $rule_value | \
Hans-G?nter@1217 105 while read module; do
Hans-G?nter@1217 106 dir=lib/modules/$kversion/kernel/$(dirname $module)
Hans-G?nter@1217 107 mkdir -p $fs/$dir
Hans-G?nter@1217 108 cp -a $modroot/$module $fs/$dir
Hans-G?nter@1217 109 done
Hans-G?nter@1217 110 done < "$stuff/split.rules"
Hans-G?nter@1217 111
Hans-G?nter@1217 112 # B.3. Clean
Hans-G?nter@1217 113 rm "$modlist"
Hans-G?nter@1217 114
Hans-G?nter@1217 115
Hans-G?nter@1217 116 # C. Compare with the previous version: use the --diff (for example, `cook linux-acpi --diff`)
Hans-G?nter@1217 117
Hans-G?nter@1217 118 if [ -n "$diff" ]; then
Hans-G?nter@1217 119 lzcat /var/lib/tazpkg/files.list.lzma | grep ^$PACKAGE: | awk -F/ '{print $NF}' | sort > /tmp/old
Hans-G?nter@1217 120 find $fs -type f | awk -F/ '{print $NF}' | sort > /tmp/new
Hans-G?nter@1217 121 diff -d -U0 /tmp/old /tmp/new | sed '/^---/d; /^+++/d; /^@@/d; /\.ko\./!d' > $WOK/$PACKAGE/diff.diff
Hans-G?nter@1217 122 fi