Files
xen/automation/scripts/build-test.sh
T
Wei Liu acd00a3033 automation: introduce a script for build test
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
Signed-off-by: Wei Liu <wei.liu2@citrix.com>
Reviewed-by: Doug Goldstein <cardoe@cardoe.com>
2018-07-27 09:32:54 +01:00

69 lines
1.5 KiB
Bash
Executable File

#!/bin/bash
# Run command on every commit within the range specified. If no command is
# provided, use the default one to clean and build the whole tree.
#
# The default rune is rather simple. To do a cross-build, please put your usual
# build rune in a shell script and invoke it with this script.
if test $# -lt 2 ; then
echo "Usage:"
echo " $0 <BASE> <TIP> [CMD]"
echo " If [CMD] is not specified, run the default command"
echo " git clean -fdx && ./configure && make -j4"
exit 1
fi
pushd `git rev-parse --show-toplevel`
status=`git status -s`
if test -n "$status"; then
echo "Tree is dirty, aborted"
exit 1
fi
BASE=$1; shift
TIP=$1; shift
ORIG_BRANCH=`git symbolic-ref -q --short HEAD`
if test $? -ne 0; then
echo "Detached HEAD, aborted"
exit 1
fi
while read num rev; do
echo "Testing $num $rev"
git checkout $rev
ret=$?
if test $ret -ne 0; then
echo "Failed to checkout $num $rev with $ret"
break
fi
if test $# -eq 0 ; then
git clean -fdx && ./configure && make -j4
else
"$@"
fi
ret=$?
if test $ret -ne 0; then
echo "Failed at $num $rev with $ret"
break
fi
echo
done < <(git rev-list $BASE..$TIP | nl -ba | tac)
echo "Restoring original HEAD"
git checkout $ORIG_BRANCH
gco_ret=$?
if test $gco_ret -ne 0; then
echo "Failed to restore orignal HEAD. Check tree status before doing anything else!"
exit $gco_ret
fi
if test $ret -eq 0; then
echo "ok."
fi
exit $ret