From ba3bb2952f3de153737b28e4bcebf87ed0644d93 Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Sat, 13 Aug 2016 11:32:52 -0500 Subject: [PATCH] CI: test ARM Cortex targets closes #32 --- .travis.yml | 29 +++++++++++++++++++++++++++++ ci/env.sh | 12 ++++++++---- ci/install.sh | 9 +++++++-- ci/script.sh | 12 ++++++------ thumbv6m-none-eabi.json | 10 ++++++++++ thumbv7em-none-eabi.json | 8 ++++++++ thumbv7m-none-eabi.json | 8 ++++++++ 7 files changed, 76 insertions(+), 12 deletions(-) create mode 100644 thumbv6m-none-eabi.json create mode 100644 thumbv7em-none-eabi.json create mode 100644 thumbv7m-none-eabi.json diff --git a/.travis.yml b/.travis.yml index dae5b40..cb38006 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,6 +3,25 @@ sudo: false matrix: include: + - env: TARGET=thumbv6m-none-eabi + os: linux + dist: trusty + addons: + apt: + packages: &cortex + - binutils-arm-none-eabi + - env: TARGET=thumbv7m-none-eabi + os: linux + dist: trusty + addons: + apt: + packages: *cortex + - env: TARGET=thumbv7em-none-eabi + os: linux + dist: trusty + addons: + apt: + packages: *cortex - env: TARGET=i586-unknown-linux-gnu os: linux services: docker @@ -84,6 +103,16 @@ matrix: os: osx - env: TARGET=x86_64-unknown-linux-gnu os: linux + allow_failures: + # Issue #2. Flaky test + - env: TARGET=arm-unknown-linux-gnueabi + os: linux + # Issue #2. Flaky test + - env: TARGET=arm-unknown-linux-gnueabihf + os: linux + # Issue #2. Flaky test + - env: TARGET=armv7-unknown-linux-gnueabihf + os: linux before_install: - export PATH="$PATH:$HOME/.cargo/bin" diff --git a/ci/env.sh b/ci/env.sh index 472983f..17f5f9c 100644 --- a/ci/env.sh +++ b/ci/env.sh @@ -25,8 +25,6 @@ case $TARGET in export QEMU_LD_PREFIX=/usr/arm-linux-gnueabihf ;; armv7-unknown-linux-gnueabihf) - # See #2 - export DONT_RUN_TESTS=y export PREFIX=arm-linux-gnueabihf- export QEMU_LD_PREFIX=/usr/arm-linux-gnueabihf ;; @@ -65,13 +63,19 @@ case $TARGET in export QEMU_LD_PREFIX=/usr/powerpc64-linux-gnu ;; powerpc64le-unknown-linux-gnu) - # See #2 - export DONT_RUN_TESTS=y if [[ -z $DOCKER ]]; then export DOCKER=y fi export PREFIX=powerpc64le-linux-gnu- export QEMU=qemu-ppc64le export QEMU_LD_PREFIX=/usr/powerpc64le-linux-gnu + # Issue #2. QEMU doesn't work + export RUN_TESTS=n + ;; + thumbv*-none-eabi) + export CARGO=xargo + export PREFIX=arm-none-eabi- + # Bare metal targets. No `std` or `test` crates for these targets. + export RUN_TESTS=n ;; esac diff --git a/ci/install.sh b/ci/install.sh index 9c971c6..86dfefe 100644 --- a/ci/install.sh +++ b/ci/install.sh @@ -32,8 +32,6 @@ install_binutils() { osx) brew install binutils ;; - *) - ;; esac } @@ -79,6 +77,12 @@ add_rustup_target() { fi } +install_xargo() { + if [[ $CARGO == "xargo" ]]; then + curl -sf "https://raw.githubusercontent.com/japaric/rust-everywhere/master/install.sh" | bash -s -- --from japaric/xargo + fi +} + configure_cargo() { if [[ $PREFIX ]]; then ${PREFIX}gcc -v @@ -99,6 +103,7 @@ main() { install_c_toolchain install_rust add_rustup_target + install_xargo configure_cargo fi } diff --git a/ci/script.sh b/ci/script.sh index 099e42e..f68b72b 100644 --- a/ci/script.sh +++ b/ci/script.sh @@ -3,8 +3,8 @@ set -ex . $(dirname $0)/env.sh build() { - cargo build --target $TARGET - cargo build --target $TARGET --release + ${CARGO:-cargo} build --target $TARGET + ${CARGO:-cargo} build --target $TARGET --release } run_tests() { @@ -14,14 +14,14 @@ run_tests() { if [[ $QEMU ]]; then cargo test --target $TARGET --no-run - if [[ -z $DONT_RUN_TESTS ]]; then + if [[ ${RUN_TESTS:-y} == "y" ]]; then $QEMU target/**/debug/rustc_builtins-* fi cargo test --target $TARGET --release --no-run - if [[ -z $DONT_RUN_TESTS ]]; then + if [[ ${RUN_TESTS:-y} == "y" ]]; then $QEMU target/**/release/rustc_builtins-* fi - elif [[ -z $DONT_RUN_TESTS ]]; then + elif [[ ${RUN_TESTS:-y} == "y" ]]; then cargo test --target $TARGET cargo test --target $TARGET --release fi @@ -50,8 +50,8 @@ main() { bash ci/script.sh' else build - run_tests inspect + run_tests fi } diff --git a/thumbv6m-none-eabi.json b/thumbv6m-none-eabi.json new file mode 100644 index 0000000..9c92d4e --- /dev/null +++ b/thumbv6m-none-eabi.json @@ -0,0 +1,10 @@ +{ + "arch": "arm", + "data-layout": "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64", + "features": "+strict-align", + "llvm-target": "thumbv6m-none-eabi", + "max-atomic-width": 0, + "os": "none", + "target-endian": "little", + "target-pointer-width": "32" +} diff --git a/thumbv7em-none-eabi.json b/thumbv7em-none-eabi.json new file mode 100644 index 0000000..ce49c83 --- /dev/null +++ b/thumbv7em-none-eabi.json @@ -0,0 +1,8 @@ +{ + "arch": "arm", + "data-layout": "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64", + "llvm-target": "thumbv7em-none-eabi", + "os": "none", + "target-endian": "little", + "target-pointer-width": "32" +} diff --git a/thumbv7m-none-eabi.json b/thumbv7m-none-eabi.json new file mode 100644 index 0000000..313a5e6 --- /dev/null +++ b/thumbv7m-none-eabi.json @@ -0,0 +1,8 @@ +{ + "arch": "arm", + "data-layout": "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64", + "llvm-target": "thumbv7m-none-eabi", + "os": "none", + "target-endian": "little", + "target-pointer-width": "32" +}