ardupilot/Tools/scripts/build_autotest.sh
Andrew Tridgell 1daf92e499 Tools: raise build time limit
our build is taking over 20hrs now, which means it gets killed and
restarted at 20 hours, and if another commit has come in it means that
AP_Periph may never get built at all

raise to 40 hrs
2024-09-06 14:47:05 +10:00

115 lines
2.6 KiB
Bash
Executable File

#!/usr/bin/env bash
export PATH=$HOME/.local/bin:/usr/local/bin:$HOME/prefix/bin:$HOME/gcc/active/bin:$PATH
export PYTHONUNBUFFERED=1
cd $HOME/APM || exit 1
test -n "$FORCEBUILD" || {
(cd APM && git fetch > /dev/null 2>&1)
newtags=$(cd APM && git fetch --tags --force | wc -l)
oldhash=$(cd APM && git rev-parse origin/master)
newhash=$(cd APM && git rev-parse HEAD)
if [ "$oldhash" = "$newhash" -a "$newtags" = "0" ]; then
echo "$(date) no change $oldhash $newhash" >> build.log
exit 0
fi
echo "$(date) Build triggered $oldhash $newhash $newtags" >> build.log
}
############################
# grab a lock file. Not atomic, but close :)
# tries to cope with NFS
lock_file() {
lck="$1"
pid=`cat "$lck" 2> /dev/null`
if test -f "$lck" && kill -0 $pid 2> /dev/null; then
LOCKAGE=$(($(date +%s) - $(stat -c '%Y' "build.lck")))
test $LOCKAGE -gt 80000 && {
echo "old lock file $lck is valid for $pid with age $LOCKAGE seconds"
}
return 1
fi
/bin/rm -f "$lck"
echo "$$" > "$lck"
return 0
}
lock_file build.lck || {
exit 1
}
#ulimit -m 500000
#ulimit -s 500000
#ulimit -t 1800
#ulimit -v 500000
(
date
oldhash=$(cd APM && git rev-parse HEAD)
echo "Updating APM"
pushd APM
git checkout -f master
git fetch origin
git reset --hard origin/master
Tools/gittools/submodule-sync.sh
git clean -f -f -x -d -d
git tag autotest-$(date '+%Y-%m-%d-%H%M%S') -m "test tag `date`"
popd
rsync -a APM/Tools/autotest/web-firmware/ buildlogs/binaries/
echo "Updating MAVProxy"
pushd MAVProxy
git fetch origin
git reset --hard origin/master
git show
python setup.py build install --user
popd
echo "Updating pymavlink"
pushd APM/modules/mavlink/pymavlink
git show
python setup.py build install --user
popd
githash=$(cd APM && git rev-parse HEAD)
hdate=$(date +"%Y-%m-%d-%H:%m")
(cd APM && Tools/scripts/build_parameters.sh)
(cd APM && Tools/scripts/build_log_message_documentation.sh)
(cd APM && Tools/scripts/build_docs.sh)
killall -9 JSBSim || /bin/true
# raise core limit
ulimit -c 10000000
# build in home dir, as on faster storage
export BUILD_BINARIES_PATH=$HOME/build/tmp
# exit on panic so we don't waste time waiting around
export SITL_PANIC_EXIT=1
timelimit 144000 python3 APM/Tools/autotest/autotest.py --autotest-server --timeout=143000 > buildlogs/autotest-output.txt 2>&1
mkdir -p "buildlogs/history/$hdate"
(cd buildlogs && cp -f *.txt *.flashlog *.tlog *.km[lz] *.gpx *.html *.png *.bin *.BIN *.elf "history/$hdate/")
echo $githash > "buildlogs/history/$hdate/githash.txt"
) >> build.log 2>&1
# autotest done, let's mark GTD flags
touch /tmp/.autotest.done