diff --git a/.github/workflows/linux-builds-on-master.yaml b/.github/workflows/linux-builds-on-master.yaml index 40bcc9c12e..e6abc77cb6 100644 --- a/.github/workflows/linux-builds-on-master.yaml +++ b/.github/workflows/linux-builds-on-master.yaml @@ -101,27 +101,7 @@ jobs: docker build -t "$DOCKER" -f "ci/docker/${DOCKER}/Dockerfile" . fi - name: Run the build within the docker image - run: | - mkdir -p "${PWD}/target" - chown -R "$(id -u)":"$(id -g)" "${PWD}/target" - docker run \ - --entrypoint sh \ - --user "$(id -u)":"$(id -g)" \ - --volume "$(rustc --print sysroot)":/rustc-sysroot:ro \ - --volume "${PWD}":/checkout:ro \ - --volume "${PWD}"/target:/checkout/target \ - --workdir /checkout \ - --env TARGET="${TARGET}" \ - --env SKIP_TESTS="${SKIP_TESTS}" \ - --volume "${HOME}/.cargo:/cargo" \ - --env CARGO_HOME=/cargo \ - --env CARGO_TARGET_DIR=/checkout/target \ - --env LIBZ_SYS_STATIC=1 \ - --tty \ - --init \ - --rm \ - "${DOCKER}" \ - -c 'PATH="${PATH}":/rustc-sysroot/bin bash ci/run.bash' + run: ./ci/run-in-docker.sh $TARGET $SKIP_TESTS $DOCKER - name: Upload the built artifact uses: actions/upload-artifact@v2 with: diff --git a/.github/workflows/linux-builds-on-pr.yaml b/.github/workflows/linux-builds-on-pr.yaml index df70bfb5c4..52ad3cf4f7 100644 --- a/.github/workflows/linux-builds-on-pr.yaml +++ b/.github/workflows/linux-builds-on-pr.yaml @@ -94,27 +94,7 @@ jobs: docker build -t "$DOCKER" -f "ci/docker/${DOCKER}/Dockerfile" . fi - name: Run the build within the docker image - run: | - mkdir -p "${PWD}/target" - chown -R "$(id -u)":"$(id -g)" "${PWD}/target" - docker run \ - --entrypoint sh \ - --user "$(id -u)":"$(id -g)" \ - --volume "$(rustc --print sysroot)":/rustc-sysroot:ro \ - --volume "${PWD}":/checkout:ro \ - --volume "${PWD}"/target:/checkout/target \ - --workdir /checkout \ - --env TARGET="${TARGET}" \ - --env SKIP_TESTS="${SKIP_TESTS}" \ - --volume "${HOME}/.cargo:/cargo" \ - --env CARGO_HOME=/cargo \ - --env CARGO_TARGET_DIR=/checkout/target \ - --env LIBZ_SYS_STATIC=1 \ - --tty \ - --init \ - --rm \ - "${DOCKER}" \ - -c 'PATH="${PATH}":/rustc-sysroot/bin bash ci/run.bash' + run: ./ci/run-in-docker.sh $TARGET "${SKIP_TESTS}" $DOCKER - name: Upload the built artifact uses: actions/upload-artifact@v2 with: diff --git a/ci/docker/android/Dockerfile b/ci/docker/android/Dockerfile index 29d0abc7da..0f663f22a2 100644 --- a/ci/docker/android/Dockerfile +++ b/ci/docker/android/Dockerfile @@ -1,9 +1,11 @@ FROM rust-android -ENV PATH=$PATH:/android/ndk/arm-21/bin:/android/ndk/arm64-21/bin:/android/ndk/x86-21/bin:/android/ndk/x86_64-21/bin \ +# See https://github.com/rust-lang/cc-rs#external-configuration-via-environment-variables +ENV PATH=$PATH:/android/ndk/arm64-21/bin:/android/ndk/x86_64-21/bin:/android/ndk/x86-21/bin \ CC_arm_linux_androideabi=arm-linux-androideabi-clang \ CC_armv7_linux_androideabi=arm-linux-androideabi-clang \ CC_aarch64_linux_android=aarch64-linux-android-clang \ + AR_aarch64_linux_android=llvm-ar \ CC_i686_linux_android=i686-linux-android-clang \ CC_x86_64_linux_android=x86_64-linux-android-clang \ CXX_arm_linux_androideabi=arm-linux-androideabi-clang++ \ diff --git a/ci/run-in-docker.sh b/ci/run-in-docker.sh new file mode 100755 index 0000000000..590a3b01aa --- /dev/null +++ b/ci/run-in-docker.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +set -eux -o pipefail + +TARGET=$1 +SKIP_TESTS=$2 +DOCKER=$3 + +mkdir -p "${PWD}/target" +chown -R "$(id -u)":"$(id -g)" "${PWD}/target" +docker run \ + --entrypoint sh \ + --user "$(id -u)":"$(id -g)" \ + --volume "$(rustc --print sysroot)":/rustc-sysroot:ro \ + --volume "${PWD}":/checkout:ro \ + --volume "${PWD}"/target:/checkout/target \ + --workdir /checkout \ + --env TARGET="${TARGET}" \ + --env SKIP_TESTS="${SKIP_TESTS}" \ + --volume "${HOME}/.cargo:/cargo" \ + --env CARGO_HOME=/cargo \ + --env CARGO_TARGET_DIR=/checkout/target \ + --env LIBZ_SYS_STATIC=1 \ + --tty \ + --init \ + --rm \ + "${DOCKER}" \ + -c 'PATH="${PATH}":/rustc-sysroot/bin bash ci/run.bash' \ No newline at end of file