wok-undigest diff linux/stuff/tools/check_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
line diff
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/linux/stuff/tools/check_modules.sh	Fri Nov 15 16:49:43 2019 +0100
     1.3 @@ -0,0 +1,82 @@
     1.4 +#!/bin/sh
     1.5 +# Print Linux Kernel modules that do not belong to any of the packages.
     1.6 +# (c) 2009-2017 SliTaz - GNU General Public License.
     1.7 +#
     1.8 +
     1.9 +. /lib/libtaz.sh
    1.10 +
    1.11 +WOK=$(cd $(dirname $0) && pwd | sed 's/wok.*/wok/')
    1.12 +. $WOK/linux/receipt
    1.13 +BASEVER="${VERSION:0:3}"
    1.14 +src="$WOK/linux/source/linux-$VERSION"
    1.15 +
    1.16 +cd $src
    1.17 +tmp=$WOK/${PACKAGE:-linux}/tmp
    1.18 +mkdir -p $tmp
    1.19 +rm -f $tmp/*
    1.20 +
    1.21 +#===============================================================================
    1.22 +
    1.23 +# Make temporal base modules list
    1.24 +
    1.25 +kversion="$VERSION-slitaz"
    1.26 +modroot="$WOK/$PACKAGE/install/lib/modules/$kversion/kernel"
    1.27 +modlist="$tmp/modules.list"
    1.28 +
    1.29 +list_modules() {
    1.30 +	found="$(find $modroot/$1 -type f)"
    1.31 +	if [ -z "$found" ]; then
    1.32 +		echo -e "\n\nError: $modroot/$1 does not exist.\n\n" >&2
    1.33 +		exit 1
    1.34 +	fi
    1.35 +
    1.36 +	for module in $(echo "$found" | sed "s|.*$kversion/||"); do
    1.37 +		grep $module: "$modroot/../modules.dep"
    1.38 +	done | sed 's|^kernel/||; s| kernel/| |g; s|:||' | \
    1.39 +	tr ' ' $'\n' | sort -u
    1.40 +}
    1.41 +
    1.42 +while read rule_name rule_value; do
    1.43 +	[ "$rule_name" != 'linux' ] && continue
    1.44 +	list_modules $rule_value >> "$modlist"
    1.45 +done < "$WOK/linux/stuff/split.rules"
    1.46 +
    1.47 +#===============================================================================
    1.48 +
    1.49 +echo
    1.50 +title 'Checking for Linux Kernel modules that do not belong to any of the packages'
    1.51 +
    1.52 +# create a packaged modules list
    1.53 +{
    1.54 +	cat "$modlist"
    1.55 +
    1.56 +	for i in $SPLIT; do
    1.57 +		cat $WOK/$i/taz/$i-*/files.list | sed 's|.*/kernel/||'
    1.58 +	done
    1.59 +} | grep '.ko.xz$' > $tmp/modules-packaged
    1.60 +
    1.61 +# create a compiled modules list
    1.62 +sed 's|^kernel/||; s|$|.xz|' \
    1.63 +$WOK/linux/install/lib/modules/$VERSION-slitaz/modules.order > $tmp/modules-compiled
    1.64 +
    1.65 +# compare the lists
    1.66 +awk '{
    1.67 +	if (FILENAME ~ "compiled")
    1.68 +		m[$0] = 1;
    1.69 +	else
    1.70 +		delete m[$0];
    1.71 +}
    1.72 +END {
    1.73 +	for (i in m) print i;
    1.74 +}' $tmp/modules-compiled $tmp/modules-packaged | tee $tmp/modules-unpackaged
    1.75 +
    1.76 +if [ -s $tmp/modules-unpackaged ]; then
    1.77 +	footer "List saved to wok/linux/tmp/modules-unpackaged"
    1.78 +else
    1.79 +	_ 'All modules are packaged'
    1.80 +	echo
    1.81 +	rm $tmp/modules-unpackaged
    1.82 +fi
    1.83 +
    1.84 +# Clean
    1.85 +rm "$modlist"