Explorar o código

Merge pull request #279 from alexcrichton/configure-azure-pipelines

Configure Azure Pipelines
Alex Crichton %!s(int64=6) %!d(string=hai) anos
pai
achega
a771cba5f9

+ 51 - 5
azure-pipelines.yml

@@ -1,7 +1,6 @@
 trigger:
   - master
-pr:
-  - master
+
 jobs:
   - job: Linux
     pool:
@@ -10,8 +9,47 @@ jobs:
       - template: ci/azure-steps.yml
     strategy:
       matrix:
-        aarch64-unknown-linux-gnu:
+        aarch64:
           TARGET: aarch64-unknown-linux-gnu
+        arm:
+          TARGET: arm-unknown-linux-gnueabi
+        armhf:
+          TARGET: arm-unknown-linux-gnueabihf
+        i586:
+          TARGET: i586-unknown-linux-gnu
+        i686:
+          TARGET: i686-unknown-linux-gnu
+        mips:
+          TARGET: mips-unknown-linux-gnu
+        mips64:
+          TARGET: mips64-unknown-linux-gnuabi64
+        mips64el:
+          TARGET: mips64el-unknown-linux-gnuabi64
+        mipsel:
+          TARGET: mipsel-unknown-linux-gnu
+        powerpc:
+          TARGET: powerpc-unknown-linux-gnu
+        powerpc64:
+          TARGET: powerpc64-unknown-linux-gnu
+        powerpc64le:
+          TARGET: powerpc64le-unknown-linux-gnu
+        # thumbv6m:
+        #   TARGET: thumbv6m-linux-eabi
+        #   XARGO: 1
+        # thumbv7em:
+        #   TARGET: thumbv7em-linux-eabi
+        #   XARGO: 1
+        # thumbv7emhf:
+        #   TARGET: thumbv7em-linux-eabihf
+        #   XARGO: 1
+        # thumbv7m:
+        #   TARGET: thumbv7m-linux-eabi
+        #   XARGO: 1
+        wasm32:
+          TARGET: wasm32-unknown-unknown
+          ONLY_BUILD: 1
+        x86_64:
+          TARGET: x86_64-unknown-linux-gnu
 
   - job: macOS
     pool:
@@ -20,8 +58,10 @@ jobs:
       - template: ci/azure-steps.yml
     strategy:
       matrix:
-        x86_64-apple-darwin:
+        x86_64:
           TARGET: x86_64-apple-darwin
+        i686:
+          TARGET: i686-apple-darwin
 
   - job: Windows
     pool:
@@ -30,5 +70,11 @@ jobs:
       - template: ci/azure-steps.yml
     strategy:
       matrix:
-        i686-pc-windows-msvc:
+        i686-msvc:
           TARGET: i686-pc-windows-msvc
+        x86_64-msvc:
+          TARGET: x86_64-pc-windows-msvc
+        i686-gnu:
+          TARGET: i686-pc-windows-gnu
+        x86_64-gnu:
+          TARGET: x86_64-pc-windows-gnu

+ 1 - 1
ci/azure-install-rust.yml

@@ -13,7 +13,7 @@ steps:
 
   - script: |
       curl -sSf -o rustup-init.exe https://win.rustup.rs
-      rustup-init.exe -y --default-toolchain %TOOLCHAIN%
+      rustup-init.exe -y --default-toolchain %TOOLCHAIN%-%TARGET%
       echo ##vso[task.prependpath]%USERPROFILE%\.cargo\bin
     displayName: Install rust
     condition: eq( variables['Agent.OS'], 'Windows_NT' )

+ 15 - 1
ci/azure-steps.yml

@@ -1,12 +1,26 @@
 steps:
   - checkout: self
     submodules: true
+
   - template: azure-install-rust.yml
 
+  - script: rustup component add rust-src
+    displayName: Install Rust sources
+    condition: eq( variables['XARGO'], '1' )
+
+  - bash: rustup target add $TARGET
+    displayName: Install Rust target
+    condition: ne( variables['XARGO'], '1' )
+
   - bash: ./ci/run.sh $TARGET
     condition: ne( variables['Agent.OS'], 'Linux' )
     displayName: Run test script
 
-  - bash: ./ci/run-docker.sh $TARGET
+  - bash: |
+      if [ "$ONLY_BUILD" = "1" ]; then
+        cargo build --target $TARGET
+      else
+        cargo generate-lockfile && ./ci/run-docker.sh $TARGET
+      fi
     condition: eq( variables['Agent.OS'], 'Linux' )
     displayName: Run docker test script

+ 1 - 1
ci/docker/aarch64-unknown-linux-gnu/Dockerfile

@@ -1,4 +1,4 @@
-FROM ubuntu:16.04
+FROM ubuntu:18.04
 RUN apt-get update && \
     apt-get install -y --no-install-recommends \
     gcc libc6-dev ca-certificates \

+ 1 - 1
ci/docker/arm-unknown-linux-gnueabi/Dockerfile

@@ -1,4 +1,4 @@
-FROM ubuntu:16.04
+FROM ubuntu:18.04
 RUN apt-get update && \
     apt-get install -y --no-install-recommends \
     gcc libc6-dev ca-certificates \

+ 1 - 1
ci/docker/arm-unknown-linux-gnueabihf/Dockerfile

@@ -1,4 +1,4 @@
-FROM ubuntu:16.04
+FROM ubuntu:18.04
 RUN apt-get update && \
     apt-get install -y --no-install-recommends \
     gcc libc6-dev ca-certificates \

+ 1 - 1
ci/docker/armv7-unknown-linux-gnueabihf/Dockerfile

@@ -1,4 +1,4 @@
-FROM ubuntu:16.04
+FROM ubuntu:18.04
 RUN apt-get update && \
     apt-get install -y --no-install-recommends \
     gcc libc6-dev ca-certificates \

+ 1 - 1
ci/docker/i586-unknown-linux-gnu/Dockerfile

@@ -1,4 +1,4 @@
-FROM ubuntu:16.04
+FROM ubuntu:18.04
 RUN apt-get update && \
     apt-get install -y --no-install-recommends \
     gcc-multilib libc6-dev ca-certificates

+ 1 - 1
ci/docker/i686-unknown-linux-gnu/Dockerfile

@@ -1,4 +1,4 @@
-FROM ubuntu:16.04
+FROM ubuntu:18.04
 RUN apt-get update && \
     apt-get install -y --no-install-recommends \
     gcc-multilib libc6-dev ca-certificates

+ 1 - 1
ci/docker/mips-unknown-linux-gnu/Dockerfile

@@ -1,4 +1,4 @@
-FROM ubuntu:16.04
+FROM ubuntu:18.04
 
 RUN apt-get update && \
     apt-get install -y --no-install-recommends \

+ 1 - 1
ci/docker/mips64-unknown-linux-gnuabi64/Dockerfile

@@ -1,4 +1,4 @@
-FROM ubuntu:16.04
+FROM ubuntu:18.04
 RUN apt-get update && \
     apt-get install -y --no-install-recommends \
     ca-certificates \

+ 1 - 1
ci/docker/mips64el-unknown-linux-gnuabi64/Dockerfile

@@ -1,4 +1,4 @@
-FROM ubuntu:16.04
+FROM ubuntu:18.04
 RUN apt-get update && \
     apt-get install -y --no-install-recommends \
     ca-certificates \

+ 1 - 1
ci/docker/mipsel-unknown-linux-gnu/Dockerfile

@@ -1,4 +1,4 @@
-FROM ubuntu:16.04
+FROM ubuntu:18.04
 
 RUN apt-get update && \
     apt-get install -y --no-install-recommends \

+ 1 - 1
ci/docker/powerpc-unknown-linux-gnu/Dockerfile

@@ -1,4 +1,4 @@
-FROM ubuntu:16.04
+FROM ubuntu:18.04
 
 RUN apt-get update && \
     apt-get install -y --no-install-recommends \

+ 1 - 1
ci/docker/powerpc64-unknown-linux-gnu/Dockerfile

@@ -1,4 +1,4 @@
-FROM ubuntu:16.04
+FROM ubuntu:18.04
 
 RUN apt-get update && \
     apt-get install -y --no-install-recommends \

+ 1 - 1
ci/docker/powerpc64le-unknown-linux-gnu/Dockerfile

@@ -1,4 +1,4 @@
-FROM ubuntu:16.04
+FROM ubuntu:18.04
 
 RUN apt-get update && \
     apt-get install -y --no-install-recommends \

+ 1 - 1
ci/docker/thumbv6m-linux-eabi/Dockerfile

@@ -1,4 +1,4 @@
-FROM ubuntu:16.04
+FROM ubuntu:18.04
 RUN apt-get update && \
     apt-get install -y --no-install-recommends \
     ca-certificates curl gcc gcc-arm-none-eabi libc6-dev libcurl4-openssl-dev libssh2-1 libnewlib-dev qemu-user-static

+ 1 - 1
ci/docker/thumbv7em-linux-eabi/Dockerfile

@@ -1,4 +1,4 @@
-FROM ubuntu:16.04
+FROM ubuntu:18.04
 RUN apt-get update && \
     apt-get install -y --no-install-recommends \
     ca-certificates curl gcc gcc-arm-none-eabi libc6-dev libcurl4-openssl-dev libssh2-1 libnewlib-dev qemu-user-static

+ 1 - 1
ci/docker/thumbv7em-linux-eabihf/Dockerfile

@@ -1,4 +1,4 @@
-FROM ubuntu:16.04
+FROM ubuntu:18.04
 RUN apt-get update && \
     apt-get install -y --no-install-recommends \
     ca-certificates curl gcc gcc-arm-none-eabi libc6-dev libcurl4-openssl-dev libssh2-1 libnewlib-dev qemu-user-static

+ 1 - 1
ci/docker/thumbv7m-linux-eabi/Dockerfile

@@ -1,4 +1,4 @@
-FROM ubuntu:16.04
+FROM ubuntu:18.04
 RUN apt-get update && \
     apt-get install -y --no-install-recommends \
     ca-certificates curl gcc gcc-arm-none-eabi libc6-dev libcurl4-openssl-dev libssh2-1 libnewlib-dev qemu-user-static

+ 1 - 1
ci/docker/x86_64-unknown-linux-gnu/Dockerfile

@@ -1,4 +1,4 @@
-FROM ubuntu:16.04
+FROM ubuntu:18.04
 RUN apt-get update && \
     apt-get install -y --no-install-recommends \
     gcc libc6-dev ca-certificates

+ 2 - 1
ci/run-docker.sh

@@ -18,12 +18,13 @@ run() {
            --user $(id -u):$(id -g) \
            -e CARGO_HOME=/cargo \
            -e CARGO_TARGET_DIR=/target \
+           -e XARGO \
            -v $HOME/.cargo:/cargo \
            -v `pwd`/target:/target \
            -v `pwd`:/checkout:ro \
            -v `rustc --print sysroot`:/rust:ro \
            -w /checkout \
-           -it $target \
+           $target \
            sh -c "HOME=/tmp PATH=\$PATH:/rust/bin ci/run.sh $target"
 }
 

+ 29 - 36
ci/run.sh

@@ -3,14 +3,10 @@ set -ex
 # FIXME(japarix/xargo#186) this shouldn't be necessary
 export RUST_TARGET_PATH=`pwd`
 
-case $1 in
-    thumb*)
-        cargo=xargo
-        ;;
-    *)
-        cargo=cargo
-        ;;
-esac
+cargo=cargo
+if [ "$XARGO" = "1" ]; then
+  cargo=xargo
+fi
 
 INTRINSICS_FEATURES="c"
 
@@ -22,34 +18,31 @@ if [ -z "$INTRINSICS_FAILS_WITH_MEM_FEATURE" ]; then
 fi
 
 # Test our implementation
-case $1 in
-    thumb*)
-        run="xargo test --manifest-path testcrate/Cargo.toml --target $1"
-        for t in $(ls testcrate/tests); do
-            t=${t%.rs}
-
-            RUSTFLAGS="-C debug-assertions=no -C lto" \
-            CARGO_INCREMENTAL=0 \
-              $run --test $t --no-default-features --features 'mem c' --no-run
-            qemu-arm-static target/${1}/debug/$t-*
-	done
-
-	for t in $(ls testcrate/tests); do
-            t=${t%.rs}
-            RUSTFLAGS="-C lto" \
-            CARGO_INCREMENTAL=0 \
-              $run --test $t --no-default-features --features 'mem c' --no-run --release
-            qemu-arm-static target/${1}/release/$t-*
-        done
-        ;;
-    *)
-        run="cargo test --manifest-path testcrate/Cargo.toml --target $1"
-        $run
-        $run --release
-        $run --features c
-        $run --features c --release
-        ;;
-esac
+if [ "$XARGO" = "1" ]; then
+    run="xargo test --manifest-path testcrate/Cargo.toml --target $1"
+    for t in $(ls testcrate/tests); do
+        t=${t%.rs}
+
+        RUSTFLAGS="-C debug-assertions=no -C lto" \
+        CARGO_INCREMENTAL=0 \
+          $run --test $t --no-default-features --features 'mem c' --no-run
+        qemu-arm-static target/${1}/debug/$t-*
+    done
+
+    for t in $(ls testcrate/tests); do
+        t=${t%.rs}
+        RUSTFLAGS="-C lto" \
+        CARGO_INCREMENTAL=0 \
+          $run --test $t --no-default-features --features 'mem c' --no-run --release
+        qemu-arm-static target/${1}/release/$t-*
+    done
+else
+    run="cargo test --manifest-path testcrate/Cargo.toml --target $1"
+    $run
+    $run --release
+    $run --features c
+    $run --features c --release
+fi
 
 PREFIX=$(echo $1 | sed -e 's/unknown-//')-
 case $1 in