「kernel乗換え用patch」を作成するシェルスクリプトを公開。同じ階層に存在する-devの無いフォルダをオリジナルソースツリーとして、配下に含まれる全ソースファイルの差分を出力する。
カスタマイズソースディレクトリの~/linux-2.6.16.26-dev/をカレントにしてスクリプトを起動する事が前提。環境変数COMPAIR_FILESにソースツリーに含まれるKconfig,Makefile,*.c,*.hファイルだけを全てリストアップするfindコマンドの使い方がミソ。sortを通しているのは各版数のpatchを比較しやすくする為の小技だ。
#!/bin/sh注意点としては、オリジナルソースツリーに存在しない新規のファイルやシンボリックリンクは対象外なので、手作業で対応すること。あとkernel版数に依存しないので、版数が変ってもそのまま使用可能。
#
# current is customized kernel source directory
# ex) ~/linux-2.6.16.26-dev/
# original kernel source directory
# ex) ~/linux-2.6.16.26/
#
DIR_DEV=`pwd`
DIR_DEV=`basename $DIR_DEV`
DIR_ORG=`echo $DIR_DEV | sed 's/-dev$//'`
cd ..
COMPAIR_FILES=`find $DIR_ORG -name Kconfig -or -name Makefile -or -name *.[ch] | sort`
for fname in $COMPAIR_FILES;
do
targetfile=`echo $fname | sed s/$DIR_ORG/$DIR_DEV/`
diff -bc $fname $targetfile;
done
patchを作成する場合は
$ mkpatch.sh > linux-2.6.16.26-dev.patchpatchを適用する場合は
$ patch -p1 < linux-2.6.16.26-dev.patchとなる。