("$@") &
child_pid=$!
- sleep $SLEEP_TIME
+ (sleep $SLEEP_TIME
kill -TERM -$child_pid 2>/dev/null
sleep 5
kill -KILL -$child_pid 2>/dev/null
- echo "$1 was killed due to timeout"
+ echo "$1 was killed due to timeout") &
+ dog_pid=$!
+
+ wait $child_pid
+ # status will be set to 143 if the process had to be killed due to timeout
+ status=${PIPESTATUS[0]}
+ kill -KILL -$dog_pid
+ return $status
}
depend_kernel()
# 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.
- timed_run 300 $TOPDIR/build/update_oldconfig
+ 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 \$?")
+ if [ $RC -eq 143 ]; then
+ fatal 1 "update_oldconfig timed out"
+ elif [ $RC -ne 0 ]; then
+ # dump the log
+ cat $logfile
+ rm -f $logfile
+ cat update_oldconfig.strace
+ rm -f update_oldconfig.strace
+ fatal 1 "update_oldconfig failed: $RC. 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 <<EOF
+To: qa@lists.clusterfs.com
+Subject: kernel_config change
+
The result of a make oldconfig on file $CONFIG_FILE resulted in a
difference when compared to .config in the following way:
# 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
+ } | sendmail -fqa@clusterfs.com -t
fi
rm -f $tmpfile
case "$VERSION" in
mkdir -p "${TOPDIR}/modules-${FULL_VERSION}"
for dir in /usr/src/kernel-modules/* ; do
# we are replacing lustre-lite, so don't include it
- if [ ${dir##*/} != "lustre-lite" -a -e $dir/Makefile ]; then
+ if [ "${dir##*/}" != "lustre-lite" -a -e $dir/Makefile ]; then
build_dir="${TOPDIR}/modules-${FULL_VERSION}/${dir##*/}"
cp -a $dir $build_dir
# these modules are terrible, and don't all build