diff --git a/.github/workflows/bors.yml b/.github/workflows/bors.yml index 116a01b05e849..b693e4dd9d281 100644 --- a/.github/workflows/bors.yml +++ b/.github/workflows/bors.yml @@ -8,166 +8,19 @@ on: permissions: {} jobs: - docker_linux_tier1: - permissions: - actions: write # to cancel workflows (rust-lang/simpleinfra/github-actions/cancel-outdated-builds) - contents: read # to fetch code (actions/checkout) - - name: Docker Linux Tier1 - runs-on: ubuntu-22.04 - strategy: - fail-fast: true - matrix: - target: [ - i686-unknown-linux-gnu, - x86_64-unknown-linux-gnu, - ] - steps: - - uses: rust-lang/simpleinfra/github-actions/cancel-outdated-builds@master - with: - github_token: "${{ secrets.GITHUB_TOKEN }}" - - uses: actions/checkout@v3 - - name: Setup Rust toolchain - run: TARGET=${{ matrix.target }} sh ./ci/install-rust.sh - - name: Execute run-docker.sh - run: LIBC_CI=1 sh ./ci/run-docker.sh ${{ matrix.target }} - - macos: - permissions: - actions: write # to cancel workflows (rust-lang/simpleinfra/github-actions/cancel-outdated-builds) - contents: read # to fetch code (actions/checkout) - - name: macOS - runs-on: macos-12 - strategy: - fail-fast: true - matrix: - target: [ - x86_64-apple-darwin, - ] - steps: - - uses: rust-lang/simpleinfra/github-actions/cancel-outdated-builds@master - with: - github_token: "${{ secrets.GITHUB_TOKEN }}" - - uses: actions/checkout@v3 - - name: Setup Rust toolchain - run: TARGET=${{ matrix.target }} sh ./ci/install-rust.sh - - name: Execute run.sh - run: LIBC_CI=1 sh ./ci/run.sh ${{ matrix.target }} - - windows: - permissions: - actions: write # to cancel workflows (rust-lang/simpleinfra/github-actions/cancel-outdated-builds) - contents: read # to fetch code (actions/checkout) - - name: Windows - runs-on: windows-2022 - env: - OS: windows - strategy: - fail-fast: true - matrix: - include: - - target: x86_64-pc-windows-gnu - env: - ARCH_BITS: 64 - ARCH: x86_64 - - target: x86_64-pc-windows-msvc - # Disabled because broken: - # https://github.com/rust-lang/libc/issues/1592 - #- target: i686-pc-windows-gnu - # env: - # ARCH_BITS: 32 - # ARCH: i686 - - target: i686-pc-windows-msvc - steps: - - uses: rust-lang/simpleinfra/github-actions/cancel-outdated-builds@master - with: - github_token: "${{ secrets.GITHUB_TOKEN }}" - - uses: actions/checkout@v3 - - name: Self-update rustup - run: rustup self update - shell: bash - - name: Setup Rust toolchain - run: TARGET=${{ matrix.target }} sh ./ci/install-rust.sh - shell: bash - - name: Execute run.sh - run: LIBC_CI=1 sh ./ci/run.sh ${{ matrix.target }} - shell: bash - - style_check: - permissions: - actions: write # to cancel workflows (rust-lang/simpleinfra/github-actions/cancel-outdated-builds) - contents: read # to fetch code (actions/checkout) - - name: Style check - runs-on: ubuntu-22.04 - steps: - - uses: rust-lang/simpleinfra/github-actions/cancel-outdated-builds@master - with: - github_token: "${{ secrets.GITHUB_TOKEN }}" - - uses: actions/checkout@v3 - - name: Setup Rust toolchain - run: sh ./ci/install-rust.sh - - name: Check style - run: sh ci/style.sh - docker_linux_tier2: permissions: actions: write # to cancel workflows (rust-lang/simpleinfra/github-actions/cancel-outdated-builds) contents: read # to fetch code (actions/checkout) name: Docker Linux Tier2 - needs: [docker_linux_tier1, style_check] runs-on: ubuntu-22.04 strategy: fail-fast: true max-parallel: 12 matrix: target: [ - # FIXME: Mysterious failures in CI, see - # https://github.com/rust-lang/libc/issues/2081 - # aarch64-linux-android, - aarch64-unknown-linux-gnu, - aarch64-unknown-linux-musl, - # FIXME: The emulator gets stuck. - # arm-linux-androideabi, - arm-unknown-linux-gnueabihf, - arm-unknown-linux-musleabihf, - asmjs-unknown-emscripten, - # FIXME: Started to fail since 2022-10-10: - # error: linking with `i686-linux-android-gcc` failed: exit status: 1 - # ld: error: cannot find -lunwind - # i686-linux-android, - i686-unknown-linux-musl, - mips-unknown-linux-gnu, - mips-unknown-linux-musl, - # FIXME: Somehow failed on CI - # https://github.com/rust-lang/libc/runs/1659882216 - # mips64-unknown-linux-gnuabi64, - # mips64el-unknown-linux-gnuabi64, - mipsel-unknown-linux-musl, - powerpc-unknown-linux-gnu, - powerpc64-unknown-linux-gnu, - powerpc64le-unknown-linux-gnu, - s390x-unknown-linux-gnu, - riscv64gc-unknown-linux-gnu, - # FIXME: A recent nightly causes a linker failure: - # https://github.com/rust-lang/rust/issues/76679 - # See this comment for more details: - # https://github.com/rust-lang/libc/pull/2225#issuecomment-880696737 - #wasm32-wasi, - sparc64-unknown-linux-gnu, - wasm32-unknown-emscripten, - # FIXME: Started to fail since 2022-10-10: - # error: linking with `x86_64-linux-android-gcc` failed: exit status: 1 - # ld: error: cannot find -lunwind - # x86_64-linux-android, - x86_64-unknown-linux-gnux32, - x86_64-unknown-linux-musl, - # FIXME: It seems some items in `src/unix/mod.rs` - # aren't defined on redox actually. - # x86_64-unknown-redox, + i686-linux-android, ] steps: - uses: rust-lang/simpleinfra/github-actions/cancel-outdated-builds@master @@ -179,195 +32,6 @@ jobs: - name: Execute run-docker.sh run: LIBC_CI=1 sh ./ci/run-docker.sh ${{ matrix.target }} - # These targets are tier 3 or otherwise need to have CI build std via -Zbuild-std. - # Because of this, only the nightly compiler can be used on these targets. - docker_linux_build_std: - permissions: - actions: write # to cancel workflows (rust-lang/simpleinfra/github-actions/cancel-outdated-builds) - contents: read # to fetch code (actions/checkout) - - if: ${{ false }} # This is currently broken - name: Docker Linux Build-Std Targets - needs: [docker_linux_tier1, style_check] - runs-on: ubuntu-22.04 - strategy: - fail-fast: true - max-parallel: 12 - matrix: - target: [ - armv7-unknown-linux-uclibceabihf - ] - steps: - - uses: rust-lang/simpleinfra/github-actions/cancel-outdated-builds@master - with: - github_token: "${{ secrets.GITHUB_TOKEN }}" - - uses: actions/checkout@v3 - - name: Setup Rust toolchain - run: TOOLCHAIN=nightly INSTALL_RUST_SRC=1 sh ./ci/install-rust.sh - - name: Execute run-docker.sh - run: LIBC_CI=1 TOOLCHAIN=nightly LIBC_CI_ZBUILD_STD=1 sh ./ci/run-docker.sh ${{ matrix.target }} - - # devkitpro's pacman needs to be connected from Docker. - docker_switch: - permissions: - actions: write # to cancel workflows (rust-lang/simpleinfra/github-actions/cancel-outdated-builds) - contents: read # to fetch code (actions/checkout) - - name: Docker Switch - needs: [docker_linux_tier1, style_check] - runs-on: ubuntu-22.04 - steps: - - uses: rust-lang/simpleinfra/github-actions/cancel-outdated-builds@master - with: - github_token: "${{ secrets.GITHUB_TOKEN }}" - - uses: actions/checkout@v3 - - name: Setup Rust toolchain - run: sh ./ci/install-rust.sh - - name: Execute run-docker.sh - run: LIBC_CI=1 sh ./ci/run-docker.sh switch - - build_channels_linux: - permissions: - actions: write # to cancel workflows (rust-lang/simpleinfra/github-actions/cancel-outdated-builds) - contents: read # to fetch code (actions/checkout) - - name: Build Channels Linux - needs: docker_linux_tier2 - runs-on: ubuntu-22.04 - env: - OS: linux - strategy: - fail-fast: true - max-parallel: 5 - matrix: - toolchain: [ - stable, - beta, - nightly, - 1.13.0, - 1.19.0, - 1.24.0, - 1.25.0, - 1.30.0, - ] - steps: - - uses: rust-lang/simpleinfra/github-actions/cancel-outdated-builds@master - with: - github_token: "${{ secrets.GITHUB_TOKEN }}" - - uses: actions/checkout@v3 - - name: Setup Rust toolchain - run: TOOLCHAIN=${{ matrix.toolchain }} sh ./ci/install-rust.sh - - name: Execute build.sh - run: LIBC_CI=1 TOOLCHAIN=${{ matrix.toolchain }} sh ./ci/build.sh - - build_channels_macos: - permissions: - contents: read # to fetch code (actions/checkout) - - name: Build Channels macOS - needs: macos - # FIXME: Use macOS 11 for now as CI failed with a linker error on macOS 12 image: - # ld: in /.../x86_64-apple-darwin/lib/libstd-a4729905.rlib(rust.metadata.bin), - # archive member 'rust.metadata.bin' with length 2958149 is not mach-o or llvm bitcode file '/.../x86_64-apple-darwin/lib/libstd-a4729905.rlib' - # Possibly related: https://github.com/actions/runner-images/issues/6350 - runs-on: macos-11 - env: - OS: macos - strategy: - fail-fast: true - max-parallel: 4 - matrix: - toolchain: [ - stable, - beta, - nightly, - 1.13.0, - 1.19.0, - 1.24.0, - 1.25.0, - 1.30.0, - ] - steps: - - uses: rust-lang/simpleinfra/github-actions/cancel-outdated-builds@master - with: - github_token: "${{ secrets.GITHUB_TOKEN }}" - - uses: actions/checkout@v3 - - name: Setup Rust toolchain - run: TOOLCHAIN=${{ matrix.toolchain }} sh ./ci/install-rust.sh - - name: Execute build.sh - run: LIBC_CI=1 TOOLCHAIN=${{ matrix.toolchain }} sh ./ci/build.sh - - build_channels_windows: - permissions: - contents: read # to fetch code (actions/checkout) - - name: Build Channels Windows - runs-on: windows-2022 - env: - OS: windows - strategy: - fail-fast: true - matrix: - toolchain: [ - 1.19.0, - 1.24.0, - 1.25.0, - 1.30.0, - stable, - ] - steps: - - uses: actions/checkout@v3 - - name: Self-update rustup - run: rustup self update - shell: bash - - name: Execute build.sh - run: LIBC_CI=1 TOOLCHAIN=${{ matrix.toolchain }} WIN_TARGET=${{ matrix.target }} sh ./ci/build.sh - shell: bash - - semver_linux: - if: ${{ false }} # This is currently broken - name: Semver Linux - runs-on: ubuntu-22.04 - continue-on-error: true - steps: - - uses: actions/checkout@v3 - - name: Setup Rust toolchain - # Should update the semverver revision in semver.sh if we touch nightly ver. - run: TOOLCHAIN=nightly-2022-05-23 sh ./ci/install-rust.sh - - name: Check breaking changes - run: sh ci/semver.sh linux - - semver_macos: - if: ${{ false }} # This is currently broken - name: Semver macOS - runs-on: macos-12 - continue-on-error: true - steps: - - uses: actions/checkout@v3 - - name: Setup Rust toolchain - # Pin nightly version to make semverver compilable. - run: TOOLCHAIN=nightly-2022-05-23 sh ./ci/install-rust.sh - - name: Check breaking changes - run: sh ci/semver.sh macos - - docs: - permissions: - actions: write # to cancel workflows (rust-lang/simpleinfra/github-actions/cancel-outdated-builds) - contents: read # to fetch code (actions/checkout) - - name: Generate documentation - runs-on: ubuntu-22.04 - needs: docker_linux_tier2 - steps: - - uses: rust-lang/simpleinfra/github-actions/cancel-outdated-builds@master - with: - github_token: "${{ secrets.GITHUB_TOKEN }}" - - uses: actions/checkout@v3 - - name: Setup Rust toolchain - run: sh ./ci/install-rust.sh - - name: Generate documentation - run: LIBC_CI=1 sh ci/dox.sh - # These jobs doesn't actually test anything, but they're only used to tell # bors the build completed, as there is no practical way to detect when a # workflow is successful listening to webhooks only. @@ -379,17 +43,7 @@ jobs: if: github.event.pusher.name == 'bors' && success() runs-on: ubuntu-22.04 needs: [ - docker_linux_tier1, docker_linux_tier2, - #docker_linux_build_std, - macos, - windows, - style_check, - docker_switch, - build_channels_linux, - build_channels_macos, - build_channels_windows, - docs, ] steps: @@ -401,17 +55,7 @@ jobs: if: github.event.pusher.name == 'bors' && (failure() || cancelled()) runs-on: ubuntu-22.04 needs: [ - docker_linux_tier1, docker_linux_tier2, - #docker_linux_build_std, - macos, - windows, - style_check, - docker_switch, - build_channels_linux, - build_channels_macos, - build_channels_windows, - docs, ] steps: diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 635d6121e69c4..d8dcec9512480 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,8 +1,6 @@ name: CI on: - pull_request: - types: [opened, synchronize, reopened] push: branches: - master diff --git a/ci/android-install-sdk.sh b/ci/android-install-sdk.sh index 6f6aeb28e82b0..7fa25dadf819e 100644 --- a/ci/android-install-sdk.sh +++ b/ci/android-install-sdk.sh @@ -9,10 +9,11 @@ set -ex # located in https://github.com/appunite/docker by just wrapping it in a script # which apparently magically accepts the licenses. -SDK=6609375 -mkdir -p sdk/cmdline-tools +SDK=8512546 +mkdir -p sdk wget -q --tries=20 https://dl.google.com/android/repository/commandlinetools-linux-${SDK}_latest.zip -unzip -q -d sdk/cmdline-tools commandlinetools-linux-${SDK}_latest.zip +unzip -q commandlinetools-linux-${SDK}_latest.zip +mv cmdline-tools /usr/lib/android-sdk/ case "$1" in arm | armv7) @@ -39,9 +40,9 @@ esac; # Try to fix warning about missing file. # See https://askubuntu.com/a/1078784 -mkdir -p /root/.android/ -echo '### User Sources for Android SDK Manager' >> /root/.android/repositories.cfg -echo '#Fri Nov 03 10:11:27 CET 2017 count=0' >> /root/.android/repositories.cfg +mkdir -p /tmp/.android/avd +echo '### User Sources for Android SDK Manager' >> /tmp/.android/repositories.cfg +echo '#Fri Nov 03 10:11:27 CET 2017 count=0' >> /tmp/.android/repositories.cfg # Print all available packages # yes | ./sdk/tools/bin/sdkmanager --list --verbose @@ -51,14 +52,15 @@ echo '#Fri Nov 03 10:11:27 CET 2017 count=0' >> /root/.android/repositories.cfg # # | grep -v = || true removes the progress bar output from the sdkmanager # which produces an insane amount of output. -yes | ./sdk/cmdline-tools/tools/bin/sdkmanager --licenses --no_https | grep -v = || true -yes | ./sdk/cmdline-tools/tools/bin/sdkmanager --no_https \ +yes | /usr/lib/android-sdk/cmdline-tools/bin/sdkmanager --licenses --no_https --sdk_root=/usr/lib/android-sdk | grep -v = || true +yes | /usr/lib/android-sdk/cmdline-tools/bin/sdkmanager --no_https --sdk_root=/usr/lib/android-sdk \ "emulator" \ "platform-tools" \ "platforms;android-${api}" \ "${image}" | grep -v = || true echo "no" | - ./sdk/cmdline-tools/tools/bin/avdmanager create avd \ + /usr/lib/android-sdk/cmdline-tools/bin/avdmanager -v create avd \ --name "${1}" \ - --package "${image}" | grep -v = || true + --package "${image}" \ + -p /usr/lib/android-sdk/ | grep -v = || true diff --git a/ci/docker/i686-linux-android/Dockerfile b/ci/docker/i686-linux-android/Dockerfile index ed1b2e9fbef0e..f0e42ac2176fe 100644 --- a/ci/docker/i686-linux-android/Dockerfile +++ b/ci/docker/i686-linux-android/Dockerfile @@ -11,21 +11,26 @@ RUN apt-get install -y --no-install-recommends \ python3-distutils \ unzip \ expect \ - openjdk-8-jre \ + openjdk-11-jre \ libstdc++6:i386 \ - libpulse0 + libpulse0 \ + android-sdk WORKDIR /android/ COPY android* /android/ -ENV ANDROID_ARCH=i686 -ENV PATH=$PATH:/android/ndk-$ANDROID_ARCH/bin:/android/sdk/cmdline-tools/tools:/android/sdk/platform-tools +ENV ANDROID_ARCH=i686 \ + ANDROID_HOME=/usr/lib/android-sdk \ + ANDROID_SDK_ROOT=/usr/lib/android-sdk +ENV PATH=$PATH:/android/ndk-$ANDROID_ARCH/bin:/usr/lib/android-sdk/cmdline-tools:/usr/lib/android-sdk/platform-tools RUN sh /android/android-install-ndk.sh $ANDROID_ARCH RUN sh /android/android-install-sdk.sh $ANDROID_ARCH -RUN mv /root/.android /tmp +RUN cp -r /root/.android /tmp +RUN chmod 777 -R /root/.android RUN chmod 777 -R /tmp/.android -RUN chmod 755 /android/sdk/cmdline-tools/tools/* /android/sdk/emulator/qemu/linux-x86_64/* +RUN chmod 777 -R /usr/lib/android-sdk +RUN chmod 755 /usr/lib/android-sdk/cmdline-tools/* /usr/lib/android-sdk/emulator/qemu/linux-x86_64/* ENV PATH=$PATH:/rust/bin \ CARGO_TARGET_I686_LINUX_ANDROID_LINKER=i686-linux-android-gcc \ @@ -39,7 +44,7 @@ ENTRYPOINT [ \ "-c", \ # set SHELL so android can detect a 64bits system, see # http://stackoverflow.com/a/41789144 - "SHELL=/bin/dash /android/sdk/emulator/emulator @i686 -no-window -no-accel & \ + "SHELL=/bin/dash /usr/lib/android-sdk/emulator/emulator @i686 -no-window -no-accel & \ rustc /tmp/runtest.rs -o /tmp/runtest && \ exec \"$@\"", \ "--" \ diff --git a/ci/install-rust.sh b/ci/install-rust.sh index d7e2be8070dc0..b50ec12449ce6 100644 --- a/ci/install-rust.sh +++ b/ci/install-rust.sh @@ -8,7 +8,7 @@ toolchain= if [ -n "$TOOLCHAIN" ]; then toolchain=$TOOLCHAIN else - toolchain=nightly + toolchain=nightly-2022-10-08 fi if [ "$OS" = "windows" ]; then : "${TARGET?The TARGET environment variable must be set.}"