Travis CIで ARMツールチェインを使う。
はまったのでメモしときます。
-
ARMツールチェインはバイナリ配布されている GCC ARM Embedded in Launchpadを使います。
-
Travis CIは64bit環境で動作しています。
-
GCC ARM Embeddedは32bit環境でコンパイルされたバイナリです。
-
なので32bitのライブラリを別途インストールする必要があるので libc6-i386 のパッケージをインストールします。
-
あとは、GCC ARM Embedded のパッケージを展開してbinにPATHを通せばよいです。
-
さらに、PX4 のちょっと前のtravis.yml を参考にして複数バージョンのgccでコンパイルをしています。https://github.com/PX4/Firmware/blob/584165def20f3a354edc9393af2308a736c8d544/.travis.yml
.travis.yml
language: c
matrix:
fast_finish: true
include:
- os: linux
sudo: false
env: GCC_VER=4.8
- os: linux
sudo: false
env: GCC_VER=4.9
- os: linux
sudo: false
env: GCC_VER=5.0
addons:
apt:
packages:
- libc6-i386
before_install:
- if [ "${TRAVIS_OS_NAME}" = "linux" ]; then
pushd .
&& cd ~ && mkdir gcc && cd gcc
&& if [ "$GCC_VER" = "4.8" ]; then GCC_URL="https://launchpadlibrarian.net/186124160/gcc-arm-none-eabi-4_8-2014q3-20140805-linux.tar.bz2" ; fi
&& if [ "$GCC_VER" = "4.9" ]; then GCC_URL="https://launchpad.net/gcc-arm-embedded/4.9/4.9-2015-q3-update/+download/gcc-arm-none-eabi-4_9-2015q3-20150921-linux.tar.bz2" ; fi
&& if [ "$GCC_VER" = "5.0" ]; then GCC_URL="https://launchpad.net/gcc-arm-embedded/5.0/5-2016-q1-update/+download/gcc-arm-none-eabi-5_3-2016q1-20160330-linux.tar.bz2" ; fi
&& wget -O gcc.tar.bz2 ${GCC_URL}
&& tar -jxf gcc.tar.bz2 --strip 1
&& exportline="export PATH=\$HOME/gcc/bin:\$PATH"
&& if grep -Fxq "$exportline" ~/.profile; then echo nothing to do ; else echo $exportline >> ~/.profile; fi
&& . ~/.profile
&& popd
;
fi
before_script:
- arm-none-eabi-gcc --version
script:
- make
notifications:
email: false
- でもビルドの度にバイナリをwgetして大丈夫なのかな、と心配ですね。