From ba3bb2952f3de153737b28e4bcebf87ed0644d93 Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Sat, 13 Aug 2016 11:32:52 -0500 Subject: [PATCH 1/7] 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" +} From c6fab2198276b6cdcca0319fc22f071ac31f1dac Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Sat, 13 Aug 2016 12:21:33 -0500 Subject: [PATCH 2/7] binutils -> gcc? --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index cb38006..f71438c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,7 +9,7 @@ matrix: addons: apt: packages: &cortex - - binutils-arm-none-eabi + - gcc-arm-none-eabi - env: TARGET=thumbv7m-none-eabi os: linux dist: trusty From e7b10e53acfe29b3c5811e5289f4f9ba09a396c0 Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Sat, 13 Aug 2016 12:41:50 -0500 Subject: [PATCH 3/7] install binutils manually --- .travis.yml | 13 +++---------- ci/install.sh | 7 +++++++ 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.travis.yml b/.travis.yml index f71438c..4fe9705 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,22 +6,15 @@ matrix: - env: TARGET=thumbv6m-none-eabi os: linux dist: trusty - addons: - apt: - packages: &cortex - - gcc-arm-none-eabi + sudo: required - env: TARGET=thumbv7m-none-eabi os: linux dist: trusty - addons: - apt: - packages: *cortex + sudo: required - env: TARGET=thumbv7em-none-eabi os: linux dist: trusty - addons: - apt: - packages: *cortex + sudo: required - env: TARGET=i586-unknown-linux-gnu os: linux services: docker diff --git a/ci/install.sh b/ci/install.sh index 86dfefe..57131eb 100644 --- a/ci/install.sh +++ b/ci/install.sh @@ -33,6 +33,13 @@ install_binutils() { brew install binutils ;; esac + + case $TARGET in + thumbv*-none-eabi) + sudo apt-get install -y --no-install-recommends \ + binutils-arm-none-eabi + ;; + esac } install_c_toolchain() { From 10ea089eb23bf48e0d472ea299617314a3c4f479 Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Sat, 13 Aug 2016 12:45:19 -0500 Subject: [PATCH 4/7] no rust-std for these targets --- ci/install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/install.sh b/ci/install.sh index 57131eb..b1e596d 100644 --- a/ci/install.sh +++ b/ci/install.sh @@ -79,7 +79,7 @@ install_rust() { } add_rustup_target() { - if [[ $TARGET != $HOST ]]; then + if [[ $TARGET != $HOST && ${CARGO:-cargo} == "cargo" ]]; then rustup target add $TARGET fi } From 164b21991cbaf1ac3c3949726e6fa2e39cda2eb4 Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Sat, 13 Aug 2016 12:47:59 -0500 Subject: [PATCH 5/7] binutils -> gcc --- ci/install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/install.sh b/ci/install.sh index b1e596d..8486eb8 100644 --- a/ci/install.sh +++ b/ci/install.sh @@ -37,7 +37,7 @@ install_binutils() { case $TARGET in thumbv*-none-eabi) sudo apt-get install -y --no-install-recommends \ - binutils-arm-none-eabi + gcc-arm-none-eabi ;; esac } From 2f9c64a5775e60d2bfe831f661ccb68ed442fc96 Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Sat, 13 Aug 2016 12:55:09 -0500 Subject: [PATCH 6/7] change Xargo installation path --- ci/install.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ci/install.sh b/ci/install.sh index 8486eb8..84441ce 100644 --- a/ci/install.sh +++ b/ci/install.sh @@ -86,7 +86,8 @@ add_rustup_target() { install_xargo() { if [[ $CARGO == "xargo" ]]; then - curl -sf "https://raw.githubusercontent.com/japaric/rust-everywhere/master/install.sh" | bash -s -- --from japaric/xargo + curl -sf "https://raw.githubusercontent.com/japaric/rust-everywhere/master/install.sh" | \ + bash -s -- --from japaric/xargo --at $HOME/.cargo/bin fi } From 11cd95f25df43daa7bc9ab2e10a84fbbf46b9e59 Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Sat, 13 Aug 2016 12:58:44 -0500 Subject: [PATCH 7/7] install libssh2 --- ci/install.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ci/install.sh b/ci/install.sh index 84441ce..3bd806d 100644 --- a/ci/install.sh +++ b/ci/install.sh @@ -86,6 +86,8 @@ add_rustup_target() { install_xargo() { if [[ $CARGO == "xargo" ]]; then + sudo apt-get install -y --no-install-recommends \ + libssh2-1 curl -sf "https://raw.githubusercontent.com/japaric/rust-everywhere/master/install.sh" | \ bash -s -- --from japaric/xargo --at $HOME/.cargo/bin fi