From 7795cb69298845a0bd228e6cac59579603580085 Mon Sep 17 00:00:00 2001 From: Emile Castelnuovo Date: Tue, 30 Dec 2014 11:24:08 +0100 Subject: [PATCH] Tools: update scripts to build all firmwares for all VR boards --- Tools/scripts/build_vrbrain_binaries.sh | 130 +++++-- .../scripts/build_vrbrain_branch_binaries.sh | 331 ++++++++++++++++++ .../scripts/build_vrbrain_project_binaries.sh | 303 ++++++++++++++++ 3 files changed, 726 insertions(+), 38 deletions(-) create mode 100644 Tools/scripts/build_vrbrain_branch_binaries.sh create mode 100644 Tools/scripts/build_vrbrain_project_binaries.sh diff --git a/Tools/scripts/build_vrbrain_binaries.sh b/Tools/scripts/build_vrbrain_binaries.sh index 0d7901aaa7..94dd0dd958 100644 --- a/Tools/scripts/build_vrbrain_binaries.sh +++ b/Tools/scripts/build_vrbrain_binaries.sh @@ -23,27 +23,15 @@ error_count=0 # checkout the right version of the tree checkout() { - branch="$1" + vehicle="$1" + tag="$2" git stash - if [ "$branch" = "master" ]; then - vbranch="master" - vbranch2="master" - fi - if [ "$branch" = "for_merge" ]; then - vbranch="for_merge" - vbranch2="for_merge" - fi - if [ "$branch" = "for_merge-3.2" ]; then - vbranch="for_merge-3.2" - vbranch2="for_merge" - fi - if [ "$branch" = "tone_alarm" ]; then - vbranch="ToneAlarm" - vbranch2="ToneAlarm" - fi - if [ "$branch" = "tone_alarm-3.2" ]; then - vbranch="ToneAlarm-3.2" - vbranch2="ToneAlarm" + if [ "$tag" = "latest" ]; then + vbranch="for_build" + vbranch2="for_build" + else + vbranch="$vehicle-$tag" + vbranch2="for_build" fi echo "Checkout with branch $branch" @@ -54,7 +42,7 @@ checkout() { git log -1 - pushd ../../vrbrain_nuttx + pushd ../../VRNuttX git remote update git checkout -B "$vbranch2" remotes/origin/"$vbranch2" git pull -v --progress "origin" "$vbranch2" || { @@ -67,8 +55,7 @@ checkout() { return 0 } -# check if we should skip this build because we have already -# built this version +# check if we should skip this build because we have already built this version skip_build() { [ "$FORCE_BUILD" = "1" ] && return 1 tag="$1" @@ -126,21 +113,28 @@ build_arduplane() { test -n "$VRBRAIN_ROOT" && { echo "Building ArduPlane VRBRAIN binaries" ddir=$binaries/Plane/$hdate/VRX - checkout $tag || { + checkout Plane $tag || { echo "Failed checkout of ArduPlane VRBRAIN $tag" error_count=$((error_count+1)) - continue + checkout Plane "latest" + popd + return } skip_build $tag $ddir || { make vrbrain-clean && make vrbrain || { echo "Failed build of ArduPlane VRBRAIN $tag" error_count=$((error_count+1)) - continue + checkout Plane "latest" + popd + return } copyit ArduPlane-vrbrain-v45.vrx $ddir $tag && copyit ArduPlane-vrbrain-v45.bin $ddir $tag && copyit ArduPlane-vrbrain-v45.hex $ddir $tag && + copyit ArduPlane-vrbrain-v45P.vrx $ddir $tag && + copyit ArduPlane-vrbrain-v45P.bin $ddir $tag && + copyit ArduPlane-vrbrain-v45P.hex $ddir $tag && copyit ArduPlane-vrbrain-v51.vrx $ddir $tag && copyit ArduPlane-vrbrain-v51.bin $ddir $tag && copyit ArduPlane-vrbrain-v51.hex $ddir $tag && @@ -153,15 +147,33 @@ build_arduplane() { copyit ArduPlane-vrbrain-v51ProP.vrx $ddir $tag && copyit ArduPlane-vrbrain-v51ProP.bin $ddir $tag && copyit ArduPlane-vrbrain-v51ProP.hex $ddir $tag && + copyit ArduPlane-vrbrain-v52.vrx $ddir $tag && + copyit ArduPlane-vrbrain-v52.bin $ddir $tag && + copyit ArduPlane-vrbrain-v52.hex $ddir $tag && + copyit ArduPlane-vrbrain-v52P.vrx $ddir $tag && + copyit ArduPlane-vrbrain-v52P.bin $ddir $tag && + copyit ArduPlane-vrbrain-v52P.hex $ddir $tag && + copyit ArduPlane-vrbrain-v52Pro.vrx $ddir $tag && + copyit ArduPlane-vrbrain-v52Pro.bin $ddir $tag && + copyit ArduPlane-vrbrain-v52Pro.hex $ddir $tag && + copyit ArduPlane-vrbrain-v52ProP.vrx $ddir $tag && + copyit ArduPlane-vrbrain-v52ProP.bin $ddir $tag && + copyit ArduPlane-vrbrain-v52ProP.hex $ddir $tag && copyit ArduPlane-vrubrain-v51.vrx $ddir $tag && copyit ArduPlane-vrubrain-v51.bin $ddir $tag && copyit ArduPlane-vrubrain-v51.hex $ddir $tag && copyit ArduPlane-vrubrain-v51P.vrx $ddir $tag && copyit ArduPlane-vrubrain-v51P.bin $ddir $tag && - copyit ArduPlane-vrubrain-v51P.hex $ddir $tag + copyit ArduPlane-vrubrain-v51P.hex $ddir $tag && + copyit ArduPlane-vrubrain-v52.vrx $ddir $tag && + copyit ArduPlane-vrubrain-v52.bin $ddir $tag && + copyit ArduPlane-vrubrain-v52.hex $ddir $tag && + copyit ArduPlane-vrubrain-v52P.vrx $ddir $tag && + copyit ArduPlane-vrubrain-v52P.bin $ddir $tag && + copyit ArduPlane-vrubrain-v52P.hex $ddir $tag } } - checkout "master" + checkout Plane "latest" popd } @@ -172,10 +184,10 @@ build_arducopter() { pushd ArduCopter frames="quad tri hexa y6 octa octa-quad heli" test -n "$VRBRAIN_ROOT" && { - checkout $tag || { + checkout Copter $tag || { echo "Failed checkout of ArduCopter VRBRAIN $tag" error_count=$((error_count+1)) - checkout "master" + checkout Copter "latest" popd return } @@ -193,6 +205,9 @@ build_arducopter() { copyit ArduCopter-vrbrain-v45.vrx $ddir $tag && copyit ArduCopter-vrbrain-v45.bin $ddir $tag && copyit ArduCopter-vrbrain-v45.hex $ddir $tag && + copyit ArduCopter-vrbrain-v45P.vrx $ddir $tag && + copyit ArduCopter-vrbrain-v45P.bin $ddir $tag && + copyit ArduCopter-vrbrain-v45P.hex $ddir $tag && copyit ArduCopter-vrbrain-v51.vrx $ddir $tag && copyit ArduCopter-vrbrain-v51.bin $ddir $tag && copyit ArduCopter-vrbrain-v51.hex $ddir $tag && @@ -205,15 +220,33 @@ build_arducopter() { copyit ArduCopter-vrbrain-v51ProP.vrx $ddir $tag && copyit ArduCopter-vrbrain-v51ProP.bin $ddir $tag && copyit ArduCopter-vrbrain-v51ProP.hex $ddir $tag && + copyit ArduCopter-vrbrain-v52.vrx $ddir $tag && + copyit ArduCopter-vrbrain-v52.bin $ddir $tag && + copyit ArduCopter-vrbrain-v52.hex $ddir $tag && + copyit ArduCopter-vrbrain-v52P.vrx $ddir $tag && + copyit ArduCopter-vrbrain-v52P.bin $ddir $tag && + copyit ArduCopter-vrbrain-v52P.hex $ddir $tag && + copyit ArduCopter-vrbrain-v52Pro.vrx $ddir $tag && + copyit ArduCopter-vrbrain-v52Pro.bin $ddir $tag && + copyit ArduCopter-vrbrain-v52Pro.hex $ddir $tag && + copyit ArduCopter-vrbrain-v52ProP.vrx $ddir $tag && + copyit ArduCopter-vrbrain-v52ProP.bin $ddir $tag && + copyit ArduCopter-vrbrain-v52ProP.hex $ddir $tag && copyit ArduCopter-vrubrain-v51.vrx $ddir $tag && copyit ArduCopter-vrubrain-v51.bin $ddir $tag && copyit ArduCopter-vrubrain-v51.hex $ddir $tag && copyit ArduCopter-vrubrain-v51P.vrx $ddir $tag && copyit ArduCopter-vrubrain-v51P.bin $ddir $tag && - copyit ArduCopter-vrubrain-v51P.hex $ddir $tag + copyit ArduCopter-vrubrain-v51P.hex $ddir $tag && + copyit ArduCopter-vrubrain-v52.vrx $ddir $tag && + copyit ArduCopter-vrubrain-v52.bin $ddir $tag && + copyit ArduCopter-vrubrain-v52.hex $ddir $tag && + copyit ArduCopter-vrubrain-v52P.vrx $ddir $tag && + copyit ArduCopter-vrubrain-v52P.bin $ddir $tag && + copyit ArduCopter-vrubrain-v52P.hex $ddir $tag done } - checkout "master" + checkout Copter "latest" popd } @@ -225,8 +258,8 @@ build_rover() { test -n "$VRBRAIN_ROOT" && { echo "Building APMrover2 VRBRAIN binaries" ddir=$binaries/Rover/$hdate/VRX - checkout $tag || { - checkout "master" + checkout Rover $tag || { + checkout Rover "latest" popd return } @@ -235,13 +268,16 @@ build_rover() { make vrbrain || { echo "Failed build of APMrover2 VRBRAIN $tag" error_count=$((error_count+1)) - checkout APMrover2 "latest" "" + checkout Rover "latest" popd return } copyit APMrover2-vrbrain-v45.vrx $ddir $tag && copyit APMrover2-vrbrain-v45.bin $ddir $tag && copyit APMrover2-vrbrain-v45.hex $ddir $tag && + copyit APMrover2-vrbrain-v45P.vrx $ddir $tag && + copyit APMrover2-vrbrain-v45P.bin $ddir $tag && + copyit APMrover2-vrbrain-v45P.hex $ddir $tag && copyit APMrover2-vrbrain-v51.vrx $ddir $tag && copyit APMrover2-vrbrain-v51.bin $ddir $tag && copyit APMrover2-vrbrain-v51.hex $ddir $tag && @@ -254,19 +290,37 @@ build_rover() { copyit APMrover2-vrbrain-v51ProP.vrx $ddir $tag && copyit APMrover2-vrbrain-v51ProP.bin $ddir $tag && copyit APMrover2-vrbrain-v51ProP.hex $ddir $tag && + copyit APMrover2-vrbrain-v52.vrx $ddir $tag && + copyit APMrover2-vrbrain-v52.bin $ddir $tag && + copyit APMrover2-vrbrain-v52.hex $ddir $tag && + copyit APMrover2-vrbrain-v52P.vrx $ddir $tag && + copyit APMrover2-vrbrain-v52P.bin $ddir $tag && + copyit APMrover2-vrbrain-v52P.hex $ddir $tag && + copyit APMrover2-vrbrain-v52Pro.vrx $ddir $tag && + copyit APMrover2-vrbrain-v52Pro.bin $ddir $tag && + copyit APMrover2-vrbrain-v52Pro.hex $ddir $tag && + copyit APMrover2-vrbrain-v52ProP.vrx $ddir $tag && + copyit APMrover2-vrbrain-v52ProP.bin $ddir $tag && + copyit APMrover2-vrbrain-v52ProP.hex $ddir $tag && copyit APMrover2-vrubrain-v51.vrx $ddir $tag && copyit APMrover2-vrubrain-v51.bin $ddir $tag && copyit APMrover2-vrubrain-v51.hex $ddir $tag && copyit APMrover2-vrubrain-v51P.vrx $ddir $tag && copyit APMrover2-vrubrain-v51P.bin $ddir $tag && - copyit APMrover2-vrubrain-v51P.hex $ddir $tag + copyit APMrover2-vrubrain-v51P.hex $ddir $tag && + copyit APMrover2-vrubrain-v52.vrx $ddir $tag && + copyit APMrover2-vrubrain-v52.bin $ddir $tag && + copyit APMrover2-vrubrain-v52.hex $ddir $tag && + copyit APMrover2-vrubrain-v52P.vrx $ddir $tag && + copyit APMrover2-vrubrain-v52P.bin $ddir $tag && + copyit APMrover2-vrubrain-v52P.hex $ddir $tag } } - checkout "master" + checkout Rover "latest" popd } -for build in for_merge for_merge-3.2 tone_alarm tone_alarm-3.2; do +for build in stable beta latest; do build_arduplane $build build_arducopter $build build_rover $build diff --git a/Tools/scripts/build_vrbrain_branch_binaries.sh b/Tools/scripts/build_vrbrain_branch_binaries.sh new file mode 100644 index 0000000000..61252893b3 --- /dev/null +++ b/Tools/scripts/build_vrbrain_branch_binaries.sh @@ -0,0 +1,331 @@ +#!/bin/bash +# script to build the latest binaries for each vehicle type, ready to upload +# Andrew Tridgell, March 2013 + +export PATH=$PATH:/bin:/usr/bin + +export TMPDIR=$PWD/build.tmp.$$ +echo $TMDIR +rm -rf $TMPDIR +echo "Building in $TMPDIR" + +date +git checkout master +githash=$(git rev-parse HEAD) + +hdate=$(date +"%Y-%m/%Y-%m-%d-%H:%m") +mkdir -p binaries/$hdate +binaries=$PWD/../buildlogs/binaries + +error_count=0 + +. config.mk + +# checkout the right version of the tree +checkout() { + vehicle="$1" + tag="$2" + git stash + if [ "$tag" = "latest" ]; then + vbranch="for_build" + vbranch2="for_build" + else + vbranch="$vehicle-$tag" + vbranch2="for_build" + fi + + echo "Checkout with branch $branch" + + git remote update + git checkout -B "$vbranch" remotes/origin/"$vbranch" + git pull -v --progress "origin" "$vbranch" || return 1 + + git log -1 + + pushd ../../VRNuttX + git remote update + git checkout -B "$vbranch2" remotes/origin/"$vbranch2" + git pull -v --progress "origin" "$vbranch2" || { + popd + return 1 + } + git log -1 + popd + + return 0 +} + +# check if we should skip this build because we have already built this version +skip_build() { + [ "$FORCE_BUILD" = "1" ] && return 1 + tag="$1" + ddir="$2" + bname=$(basename $ddir) + ldir=$(dirname $(dirname $(dirname $ddir)))/$tag/$bname + [ -d "$ldir" ] || { + echo "$ldir doesn't exist - building" + return 1 + } + oldversion=$(cat "$ldir/git-version.txt" | head -1) + newversion=$(git log -1 | head -1) + [ "$oldversion" = "$newversion" ] && { + echo "Skipping build - version match $newversion" + return 0 + } + echo "$ldir needs rebuild" + return 1 +} + +addfwversion() { + destdir="$1" + git log -1 > "$destdir/git-version.txt" + [ -f APM_Config.h ] && { + version=$(grep 'define.THISFIRMWARE' *.pde 2> /dev/null | cut -d'"' -f2) + echo >> "$destdir/git-version.txt" + echo "APMVERSION: $version" >> "$destdir/git-version.txt" + } +} + +# copy the built firmware to the right directory +copyit() { + file="$1" + dir="$2" + tag="$3" + bname=$(basename $dir) + tdir=$(dirname $(dirname $(dirname $dir)))/$tag/$bname + if [ "$tag" = "latest" ]; then + mkdir -p "$dir" + /bin/cp "$file" "$dir" + addfwversion "$dir" + fi + echo "Copying $file to $tdir" + mkdir -p "$tdir" + addfwversion "$tdir" + + rsync "$file" "$tdir" +} + +# build plane binaries +build_arduplane() { + tag="$1" + echo "Building ArduPlane $tag binaries" + pushd ArduPlane + test -n "$VRBRAIN_ROOT" && { + echo "Building ArduPlane VRBRAIN binaries" + ddir=$binaries/Plane/$hdate/VRX + checkout Plane $tag || { + echo "Failed checkout of ArduPlane VRBRAIN $tag" + error_count=$((error_count+1)) + checkout Plane "latest" + popd + return + } + skip_build $tag $ddir || { + make vrbrain-clean && + make vrbrain || { + echo "Failed build of ArduPlane VRBRAIN $tag" + error_count=$((error_count+1)) + checkout Plane "latest" + popd + return + } + copyit ArduPlane-vrbrain-v45.vrx $ddir $tag && + copyit ArduPlane-vrbrain-v45.bin $ddir $tag && + copyit ArduPlane-vrbrain-v45.hex $ddir $tag && + copyit ArduPlane-vrbrain-v45P.vrx $ddir $tag && + copyit ArduPlane-vrbrain-v45P.bin $ddir $tag && + copyit ArduPlane-vrbrain-v45P.hex $ddir $tag && + copyit ArduPlane-vrbrain-v51.vrx $ddir $tag && + copyit ArduPlane-vrbrain-v51.bin $ddir $tag && + copyit ArduPlane-vrbrain-v51.hex $ddir $tag && + copyit ArduPlane-vrbrain-v51P.vrx $ddir $tag && + copyit ArduPlane-vrbrain-v51P.bin $ddir $tag && + copyit ArduPlane-vrbrain-v51P.hex $ddir $tag && + copyit ArduPlane-vrbrain-v51Pro.vrx $ddir $tag && + copyit ArduPlane-vrbrain-v51Pro.bin $ddir $tag && + copyit ArduPlane-vrbrain-v51Pro.hex $ddir $tag && + copyit ArduPlane-vrbrain-v51ProP.vrx $ddir $tag && + copyit ArduPlane-vrbrain-v51ProP.bin $ddir $tag && + copyit ArduPlane-vrbrain-v51ProP.hex $ddir $tag && + copyit ArduPlane-vrbrain-v52.vrx $ddir $tag && + copyit ArduPlane-vrbrain-v52.bin $ddir $tag && + copyit ArduPlane-vrbrain-v52.hex $ddir $tag && + copyit ArduPlane-vrbrain-v52P.vrx $ddir $tag && + copyit ArduPlane-vrbrain-v52P.bin $ddir $tag && + copyit ArduPlane-vrbrain-v52P.hex $ddir $tag && + copyit ArduPlane-vrbrain-v52Pro.vrx $ddir $tag && + copyit ArduPlane-vrbrain-v52Pro.bin $ddir $tag && + copyit ArduPlane-vrbrain-v52Pro.hex $ddir $tag && + copyit ArduPlane-vrbrain-v52ProP.vrx $ddir $tag && + copyit ArduPlane-vrbrain-v52ProP.bin $ddir $tag && + copyit ArduPlane-vrbrain-v52ProP.hex $ddir $tag && + copyit ArduPlane-vrubrain-v51.vrx $ddir $tag && + copyit ArduPlane-vrubrain-v51.bin $ddir $tag && + copyit ArduPlane-vrubrain-v51.hex $ddir $tag && + copyit ArduPlane-vrubrain-v51P.vrx $ddir $tag && + copyit ArduPlane-vrubrain-v51P.bin $ddir $tag && + copyit ArduPlane-vrubrain-v51P.hex $ddir $tag && + copyit ArduPlane-vrubrain-v52.vrx $ddir $tag && + copyit ArduPlane-vrubrain-v52.bin $ddir $tag && + copyit ArduPlane-vrubrain-v52.hex $ddir $tag && + copyit ArduPlane-vrubrain-v52P.vrx $ddir $tag && + copyit ArduPlane-vrubrain-v52P.bin $ddir $tag && + copyit ArduPlane-vrubrain-v52P.hex $ddir $tag + } + } + checkout Plane $tag + popd +} + +# build copter binaries +build_arducopter() { + tag="$1" + echo "Building ArduCopter $tag binaries from $(pwd)" + pushd ArduCopter + frames="quad tri hexa y6 octa octa-quad heli" + test -n "$VRBRAIN_ROOT" && { + checkout Copter $tag || { + echo "Failed checkout of ArduCopter VRBRAIN $tag" + error_count=$((error_count+1)) + checkout Copter "latest" + popd + return + } + make vrbrain-clean || return + for f in $frames quad-hil heli-hil; do + echo "Building ArduCopter VRBRAIN-$f binaries" + ddir="$binaries/Copter/$hdate/VRX-$f" + skip_build $tag $ddir && continue + rm -rf ../Build.ArduCopter + make vrbrain-$f || { + echo "Failed build of ArduCopter VRBRAIN $tag" + error_count=$((error_count+1)) + continue + } + copyit ArduCopter-vrbrain-v45.vrx $ddir $tag && + copyit ArduCopter-vrbrain-v45.bin $ddir $tag && + copyit ArduCopter-vrbrain-v45.hex $ddir $tag && + copyit ArduCopter-vrbrain-v45P.vrx $ddir $tag && + copyit ArduCopter-vrbrain-v45P.bin $ddir $tag && + copyit ArduCopter-vrbrain-v45P.hex $ddir $tag && + copyit ArduCopter-vrbrain-v51.vrx $ddir $tag && + copyit ArduCopter-vrbrain-v51.bin $ddir $tag && + copyit ArduCopter-vrbrain-v51.hex $ddir $tag && + copyit ArduCopter-vrbrain-v51P.vrx $ddir $tag && + copyit ArduCopter-vrbrain-v51P.bin $ddir $tag && + copyit ArduCopter-vrbrain-v51P.hex $ddir $tag && + copyit ArduCopter-vrbrain-v51Pro.vrx $ddir $tag && + copyit ArduCopter-vrbrain-v51Pro.bin $ddir $tag && + copyit ArduCopter-vrbrain-v51Pro.hex $ddir $tag && + copyit ArduCopter-vrbrain-v51ProP.vrx $ddir $tag && + copyit ArduCopter-vrbrain-v51ProP.bin $ddir $tag && + copyit ArduCopter-vrbrain-v51ProP.hex $ddir $tag && + copyit ArduCopter-vrbrain-v52.vrx $ddir $tag && + copyit ArduCopter-vrbrain-v52.bin $ddir $tag && + copyit ArduCopter-vrbrain-v52.hex $ddir $tag && + copyit ArduCopter-vrbrain-v52P.vrx $ddir $tag && + copyit ArduCopter-vrbrain-v52P.bin $ddir $tag && + copyit ArduCopter-vrbrain-v52P.hex $ddir $tag && + copyit ArduCopter-vrbrain-v52Pro.vrx $ddir $tag && + copyit ArduCopter-vrbrain-v52Pro.bin $ddir $tag && + copyit ArduCopter-vrbrain-v52Pro.hex $ddir $tag && + copyit ArduCopter-vrbrain-v52ProP.vrx $ddir $tag && + copyit ArduCopter-vrbrain-v52ProP.bin $ddir $tag && + copyit ArduCopter-vrbrain-v52ProP.hex $ddir $tag && + copyit ArduCopter-vrubrain-v51.vrx $ddir $tag && + copyit ArduCopter-vrubrain-v51.bin $ddir $tag && + copyit ArduCopter-vrubrain-v51.hex $ddir $tag && + copyit ArduCopter-vrubrain-v51P.vrx $ddir $tag && + copyit ArduCopter-vrubrain-v51P.bin $ddir $tag && + copyit ArduCopter-vrubrain-v51P.hex $ddir $tag && + copyit ArduCopter-vrubrain-v52.vrx $ddir $tag && + copyit ArduCopter-vrubrain-v52.bin $ddir $tag && + copyit ArduCopter-vrubrain-v52.hex $ddir $tag && + copyit ArduCopter-vrubrain-v52P.vrx $ddir $tag && + copyit ArduCopter-vrubrain-v52P.bin $ddir $tag && + copyit ArduCopter-vrubrain-v52P.hex $ddir $tag + done + } + checkout Copter $tag + popd +} + +# build rover binaries +build_rover() { + tag="$1" + echo "Building APMrover2 $tag binaries from $(pwd)" + pushd APMrover2 + test -n "$VRBRAIN_ROOT" && { + echo "Building APMrover2 VRBRAIN binaries" + ddir=$binaries/Rover/$hdate/VRX + checkout Rover $tag || { + checkout Rover "latest" + popd + return + } + skip_build $tag $ddir || { + make vrbrain-clean && + make vrbrain || { + echo "Failed build of APMrover2 VRBRAIN $tag" + error_count=$((error_count+1)) + checkout Rover "latest" + popd + return + } + copyit APMrover2-vrbrain-v45.vrx $ddir $tag && + copyit APMrover2-vrbrain-v45.bin $ddir $tag && + copyit APMrover2-vrbrain-v45.hex $ddir $tag && + copyit APMrover2-vrbrain-v45P.vrx $ddir $tag && + copyit APMrover2-vrbrain-v45P.bin $ddir $tag && + copyit APMrover2-vrbrain-v45P.hex $ddir $tag && + copyit APMrover2-vrbrain-v51.vrx $ddir $tag && + copyit APMrover2-vrbrain-v51.bin $ddir $tag && + copyit APMrover2-vrbrain-v51.hex $ddir $tag && + copyit APMrover2-vrbrain-v51P.vrx $ddir $tag && + copyit APMrover2-vrbrain-v51P.bin $ddir $tag && + copyit APMrover2-vrbrain-v51P.hex $ddir $tag && + copyit APMrover2-vrbrain-v51Pro.vrx $ddir $tag && + copyit APMrover2-vrbrain-v51Pro.bin $ddir $tag && + copyit APMrover2-vrbrain-v51Pro.hex $ddir $tag && + copyit APMrover2-vrbrain-v51ProP.vrx $ddir $tag && + copyit APMrover2-vrbrain-v51ProP.bin $ddir $tag && + copyit APMrover2-vrbrain-v51ProP.hex $ddir $tag && + copyit APMrover2-vrbrain-v52.vrx $ddir $tag && + copyit APMrover2-vrbrain-v52.bin $ddir $tag && + copyit APMrover2-vrbrain-v52.hex $ddir $tag && + copyit APMrover2-vrbrain-v52P.vrx $ddir $tag && + copyit APMrover2-vrbrain-v52P.bin $ddir $tag && + copyit APMrover2-vrbrain-v52P.hex $ddir $tag && + copyit APMrover2-vrbrain-v52Pro.vrx $ddir $tag && + copyit APMrover2-vrbrain-v52Pro.bin $ddir $tag && + copyit APMrover2-vrbrain-v52Pro.hex $ddir $tag && + copyit APMrover2-vrbrain-v52ProP.vrx $ddir $tag && + copyit APMrover2-vrbrain-v52ProP.bin $ddir $tag && + copyit APMrover2-vrbrain-v52ProP.hex $ddir $tag && + copyit APMrover2-vrubrain-v51.vrx $ddir $tag && + copyit APMrover2-vrubrain-v51.bin $ddir $tag && + copyit APMrover2-vrubrain-v51.hex $ddir $tag && + copyit APMrover2-vrubrain-v51P.vrx $ddir $tag && + copyit APMrover2-vrubrain-v51P.bin $ddir $tag && + copyit APMrover2-vrubrain-v51P.hex $ddir $tag && + copyit APMrover2-vrubrain-v52.vrx $ddir $tag && + copyit APMrover2-vrubrain-v52.bin $ddir $tag && + copyit APMrover2-vrubrain-v52.hex $ddir $tag && + copyit APMrover2-vrubrain-v52P.vrx $ddir $tag && + copyit APMrover2-vrubrain-v52P.bin $ddir $tag && + copyit APMrover2-vrubrain-v52P.hex $ddir $tag + } + } + checkout Rover "latest" + popd +} + +for build in latest; do + build_arduplane $build + build_arducopter $build + build_rover $build +done + +rm -rf $TMPDIR + +exit $error_count diff --git a/Tools/scripts/build_vrbrain_project_binaries.sh b/Tools/scripts/build_vrbrain_project_binaries.sh new file mode 100644 index 0000000000..48c32a5610 --- /dev/null +++ b/Tools/scripts/build_vrbrain_project_binaries.sh @@ -0,0 +1,303 @@ +#!/bin/bash +# script to build the latest binaries for each vehicle type, ready to upload +# Andrew Tridgell, March 2013 + +export PATH=$PATH:/bin:/usr/bin + +export TMPDIR=$PWD/build.tmp.$$ +echo $TMDIR +rm -rf $TMPDIR +echo "Building in $TMPDIR" + +date +git checkout master +githash=$(git rev-parse HEAD) + +hdate=$(date +"%Y-%m/%Y-%m-%d-%H:%m") +mkdir -p binaries/$hdate +binaries=$PWD/../buildlogs/binaries + +error_count=0 + +. config.mk + +# checkout the right version of the tree +checkout() { + vehicle="$1" + tag="$2" + git stash + if [ "$tag" = "latest" ]; then + vbranch="for_build" + vbranch2="for_build" + else + vbranch="$vehicle-$tag" + vbranch2="for_build" + fi + + echo "Checkout with branch $branch" + + git remote update + git checkout -B "$vbranch" remotes/origin/"$vbranch" + git pull -v --progress "origin" "$vbranch" || return 1 + + git log -1 + + pushd ../../VRNuttX + git remote update + git checkout -B "$vbranch2" remotes/origin/"$vbranch2" + git pull -v --progress "origin" "$vbranch2" || { + popd + return 1 + } + git log -1 + popd + + return 0 +} + +# check if we should skip this build because we have already built this version +skip_build() { + [ "$FORCE_BUILD" = "1" ] && return 1 + tag="$1" + ddir="$2" + bname=$(basename $ddir) + ldir=$(dirname $(dirname $(dirname $ddir)))/$tag/$bname + [ -d "$ldir" ] || { + echo "$ldir doesn't exist - building" + return 1 + } + oldversion=$(cat "$ldir/git-version.txt" | head -1) + newversion=$(git log -1 | head -1) + [ "$oldversion" = "$newversion" ] && { + echo "Skipping build - version match $newversion" + return 0 + } + echo "$ldir needs rebuild" + return 1 +} + +addfwversion() { + destdir="$1" + git log -1 > "$destdir/git-version.txt" + [ -f APM_Config.h ] && { + version=$(grep 'define.THISFIRMWARE' *.pde 2> /dev/null | cut -d'"' -f2) + echo >> "$destdir/git-version.txt" + echo "APMVERSION: $version" >> "$destdir/git-version.txt" + } +} + +# copy the built firmware to the right directory +copyit() { + file="$1" + dir="$2" + tag="$3" + bname=$(basename $dir) + tdir=$(dirname $(dirname $(dirname $dir)))/$tag/$bname + if [ "$tag" = "latest" ]; then + mkdir -p "$dir" + /bin/cp "$file" "$dir" + addfwversion "$dir" + fi + echo "Copying $file to $tdir" + mkdir -p "$tdir" + addfwversion "$tdir" + + rsync "$file" "$tdir" +} + +# build plane binaries +build_arduplane() { + tag="$1" + echo "Building ArduPlane $tag binaries" + pushd ArduPlane + test -n "$VRBRAIN_ROOT" && { + echo "Building ArduPlane VRBRAIN binaries" + ddir=$binaries/Plane/$hdate/VRX + skip_build $tag $ddir || { + make vrbrain-clean && + make vrbrain || { + echo "Failed build of ArduPlane VRBRAIN $tag" + error_count=$((error_count+1)) + checkout Plane "latest" + popd + return + } + copyit ArduPlane-vrbrain-v45.vrx $ddir $tag && + copyit ArduPlane-vrbrain-v45.bin $ddir $tag && + copyit ArduPlane-vrbrain-v45.hex $ddir $tag && + copyit ArduPlane-vrbrain-v45P.vrx $ddir $tag && + copyit ArduPlane-vrbrain-v45P.bin $ddir $tag && + copyit ArduPlane-vrbrain-v45P.hex $ddir $tag && + copyit ArduPlane-vrbrain-v51.vrx $ddir $tag && + copyit ArduPlane-vrbrain-v51.bin $ddir $tag && + copyit ArduPlane-vrbrain-v51.hex $ddir $tag && + copyit ArduPlane-vrbrain-v51P.vrx $ddir $tag && + copyit ArduPlane-vrbrain-v51P.bin $ddir $tag && + copyit ArduPlane-vrbrain-v51P.hex $ddir $tag && + copyit ArduPlane-vrbrain-v51Pro.vrx $ddir $tag && + copyit ArduPlane-vrbrain-v51Pro.bin $ddir $tag && + copyit ArduPlane-vrbrain-v51Pro.hex $ddir $tag && + copyit ArduPlane-vrbrain-v51ProP.vrx $ddir $tag && + copyit ArduPlane-vrbrain-v51ProP.bin $ddir $tag && + copyit ArduPlane-vrbrain-v51ProP.hex $ddir $tag && + copyit ArduPlane-vrbrain-v52.vrx $ddir $tag && + copyit ArduPlane-vrbrain-v52.bin $ddir $tag && + copyit ArduPlane-vrbrain-v52.hex $ddir $tag && + copyit ArduPlane-vrbrain-v52P.vrx $ddir $tag && + copyit ArduPlane-vrbrain-v52P.bin $ddir $tag && + copyit ArduPlane-vrbrain-v52P.hex $ddir $tag && + copyit ArduPlane-vrbrain-v52Pro.vrx $ddir $tag && + copyit ArduPlane-vrbrain-v52Pro.bin $ddir $tag && + copyit ArduPlane-vrbrain-v52Pro.hex $ddir $tag && + copyit ArduPlane-vrbrain-v52ProP.vrx $ddir $tag && + copyit ArduPlane-vrbrain-v52ProP.bin $ddir $tag && + copyit ArduPlane-vrbrain-v52ProP.hex $ddir $tag && + copyit ArduPlane-vrubrain-v51.vrx $ddir $tag && + copyit ArduPlane-vrubrain-v51.bin $ddir $tag && + copyit ArduPlane-vrubrain-v51.hex $ddir $tag && + copyit ArduPlane-vrubrain-v51P.vrx $ddir $tag && + copyit ArduPlane-vrubrain-v51P.bin $ddir $tag && + copyit ArduPlane-vrubrain-v51P.hex $ddir $tag && + copyit ArduPlane-vrubrain-v52.vrx $ddir $tag && + copyit ArduPlane-vrubrain-v52.bin $ddir $tag && + copyit ArduPlane-vrubrain-v52.hex $ddir $tag && + copyit ArduPlane-vrubrain-v52P.vrx $ddir $tag && + copyit ArduPlane-vrubrain-v52P.bin $ddir $tag && + copyit ArduPlane-vrubrain-v52P.hex $ddir $tag + } + } +} + +# build copter binaries +build_arducopter() { + tag="$1" + echo "Building ArduCopter $tag binaries from $(pwd)" + pushd ArduCopter + frames="quad tri hexa y6 octa octa-quad heli" + test -n "$VRBRAIN_ROOT" + make vrbrain-clean || return + for f in $frames quad-hil heli-hil; do + echo "Building ArduCopter VRBRAIN-$f binaries" + ddir="$binaries/Copter/$hdate/VRX-$f" + skip_build $tag $ddir && continue + rm -rf ../Build.ArduCopter + make vrbrain-$f || { + echo "Failed build of ArduCopter VRBRAIN $tag" + error_count=$((error_count+1)) + continue + } + copyit ArduCopter-vrbrain-v45.vrx $ddir $tag && + copyit ArduCopter-vrbrain-v45.bin $ddir $tag && + copyit ArduCopter-vrbrain-v45.hex $ddir $tag && + copyit ArduCopter-vrbrain-v45P.vrx $ddir $tag && + copyit ArduCopter-vrbrain-v45P.bin $ddir $tag && + copyit ArduCopter-vrbrain-v45P.hex $ddir $tag && + copyit ArduCopter-vrbrain-v51.vrx $ddir $tag && + copyit ArduCopter-vrbrain-v51.bin $ddir $tag && + copyit ArduCopter-vrbrain-v51.hex $ddir $tag && + copyit ArduCopter-vrbrain-v51P.vrx $ddir $tag && + copyit ArduCopter-vrbrain-v51P.bin $ddir $tag && + copyit ArduCopter-vrbrain-v51P.hex $ddir $tag && + copyit ArduCopter-vrbrain-v51Pro.vrx $ddir $tag && + copyit ArduCopter-vrbrain-v51Pro.bin $ddir $tag && + copyit ArduCopter-vrbrain-v51Pro.hex $ddir $tag && + copyit ArduCopter-vrbrain-v51ProP.vrx $ddir $tag && + copyit ArduCopter-vrbrain-v51ProP.bin $ddir $tag && + copyit ArduCopter-vrbrain-v51ProP.hex $ddir $tag && + copyit ArduCopter-vrbrain-v52.vrx $ddir $tag && + copyit ArduCopter-vrbrain-v52.bin $ddir $tag && + copyit ArduCopter-vrbrain-v52.hex $ddir $tag && + copyit ArduCopter-vrbrain-v52P.vrx $ddir $tag && + copyit ArduCopter-vrbrain-v52P.bin $ddir $tag && + copyit ArduCopter-vrbrain-v52P.hex $ddir $tag && + copyit ArduCopter-vrbrain-v52Pro.vrx $ddir $tag && + copyit ArduCopter-vrbrain-v52Pro.bin $ddir $tag && + copyit ArduCopter-vrbrain-v52Pro.hex $ddir $tag && + copyit ArduCopter-vrbrain-v52ProP.vrx $ddir $tag && + copyit ArduCopter-vrbrain-v52ProP.bin $ddir $tag && + copyit ArduCopter-vrbrain-v52ProP.hex $ddir $tag && + copyit ArduCopter-vrubrain-v51.vrx $ddir $tag && + copyit ArduCopter-vrubrain-v51.bin $ddir $tag && + copyit ArduCopter-vrubrain-v51.hex $ddir $tag && + copyit ArduCopter-vrubrain-v51P.vrx $ddir $tag && + copyit ArduCopter-vrubrain-v51P.bin $ddir $tag && + copyit ArduCopter-vrubrain-v51P.hex $ddir $tag && + copyit ArduCopter-vrubrain-v52.vrx $ddir $tag && + copyit ArduCopter-vrubrain-v52.bin $ddir $tag && + copyit ArduCopter-vrubrain-v52.hex $ddir $tag && + copyit ArduCopter-vrubrain-v52P.vrx $ddir $tag && + copyit ArduCopter-vrubrain-v52P.bin $ddir $tag && + copyit ArduCopter-vrubrain-v52P.hex $ddir $tag + done + } + +# build rover binaries +build_rover() { + tag="$1" + echo "Building APMrover2 $tag binaries from $(pwd)" + pushd APMrover2 + test -n "$VRBRAIN_ROOT" && { + echo "Building APMrover2 VRBRAIN binaries" + ddir=$binaries/Rover/$hdate/VRX + skip_build $tag $ddir || { + make vrbrain-clean && + make vrbrain || { + echo "Failed build of APMrover2 VRBRAIN $tag" + error_count=$((error_count+1)) + return + } + copyit APMrover2-vrbrain-v45.vrx $ddir $tag && + copyit APMrover2-vrbrain-v45.bin $ddir $tag && + copyit APMrover2-vrbrain-v45.hex $ddir $tag && + copyit APMrover2-vrbrain-v45P.vrx $ddir $tag && + copyit APMrover2-vrbrain-v45P.bin $ddir $tag && + copyit APMrover2-vrbrain-v45P.hex $ddir $tag && + copyit APMrover2-vrbrain-v51.vrx $ddir $tag && + copyit APMrover2-vrbrain-v51.bin $ddir $tag && + copyit APMrover2-vrbrain-v51.hex $ddir $tag && + copyit APMrover2-vrbrain-v51P.vrx $ddir $tag && + copyit APMrover2-vrbrain-v51P.bin $ddir $tag && + copyit APMrover2-vrbrain-v51P.hex $ddir $tag && + copyit APMrover2-vrbrain-v51Pro.vrx $ddir $tag && + copyit APMrover2-vrbrain-v51Pro.bin $ddir $tag && + copyit APMrover2-vrbrain-v51Pro.hex $ddir $tag && + copyit APMrover2-vrbrain-v51ProP.vrx $ddir $tag && + copyit APMrover2-vrbrain-v51ProP.bin $ddir $tag && + copyit APMrover2-vrbrain-v51ProP.hex $ddir $tag && + copyit APMrover2-vrbrain-v52.vrx $ddir $tag && + copyit APMrover2-vrbrain-v52.bin $ddir $tag && + copyit APMrover2-vrbrain-v52.hex $ddir $tag && + copyit APMrover2-vrbrain-v52P.vrx $ddir $tag && + copyit APMrover2-vrbrain-v52P.bin $ddir $tag && + copyit APMrover2-vrbrain-v52P.hex $ddir $tag && + copyit APMrover2-vrbrain-v52Pro.vrx $ddir $tag && + copyit APMrover2-vrbrain-v52Pro.bin $ddir $tag && + copyit APMrover2-vrbrain-v52Pro.hex $ddir $tag && + copyit APMrover2-vrbrain-v52ProP.vrx $ddir $tag && + copyit APMrover2-vrbrain-v52ProP.bin $ddir $tag && + copyit APMrover2-vrbrain-v52ProP.hex $ddir $tag && + copyit APMrover2-vrubrain-v51.vrx $ddir $tag && + copyit APMrover2-vrubrain-v51.bin $ddir $tag && + copyit APMrover2-vrubrain-v51.hex $ddir $tag && + copyit APMrover2-vrubrain-v51P.vrx $ddir $tag && + copyit APMrover2-vrubrain-v51P.bin $ddir $tag && + copyit APMrover2-vrubrain-v51P.hex $ddir $tag && + copyit APMrover2-vrubrain-v52.vrx $ddir $tag && + copyit APMrover2-vrubrain-v52.bin $ddir $tag && + copyit APMrover2-vrubrain-v52.hex $ddir $tag && + copyit APMrover2-vrubrain-v52P.vrx $ddir $tag && + copyit APMrover2-vrubrain-v52P.bin $ddir $tag && + copyit APMrover2-vrubrain-v52P.hex $ddir $tag + } + } +} + +for build in latest; do + build_arduplane $build + build_arducopter $build + build_rover $build +done + +rm -rf $TMPDIR + +exit $error_count