From d7c845b503db9b5ac4466055b81793a611618be3 Mon Sep 17 00:00:00 2001 From: Yuki Okushi Date: Mon, 10 Oct 2022 11:37:59 +0900 Subject: [PATCH 1/9] testing Signed-off-by: Yuki Okushi --- .github/workflows/bors.yml | 358 +------------------------------------ .github/workflows/main.yml | 2 - ci/install-rust.sh | 2 +- 3 files changed, 2 insertions(+), 360 deletions(-) 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/install-rust.sh b/ci/install-rust.sh index d7e2be8070dc0..3146ace90740c 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-09 fi if [ "$OS" = "windows" ]; then : "${TARGET?The TARGET environment variable must be set.}" From 1f8c652935c3fe5e479fbc149bef53b1fb97883d Mon Sep 17 00:00:00 2001 From: Yuki Okushi Date: Mon, 10 Oct 2022 12:57:52 +0900 Subject: [PATCH 2/9] Use Android NDK r25b Signed-off-by: Yuki Okushi --- ci/android-install-ndk.sh | 15 ++++++++++----- ci/docker/i686-linux-android/Dockerfile | 5 +++-- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/ci/android-install-ndk.sh b/ci/android-install-ndk.sh index 463565125972f..ec8479bb49be8 100644 --- a/ci/android-install-ndk.sh +++ b/ci/android-install-ndk.sh @@ -2,9 +2,9 @@ set -ex -NDK=android-ndk-r21d -wget --tries=20 -q https://dl.google.com/android/repository/${NDK}-linux-x86_64.zip -unzip -q ${NDK}-linux-x86_64.zip +NDK=android-ndk-r25b +wget --tries=20 -q https://dl.google.com/android/repository/${NDK}-linux.zip +unzip -q ${NDK}-linux.zip case "$1" in arm) @@ -33,9 +33,14 @@ case "$1" in ;; esac; +STANDALONE_NDK="/android/ndk-${1}" python3 ${NDK}/build/tools/make_standalone_toolchain.py \ - --install-dir "/android/ndk-${1}" \ + --install-dir "${STANDALONE_NDK}" \ --arch "${arch}" \ --api ${api} -rm -rf ./${NDK}-linux-x86_64.zip ./${NDK} +# FIXME: workaround of ndk23 https://github.com/rust-lang/rust/pull/85806#issuecomment-1096266946 +find "/android/ndk-${1}" -name "libunwind.a" -exec sh -c \ + 'printf "INPUT(-lunwind)" > $(dirname $1)/libgcc.a' shell {} \; + +rm -rf ./${NDK}-linux.zip diff --git a/ci/docker/i686-linux-android/Dockerfile b/ci/docker/i686-linux-android/Dockerfile index ed1b2e9fbef0e..10a54800f5c81 100644 --- a/ci/docker/i686-linux-android/Dockerfile +++ b/ci/docker/i686-linux-android/Dockerfile @@ -28,9 +28,10 @@ RUN chmod 777 -R /tmp/.android RUN chmod 755 /android/sdk/cmdline-tools/tools/* /android/sdk/emulator/qemu/linux-x86_64/* ENV PATH=$PATH:/rust/bin \ - CARGO_TARGET_I686_LINUX_ANDROID_LINKER=i686-linux-android-gcc \ + CARGO_TARGET_I686_LINUX_ANDROID_LINKER=i686-linux-android28-clang \ CARGO_TARGET_I686_LINUX_ANDROID_RUNNER=/tmp/runtest \ - CC_i686_linux_android=i686-linux-android-gcc \ + CC_i686_linux_android=i686-linux-android28-clang \ + AR=llvm-ar \ HOME=/tmp ADD runtest-android.rs /tmp/runtest.rs From 51d21ef50e3b93a3c4aac1f5a1592010cb02ada2 Mon Sep 17 00:00:00 2001 From: Yuki Okushi Date: Tue, 11 Oct 2022 18:43:23 +0900 Subject: [PATCH 3/9] Ignore some items Signed-off-by: Yuki Okushi --- libc-test/build.rs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libc-test/build.rs b/libc-test/build.rs index 8573fbc1a07d8..655ddadaf6261 100644 --- a/libc-test/build.rs +++ b/libc-test/build.rs @@ -1695,6 +1695,10 @@ fn test_android(target: &str) { // These are tested in the `linux_elf.rs` file. "Elf64_Phdr" | "Elf32_Phdr" => true, + // Linux >= 5.11 tweaked the `svm_zero` field of the `sockaddr_vm` struct. + // https://github.com/torvalds/linux/commit/dc8eeef73b63ed8988224ba6b5ed19a615163a7f + "sockaddr_vm" => true, + _ => false, } }); From 21a92bfc0853823b01700ae6f160f69a37830e63 Mon Sep 17 00:00:00 2001 From: Yuki Okushi Date: Mon, 17 Oct 2022 06:52:32 +0900 Subject: [PATCH 4/9] Do not use deprecated make_standalone_toolchain.py Signed-off-by: Yuki Okushi --- ci/android-install-ndk.sh | 33 +------------------------ ci/docker/i686-linux-android/Dockerfile | 2 +- 2 files changed, 2 insertions(+), 33 deletions(-) diff --git a/ci/android-install-ndk.sh b/ci/android-install-ndk.sh index ec8479bb49be8..457910f4a43dc 100644 --- a/ci/android-install-ndk.sh +++ b/ci/android-install-ndk.sh @@ -6,38 +6,7 @@ NDK=android-ndk-r25b wget --tries=20 -q https://dl.google.com/android/repository/${NDK}-linux.zip unzip -q ${NDK}-linux.zip -case "$1" in - arm) - arch=arm - api=28 - ;; - armv7) - arch=arm - api=28 - ;; - aarch64) - arch=arm64 - api=28 - ;; - i686) - arch=x86 - api=28 - ;; - x86_64) - arch=x86_64 - api=28 - ;; - *) - echo "invalid arch: $1" - exit 1 - ;; -esac; - -STANDALONE_NDK="/android/ndk-${1}" -python3 ${NDK}/build/tools/make_standalone_toolchain.py \ - --install-dir "${STANDALONE_NDK}" \ - --arch "${arch}" \ - --api ${api} +mv ${NDK} "/android/ndk-${1}" # FIXME: workaround of ndk23 https://github.com/rust-lang/rust/pull/85806#issuecomment-1096266946 find "/android/ndk-${1}" -name "libunwind.a" -exec sh -c \ diff --git a/ci/docker/i686-linux-android/Dockerfile b/ci/docker/i686-linux-android/Dockerfile index 10a54800f5c81..2bb82f67eb17a 100644 --- a/ci/docker/i686-linux-android/Dockerfile +++ b/ci/docker/i686-linux-android/Dockerfile @@ -19,7 +19,7 @@ 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 PATH=$PATH:/android/ndk-$ANDROID_ARCH/toolchains/llvm/prebuilt/linux-x86_64/bin:/android/sdk/cmdline-tools/tools:/android/sdk/platform-tools RUN sh /android/android-install-ndk.sh $ANDROID_ARCH RUN sh /android/android-install-sdk.sh $ANDROID_ARCH From f29eb163e5cf20f4fb207de349e5f6392d69374e Mon Sep 17 00:00:00 2001 From: Yuki Okushi Date: Tue, 18 Oct 2022 20:02:43 +0900 Subject: [PATCH 5/9] Update OpenJDK to 18 Signed-off-by: Yuki Okushi --- ci/docker/i686-linux-android/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/docker/i686-linux-android/Dockerfile b/ci/docker/i686-linux-android/Dockerfile index 2bb82f67eb17a..70c408a80c4a0 100644 --- a/ci/docker/i686-linux-android/Dockerfile +++ b/ci/docker/i686-linux-android/Dockerfile @@ -11,7 +11,7 @@ RUN apt-get install -y --no-install-recommends \ python3-distutils \ unzip \ expect \ - openjdk-8-jre \ + openjdk-18-jre \ libstdc++6:i386 \ libpulse0 From c96a2bbb39a7193f04f08e9808a2033fd7544f95 Mon Sep 17 00:00:00 2001 From: Yuki Okushi Date: Tue, 18 Oct 2022 21:17:49 +0900 Subject: [PATCH 6/9] Update SDK version to `8512546` Signed-off-by: Yuki Okushi --- ci/android-install-sdk.sh | 16 ++++++++-------- ci/docker/i686-linux-android/Dockerfile | 8 +++++--- ci/install-rust.sh | 2 +- ci/runtest-android.rs | 2 +- 4 files changed, 15 insertions(+), 13 deletions(-) diff --git a/ci/android-install-sdk.sh b/ci/android-install-sdk.sh index 6f6aeb28e82b0..087e1585a5db1 100644 --- a/ci/android-install-sdk.sh +++ b/ci/android-install-sdk.sh @@ -9,10 +9,10 @@ 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 # Grabbed from https://developer.android.com/studio#command-tools +mkdir 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 -d sdk commandlinetools-linux-${SDK}_latest.zip case "$1" in arm | armv7) @@ -44,21 +44,21 @@ echo '### User Sources for Android SDK Manager' >> /root/.android/repositories.c echo '#Fri Nov 03 10:11:27 CET 2017 count=0' >> /root/.android/repositories.cfg # Print all available packages -# yes | ./sdk/tools/bin/sdkmanager --list --verbose +yes | ./sdk/cmdline-tools/bin/sdkmanager --list --verbose --sdk_root="${ANDROID_SDK_ROOT}" # --no_https avoids # javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: No trusted certificate found # # | 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 | ./sdk/cmdline-tools/bin/sdkmanager --licenses --no_https --sdk_root="${ANDROID_SDK_ROOT}" | grep -v = || true +yes | ./sdk/cmdline-tools/bin/sdkmanager --no_https --sdk_root="${ANDROID_SDK_ROOT}" \ "emulator" \ "platform-tools" \ "platforms;android-${api}" \ "${image}" | grep -v = || true echo "no" | - ./sdk/cmdline-tools/tools/bin/avdmanager create avd \ + ./sdk/cmdline-tools/bin/avdmanager create avd \ --name "${1}" \ - --package "${image}" | grep -v = || true + --package "${image}" diff --git a/ci/docker/i686-linux-android/Dockerfile b/ci/docker/i686-linux-android/Dockerfile index 70c408a80c4a0..148ee33fab9e3 100644 --- a/ci/docker/i686-linux-android/Dockerfile +++ b/ci/docker/i686-linux-android/Dockerfile @@ -18,14 +18,16 @@ RUN apt-get install -y --no-install-recommends \ WORKDIR /android/ COPY android* /android/ -ENV ANDROID_ARCH=i686 -ENV PATH=$PATH:/android/ndk-$ANDROID_ARCH/toolchains/llvm/prebuilt/linux-x86_64/bin:/android/sdk/cmdline-tools/tools:/android/sdk/platform-tools +ENV ANDROID_ARCH=i686 \ + ANDROID_SDK_ROOT=/android/sdk \ + ANDROID_HOME=/android/sdk +ENV PATH=$PATH:/android/ndk-$ANDROID_ARCH/toolchains/llvm/prebuilt/linux-x86_64/bin:/android/sdk/cmdline-tools:/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 chmod 777 -R /tmp/.android -RUN chmod 755 /android/sdk/cmdline-tools/tools/* /android/sdk/emulator/qemu/linux-x86_64/* +RUN chmod 755 /android/sdk/cmdline-tools/* /android/sdk/emulator/qemu/linux-x86_64/* ENV PATH=$PATH:/rust/bin \ CARGO_TARGET_I686_LINUX_ANDROID_LINKER=i686-linux-android28-clang \ diff --git a/ci/install-rust.sh b/ci/install-rust.sh index 3146ace90740c..d7e2be8070dc0 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-2022-10-09 + toolchain=nightly fi if [ "$OS" = "windows" ]; then : "${TARGET?The TARGET environment variable must be set.}" diff --git a/ci/runtest-android.rs b/ci/runtest-android.rs index e14dba322cdf6..477ae89e0e6b8 100644 --- a/ci/runtest-android.rs +++ b/ci/runtest-android.rs @@ -22,7 +22,7 @@ fn main() { .arg(&test) .arg(&dst) .status() - .expect("failed to run: adb pushr"); + .expect("failed to run: adb push"); assert!(status.success()); let output = Command::new("adb") From 13889dd68ecc18d87d52f5603177fe750853b0af Mon Sep 17 00:00:00 2001 From: Yuki Okushi Date: Tue, 1 Nov 2022 20:36:01 +0900 Subject: [PATCH 7/9] Revert Signed-off-by: Yuki Okushi --- ci/android-install-ndk.sh | 42 ++++++++++++++++++++----- ci/android-install-sdk.sh | 16 +++++----- ci/docker/i686-linux-android/Dockerfile | 15 ++++----- ci/install-rust.sh | 2 +- ci/runtest-android.rs | 2 +- libc-test/build.rs | 4 --- 6 files changed, 50 insertions(+), 31 deletions(-) diff --git a/ci/android-install-ndk.sh b/ci/android-install-ndk.sh index 457910f4a43dc..463565125972f 100644 --- a/ci/android-install-ndk.sh +++ b/ci/android-install-ndk.sh @@ -2,14 +2,40 @@ set -ex -NDK=android-ndk-r25b -wget --tries=20 -q https://dl.google.com/android/repository/${NDK}-linux.zip -unzip -q ${NDK}-linux.zip +NDK=android-ndk-r21d +wget --tries=20 -q https://dl.google.com/android/repository/${NDK}-linux-x86_64.zip +unzip -q ${NDK}-linux-x86_64.zip -mv ${NDK} "/android/ndk-${1}" +case "$1" in + arm) + arch=arm + api=28 + ;; + armv7) + arch=arm + api=28 + ;; + aarch64) + arch=arm64 + api=28 + ;; + i686) + arch=x86 + api=28 + ;; + x86_64) + arch=x86_64 + api=28 + ;; + *) + echo "invalid arch: $1" + exit 1 + ;; +esac; -# FIXME: workaround of ndk23 https://github.com/rust-lang/rust/pull/85806#issuecomment-1096266946 -find "/android/ndk-${1}" -name "libunwind.a" -exec sh -c \ - 'printf "INPUT(-lunwind)" > $(dirname $1)/libgcc.a' shell {} \; +python3 ${NDK}/build/tools/make_standalone_toolchain.py \ + --install-dir "/android/ndk-${1}" \ + --arch "${arch}" \ + --api ${api} -rm -rf ./${NDK}-linux.zip +rm -rf ./${NDK}-linux-x86_64.zip ./${NDK} diff --git a/ci/android-install-sdk.sh b/ci/android-install-sdk.sh index 087e1585a5db1..6f6aeb28e82b0 100644 --- a/ci/android-install-sdk.sh +++ b/ci/android-install-sdk.sh @@ -9,10 +9,10 @@ set -ex # located in https://github.com/appunite/docker by just wrapping it in a script # which apparently magically accepts the licenses. -SDK=8512546 # Grabbed from https://developer.android.com/studio#command-tools -mkdir sdk +SDK=6609375 +mkdir -p sdk/cmdline-tools wget -q --tries=20 https://dl.google.com/android/repository/commandlinetools-linux-${SDK}_latest.zip -unzip -q -d sdk commandlinetools-linux-${SDK}_latest.zip +unzip -q -d sdk/cmdline-tools commandlinetools-linux-${SDK}_latest.zip case "$1" in arm | armv7) @@ -44,21 +44,21 @@ echo '### User Sources for Android SDK Manager' >> /root/.android/repositories.c echo '#Fri Nov 03 10:11:27 CET 2017 count=0' >> /root/.android/repositories.cfg # Print all available packages -yes | ./sdk/cmdline-tools/bin/sdkmanager --list --verbose --sdk_root="${ANDROID_SDK_ROOT}" +# yes | ./sdk/tools/bin/sdkmanager --list --verbose # --no_https avoids # javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: No trusted certificate found # # | grep -v = || true removes the progress bar output from the sdkmanager # which produces an insane amount of output. -yes | ./sdk/cmdline-tools/bin/sdkmanager --licenses --no_https --sdk_root="${ANDROID_SDK_ROOT}" | grep -v = || true -yes | ./sdk/cmdline-tools/bin/sdkmanager --no_https --sdk_root="${ANDROID_SDK_ROOT}" \ +yes | ./sdk/cmdline-tools/tools/bin/sdkmanager --licenses --no_https | grep -v = || true +yes | ./sdk/cmdline-tools/tools/bin/sdkmanager --no_https \ "emulator" \ "platform-tools" \ "platforms;android-${api}" \ "${image}" | grep -v = || true echo "no" | - ./sdk/cmdline-tools/bin/avdmanager create avd \ + ./sdk/cmdline-tools/tools/bin/avdmanager create avd \ --name "${1}" \ - --package "${image}" + --package "${image}" | grep -v = || true diff --git a/ci/docker/i686-linux-android/Dockerfile b/ci/docker/i686-linux-android/Dockerfile index 148ee33fab9e3..ed1b2e9fbef0e 100644 --- a/ci/docker/i686-linux-android/Dockerfile +++ b/ci/docker/i686-linux-android/Dockerfile @@ -11,29 +11,26 @@ RUN apt-get install -y --no-install-recommends \ python3-distutils \ unzip \ expect \ - openjdk-18-jre \ + openjdk-8-jre \ libstdc++6:i386 \ libpulse0 WORKDIR /android/ COPY android* /android/ -ENV ANDROID_ARCH=i686 \ - ANDROID_SDK_ROOT=/android/sdk \ - ANDROID_HOME=/android/sdk -ENV PATH=$PATH:/android/ndk-$ANDROID_ARCH/toolchains/llvm/prebuilt/linux-x86_64/bin:/android/sdk/cmdline-tools:/android/sdk/platform-tools +ENV ANDROID_ARCH=i686 +ENV PATH=$PATH:/android/ndk-$ANDROID_ARCH/bin:/android/sdk/cmdline-tools/tools:/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 chmod 777 -R /tmp/.android -RUN chmod 755 /android/sdk/cmdline-tools/* /android/sdk/emulator/qemu/linux-x86_64/* +RUN chmod 755 /android/sdk/cmdline-tools/tools/* /android/sdk/emulator/qemu/linux-x86_64/* ENV PATH=$PATH:/rust/bin \ - CARGO_TARGET_I686_LINUX_ANDROID_LINKER=i686-linux-android28-clang \ + CARGO_TARGET_I686_LINUX_ANDROID_LINKER=i686-linux-android-gcc \ CARGO_TARGET_I686_LINUX_ANDROID_RUNNER=/tmp/runtest \ - CC_i686_linux_android=i686-linux-android28-clang \ - AR=llvm-ar \ + CC_i686_linux_android=i686-linux-android-gcc \ HOME=/tmp ADD runtest-android.rs /tmp/runtest.rs diff --git a/ci/install-rust.sh b/ci/install-rust.sh index d7e2be8070dc0..3146ace90740c 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-09 fi if [ "$OS" = "windows" ]; then : "${TARGET?The TARGET environment variable must be set.}" diff --git a/ci/runtest-android.rs b/ci/runtest-android.rs index 477ae89e0e6b8..e14dba322cdf6 100644 --- a/ci/runtest-android.rs +++ b/ci/runtest-android.rs @@ -22,7 +22,7 @@ fn main() { .arg(&test) .arg(&dst) .status() - .expect("failed to run: adb push"); + .expect("failed to run: adb pushr"); assert!(status.success()); let output = Command::new("adb") diff --git a/libc-test/build.rs b/libc-test/build.rs index 655ddadaf6261..8573fbc1a07d8 100644 --- a/libc-test/build.rs +++ b/libc-test/build.rs @@ -1695,10 +1695,6 @@ fn test_android(target: &str) { // These are tested in the `linux_elf.rs` file. "Elf64_Phdr" | "Elf32_Phdr" => true, - // Linux >= 5.11 tweaked the `svm_zero` field of the `sockaddr_vm` struct. - // https://github.com/torvalds/linux/commit/dc8eeef73b63ed8988224ba6b5ed19a615163a7f - "sockaddr_vm" => true, - _ => false, } }); From 22167ea92b25fb1cfc871b65e8a9f02f9ea8539a Mon Sep 17 00:00:00 2001 From: Yuki Okushi Date: Tue, 1 Nov 2022 20:36:31 +0900 Subject: [PATCH 8/9] Pin nightly Signed-off-by: Yuki Okushi --- ci/install-rust.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/install-rust.sh b/ci/install-rust.sh index 3146ace90740c..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-2022-10-09 + toolchain=nightly-2022-10-08 fi if [ "$OS" = "windows" ]; then : "${TARGET?The TARGET environment variable must be set.}" From 074199b29cfb47d22aedef053a747b4a1b00c260 Mon Sep 17 00:00:00 2001 From: Yuki Okushi Date: Tue, 1 Nov 2022 22:06:33 +0900 Subject: [PATCH 9/9] what about this Signed-off-by: Yuki Okushi --- ci/android-install-sdk.sh | 22 ++++++++++++---------- ci/docker/i686-linux-android/Dockerfile | 19 ++++++++++++------- 2 files changed, 24 insertions(+), 17 deletions(-) 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 \"$@\"", \ "--" \