X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=build%2Flmake;h=9020cc1dba6b4285791adbe792a573b6e844df1a;hb=0c9803332109a61b58d305a190192bb31ac55f30;hp=d258b72cb1bac4e525762fcd973d8a4e939d4347;hpb=bc1afa51e9f1df823e3b9aefb5513609ce1de521;p=fs%2Flustre-release.git diff --git a/build/lmake b/build/lmake index d258b72..9020cc1 100755 --- a/build/lmake +++ b/build/lmake @@ -10,6 +10,7 @@ TARGET_ARCH= TARGET_CONFIG= JOBS=1 CONFIGURE_FLAGS= +TMPDIR=${TMPDIR:-"/var/tmp"} # commands to run BUILD_LUSTRE=0 @@ -260,6 +261,25 @@ load_target() fi } +# do these after load_target(), which maybe export CC +setup_ccache_distcc() +{ + # distcc can't handle ".incbin" + if [ "$TARGET" == "2.6-suse" -o "$TARGET" == "2.6-rhel4" ]; then + if [ "$TARGET_ARCH" == "x86_64" ]; then + unset DISTCC + fi + fi + + CC=${CC:-gcc} + if [ "$CCACHE" ]; then + CC="$CCACHE $CC" + [ "$DISTCC" ] && export CCACHE_PREFIX="$DISTCC" + else + [ "$DISTCC" ] && CC="$DISTCC $CC" + fi +} + tarflags() { case "$1" in @@ -360,7 +380,7 @@ timed_run() { wait $child_pid # status will be set to 143 if the process had to be killed due to timeout - status=$? + status=${PIPESTATUS[0]} kill -KILL -$dog_pid return $status } @@ -377,26 +397,48 @@ depend_kernel() echo "Making depend in $PWD..." $MAKE "$MAKE_CC" mrproper || fatal 1 "Error running make mrproper" rm -f rpm-release + # remove localversion-* files to avoid kernel release string + # srewing up by the top-level Makefile + rm -f localversion-* cp "$CONFIG_FILE" .config - # 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. - local logfile=$(mktemp /tmp/XXXXXX) - timed_run 300 $TOPDIR/build/update_oldconfig $logfile - if [ ${PIPESTATUS[0]} -eq 143 ]; then - fatal 1 "update_oldconfig timed out" - elif [ ${PIPESTATUS[0]} -ne 0 ]; then - # dump the log - cat $logfile + local UPDATE_OLDCONFIG= + for oc in oldconfig_nonint silentoldconfig oldconfig ; do + if grep -q "$oc" Makefile ; then + timed_run 300 $MAKE "$MAKE_CC" $oc || UPDATE_OLDCONFIG=1 + break + fi + done + + if [ "$UPDATE_OLDCONFIG" ] ; then + # 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. + local logfile=$(mktemp /tmp/XXXXXX) + #timed_run 300 $TOPDIR/build/update_oldconfig $logfile + #local RC=${PIPESTATUS[0]} + #local RC=$(strace -f -o update_oldconfig.strace bash -c "$TOPDIR/build/update_oldconfig $logfile; echo \$?") + $TOPDIR/build/update_oldconfig $logfile + local RC=${PIPESTATUS[0]} + #$TOPDIR/build/update_oldconfig $logfile + #local RC=${PIPESTATUS[0]} + if [ $RC -eq 143 ]; then + fatal 1 "update_oldconfig timed out" + elif [ $RC -ne 0 ]; then + # dump the log + cat $logfile + rm -f $logfile + if [ -f update_oldconfig.strace ]; then + cat update_oldconfig.strace + rm -f update_oldconfig.strace + fi + fatal 1 "update_oldconfig failed: $RC. See log above." + fi rm -f $logfile - fatal 1 "update_oldconfig failed: $?. See log above." - fi - rm -f $logfile - # 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 <$tmpfile + if [ -s $tmpfile ]; then + { cat < build/lustre.spec - $RPMBUILD --target ${TARGET_ARCH} -bb build/lustre.spec \ + < lustre.spec.in \ + > lustre.spec + $RPMBUILD --target ${TARGET_ARCH} -bb lustre.spec \ + --define "_tmppath $TMPDIR" \ --define "_topdir $(lbuild_topdir)" || \ fatal 1 "Error building Lustre rpms." # $MAKE_J "$MAKE_CC" || fatal 1 "Error building Lustre." @@ -764,6 +809,7 @@ done check_options load_target +setup_ccache_distcc extract_kernel patch_kernel