Index: debian.chrome/scripts/misc/kernelconfig |
diff --git a/debian.chrome/scripts/misc/kernelconfig b/debian.chrome/scripts/misc/kernelconfig |
new file mode 100755 |
index 0000000000000000000000000000000000000000..21a3cfe55dc47b8459a640c6b0430ec978f307d5 |
--- /dev/null |
+++ b/debian.chrome/scripts/misc/kernelconfig |
@@ -0,0 +1,123 @@ |
+#!/bin/bash |
+ |
+. debian/debian.env |
+ |
+# Script to merge all configs and run 'make silentoldconfig' on it to wade out bad juju. |
+# Then split the configs into distro-commmon and flavour-specific parts |
+ |
+# We have to be in the top level kernel source directory |
+if [ ! -f MAINTAINERS ] || [ ! -f Makefile ]; then |
+ echo "This does not appear to be the kernel source directory." 1>&2 |
+ exit 1 |
+fi |
+ |
+mode=${1:?"Usage: $0 [oldconfig|editconfig]"} |
+case "$mode" in |
+ oldconfig) ;; # All is good |
+ editconfig) ;; # All is good |
+ genconfig) ;; # All is good |
+ *) echo "$0 called with invalid mode" 1>&2 |
+ exit 1 ;; |
+esac |
+kerneldir="`pwd`" |
+confdir="$kerneldir/${DEBIAN}/config" |
+archs="i386" |
+family='chromeos' |
+bindir="`pwd`/${DEBIAN}/scripts/misc" |
+common_conf="$confdir/config.common.$family" |
+tmpdir=`mktemp -d` |
+ |
+if [ "$mode" = "genconfig" ]; then |
+ keep=1 |
+ mode="oldconfig" |
+ test -d CONFIGS || mkdir CONFIGS |
+fi |
+ |
+test -d build || mkdir build |
+ |
+for arch in $archs; do |
+ # Map debian archs to kernel archs |
+ case "$arch" in |
+ amd64) kernarch="x86_64" ;; |
+ lpia) kernarch="x86" ;; |
+ sparc) kernarch="sparc64" ;; |
+ *) kernarch="$arch" ;; |
+ esac |
+ |
+ echo "" |
+ echo "***************************************" |
+ echo "* Processing $arch ($kernarch) ... " |
+ archconfdir=$confdir/$arch |
+ flavourconfigs=$(cd $archconfdir && ls config.flavour.*) |
+ |
+ # Merge configs |
+ # We merge config.common.ubuntu + config.common.<arch> + |
+ # config.flavour.<flavour> |
+ |
+ for config in $flavourconfigs; do |
+ fullconf="$tmpdir/$arch-$config-full" |
+ case $config in |
+ *) |
+ : >"$fullconf" |
+ if [ -f $common_conf ]; then |
+ cat $common_conf >> "$fullconf" |
+ fi |
+ if [ -f $archconfdir/config.common.$arch ]; then |
+ cat $archconfdir/config.common.$arch >> "$fullconf" |
+ fi |
+ cat "$archconfdir/$config" >>"$fullconf" |
+ ;; |
+ esac |
+ done |
+ |
+ for config in $flavourconfigs; do |
+ if [ -f $archconfdir/$config ]; then |
+ fullconf="$tmpdir/$arch-$config-full" |
+ cat "$fullconf" > build/.config |
+ # Call oldconfig or menuconfig |
+ case "$mode" in |
+ oldconfig) |
+ # Weed out incorrect config parameters |
+ echo "* Run silentoldconfig on $arch/$config ..." |
+ make O=`pwd`/build ARCH=$kernarch silentoldconfig ;; |
+ editconfig) |
+ # Interactively edit config parameters |
+ echo " * Run menuconfig on $arch/$config... Press a key." |
+ read |
+ make O=`pwd`/build ARCH=$kernarch menuconfig ;; |
+ *) # Bad! |
+ exit 1 ;; |
+ esac |
+ cat build/.config > $archconfdir/$config |
+ if [ "$keep" = "1" ]; then |
+ cat build/.config > CONFIGS/$arch-$config |
+ fi |
+ else |
+ echo "!! Config not found $archconfdir/$config..." |
+ fi |
+ done |
+ |
+ echo "Running splitconfig.pl for $arch" |
+ echo |
+ |
+ # Can we make this more robust by avoiding $tmpdir completely? |
+ # This approach was used for now because I didn't want to change |
+ # splitconfig.pl |
+ (cd $archconfdir; $bindir/splitconfig.pl; mv config.common \ |
+ config.common.$arch; cp config.common.$arch $tmpdir) |
+done |
+ |
+rm -f $common_conf |
+ |
+# Now run splitconfig.pl on all the config.common.<arch> copied to |
+# $tmpdir |
+(cd $tmpdir; $bindir/splitconfig.pl) |
+( |
+ cd $confdir; |
+ rm -f *-full |
+ grep -v 'is UNMERGABLE' <$tmpdir/config.common >$common_conf |
+ for arch in $archs; do |
+ grep -v 'is UNMERGABLE' <$tmpdir/config.common.$arch \ |
+ >$arch/config.common.$arch |
+ done |
+) |