diff options
Diffstat (limited to 'chromeos/scripts/kernelconfig')
-rwxr-xr-x | chromeos/scripts/kernelconfig | 95 |
1 files changed, 40 insertions, 55 deletions
diff --git a/chromeos/scripts/kernelconfig b/chromeos/scripts/kernelconfig index c056c8c6086f..c4415359c38a 100755 --- a/chromeos/scripts/kernelconfig +++ b/chromeos/scripts/kernelconfig @@ -20,9 +20,8 @@ esac kerneldir="`pwd`" confdir="$kerneldir/chromeos/config" archs="x86_64 i386 armel" -family='chromeos' bindir="`pwd`/chromeos/scripts" -common_conf="$confdir/config.common.$family" +base_conf="$confdir/base.config" tmpdir=`mktemp -d` if [ "$mode" = "genconfig" ]; then @@ -47,52 +46,44 @@ for arch in $archs; do echo "***************************************" echo "* Processing $arch ($kernarch) ... " archconfdir=$confdir/$arch - flavourconfigs=$(cd $archconfdir && ls config.flavour.*[^~]) + flavourconfigs=$(cd $archconfdir && ls *.flavour.config) # Merge configs - # We merge config.common.ubuntu + config.common.<arch> + - # config.flavour.<flavour> + # We merge base.config + common.config + <flavour>.flavour.config 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 + cp $base_conf "$fullconf" + cat $archconfdir/common.config >> "$fullconf" + cat $archconfdir/$config >> "$fullconf" 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..." + fullconf="$tmpdir/$arch-$config-full" + mv "$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 "* $arch/$config: press <Enter> to edit, S to skip" + read -s -n 1 + if [ $REPLY = 's' -o $REPLY = 'S' ]; then + echo "* Skip: running silentoldconfig" + make O=`pwd`/build ARCH=$kernarch silentoldconfig + else + echo "* Running menuconfig" + make O=`pwd`/build ARCH=$kernarch menuconfig + fi ;; + *) # Bad! + exit 1 ;; + esac + cat build/.config > $archconfdir/$config + if [ "$keep" = "1" ]; then + mv build/.config CONFIGS/$arch-$config fi done @@ -102,22 +93,16 @@ for arch in $archs; do # Can we make this more robust by avoiding $tmpdir completely? # This approach was used for now because I didn't want to change # splitconfig - (cd $archconfdir; rm config.common.$arch; $bindir/splitconfig; \ - mv config.common config.common.$arch; \ - cp config.common.$arch $tmpdir) + (cd $archconfdir; rm common.config; $bindir/splitconfig; \ + mv common.config $tmpdir/$arch.config) done -rm -f $common_conf - -# Now run splitconfig on all the config.common.<arch> copied to +# Now run splitconfig on all the <arch>.common.config copied to # $tmpdir (cd $tmpdir; $bindir/splitconfig) -( - 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 -) +mv $tmpdir/common.config $base_conf +for arch in $archs; do + mv $tmpdir/$arch.config $confdir/$arch/common.config +done + +rm -rf $tmpdir |