Whamcloud - gitweb
An expect script to interact with make oldconfig answering questions for new
[fs/lustre-release.git] / build / lmake
index 51cba5b..40263ed 100755 (executable)
@@ -266,12 +266,15 @@ tarflags()
        '')
            fatal 1 "tarflags(): File name argument missing."
            ;;
-       *.tar.gz)
+       *.tar.gz | *.tgz)
            echo 'zxf'
            ;;
        *.tar.bz2)
            echo 'jxf'
            ;;
+       *.tar)
+           echo 'xf'
+           ;;
        *)
            fatal 1 "tarflags(): Unrecognized tar extension in file: $1"
            ;;
@@ -349,13 +352,29 @@ depend_kernel()
     perl -p -i -e "s/^EXTRAVERSION.*/EXTRAVERSION = -${EXTRA_VERSION}${TARGET_CONFIG}/" Makefile
     echo "Making depend in $PWD..."
     $MAKE "$MAKE_CC" mrproper || fatal 1 "Error running make mrproper"
+    rm -f rpm-release
     cp "$CONFIG_FILE" .config
-    for oc in oldconfig_nonint silentoldconfig oldconfig ; do
-       if grep -q "$oc" Makefile ; then
-           $MAKE "$MAKE_CC" $oc || fatal 1 "Error running make oldconfig"
-           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
+    local tmpfile=$(mktemp /tmp/XXXXXX)
+    diff -I '^#.*' -u "$CONFIG_FILE" .config >$tmpfile
+    if [ -s $tmpfile ]; then
+        { cat <<EOF
+The result of a make oldconfig on file $CONFIG_FILE resulted in a
+difference when compared to .config in the following way:
+
+EOF
+        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
@@ -478,6 +497,25 @@ install_kernel()
     popd >/dev/null
 }
 
+cleanup_libmodules()
+{
+    (( $INSTALL_LUSTRE )) || return 0
+
+    FULL_VERSION="${VERSION}-${EXTRA_VERSION}${TARGET_CONFIG}"
+    KVERREL="${VERSION}-${EXTRA_VERSION}"
+    i="$DESTDIR/lib/modules/${FULL_VERSION}"
+
+    rm -f $i/build
+    rm -f $i/source
+
+    if (( $LINUX26 )) ; then
+       ln -sf ../../../usr/src/linux-${KVERREL}-obj/${TARGET_ARCH}/${TARGET_CONFIG} $i/build
+       ln -sf ../../../usr/src/linux-${KVERREL} $i/source
+    else
+       ln -sf ../../../usr/src/linux-${KVERREL} $i/build
+    fi
+}
+
 install_lustre()
 {
     (( $INSTALL_LUSTRE )) || return 0
@@ -706,6 +744,8 @@ install_lustre
 
 install_kms
 
+cleanup_libmodules
+
 save_headers
 
 exit 0