ardupilot/Tools/scripts/configure-ci.sh
Francisco Ferreira 37b9e76737 Tools: update CI scripts
Remove old CMake PPA (Trusty has a more recent version)
Remove ccache from APT install since we build it from source
Update ccache to version 3.4.2
Add extra checks for compiler presence
Since no ccache DB is saved between builds we don't limit its size anymore and Make builds can use it
2018-08-30 16:34:56 -07:00

93 lines
2.6 KiB
Bash
Executable File

#!/bin/bash
# Install dependencies and configure the environment for CI build testing
set -ex
# Disable ccache for the configure phase, it's not worth it
export CCACHE_DISABLE="true"
ARM_ROOT="gcc-arm-none-eabi-4_9-2015q3"
ARM_TARBALL="$ARM_ROOT-20150921-linux.tar.bz2"
RPI_ROOT="master"
RPI_TARBALL="$RPI_ROOT.tar.gz"
CCACHE_ROOT="ccache-3.4.2"
CCACHE_TARBALL="$CCACHE_ROOT.tar.bz2"
mkdir -p $HOME/opt
pushd $HOME
# PX4 toolchain
dir=$ARM_ROOT
if [ ! -d "$HOME/opt/$dir" -o ! -x "$HOME/opt/$dir/bin/arm-none-eabi-g++" ]; then
wget http://firmware.ardupilot.org/Tools/STM32-tools/$ARM_TARBALL
tar -xf $ARM_TARBALL -C opt
fi
# RPi/BBB toolchain
dir="tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64"
if [ ! -d "$HOME/opt/$dir" -o ! -x "$HOME/opt/$dir/bin/arm-linux-gnueabihf-g++" ]; then
wget http://firmware.ardupilot.org/Tools/Travis/NavIO/$RPI_TARBALL
tar -xf $RPI_TARBALL -C opt $dir
fi
# ccache
dir=$CCACHE_ROOT
if [ ! -d "$HOME/opt/$dir" ]; then
# if version 3.4 isn't there, try to remove older v3.3 folders from CI cache
rm -rf "$HOME/opt"/ccache-3.3*
wget https://www.samba.org/ftp/ccache/$CCACHE_TARBALL
tar -xf $CCACHE_TARBALL
pushd $CCACHE_ROOT
./configure --prefix="/tmp" --bindir="$HOME/opt/$dir"
make
make install
popd
fi
popd
mkdir -p $HOME/bin
# symlink to compiler versions
ln -s /usr/bin/gcc-4.9 ~/bin/gcc
ln -s /usr/bin/g++-4.9 ~/bin/g++
ln -s /usr/bin/clang-3.7 ~/bin/clang
ln -s /usr/bin/clang++-3.7 ~/bin/clang++
ln -s /usr/bin/llvm-ar-3.7 ~/bin/llvm-ar
mkdir -p $HOME/ccache
# configure ccache
ln -s ~/opt/$CCACHE_ROOT/ccache ~/ccache/g++
ln -s ~/opt/$CCACHE_ROOT/ccache ~/ccache/gcc
ln -s ~/opt/$CCACHE_ROOT/ccache ~/ccache/arm-none-eabi-g++
ln -s ~/opt/$CCACHE_ROOT/ccache ~/ccache/arm-none-eabi-gcc
ln -s ~/opt/$CCACHE_ROOT/ccache ~/ccache/arm-linux-gnueabihf-g++
ln -s ~/opt/$CCACHE_ROOT/ccache ~/ccache/arm-linux-gnueabihf-gcc
ln -s ~/opt/$CCACHE_ROOT/ccache ~/ccache/clang++
ln -s ~/opt/$CCACHE_ROOT/ccache ~/ccache/clang
exportline="export PATH=$HOME/ccache"
exportline="${exportline}:$HOME/bin"
exportline="${exportline}:$HOME/.local/bin"
exportline="${exportline}:$HOME/opt/gcc-arm-none-eabi-4_9-2015q3/bin"
exportline="${exportline}:$HOME/opt/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin"
exportline="${exportline}:$HOME/opt/$CCACHE_ROOT"
exportline="${exportline}:\$PATH"
if grep -Fxq "$exportline" ~/.profile; then
echo nothing to do;
else
echo $exportline >> ~/.profile;
fi
. ~/.profile
pip install --user -U argparse empy pyserial pexpect future lxml
pip install --user -U mavproxy
pip install --user -U intelhex