You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
114 lines
2.6 KiB
114 lines
2.6 KiB
#!/bin/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 | 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 72000 APM/Tools/autotest/autotest.py --autotest-server --timeout=70000 > 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 |
|
|
|
|