Skip to content

Commit 7e04b20

Browse files
author
Jorge Aparicio
authored
Merge pull request #18 from japaric/ppc64le
CI: test powerpc64le-unknown-linux-gnu
2 parents 2cf12b0 + 42922d2 commit 7e04b20

File tree

4 files changed

+73
-11
lines changed

4 files changed

+73
-11
lines changed

.travis.yml

+7
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,10 @@ matrix:
6060
- libc6-powerpc-cross
6161
- libc6-dev-powerpc-cross
6262
- qemu-user-static
63+
- env: TARGET=powerpc64le-unknown-linux-gnu
64+
os: linux
65+
services: docker
66+
sudo: required
6367
- env: TARGET=x86_64-apple-darwin
6468
os: osx
6569
- env: TARGET=x86_64-unknown-linux-gnu
@@ -68,6 +72,9 @@ matrix:
6872
# FIXME(#2)
6973
- env: TARGET=armv7-unknown-linux-gnueabihf
7074
os: linux
75+
# FIXME QEMU blows up
76+
- env: TARGET=powerpc64le-unknown-linux-gnu
77+
os: linux
7178

7279
before_install:
7380
- export PATH="$PATH:$HOME/.cargo/bin"

ci/env.sh

+9
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,13 @@ case $TARGET in
2828
export PREFIX=powerpc-linux-gnu-
2929
export QEMU_LD_PREFIX=/usr/powerpc-linux-gnu
3030
;;
31+
powerpc64le-unknown-linux-gnu)
32+
# NOTE $DOCKER values: 'y' (yes, call docker), 'i' (inside a docker container) or 'n' ("no)
33+
if [[ -z $DOCKER ]]; then
34+
export DOCKER=y
35+
fi
36+
export PREFIX=powerpc64le-linux-gnu-
37+
export QEMU=qemu-ppc64le
38+
export QEMU_LD_PREFIX=/usr/powerpc64le-linux-gnu
39+
;;
3140
esac

ci/install.sh

+31-6
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,23 @@ set -ex
22

33
. $(dirname $0)/env.sh
44

5+
install_deps() {
6+
if [[ ${DOCKER} == "i" ]]; then
7+
apt-get update
8+
apt-get install -y --no-install-recommends \
9+
ca-certificates curl
10+
fi
11+
}
12+
13+
install_qemu() {
14+
case $TARGET in
15+
powerpc64le-unknown-linux-gnu)
16+
apt-get install -y --no-install-recommends \
17+
qemu-user
18+
;;
19+
esac
20+
}
21+
522
install_binutils() {
623
case $TRAVIS_OS_NAME in
724
osx)
@@ -16,7 +33,11 @@ install_c_toolchain() {
1633
case $TARGET in
1734
aarch64-unknown-linux-gnu)
1835
sudo apt-get install -y --no-install-recommends \
19-
gcc-aarch64-linux-gnu libc6-arm64-cross libc6-dev-arm64-cross
36+
gcc-aarch64-linux-gnu libc6-dev-arm64-cross
37+
;;
38+
powerpc64le-unknown-linux-gnu)
39+
apt-get install -y --no-install-recommends \
40+
gcc-powerpc64le-linux-gnu libc6-dev-ppc64el-cross
2041
;;
2142
*)
2243
;;
@@ -49,11 +70,15 @@ EOF
4970
}
5071

5172
main() {
52-
install_binutils
53-
install_c_toolchain
54-
install_rust
55-
add_rustup_target
56-
configure_cargo
73+
if [[ ${DOCKER:-n} != "y" ]]; then
74+
install_deps
75+
install_qemu
76+
install_binutils
77+
install_c_toolchain
78+
install_rust
79+
add_rustup_target
80+
configure_cargo
81+
fi
5782
}
5883

5984
main

ci/script.sh

+26-5
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,15 @@ run_tests() {
1212
export RUST_TEST_THREADS=1
1313
fi
1414

15-
cargo test --target $TARGET
16-
cargo test --target $TARGET --release
15+
if [[ $QEMU ]]; then
16+
cargo test --target $TARGET --no-run
17+
$QEMU target/**/debug/rustc_builtins-*
18+
cargo test --target $TARGET --release --no-run
19+
$QEMU target/**/release/rustc_builtins-*
20+
else
21+
cargo test --target $TARGET
22+
cargo test --target $TARGET --release
23+
fi
1724
}
1825

1926
inspect() {
@@ -25,9 +32,23 @@ inspect() {
2532
}
2633

2734
main() {
28-
build
29-
run_tests
30-
inspect
35+
if [[ $DOCKER == "y" ]]; then
36+
docker run \
37+
-e DOCKER=i \
38+
-e TARGET=$TARGET \
39+
-e TRAVIS_OS_NAME=$TRAVIS_OS_NAME \
40+
-v $(pwd):/mnt \
41+
ubuntu:16.04 \
42+
sh -c 'set -ex;
43+
cd /mnt;
44+
export PATH="$PATH:$HOME/.cargo/bin";
45+
bash ci/install.sh;
46+
bash ci/script.sh'
47+
else
48+
build
49+
run_tests
50+
inspect
51+
fi
3152
}
3253

3354
main

0 commit comments

Comments
 (0)