From 7e29b4a15f6590dc83d0558f81026f9a719bfda8 Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Mon, 8 Aug 2016 19:44:55 -0500 Subject: [PATCH 01/17] CI: test powerpc64le-unknown-linux-gnu --- .travis.yml | 12 ++++++++++++ ci/env.sh | 4 ++++ 2 files changed, 16 insertions(+) diff --git a/.travis.yml b/.travis.yml index e13bd11..8f6a270 100644 --- a/.travis.yml +++ b/.travis.yml @@ -60,6 +60,18 @@ matrix: - libc6-powerpc-cross - libc6-dev-powerpc-cross - qemu-user-static + - env: TARGET=powerpc64le-unknown-linux-gnu + os: linux + dist: trusty + sudo: required + addons: + apt: + packages: + - binfmt-support + - gcc-powerpc64le-linux-gnu + - libc6-ppc64el-cross + - libc6-dev-ppc64el-cross + - qemu-user-static - env: TARGET=x86_64-apple-darwin os: osx - env: TARGET=x86_64-unknown-linux-gnu diff --git a/ci/env.sh b/ci/env.sh index fa1b1f0..0bfc810 100644 --- a/ci/env.sh +++ b/ci/env.sh @@ -28,4 +28,8 @@ case $TARGET in export PREFIX=powerpc-linux-gnu- export QEMU_LD_PREFIX=/usr/powerpc-linux-gnu ;; + powerpc64le-unknown-linux-gnu) + export PREFIX=powerpc64le-linux-gnu- + export QEMU_LD_PREFIX=/usr/powerpc64le-linux-gnu + ;; esac From 6c835ef73e76a76e82dedc581f3c395046e1cb8f Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Mon, 8 Aug 2016 20:04:17 -0500 Subject: [PATCH 02/17] explicitly use qemu-ppc64le --- .travis.yml | 2 +- ci/env.sh | 1 + ci/script.sh | 11 +++++++++-- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 8f6a270..ba1c536 100644 --- a/.travis.yml +++ b/.travis.yml @@ -71,7 +71,7 @@ matrix: - gcc-powerpc64le-linux-gnu - libc6-ppc64el-cross - libc6-dev-ppc64el-cross - - qemu-user-static + - qemu-user - env: TARGET=x86_64-apple-darwin os: osx - env: TARGET=x86_64-unknown-linux-gnu diff --git a/ci/env.sh b/ci/env.sh index 0bfc810..29707a4 100644 --- a/ci/env.sh +++ b/ci/env.sh @@ -30,6 +30,7 @@ case $TARGET in ;; powerpc64le-unknown-linux-gnu) export PREFIX=powerpc64le-linux-gnu- + export QEMU=qemu-ppc64le export QEMU_LD_PREFIX=/usr/powerpc64le-linux-gnu ;; esac diff --git a/ci/script.sh b/ci/script.sh index c1748fc..0249a53 100644 --- a/ci/script.sh +++ b/ci/script.sh @@ -12,8 +12,15 @@ run_tests() { export RUST_TEST_THREADS=1 fi - cargo test --target $TARGET - cargo test --target $TARGET --release + if [[ $QEMU ]]; then + cargo test --target $TARGET --no-run + $QEMU target/**/debug/rustc_builtins-* + cargo test --target $TARGET --release --no-run + $QEMU target/**/release/rustc_builtins-* + else + cargo test --target $TARGET + cargo test --target $TARGET --release + fi } inspect() { From 8f85ab545d473052e40a9212c53979f7ee4060e7 Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Mon, 8 Aug 2016 20:37:04 -0500 Subject: [PATCH 03/17] run in xenial (docker) --- .travis.yml | 1 + ci/env.sh | 1 + ci/install.sh | 22 +++++++++++++++++----- ci/script.sh | 16 +++++++++++++--- 4 files changed, 32 insertions(+), 8 deletions(-) diff --git a/.travis.yml b/.travis.yml index ba1c536..aecd546 100644 --- a/.travis.yml +++ b/.travis.yml @@ -63,6 +63,7 @@ matrix: - env: TARGET=powerpc64le-unknown-linux-gnu os: linux dist: trusty + services: docker sudo: required addons: apt: diff --git a/ci/env.sh b/ci/env.sh index 29707a4..ed4e1b0 100644 --- a/ci/env.sh +++ b/ci/env.sh @@ -29,6 +29,7 @@ case $TARGET in export QEMU_LD_PREFIX=/usr/powerpc-linux-gnu ;; powerpc64le-unknown-linux-gnu) + export DOCKER=y export PREFIX=powerpc64le-linux-gnu- export QEMU=qemu-ppc64le export QEMU_LD_PREFIX=/usr/powerpc64le-linux-gnu diff --git a/ci/install.sh b/ci/install.sh index 3d11092..79af908 100644 --- a/ci/install.sh +++ b/ci/install.sh @@ -2,6 +2,15 @@ set -ex . $(dirname $0)/env.sh +install_qemu() { + case $TARGET in + powerpc64-unknown-linux-gnu) + sudo apt-get install -y --no-install-recommends \ + qemu-user + ;; + esac +} + install_binutils() { case $TRAVIS_OS_NAME in osx) @@ -49,11 +58,14 @@ EOF } main() { - install_binutils - install_c_toolchain - install_rust - add_rustup_target - configure_cargo + if [[ -z $DOCKER ]]; then + install_qemu + install_binutils + install_c_toolchain + install_rust + add_rustup_target + configure_cargo + fi } main diff --git a/ci/script.sh b/ci/script.sh index 0249a53..b3f7c17 100644 --- a/ci/script.sh +++ b/ci/script.sh @@ -32,9 +32,19 @@ inspect() { } main() { - build - run_tests - inspect + if [[ $DOCKER ]]; then + docker run \ + -e TARGET=$TARGET \ + -e TRAVIS_OS_NAME=$TRAVIS_OS_NAME \ + -v $(pwd)/ci:/mnt \ + ubuntu:16.04 \ + sh -c "bash /mnt/install.sh; bash /mnt/script.sh" + else + build + run_tests + inspect + fi + } main From d9deff7103c1835c8de5c07e548303fefac2ca58 Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Mon, 8 Aug 2016 20:41:08 -0500 Subject: [PATCH 04/17] install toolchain in docker --- .travis.yml | 9 --------- ci/install.sh | 6 +++++- ci/script.sh | 4 ++-- 3 files changed, 7 insertions(+), 12 deletions(-) diff --git a/.travis.yml b/.travis.yml index aecd546..dee71f7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -62,17 +62,8 @@ matrix: - qemu-user-static - env: TARGET=powerpc64le-unknown-linux-gnu os: linux - dist: trusty services: docker sudo: required - addons: - apt: - packages: - - binfmt-support - - gcc-powerpc64le-linux-gnu - - libc6-ppc64el-cross - - libc6-dev-ppc64el-cross - - qemu-user - env: TARGET=x86_64-apple-darwin os: osx - env: TARGET=x86_64-unknown-linux-gnu diff --git a/ci/install.sh b/ci/install.sh index 79af908..80a1023 100644 --- a/ci/install.sh +++ b/ci/install.sh @@ -25,7 +25,11 @@ 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 + gcc-aarch64-linux-gnu libc6-dev-arm64-cross + ;; + powerpc64-unknown-linux-gnu) + sudo apt-get install -y --no-install-recommends \ + gcc-powerpc64le-linux-gnu libc6-dev-ppc64le-cross ;; *) ;; diff --git a/ci/script.sh b/ci/script.sh index b3f7c17..1013208 100644 --- a/ci/script.sh +++ b/ci/script.sh @@ -36,9 +36,9 @@ main() { docker run \ -e TARGET=$TARGET \ -e TRAVIS_OS_NAME=$TRAVIS_OS_NAME \ - -v $(pwd)/ci:/mnt \ + -v $(pwd):/mnt \ ubuntu:16.04 \ - sh -c "bash /mnt/install.sh; bash /mnt/script.sh" + sh -c "cd /mnt; bash ci/install.sh; bash ci/script.sh" else build run_tests From 1904e17b9134ae99b0d3a9629deb7b472b087da4 Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Mon, 8 Aug 2016 20:45:46 -0500 Subject: [PATCH 05/17] enable docker --- .travis.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index dee71f7..6d3d431 100644 --- a/.travis.yml +++ b/.travis.yml @@ -62,7 +62,8 @@ matrix: - qemu-user-static - env: TARGET=powerpc64le-unknown-linux-gnu os: linux - services: docker + services: + - docker sudo: required - env: TARGET=x86_64-apple-darwin os: osx From 95eb812d38f9de45eaae563262b8f9876520ec35 Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Mon, 8 Aug 2016 20:53:33 -0500 Subject: [PATCH 06/17] don't recursively call docker --- .travis.yml | 3 +-- ci/env.sh | 4 +++- ci/script.sh | 4 ++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index 6d3d431..dee71f7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -62,8 +62,7 @@ matrix: - qemu-user-static - env: TARGET=powerpc64le-unknown-linux-gnu os: linux - services: - - docker + services: docker sudo: required - env: TARGET=x86_64-apple-darwin os: osx diff --git a/ci/env.sh b/ci/env.sh index ed4e1b0..7458372 100644 --- a/ci/env.sh +++ b/ci/env.sh @@ -29,7 +29,9 @@ case $TARGET in export QEMU_LD_PREFIX=/usr/powerpc-linux-gnu ;; powerpc64le-unknown-linux-gnu) - export DOCKER=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 diff --git a/ci/script.sh b/ci/script.sh index 1013208..1e23656 100644 --- a/ci/script.sh +++ b/ci/script.sh @@ -32,8 +32,9 @@ inspect() { } main() { - if [[ $DOCKER ]]; then + if [[ $DOCKER == "y" ]]; then docker run \ + -e DOCKER=n \ -e TARGET=$TARGET \ -e TRAVIS_OS_NAME=$TRAVIS_OS_NAME \ -v $(pwd):/mnt \ @@ -44,7 +45,6 @@ main() { run_tests inspect fi - } main From cc0f2acf76e5ff5b304a918690e6ae9877edfbf9 Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Mon, 8 Aug 2016 21:02:07 -0500 Subject: [PATCH 07/17] set PATH inside docker --- ci/script.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ci/script.sh b/ci/script.sh index 1e23656..56625fa 100644 --- a/ci/script.sh +++ b/ci/script.sh @@ -39,7 +39,10 @@ main() { -e TRAVIS_OS_NAME=$TRAVIS_OS_NAME \ -v $(pwd):/mnt \ ubuntu:16.04 \ - sh -c "cd /mnt; bash ci/install.sh; bash ci/script.sh" + sh -c 'cd /mnt; + export PATH="$PATH:$HOME/.cargo/bin"; + bash ci/install.sh; + bash ci/script.sh' else build run_tests From 66d3efdce32109dc94cee392a915b1eb9d60e06a Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Mon, 8 Aug 2016 21:14:04 -0500 Subject: [PATCH 08/17] don't skip install phase inside docker --- ci/install.sh | 2 +- ci/script.sh | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/ci/install.sh b/ci/install.sh index 80a1023..69f6ebc 100644 --- a/ci/install.sh +++ b/ci/install.sh @@ -62,7 +62,7 @@ EOF } main() { - if [[ -z $DOCKER ]]; then + if [[ ${DOCKER:-n} != "y" ]]; then install_qemu install_binutils install_c_toolchain diff --git a/ci/script.sh b/ci/script.sh index 56625fa..4a6dce7 100644 --- a/ci/script.sh +++ b/ci/script.sh @@ -39,7 +39,8 @@ main() { -e TRAVIS_OS_NAME=$TRAVIS_OS_NAME \ -v $(pwd):/mnt \ ubuntu:16.04 \ - sh -c 'cd /mnt; + sh -c 'set -ex; + cd /mnt; export PATH="$PATH:$HOME/.cargo/bin"; bash ci/install.sh; bash ci/script.sh' From a633b0cba313981105dabc8f93eb8d3e147e3b5c Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Mon, 8 Aug 2016 21:20:46 -0500 Subject: [PATCH 09/17] install curl inside docker --- ci/install.sh | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/ci/install.sh b/ci/install.sh index 69f6ebc..3c87ddb 100644 --- a/ci/install.sh +++ b/ci/install.sh @@ -2,6 +2,13 @@ set -ex . $(dirname $0)/env.sh +install_deps() { + if [[ ${DOCKER} == "y" ]]; then + apt-get install -y --no-install-recommends \ + ca-certificates curl + fi +} + install_qemu() { case $TARGET in powerpc64-unknown-linux-gnu) @@ -63,6 +70,7 @@ EOF main() { if [[ ${DOCKER:-n} != "y" ]]; then + install_deps install_qemu install_binutils install_c_toolchain From 4b453fbd0aac5198cd9a77a4c575e1b33c440081 Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Mon, 8 Aug 2016 21:27:08 -0500 Subject: [PATCH 10/17] really install curl inside docker --- ci/env.sh | 1 + ci/install.sh | 2 +- ci/script.sh | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/ci/env.sh b/ci/env.sh index 7458372..f1aa4fe 100644 --- a/ci/env.sh +++ b/ci/env.sh @@ -29,6 +29,7 @@ case $TARGET in export QEMU_LD_PREFIX=/usr/powerpc-linux-gnu ;; powerpc64le-unknown-linux-gnu) + # NOTE $DOCKER values: 'y' (yes, call docker), 'i' (inside a docker container) or 'n' ("no) if [[ -z $DOCKER ]]; then export DOCKER=y fi diff --git a/ci/install.sh b/ci/install.sh index 3c87ddb..c545eed 100644 --- a/ci/install.sh +++ b/ci/install.sh @@ -3,7 +3,7 @@ set -ex . $(dirname $0)/env.sh install_deps() { - if [[ ${DOCKER} == "y" ]]; then + if [[ ${DOCKER} == "i" ]]; then apt-get install -y --no-install-recommends \ ca-certificates curl fi diff --git a/ci/script.sh b/ci/script.sh index 4a6dce7..65d74a3 100644 --- a/ci/script.sh +++ b/ci/script.sh @@ -34,7 +34,7 @@ inspect() { main() { if [[ $DOCKER == "y" ]]; then docker run \ - -e DOCKER=n \ + -e DOCKER=i \ -e TARGET=$TARGET \ -e TRAVIS_OS_NAME=$TRAVIS_OS_NAME \ -v $(pwd):/mnt \ From a4077112bea08880c756ac8d31a62d54ca1b7109 Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Mon, 8 Aug 2016 21:32:12 -0500 Subject: [PATCH 11/17] apt-get update --- ci/install.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/ci/install.sh b/ci/install.sh index c545eed..d7eac14 100644 --- a/ci/install.sh +++ b/ci/install.sh @@ -4,6 +4,7 @@ set -ex install_deps() { if [[ ${DOCKER} == "i" ]]; then + apt-get update apt-get install -y --no-install-recommends \ ca-certificates curl fi From b47fcb8a24d4ea0cd985a49772a3aa6f2834ad33 Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Mon, 8 Aug 2016 21:37:48 -0500 Subject: [PATCH 12/17] fix installation of c toolchain --- ci/install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/install.sh b/ci/install.sh index d7eac14..2635c89 100644 --- a/ci/install.sh +++ b/ci/install.sh @@ -35,7 +35,7 @@ install_c_toolchain() { sudo apt-get install -y --no-install-recommends \ gcc-aarch64-linux-gnu libc6-dev-arm64-cross ;; - powerpc64-unknown-linux-gnu) + powerpc64le-unknown-linux-gnu) sudo apt-get install -y --no-install-recommends \ gcc-powerpc64le-linux-gnu libc6-dev-ppc64le-cross ;; From e7c9550447aab36fac667a1eb720fa68f959edbf Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Mon, 8 Aug 2016 21:43:01 -0500 Subject: [PATCH 13/17] no sudo --- ci/install.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ci/install.sh b/ci/install.sh index 2635c89..0000e45 100644 --- a/ci/install.sh +++ b/ci/install.sh @@ -36,8 +36,8 @@ install_c_toolchain() { gcc-aarch64-linux-gnu libc6-dev-arm64-cross ;; powerpc64le-unknown-linux-gnu) - sudo apt-get install -y --no-install-recommends \ - gcc-powerpc64le-linux-gnu libc6-dev-ppc64le-cross + apt-get install -y --no-install-recommends \ + gcc-powerpc64le-linux-gnu libc6-dev-ppc64le-cross ;; *) ;; From 9494d8f9254915503ba1412b6b41f1727b485f2d Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Mon, 8 Aug 2016 21:43:13 -0500 Subject: [PATCH 14/17] put first in the queue --- .travis.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index dee71f7..7f90c44 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,6 +3,10 @@ sudo: false matrix: include: + - env: TARGET=powerpc64le-unknown-linux-gnu + os: linux + services: docker + sudo: required - env: TARGET=aarch64-unknown-linux-gnu os: linux dist: trusty @@ -60,10 +64,6 @@ matrix: - libc6-powerpc-cross - libc6-dev-powerpc-cross - qemu-user-static - - env: TARGET=powerpc64le-unknown-linux-gnu - os: linux - services: docker - sudo: required - env: TARGET=x86_64-apple-darwin os: osx - env: TARGET=x86_64-unknown-linux-gnu From 4b07c4bfb9b6597f789f1fdcd053e489008d6358 Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Mon, 8 Aug 2016 21:46:24 -0500 Subject: [PATCH 15/17] fix package name --- ci/install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/install.sh b/ci/install.sh index 0000e45..867ac00 100644 --- a/ci/install.sh +++ b/ci/install.sh @@ -37,7 +37,7 @@ install_c_toolchain() { ;; powerpc64le-unknown-linux-gnu) apt-get install -y --no-install-recommends \ - gcc-powerpc64le-linux-gnu libc6-dev-ppc64le-cross + gcc-powerpc64le-linux-gnu libc6-dev-ppc64el-cross ;; *) ;; From 2485284910bbfeb27879acd33a0dd1fe6129c06d Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Mon, 8 Aug 2016 21:49:31 -0500 Subject: [PATCH 16/17] fix target name in case --- ci/install.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ci/install.sh b/ci/install.sh index 867ac00..ae94e94 100644 --- a/ci/install.sh +++ b/ci/install.sh @@ -12,9 +12,9 @@ install_deps() { install_qemu() { case $TARGET in - powerpc64-unknown-linux-gnu) - sudo apt-get install -y --no-install-recommends \ - qemu-user + powerpc64le-unknown-linux-gnu) + apt-get install -y --no-install-recommends \ + qemu-user ;; esac } From 42922d26afcaba39bebaf204c3c1194307d9c222 Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Mon, 8 Aug 2016 21:57:18 -0500 Subject: [PATCH 17/17] allow failure --- .travis.yml | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index 7f90c44..3ae43eb 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,10 +3,6 @@ sudo: false matrix: include: - - env: TARGET=powerpc64le-unknown-linux-gnu - os: linux - services: docker - sudo: required - env: TARGET=aarch64-unknown-linux-gnu os: linux dist: trusty @@ -64,6 +60,10 @@ matrix: - libc6-powerpc-cross - libc6-dev-powerpc-cross - qemu-user-static + - env: TARGET=powerpc64le-unknown-linux-gnu + os: linux + services: docker + sudo: required - env: TARGET=x86_64-apple-darwin os: osx - env: TARGET=x86_64-unknown-linux-gnu @@ -72,6 +72,9 @@ matrix: # FIXME(#2) - env: TARGET=armv7-unknown-linux-gnueabihf os: linux + # FIXME QEMU blows up + - env: TARGET=powerpc64le-unknown-linux-gnu + os: linux before_install: - export PATH="$PATH:$HOME/.cargo/bin"