Skip to content

Commit

Permalink
Improve ARM configuration on Travis CI.
Browse files Browse the repository at this point in the history
Use ubuntu's gcc packages for 32 and 64-bit ARM. Use hard-float on
32-bit ARM. Use travis_wait on slow arm tests.

I agree to license my contributions to each file under the terms given
at the top of each file I changed.
  • Loading branch information
pietro authored and briansmith committed May 13, 2016
1 parent 6ef767f commit 37892c5
Show file tree
Hide file tree
Showing 2 changed files with 62 additions and 37 deletions.
66 changes: 55 additions & 11 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,41 +10,89 @@ matrix:
rust: stable
sudo: required
dist: trusty
addons:
apt:
packages:
- g++-aarch64-linux-gnu
- gcc-aarch64-linux-gnu
- libc6-dev-arm64-cross

- env: TARGET_X=aarch64-unknown-linux-gnu CC_X=aarch64-linux-gnu-gcc CXX_X=aarch64-linux-gnu-g++ MODE_X=RELWITHDEBINFO KCOV=0
rust: stable
sudo: required
dist: trusty
addons:
apt:
packages:
- g++-aarch64-linux-gnu
- gcc-aarch64-linux-gnu
- libc6-dev-arm64-cross

- env: TARGET_X=aarch64-unknown-linux-gnu CC_X=aarch64-linux-gnu-gcc CXX_X=aarch64-linux-gnu-g++ MODE_X=DEBUG KCOV=0
rust: nightly
sudo: required
dist: trusty
addons:
apt:
packages:
- g++-aarch64-linux-gnu
- gcc-aarch64-linux-gnu
- libc6-dev-arm64-cross

- env: TARGET_X=aarch64-unknown-linux-gnu CC_X=aarch64-linux-gnu-gcc CXX_X=aarch64-linux-gnu-g++ MODE_X=RELWITHDEBINFO KCOV=0
rust: nightly
sudo: required
dist: trusty
addons:
apt:
packages:
- g++-aarch64-linux-gnu
- gcc-aarch64-linux-gnu
- libc6-dev-arm64-cross

- env: TARGET_X=arm-unknown-linux-gnueabi CC_X=arm-linux-gnueabi-gcc CXX_X=arm-linux-gnueabi-g++ MODE_X=DEBUG KCOV=0
- env: TARGET_X=arm-unknown-linux-gnueabihf CC_X=arm-linux-gnueabihf-gcc CXX_X=arm-linux-gnueabihf-g++ MODE_X=DEBUG KCOV=0
rust: stable
sudo: required
dist: trusty
addons:
apt:
packages:
- g++-arm-linux-gnueabihf
- gcc-arm-linux-gnueabihf
- libc6-dev-armhf-cross

- env: TARGET_X=arm-unknown-linux-gnueabi CC_X=arm-linux-gnueabi-gcc CXX_X=arm-linux-gnueabi-g++ MODE_X=RELWITHDEBINFO KCOV=0
- env: TARGET_X=arm-unknown-linux-gnueabihf CC_X=arm-linux-gnueabihf-gcc CXX_X=arm-linux-gnueabihf-g++ MODE_X=RELWITHDEBINFO KCOV=0
rust: stable
sudo: required
dist: trusty
addons:
apt:
packages:
- g++-arm-linux-gnueabihf
- gcc-arm-linux-gnueabihf
- libc6-dev-armhf-cross

- env: TARGET_X=arm-unknown-linux-gnueabi CC_X=arm-linux-gnueabi-gcc CXX_X=arm-linux-gnueabi-g++ MODE_X=DEBUG KCOV=0
- env: TARGET_X=arm-unknown-linux-gnueabihf CC_X=arm-linux-gnueabihf-gcc CXX_X=arm-linux-gnueabihf-g++ MODE_X=DEBUG KCOV=0
rust: nightly
sudo: required
dist: trusty
addons:
apt:
packages:
- g++-arm-linux-gnueabihf
- gcc-arm-linux-gnueabihf
- libc6-dev-armhf-cross

- env: TARGET_X=arm-unknown-linux-gnueabi CC_X=arm-linux-gnueabi-gcc CXX_X=arm-linux-gnueabi-g++ MODE_X=RELWITHDEBINFO KCOV=0
- env: TARGET_X=arm-unknown-linux-gnueabihf CC_X=arm-linux-gnueabihf-gcc CXX_X=arm-linux-gnueabihf-g++ MODE_X=RELWITHDEBINFO KCOV=0
rust: nightly
sudo: required
dist: trusty
addons:
apt:
packages:
- g++-arm-linux-gnueabihf
- gcc-arm-linux-gnueabihf
- libc6-dev-armhf-cross

# The lines from "# BEGIN GENERATED" through "# END GENERATED" are
# generated by running |python mk/update-travis-yml.py|. Any changes
Expand Down Expand Up @@ -492,13 +540,9 @@ matrix:
# END GENERATED

allow_failures:
- env: TARGET_X=arm-unknown-linux-gnueabi CC_X=arm-linux-gnueabi-gcc CXX_X=arm-linux-gnueabi-g++ MODE_X=DEBUG KCOV=0
- env: TARGET_X=arm-unknown-linux-gnueabi CC_X=arm-linux-gnueabi-gcc CXX_X=arm-linux-gnueabi-g++ MODE_X=RELWITHDEBINFO KCOV=0
- env: TARGET_X=arm-unknown-linux-gnueabi CC_X=arm-linux-gnueabi-gcc CXX_X=arm-linux-gnueabi-g++ MODE_X=DEBUG KCOV=0
- env: TARGET_X=arm-unknown-linux-gnueabi CC_X=arm-linux-gnueabi-gcc CXX_X=arm-linux-gnueabi-g++ MODE_X=RELWITHDEBINFO KCOV=0
- env: TARGET_X=aarch64-unknown-linux-gnu CC_X=aarch64-linux-gnu-gcc CXX_X=aarch64-linux-gnu-g++ MODE_X=DEBUG KCOV=0
- env: TARGET_X=aarch64-unknown-linux-gnu CC_X=aarch64-linux-gnu-gcc CXX_X=aarch64-linux-gnu-g++ MODE_X=RELWITHDEBINFO KCOV=0
- env: TARGET_X=arm-unknown-linux-gnueabihf CC_X=arm-linux-gnueabihf-gcc CXX_X=arm-linux-gnueabihf-g++ MODE_X=DEBUG KCOV=0
- env: TARGET_X=arm-unknown-linux-gnueabihf CC_X=arm-linux-gnueabihf-gcc CXX_X=arm-linux-gnueabihf-g++ MODE_X=RELWITHDEBINFO KCOV=0
- env: TARGET_X=aarch64-unknown-linux-gnu CC_X=aarch64-linux-gnu-gcc CXX_X=aarch64-linux-gnu-g++ MODE_X=DEBUG KCOV=0
- env: TARGET_X=aarch64-unknown-linux-gnu CC_X=aarch64-linux-gnu-gcc CXX_X=aarch64-linux-gnu-g++ MODE_X=RELWITHDEBINFO KCOV=0

script: mk/travis.sh
script: if [[ "$TARGET_X" == "arm-unknown-linux-gnueabihf" ]]; then travis_wait 60 mk/travis.sh; else mk/travis.sh; fi
33 changes: 7 additions & 26 deletions mk/travis.sh
Original file line number Diff line number Diff line change
Expand Up @@ -21,30 +21,22 @@ printenv

case $TARGET_X in
aarch64-unknown-linux-gnu)
DL_TARGET=aarch64-linux-gnu
DL_DIGEST=b9137008744d9009877f662dbac7481d673cdcb1798e727e325a37c98a0f63da
export QEMU_LD_PREFIX=/usr/aarch64-linux-gnu
;;
arm-unknown-linux-gnueabi)
DL_TARGET=arm-linux-gnueabi
DL_DIGEST=1c11a944d3e515405e01effc129f3bbf24effb300effa10bf486c9119378ccd7
arm-unknown-linux-gnueabihf)
export QEMU_LD_PREFIX=/usr/arm-linux-gnueabihf
;;
*)
;;
esac

if [[ -n ${DL_TARGET-} ]]; then
if [[ "$TARGET_X" =~ ^(arm|aarch64) ]]; then
# We need a newer QEMU than Travis has.
# sudo is needed until the PPA and its packages are whitelisted.
# See https://github.com/travis-ci/apt-source-whitelist/issues/271
sudo add-apt-repository ppa:pietro-monteiro/qemu-backport -y
sudo apt-get update -qq
sudo apt-get install binfmt-support qemu-user-binfmt -y

DL_ROOT=https://releases.linaro.org/components/toolchain/binaries/
DL_RELEASE=5.1-2015.08
DL_BASENAME=gcc-linaro-$DL_RELEASE-x86_64_$DL_TARGET
wget $DL_ROOT/$DL_RELEASE/$DL_TARGET/$DL_BASENAME.tar.xz
echo "$DL_DIGEST $DL_BASENAME.tar.xz" | sha256sum -c
tar xf $DL_BASENAME.tar.xz
export PATH=$PWD/$DL_BASENAME/bin:$PATH
sudo apt-get install --no-install-recommends binfmt-support qemu-user-binfmt -y
fi

if [[ ! "$TARGET_X" =~ "x86_64-" ]]; then
Expand All @@ -69,17 +61,6 @@ rustc --version

if [[ "$MODE_X" == "RELWITHDEBINFO" ]]; then mode=--release; fi

case $TARGET_X in
aarch64-unknown-linux-gnu)
export QEMU_LD_PREFIX=$DL_BASENAME/aarch64-linux-gnu/libc
;;
arm-unknown-linux-gnueabi)
export QEMU_LD_PREFIX=$DL_BASENAME/arm-linux-gnueabi/libc
;;
*)
;;
esac

CC=$CC_X CXX=$CXX_X cargo test -j2 ${mode-} --verbose --target=$TARGET_X

if [[ "$KCOV" == "1" ]]; then
Expand Down

0 comments on commit 37892c5

Please sign in to comment.