diff --git a/ci/run-travis.sh b/ci/run-travis.sh index ede2e485..0bebd424 100644 --- a/ci/run-travis.sh +++ b/ci/run-travis.sh @@ -20,75 +20,65 @@ install() { sudo apt-get install $@ } -# NOTE: this is not actually run on travis right now, this was added to in -# theory run FreeBSD vagrant images on Travis, but it ended up not working, so -# this may not be working when you read this. -install_vagrant() { - echo 'deb http://download.virtualbox.org/virtualbox/debian trusty contrib' | \ - sudo tee -a /etc/apt/sources.list - vbox=virtualbox-5.0_5.0.4-102546~Ubuntu~trusty_amd64.deb - curl https://www.virtualbox.org/download/oracle_vbox.asc | sudo apt-key add - - install virtualbox-5.0 linux-headers-3.16.0-31-generic nfs-kernel-server - - # After we've got virtualbox, install vagrant itself. Note that the version in - # the default ubuntu repos is too old to run the images we have, so install - # the one from the vagrant website's download link - curl -LO https://dl.bintray.com/mitchellh/vagrant/vagrant_1.7.4_x86_64.deb - sudo dpkg -i vagrant_1.7.4_x86_64.deb -} - -if [ "$TARGET" = "arm-linux-androideabi" ]; then +case "$TARGET" in # Pull a pre-built docker image for testing android, then run tests entirely - # within that image. - docker pull alexcrichton/rust-libc-test - exec docker run -v `pwd`:/clone -t alexcrichton/rust-libc-test \ - sh ci/run.sh $TARGET -elif [ "$TARGET" = "x86_64-unknown-linux-musl" ]; then - curl -s $EXTRA_TARGETS/$TARGET.tar.gz | tar xzf - -C $HOME/rust/lib/rustlib - install musl-tools - export CC=musl-gcc -elif [ "$TARGET" = "arm-unknown-linux-gnueabihf" ]; then - curl -s $EXTRA_TARGETS/$TARGET.tar.gz | tar xzf - -C $HOME/rust/lib/rustlib - install gcc-4.7-arm-linux-gnueabihf qemu-user - export CC=arm-linux-gnueabihf-gcc-4.7 -elif [ "$TARGET" = "aarch64-unknown-linux-gnu" ]; then - curl -s $EXTRA_TARGETS/$TARGET.tar.gz | tar xzf - -C $HOME/rust/lib/rustlib - install gcc-aarch64-linux-gnu qemu-user - export CC=aarch64-linux-gnu-gcc -elif [ "$TARGET" = "mips-unknown-linux-gnu" ]; then - # Download pre-built and custom MIPS libs and then also instsall the MIPS - # compiler according to this post: - # http://sathisharada.blogspot.com/2014_10_01_archive.html - curl -s $EXTRA_TARGETS/$TARGET.tar.gz | tar xzf - -C $HOME/rust/lib/rustlib + #d within that image. + arm-linux-androideabi) + docker pull alexcrichton/rust-libc-test + exec docker run -v `pwd`:/clone -t alexcrichton/rust-libc-test \ + sh ci/run.sh $TARGET + ;; - echo 'deb http://ftp.de.debian.org/debian squeeze main' | \ - sudo tee -a /etc/apt/sources.list - echo 'deb http://www.emdebian.org/debian/ squeeze main' | \ - sudo tee -a /etc/apt/sources.list - install emdebian-archive-keyring - install qemu-user gcc-4.4-mips-linux-gnu -y --force-yes - export CC=mips-linux-gnu-gcc -elif [ "$TARGET" = "x86_64-unknown-freebsd" ]; then - install_vagrant - cd ci - vagrant up freebsd - exec vagrant ssh freebsd -c \ - 'cd /vagrant && CARGO_TARGET_DIR=/tmp sh ci/run.sh x86_64-unknown-freebsd' -else - # Download the rustlib folder from the relevant portion of main distribution's - # tarballs. - curl -s $MAIN_TARGETS/rust-$TRAVIS_RUST_VERSION-$HOST.tar.gz | \ - tar xzf - -C $HOME/rust/lib/rustlib --strip-components=4 \ - rust-$TRAVIS_RUST_VERSION-$HOST/rustc/lib/rustlib/$HOST - TARGET=$HOST + x86_64-unknown-linux-musl) + curl -s $EXTRA_TARGETS/$TARGET.tar.gz | tar xzf - -C $HOME/rust/lib/rustlib + install musl-tools + export CC=musl-gcc + ;; - # clang has better error messages and implements alignof more broadly - export CC=clang + arm-unknown-linux-gnueabihf) + curl -s $EXTRA_TARGETS/$TARGET.tar.gz | tar xzf - -C $HOME/rust/lib/rustlib + install gcc-4.7-arm-linux-gnueabihf qemu-user + export CC=arm-linux-gnueabihf-gcc-4.7 + ;; - if [ "$TARGET" = "i686-unknown-linux-gnu" ]; then - install gcc-multilib - fi -fi + aarch64-unknown-linux-gnu) + curl -s $EXTRA_TARGETS/$TARGET.tar.gz | tar xzf - -C $HOME/rust/lib/rustlib + install gcc-aarch64-linux-gnu qemu-user + export CC=aarch64-linux-gnu-gcc + ;; + + mips-unknown-linux-gnu) + # Download pre-built and custom MIPS libs and then also instsall the MIPS + # compiler according to this post: + # http://sathisharada.blogspot.com/2014_10_01_archive.html + curl -s $EXTRA_TARGETS/$TARGET.tar.gz | tar xzf - -C $HOME/rust/lib/rustlib + + echo 'deb http://ftp.de.debian.org/debian squeeze main' | \ + sudo tee -a /etc/apt/sources.list + echo 'deb http://www.emdebian.org/debian/ squeeze main' | \ + sudo tee -a /etc/apt/sources.list + install emdebian-archive-keyring + install qemu-user gcc-4.4-mips-linux-gnu -y --force-yes + export CC=mips-linux-gnu-gcc + ;; + + *) + # Download the rustlib folder from the relevant portion of main distribution's + # tarballs. + curl -s $MAIN_TARGETS/rust-$TRAVIS_RUST_VERSION-$HOST.tar.gz | \ + tar xzf - -C $HOME/rust/lib/rustlib --strip-components=4 \ + rust-$TRAVIS_RUST_VERSION-$HOST/rustc/lib/rustlib/$HOST + TARGET=$HOST + + # clang has better error messages and implements alignof more broadly + export CC=clang + + if [ "$TARGET" = "i686-unknown-linux-gnu" ]; then + install gcc-multilib + fi + ;; + +esac mkdir .cargo cp ci/cargo-config .cargo/config diff --git a/ci/run.sh b/ci/run.sh index 04e49cac..b0d4726f 100644 --- a/ci/run.sh +++ b/ci/run.sh @@ -8,17 +8,28 @@ set -ex TARGET=$1 cargo build --manifest-path libc-test/Cargo.toml --target $TARGET -if [ "$TARGET" = "arm-linux-androideabi" ]; then +case "$TARGET" in + arm-linux-androideabi) emulator @test -no-window & adb wait-for-device adb push /root/target/$TARGET/debug/libc-test /data/libc-test adb shell /data/libc-test -elif [ "$TARGET" = "arm-unknown-linux-gnueabihf" ]; then + ;; + + arm-unknown-linux-gnueabihf) qemu-arm -L /usr/arm-linux-gnueabihf libc-test/target/$TARGET/debug/libc-test -elif [ "$TARGET" = "mips-unknown-linux-gnu" ]; then + ;; + + mips-unknown-linux-gnu) qemu-mips -L /usr/mips-linux-gnu libc-test/target/$TARGET/debug/libc-test -elif [ "$TARGET" = "aarch64-unknown-linux-gnu" ]; then - qemu-aarch64 -L /usr/aarch64-linux-gnu/ libc-test/target/$TARGET/debug/libc-test -else + ;; + + aarch64-unknown-linux-gnu) + qemu-aarch64 -L /usr/aarch64-linux-gnu/ \ + libc-test/target/$TARGET/debug/libc-test + ;; + + *) cargo run --manifest-path libc-test/Cargo.toml --target $TARGET -fi + ;; +esac