Gzipowanie modułów

witekfl@poczta.onet.pl witekfl w poczta.onet.pl
Pią, 27 Wrz 2002, 14:53:13 CEST


Gzipując moduły można zaoszczędzić kilkanaście megabajtów przestrzeni dyskowej
(w Mandrake'u - gzipują).

Tu są wstawki do macros
#-----------------------------------------------------------------
# Find and gzip all kernel modules
#
# Requires: find
#
#%no_install_post_compress_modules  1
%__spec_install_post_compress_modules { \
echo "Compress kernel modules."; \
%{!?no_install_post_compress_modules: \
    %{?verbose:set -x;} \
    find $RPM_BUILD_ROOT/lib/modules -name \*.o -print | xargs -r %{__gzip} -9nf; \
} }

# Przed        
%_source_payload        w9.gzdio
%_binary_payload        w9.bzdio

[...]
%{__spec_install_post_strip}\
%{__spec_install_post_compress_docs}\
%{__spec_install_post_compress_modules}\ # dodana linia
%{__arch_install_post}\

W załączniku patch na geninitrd.

Co wy na to?
-- 
witekfl
-------------- następna część ---------
--- geninitrd.orig	Fri Sep 27 14:15:00 2002
+++ geninitrd	Fri Sep 27 14:24:21 2002
@@ -58,12 +58,12 @@
 		exit 1
 	fi
 	
-	# prepend / if no path given, append .o if not given,
+	# prepend / if no path given, append .o.gz if not given,
 	# quote /
 	origmodule="$2"
 	module=$(echo "$2" | \
 		 awk '/\// {print;next} {print "/" $0}' | \
-		 awk '/\.o$/ {print;next} {print $0 ".o"}' |
+		 awk '/\./ {print;next} {print $0 ".o.gz"}' |
 		 awk '{gsub("/","\\/");print}')
 	mods=$(awk '
 BEGIN { here = 0 }
@@ -72,6 +72,18 @@
 /(.*)/ { gsub(/\\/," "); if (here) print }
 ' $depfile | xargs)
 
+	# fallback to .o
+	if [ "$mods" = "" ] ; then
+	    module=$(echo "$module" | \
+		    awk '{gsub("\.o\.gz$","\.o",$0);print}')
+	fi 
+	mods=$(awk '
+BEGIN { here = 0 }
+/'"$module"':(.*)/ { gsub(/:/," "); gsub(/\\/," "); print; here = 1; next }
+/:/ { here = 0 }
+/(.*)/ { gsub(/\\/," "); if (here) print }
+' $depfile | xargs)
+
 	if [ "$mods" = "" ] ; then
 		if [ "$1" != silent ] ; then
 			echo "$origmodule: module not found in $depfile" 1>&2
@@ -638,6 +650,7 @@
 	MODULEDIR="`my_dirname "$MODULE"`"
 	mkdir -p "$MNTIMAGE/lib/modules/$kernel/$MODULEDIR"
 	cp $verbose -a "/lib/modules/$kernel/$MODULE" "$MNTIMAGE/lib/modules/$kernel/$MODULE"
+	gunzip "$MNTIMAGE/lib/modules/$kernel/$MODULE" 2> /dev/null
 done
 
 # mknod'ing the devices instead of copying them works both with and
@@ -656,6 +669,9 @@
 echo "" >> "$s"
 
 for MODULE in $MODULES; do
+	MODULE2="`my_dirname "$MODULE"`"
+	NAME2=`basename "$MODULE" .gz`
+	MODULE2=$MODULE2/$NAME2
 	module="`echo $MODULE | awk -F/ '{ $0=$NF } /.o$/ { $0=substr($0,1,length($0)-2); } { print $0; }'`"
 	options="`awk '{ if($1 == "options" && $2 == "'${module}'") { for(i=3;i<=NF;i++) printf("%s ",$i); }}' "$modulefile"`"
 
@@ -667,7 +683,7 @@
 			echo "without options."
 		fi
 	fi
-	echo "insmod /lib/modules/$kernel/$MODULE $options" >> "$s"
+	echo "insmod /lib/modules/$kernel/$MODULE2 $options" >> "$s"
 done
 
 # TODO: rewrite for bsp


Więcej informacji o liście dyskusyjnej pld-devel-pl