From 178fa2a806c0e1d12b0df9183505c6c36c14ab58 Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Sun, 7 Aug 2016 16:55:30 -0500 Subject: [PATCH 01/12] travis CI --- library/compiler-builtins/.travis.yml | 61 +++++++++++++++++++++++++ library/compiler-builtins/ci/env.sh | 23 ++++++++++ library/compiler-builtins/ci/install.sh | 31 +++++++++++++ library/compiler-builtins/ci/script.sh | 48 +++++++++++++++++++ 4 files changed, 163 insertions(+) create mode 100644 library/compiler-builtins/.travis.yml create mode 100644 library/compiler-builtins/ci/env.sh create mode 100644 library/compiler-builtins/ci/install.sh create mode 100644 library/compiler-builtins/ci/script.sh diff --git a/library/compiler-builtins/.travis.yml b/library/compiler-builtins/.travis.yml new file mode 100644 index 000000000000..63faac24cdea --- /dev/null +++ b/library/compiler-builtins/.travis.yml @@ -0,0 +1,61 @@ +language: generic + +matrix: + include: + - env: TARGET=aarch64-unknown-linux-gnu + os: linux + dist: trusty + sudo: required + addons: + apt: + packages: + - binfmt-support + - qemu-user-static + - env: TARGET=arm-unknown-linux-gnueabi + os: linux + sudo: required + addons: + apt: + packages: + - binfmt-support + - gcc-arm-linux-gnueabi + - libc6-armel-cross + - qemu-user-static + - env: TARGET=arm-unknown-linux-gnueabihf + os: linux + sudo: required + addons: + apt: + packages: &armhf + - binfmt-support + - gcc-arm-linux-gnueabihf + - libc6-armhf-cross + - qemu-user-static + - env: TARGET=armv7-unknown-linux-gnueabihf + os: linux + sudo: required + addons: + apt: + packages: *armhf + - env: TARGET=i686-apple-darwin + os: osx + - env: TARGET=i686-unknown-linux-gnu + os: linux + addons: + apt: + packages: + - gcc-multilib + - env: TARGET=x86_64-apple-darwin + os: osx + - env: TARGET=x86_64-unknown-linux-gnu + os: linux + +install: + - bash ci/install.sh + +script: + - bash ci/script.sh + +notifications: + email: + on_success: never diff --git a/library/compiler-builtins/ci/env.sh b/library/compiler-builtins/ci/env.sh new file mode 100644 index 000000000000..ad76689789d3 --- /dev/null +++ b/library/compiler-builtins/ci/env.sh @@ -0,0 +1,23 @@ +case $TRAVIS_OS_NAME in + linux) + export HOST=x86_64-unknown-linux-gnu + ;; + osx) + export HOST=x86_64-apple-darwin + ;; +esac + +case $TARGET in + aarch64-unknown-linux-gnu) + export PREFIX=aarch64-linux-gnu- + export QEMU_LD_PREFIX=/usr/aarch64-linux-gnu + ;; + arm*-unknown-linux-gnueabi) + export PREFIX=arm-linux-gnueabi- + export QEMU_LD_PREFIX=/usr/arm-linux-gnueabi + ;; + arm*-unknown-linux-gnueabihf) + export PREFIX=arm-linux-gnueabihf- + export QEMU_LD_PREFIX=/usr/arm-linux-gnueabihf + ;; +esac diff --git a/library/compiler-builtins/ci/install.sh b/library/compiler-builtins/ci/install.sh new file mode 100644 index 000000000000..a66c5d0ee1fa --- /dev/null +++ b/library/compiler-builtins/ci/install.sh @@ -0,0 +1,31 @@ +set -ex + +. $(dirname $0)/env.sh + +build() { + cargo build --target $TARGET + cargo build --target $TARGET --release +} + +run_tests() { + if [[ $QEMU_LD_PREFIX ]]; then + export RUST_TEST_THREADS=1 + fi + + cargo test --target $TARGET + cargo test --target $TARGET --release +} + +inspect() { + ${PREFIX}nm -g --defined-only target/**/debug/*.rlib + ${PREFIX}objdump target/**/debug/*.rlib + ${PREFIX}objdump target/**/release/*.rlib +} + +main() { + build + run_tests + inspect +} + +main diff --git a/library/compiler-builtins/ci/script.sh b/library/compiler-builtins/ci/script.sh new file mode 100644 index 000000000000..c2fcdb8078ea --- /dev/null +++ b/library/compiler-builtins/ci/script.sh @@ -0,0 +1,48 @@ +set -ex + +. $(dirname $0)/env.sh + +install_c_toolchain() { + case $TARGET in + aarch64-unknown-linux-gnu) + sudo apt-get install -y --no-install-recommends \ + gcc-aarch64-linux-gnu libc6-arm64-cross libc6-dev-arm64-cross + ;; + *) + ;; + esac +} + +install_rust() { + curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain=nightly + + rustc -V + cargo -V +} + +add_rustup_target() { + if [[ $TARGET != $HOST ]]; then + rustup target add $TARGET + fi +} + +configure_cargo() { + if [[ $PREFIX ]]; then + ${PREFIX}gcc -v + + mkdir -p .cargo + cat >>.cargo/config < Date: Sun, 7 Aug 2016 16:58:44 -0500 Subject: [PATCH 02/12] set $PATH --- library/compiler-builtins/.travis.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/library/compiler-builtins/.travis.yml b/library/compiler-builtins/.travis.yml index 63faac24cdea..364e4d940cc9 100644 --- a/library/compiler-builtins/.travis.yml +++ b/library/compiler-builtins/.travis.yml @@ -50,6 +50,9 @@ matrix: - env: TARGET=x86_64-unknown-linux-gnu os: linux +before_install: + - export PATH="$PATH:$HOME/.cargo/bin" + install: - bash ci/install.sh From 898869871e8479942d1cc9225a91b415bdc4368a Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Sun, 7 Aug 2016 16:59:54 -0500 Subject: [PATCH 03/12] only test on master --- library/compiler-builtins/.travis.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/library/compiler-builtins/.travis.yml b/library/compiler-builtins/.travis.yml index 364e4d940cc9..27a141355864 100644 --- a/library/compiler-builtins/.travis.yml +++ b/library/compiler-builtins/.travis.yml @@ -59,6 +59,10 @@ install: script: - bash ci/script.sh +branches: + only: + - master + notifications: email: on_success: never From 5dbc8d97298e3e50919382d96146190be3e0fc69 Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Sun, 7 Aug 2016 17:03:44 -0500 Subject: [PATCH 04/12] swap install.sh and script.sh --- library/compiler-builtins/ci/install.sh | 49 +++++++++++++++++-------- library/compiler-builtins/ci/script.sh | 49 ++++++++----------------- 2 files changed, 49 insertions(+), 49 deletions(-) diff --git a/library/compiler-builtins/ci/install.sh b/library/compiler-builtins/ci/install.sh index a66c5d0ee1fa..c2fcdb8078ea 100644 --- a/library/compiler-builtins/ci/install.sh +++ b/library/compiler-builtins/ci/install.sh @@ -2,30 +2,47 @@ set -ex . $(dirname $0)/env.sh -build() { - cargo build --target $TARGET - cargo build --target $TARGET --release +install_c_toolchain() { + case $TARGET in + aarch64-unknown-linux-gnu) + sudo apt-get install -y --no-install-recommends \ + gcc-aarch64-linux-gnu libc6-arm64-cross libc6-dev-arm64-cross + ;; + *) + ;; + esac } -run_tests() { - if [[ $QEMU_LD_PREFIX ]]; then - export RUST_TEST_THREADS=1 +install_rust() { + curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain=nightly + + rustc -V + cargo -V +} + +add_rustup_target() { + if [[ $TARGET != $HOST ]]; then + rustup target add $TARGET fi - - cargo test --target $TARGET - cargo test --target $TARGET --release } -inspect() { - ${PREFIX}nm -g --defined-only target/**/debug/*.rlib - ${PREFIX}objdump target/**/debug/*.rlib - ${PREFIX}objdump target/**/release/*.rlib +configure_cargo() { + if [[ $PREFIX ]]; then + ${PREFIX}gcc -v + + mkdir -p .cargo + cat >>.cargo/config <>.cargo/config < Date: Sun, 7 Aug 2016 17:07:12 -0500 Subject: [PATCH 05/12] install libc6-dev for ARM targets --- library/compiler-builtins/.travis.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/library/compiler-builtins/.travis.yml b/library/compiler-builtins/.travis.yml index 27a141355864..d8ff366262c0 100644 --- a/library/compiler-builtins/.travis.yml +++ b/library/compiler-builtins/.travis.yml @@ -20,6 +20,7 @@ matrix: - binfmt-support - gcc-arm-linux-gnueabi - libc6-armel-cross + - libc6-dev-armel-cross - qemu-user-static - env: TARGET=arm-unknown-linux-gnueabihf os: linux @@ -30,6 +31,7 @@ matrix: - binfmt-support - gcc-arm-linux-gnueabihf - libc6-armhf-cross + - libc6-dev-armhf-cross - qemu-user-static - env: TARGET=armv7-unknown-linux-gnueabihf os: linux From 0921a91b267f994ba6a479f76b47de427e272307 Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Sun, 7 Aug 2016 17:07:58 -0500 Subject: [PATCH 06/12] fix objdump commands --- library/compiler-builtins/ci/script.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/library/compiler-builtins/ci/script.sh b/library/compiler-builtins/ci/script.sh index a66c5d0ee1fa..5952f7ecbfa5 100644 --- a/library/compiler-builtins/ci/script.sh +++ b/library/compiler-builtins/ci/script.sh @@ -18,8 +18,8 @@ run_tests() { inspect() { ${PREFIX}nm -g --defined-only target/**/debug/*.rlib - ${PREFIX}objdump target/**/debug/*.rlib - ${PREFIX}objdump target/**/release/*.rlib + ${PREFIX}objdump -Cd target/**/debug/*.rlib + ${PREFIX}objdump -Cd target/**/release/*.rlib } main() { From f8099c755e14a9c9d6f65fb8216ef27df7d48d72 Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Sun, 7 Aug 2016 17:10:36 -0500 Subject: [PATCH 07/12] use container-based infrastructure --- library/compiler-builtins/.travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/library/compiler-builtins/.travis.yml b/library/compiler-builtins/.travis.yml index d8ff366262c0..c09c3bb49bf8 100644 --- a/library/compiler-builtins/.travis.yml +++ b/library/compiler-builtins/.travis.yml @@ -1,4 +1,5 @@ language: generic +sudo: false matrix: include: From 4cbba5979d53b04373061384f87becd16b2a90b6 Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Sun, 7 Aug 2016 17:13:29 -0500 Subject: [PATCH 08/12] ignore objdump exit code --- library/compiler-builtins/ci/script.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/library/compiler-builtins/ci/script.sh b/library/compiler-builtins/ci/script.sh index 5952f7ecbfa5..01f6ff505701 100644 --- a/library/compiler-builtins/ci/script.sh +++ b/library/compiler-builtins/ci/script.sh @@ -18,8 +18,10 @@ run_tests() { inspect() { ${PREFIX}nm -g --defined-only target/**/debug/*.rlib + set +e ${PREFIX}objdump -Cd target/**/debug/*.rlib ${PREFIX}objdump -Cd target/**/release/*.rlib + set -e } main() { From 48d9ff7e805d9fe0b213145c530af58f6dc4bc60 Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Sun, 7 Aug 2016 17:18:37 -0500 Subject: [PATCH 09/12] nm: drop --defined-only flag it doesn't work on macOS --- library/compiler-builtins/ci/script.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/compiler-builtins/ci/script.sh b/library/compiler-builtins/ci/script.sh index 01f6ff505701..c3e1a65fc299 100644 --- a/library/compiler-builtins/ci/script.sh +++ b/library/compiler-builtins/ci/script.sh @@ -17,7 +17,7 @@ run_tests() { } inspect() { - ${PREFIX}nm -g --defined-only target/**/debug/*.rlib + ${PREFIX}nm -g target/**/debug/*.rlib set +e ${PREFIX}objdump -Cd target/**/debug/*.rlib ${PREFIX}objdump -Cd target/**/release/*.rlib From a0de8f0bdb898c0559b785c4e4aff2035404cce1 Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Sun, 7 Aug 2016 17:23:30 -0500 Subject: [PATCH 10/12] macOS: install binutils --- library/compiler-builtins/ci/install.sh | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/library/compiler-builtins/ci/install.sh b/library/compiler-builtins/ci/install.sh index c2fcdb8078ea..595a985cecfc 100644 --- a/library/compiler-builtins/ci/install.sh +++ b/library/compiler-builtins/ci/install.sh @@ -13,6 +13,16 @@ install_c_toolchain() { esac } +install_binutils() { + case $TRAVIS_OS_NAME in + osx) + brew install binutils + ;; + *) + ;; + esac +} + install_rust() { curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain=nightly From 3cea133b4c391725f0a7eb33ec8545f99198853f Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Sun, 7 Aug 2016 17:29:31 -0500 Subject: [PATCH 11/12] macOS: use gnu binutils --- library/compiler-builtins/ci/env.sh | 4 ++++ library/compiler-builtins/ci/script.sh | 6 +++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/library/compiler-builtins/ci/env.sh b/library/compiler-builtins/ci/env.sh index ad76689789d3..92f0c3ecabd2 100644 --- a/library/compiler-builtins/ci/env.sh +++ b/library/compiler-builtins/ci/env.sh @@ -1,9 +1,13 @@ case $TRAVIS_OS_NAME in linux) export HOST=x86_64-unknown-linux-gnu + export NM=nm + export OBJDUMP=objdump ;; osx) export HOST=x86_64-apple-darwin + export NM=gnm + export OBJDUMP=gobjdump ;; esac diff --git a/library/compiler-builtins/ci/script.sh b/library/compiler-builtins/ci/script.sh index c3e1a65fc299..c1748fcd73eb 100644 --- a/library/compiler-builtins/ci/script.sh +++ b/library/compiler-builtins/ci/script.sh @@ -17,10 +17,10 @@ run_tests() { } inspect() { - ${PREFIX}nm -g target/**/debug/*.rlib + $PREFIX$NM -g --defined-only target/**/debug/*.rlib set +e - ${PREFIX}objdump -Cd target/**/debug/*.rlib - ${PREFIX}objdump -Cd target/**/release/*.rlib + $PREFIX$OBJDUMP -Cd target/**/debug/*.rlib + $PREFIX$OBJDUMP -Cd target/**/release/*.rlib set -e } From 3ccdc29e4dc1216bd5cce4055a83c5491ee84045 Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Sun, 7 Aug 2016 17:32:53 -0500 Subject: [PATCH 12/12] macOS: actually install binutils --- library/compiler-builtins/ci/install.sh | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/library/compiler-builtins/ci/install.sh b/library/compiler-builtins/ci/install.sh index 595a985cecfc..3d11092f8c01 100644 --- a/library/compiler-builtins/ci/install.sh +++ b/library/compiler-builtins/ci/install.sh @@ -2,21 +2,21 @@ set -ex . $(dirname $0)/env.sh -install_c_toolchain() { - case $TARGET in - aarch64-unknown-linux-gnu) - sudo apt-get install -y --no-install-recommends \ - gcc-aarch64-linux-gnu libc6-arm64-cross libc6-dev-arm64-cross +install_binutils() { + case $TRAVIS_OS_NAME in + osx) + brew install binutils ;; *) ;; esac } -install_binutils() { - case $TRAVIS_OS_NAME in - osx) - brew install binutils +install_c_toolchain() { + case $TARGET in + aarch64-unknown-linux-gnu) + sudo apt-get install -y --no-install-recommends \ + gcc-aarch64-linux-gnu libc6-arm64-cross libc6-dev-arm64-cross ;; *) ;; @@ -49,6 +49,7 @@ EOF } main() { + install_binutils install_c_toolchain install_rust add_rustup_target