Skip to content

Commit b33ad9b

Browse files
author
Jorge Aparicio
authored
Merge pull request #1 from japaric/ci
travis CI
2 parents e82b7be + 0cc4667 commit b33ad9b

File tree

4 files changed

+190
-0
lines changed

4 files changed

+190
-0
lines changed

.travis.yml

+71
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
language: generic
2+
sudo: false
3+
4+
matrix:
5+
include:
6+
- env: TARGET=aarch64-unknown-linux-gnu
7+
os: linux
8+
dist: trusty
9+
sudo: required
10+
addons:
11+
apt:
12+
packages:
13+
- binfmt-support
14+
- qemu-user-static
15+
- env: TARGET=arm-unknown-linux-gnueabi
16+
os: linux
17+
sudo: required
18+
addons:
19+
apt:
20+
packages:
21+
- binfmt-support
22+
- gcc-arm-linux-gnueabi
23+
- libc6-armel-cross
24+
- libc6-dev-armel-cross
25+
- qemu-user-static
26+
- env: TARGET=arm-unknown-linux-gnueabihf
27+
os: linux
28+
sudo: required
29+
addons:
30+
apt:
31+
packages: &armhf
32+
- binfmt-support
33+
- gcc-arm-linux-gnueabihf
34+
- libc6-armhf-cross
35+
- libc6-dev-armhf-cross
36+
- qemu-user-static
37+
- env: TARGET=armv7-unknown-linux-gnueabihf
38+
os: linux
39+
sudo: required
40+
addons:
41+
apt:
42+
packages: *armhf
43+
- env: TARGET=i686-apple-darwin
44+
os: osx
45+
- env: TARGET=i686-unknown-linux-gnu
46+
os: linux
47+
addons:
48+
apt:
49+
packages:
50+
- gcc-multilib
51+
- env: TARGET=x86_64-apple-darwin
52+
os: osx
53+
- env: TARGET=x86_64-unknown-linux-gnu
54+
os: linux
55+
56+
before_install:
57+
- export PATH="$PATH:$HOME/.cargo/bin"
58+
59+
install:
60+
- bash ci/install.sh
61+
62+
script:
63+
- bash ci/script.sh
64+
65+
branches:
66+
only:
67+
- master
68+
69+
notifications:
70+
email:
71+
on_success: never

ci/env.sh

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
case $TRAVIS_OS_NAME in
2+
linux)
3+
export HOST=x86_64-unknown-linux-gnu
4+
export NM=nm
5+
export OBJDUMP=objdump
6+
;;
7+
osx)
8+
export HOST=x86_64-apple-darwin
9+
export NM=gnm
10+
export OBJDUMP=gobjdump
11+
;;
12+
esac
13+
14+
case $TARGET in
15+
aarch64-unknown-linux-gnu)
16+
export PREFIX=aarch64-linux-gnu-
17+
export QEMU_LD_PREFIX=/usr/aarch64-linux-gnu
18+
;;
19+
arm*-unknown-linux-gnueabi)
20+
export PREFIX=arm-linux-gnueabi-
21+
export QEMU_LD_PREFIX=/usr/arm-linux-gnueabi
22+
;;
23+
arm*-unknown-linux-gnueabihf)
24+
export PREFIX=arm-linux-gnueabihf-
25+
export QEMU_LD_PREFIX=/usr/arm-linux-gnueabihf
26+
;;
27+
esac

ci/install.sh

+59
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
set -ex
2+
3+
. $(dirname $0)/env.sh
4+
5+
install_binutils() {
6+
case $TRAVIS_OS_NAME in
7+
osx)
8+
brew install binutils
9+
;;
10+
*)
11+
;;
12+
esac
13+
}
14+
15+
install_c_toolchain() {
16+
case $TARGET in
17+
aarch64-unknown-linux-gnu)
18+
sudo apt-get install -y --no-install-recommends \
19+
gcc-aarch64-linux-gnu libc6-arm64-cross libc6-dev-arm64-cross
20+
;;
21+
*)
22+
;;
23+
esac
24+
}
25+
26+
install_rust() {
27+
curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain=nightly
28+
29+
rustc -V
30+
cargo -V
31+
}
32+
33+
add_rustup_target() {
34+
if [[ $TARGET != $HOST ]]; then
35+
rustup target add $TARGET
36+
fi
37+
}
38+
39+
configure_cargo() {
40+
if [[ $PREFIX ]]; then
41+
${PREFIX}gcc -v
42+
43+
mkdir -p .cargo
44+
cat >>.cargo/config <<EOF
45+
[target.$TARGET]
46+
linker = "${PREFIX}gcc"
47+
EOF
48+
fi
49+
}
50+
51+
main() {
52+
install_binutils
53+
install_c_toolchain
54+
install_rust
55+
add_rustup_target
56+
configure_cargo
57+
}
58+
59+
main

ci/script.sh

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
set -ex
2+
3+
. $(dirname $0)/env.sh
4+
5+
build() {
6+
cargo build --target $TARGET
7+
cargo build --target $TARGET --release
8+
}
9+
10+
run_tests() {
11+
if [[ $QEMU_LD_PREFIX ]]; then
12+
export RUST_TEST_THREADS=1
13+
fi
14+
15+
cargo test --target $TARGET
16+
cargo test --target $TARGET --release
17+
}
18+
19+
inspect() {
20+
$PREFIX$NM -g --defined-only target/**/debug/*.rlib
21+
set +e
22+
$PREFIX$OBJDUMP -Cd target/**/debug/*.rlib
23+
$PREFIX$OBJDUMP -Cd target/**/release/*.rlib
24+
set -e
25+
}
26+
27+
main() {
28+
build
29+
run_tests
30+
inspect
31+
}
32+
33+
main

0 commit comments

Comments
 (0)