Whamcloud - gitweb
An expect script to interact with make oldconfig answering questions for new
authorbrian <brian>
Mon, 31 Oct 2005 04:20:07 +0000 (04:20 +0000)
committerbrian <brian>
Mon, 31 Oct 2005 04:20:07 +0000 (04:20 +0000)
config values conservatively (m for moduleable code, n for all else).
When a new item is added by make oldconfig, QA should get notified and the
kernel-meister is responsible for getting the kernel_configs updated with
appropriate answers for the new values.

build/lmake
build/update_oldconfig [new file with mode: 0755]

index a1e07b8..40263ed 100755 (executable)
@@ -354,31 +354,27 @@ depend_kernel()
     $MAKE "$MAKE_CC" mrproper || fatal 1 "Error running make mrproper"
     rm -f rpm-release
     cp "$CONFIG_FILE" .config
-    # find the right file to grep in for the target
-    for makefile in scripts/kconfig/Makefile Makefile; do
-        if [ -f $makefile ]; then
-           break
-       fi
-    done
-    for oc in nonint_oldconfig silentoldconfig oldconfig ; do
-       if grep -q "^$oc:" $makefile ; then
-           $MAKE "$MAKE_CC" $oc || fatal 1 "Error running make oldconfig ($oc)"
-           break
-       fi
-    done
+    # use the expect script to "make oldconfig" and answer the questions for
+    # new items conservatively.  QA will get notified on anything newly added
+    # for them to review and adjust accordingly.
+    $TOPDIR/build/update_oldconfig
     # now notify if resulting .config is different than $CONFIG_FILE
-    if ! cmp "$CONFIG_FILE" .config; then
+    local tmpfile=$(mktemp /tmp/XXXXXX)
+    diff -I '^#.*' -u "$CONFIG_FILE" .config >$tmpfile
+    if [ -s $tmpfile ]; then
         { cat <<EOF
-The result of a make $oc on file $CONFIG_FILE resulted in a difference when
-compared to $CONFIG_FILE in the following way:
+The result of a make oldconfig on file $CONFIG_FILE resulted in a
+difference when compared to .config in the following way:
 
 EOF
-        diff -ur "$CONFIG_FILE" .config
-        echo "Please consider updating $CONFIG_FILE."
-       echo -e "\nThe entire new .config file:\n"
-        cat .config
+        cat $tmpfile
+        echo -e "\n\nPlease consider updating $CONFIG_FILE."
+       # not sure these are entirely useful.  the above and "patch" are good
+       #echo -e "\nThe entire new .config file:\n"
+        #cat .config
         } | mail -s "kernel_config change" qa@lists.clusterfs.com
     fi
+    rm -f $tmpfile
     case "$VERSION" in
        2.6*)
             $MAKE "$MAKE_CC" include/asm
diff --git a/build/update_oldconfig b/build/update_oldconfig
new file mode 100755 (executable)
index 0000000..e04e5fa
--- /dev/null
@@ -0,0 +1,31 @@
+#!/usr/bin/expect
+
+log_user 1
+set spawnid [spawn make oldconfig]
+
+match_max 200
+
+# need to allow for the config tool to be built initially
+set timeout 30
+
+expect {
+    timeout {
+        puts "timeout"
+        exit 1
+    }
+    -re "\n  *(\[^\n]* \\\[N\/y\/\\?] \\(NEW\\)) " {
+         puts "$expect_out(1,string) n"
+         send "n\r"
+         exp_continue
+    }
+    -re "\n  *(\[^\n]* \\\[N\/m\/y\/\\?] \\(NEW\\)) " {
+        puts "$expect_out(1,string) m"
+        send "m\r"
+        exp_continue
+    }
+    -re "\n  *(\[^\n]* \\\[N\/m\/\\?] \\(NEW\\)) " {
+        puts "$expect_out(1,string) m"
+        send "m\r"
+        exp_continue
+    }
+}