Skip to content

Commit b4e474f

Browse files
author
Jorge Aparicio
authored
Merge pull request #35 from japaric/cortex
CI: test ARM Cortex targets
2 parents ac9f96f + 11cd95f commit b4e474f

7 files changed

+79
-12
lines changed

.travis.yml

+22
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,18 @@ sudo: false
33

44
matrix:
55
include:
6+
- env: TARGET=thumbv6m-none-eabi
7+
os: linux
8+
dist: trusty
9+
sudo: required
10+
- env: TARGET=thumbv7m-none-eabi
11+
os: linux
12+
dist: trusty
13+
sudo: required
14+
- env: TARGET=thumbv7em-none-eabi
15+
os: linux
16+
dist: trusty
17+
sudo: required
618
- env: TARGET=i586-unknown-linux-gnu
719
os: linux
820
services: docker
@@ -84,6 +96,16 @@ matrix:
8496
os: osx
8597
- env: TARGET=x86_64-unknown-linux-gnu
8698
os: linux
99+
allow_failures:
100+
# Issue #2. Flaky test
101+
- env: TARGET=arm-unknown-linux-gnueabi
102+
os: linux
103+
# Issue #2. Flaky test
104+
- env: TARGET=arm-unknown-linux-gnueabihf
105+
os: linux
106+
# Issue #2. Flaky test
107+
- env: TARGET=armv7-unknown-linux-gnueabihf
108+
os: linux
87109

88110
before_install:
89111
- export PATH="$PATH:$HOME/.cargo/bin"

ci/env.sh

+8-4
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,6 @@ case $TARGET in
2525
export QEMU_LD_PREFIX=/usr/arm-linux-gnueabihf
2626
;;
2727
armv7-unknown-linux-gnueabihf)
28-
# See #2
29-
export DONT_RUN_TESTS=y
3028
export PREFIX=arm-linux-gnueabihf-
3129
export QEMU_LD_PREFIX=/usr/arm-linux-gnueabihf
3230
;;
@@ -65,13 +63,19 @@ case $TARGET in
6563
export QEMU_LD_PREFIX=/usr/powerpc64-linux-gnu
6664
;;
6765
powerpc64le-unknown-linux-gnu)
68-
# See #2
69-
export DONT_RUN_TESTS=y
7066
if [[ -z $DOCKER ]]; then
7167
export DOCKER=y
7268
fi
7369
export PREFIX=powerpc64le-linux-gnu-
7470
export QEMU=qemu-ppc64le
7571
export QEMU_LD_PREFIX=/usr/powerpc64le-linux-gnu
72+
# Issue #2. QEMU doesn't work
73+
export RUN_TESTS=n
74+
;;
75+
thumbv*-none-eabi)
76+
export CARGO=xargo
77+
export PREFIX=arm-none-eabi-
78+
# Bare metal targets. No `std` or `test` crates for these targets.
79+
export RUN_TESTS=n
7680
;;
7781
esac

ci/install.sh

+17-2
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,12 @@ install_binutils() {
3232
osx)
3333
brew install binutils
3434
;;
35-
*)
35+
esac
36+
37+
case $TARGET in
38+
thumbv*-none-eabi)
39+
sudo apt-get install -y --no-install-recommends \
40+
gcc-arm-none-eabi
3641
;;
3742
esac
3843
}
@@ -74,11 +79,20 @@ install_rust() {
7479
}
7580

7681
add_rustup_target() {
77-
if [[ $TARGET != $HOST ]]; then
82+
if [[ $TARGET != $HOST && ${CARGO:-cargo} == "cargo" ]]; then
7883
rustup target add $TARGET
7984
fi
8085
}
8186

87+
install_xargo() {
88+
if [[ $CARGO == "xargo" ]]; then
89+
sudo apt-get install -y --no-install-recommends \
90+
libssh2-1
91+
curl -sf "https://raw.githubusercontent.com/japaric/rust-everywhere/master/install.sh" | \
92+
bash -s -- --from japaric/xargo --at $HOME/.cargo/bin
93+
fi
94+
}
95+
8296
configure_cargo() {
8397
if [[ $PREFIX ]]; then
8498
${PREFIX}gcc -v
@@ -99,6 +113,7 @@ main() {
99113
install_c_toolchain
100114
install_rust
101115
add_rustup_target
116+
install_xargo
102117
configure_cargo
103118
fi
104119
}

ci/script.sh

+6-6
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ set -ex
33
. $(dirname $0)/env.sh
44

55
build() {
6-
cargo build --target $TARGET
7-
cargo build --target $TARGET --release
6+
${CARGO:-cargo} build --target $TARGET
7+
${CARGO:-cargo} build --target $TARGET --release
88
}
99

1010
run_tests() {
@@ -14,14 +14,14 @@ run_tests() {
1414

1515
if [[ $QEMU ]]; then
1616
cargo test --target $TARGET --no-run
17-
if [[ -z $DONT_RUN_TESTS ]]; then
17+
if [[ ${RUN_TESTS:-y} == "y" ]]; then
1818
$QEMU target/**/debug/rustc_builtins-*
1919
fi
2020
cargo test --target $TARGET --release --no-run
21-
if [[ -z $DONT_RUN_TESTS ]]; then
21+
if [[ ${RUN_TESTS:-y} == "y" ]]; then
2222
$QEMU target/**/release/rustc_builtins-*
2323
fi
24-
elif [[ -z $DONT_RUN_TESTS ]]; then
24+
elif [[ ${RUN_TESTS:-y} == "y" ]]; then
2525
cargo test --target $TARGET
2626
cargo test --target $TARGET --release
2727
fi
@@ -50,8 +50,8 @@ main() {
5050
bash ci/script.sh'
5151
else
5252
build
53-
run_tests
5453
inspect
54+
run_tests
5555
fi
5656
}
5757

thumbv6m-none-eabi.json

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"arch": "arm",
3+
"data-layout": "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64",
4+
"features": "+strict-align",
5+
"llvm-target": "thumbv6m-none-eabi",
6+
"max-atomic-width": 0,
7+
"os": "none",
8+
"target-endian": "little",
9+
"target-pointer-width": "32"
10+
}

thumbv7em-none-eabi.json

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"arch": "arm",
3+
"data-layout": "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64",
4+
"llvm-target": "thumbv7em-none-eabi",
5+
"os": "none",
6+
"target-endian": "little",
7+
"target-pointer-width": "32"
8+
}

thumbv7m-none-eabi.json

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"arch": "arm",
3+
"data-layout": "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64",
4+
"llvm-target": "thumbv7m-none-eabi",
5+
"os": "none",
6+
"target-endian": "little",
7+
"target-pointer-width": "32"
8+
}

0 commit comments

Comments
 (0)