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 |