From 86b5cb114923ae3190c5a4a81ef030495d322c33 Mon Sep 17 00:00:00 2001 From: Amanieu d'Antras Date: Mon, 19 Jun 2023 23:41:37 +0100 Subject: [PATCH] Attempt to use newer Android SDK This is copied from the rust-lang/libc CI scripts. --- ci/android-ndk.sh | 25 ++++---------------- ci/android-sdk.sh | 25 +++++++++++++------- ci/docker/aarch64-linux-android/Dockerfile | 7 ++++-- ci/docker/arm-linux-androideabi/Dockerfile | 7 ++++-- ci/docker/armv7-linux-androideabi/Dockerfile | 7 ++++-- ci/docker/i686-linux-android/Dockerfile | 7 ++++-- ci/docker/x86_64-linux-android/Dockerfile | 7 ++++-- 7 files changed, 46 insertions(+), 39 deletions(-) diff --git a/ci/android-ndk.sh b/ci/android-ndk.sh index b5df62b6f..7376dcc4f 100755 --- a/ci/android-ndk.sh +++ b/ci/android-ndk.sh @@ -1,23 +1,8 @@ set -ex -ANDROID_ARCH=$1 -ANDROID_SDK_VERSION=4333796 +NDK=android-ndk-r25b +wget --tries=20 -q https://dl.google.com/android/repository/${NDK}-linux.zip +unzip -q ${NDK}-linux.zip +mv ${NDK} "/android-toolchain" -mkdir /tmp/android -cd /tmp/android - -curl -o android-sdk.zip \ - "https://dl.google.com/android/repository/sdk-tools-linux-${ANDROID_SDK_VERSION}.zip" -unzip -q android-sdk.zip - -yes | ./tools/bin/sdkmanager --licenses > /dev/null -./tools/bin/sdkmanager ndk-bundle > /dev/null - -./ndk-bundle/build/tools/make_standalone_toolchain.py \ - --arch $ANDROID_ARCH \ - --stl=libc++ \ - --api 21 \ - --install-dir /android-toolchain - -cd /tmp -rm -rf android +rm -rf ./${NDK}-linux.zip diff --git a/ci/android-sdk.sh b/ci/android-sdk.sh index 7fde9a97f..5e7037df0 100755 --- a/ci/android-sdk.sh +++ b/ci/android-sdk.sh @@ -9,15 +9,15 @@ set -ex # located in https://github.com/appunite/docker by just wrapping it in a script # which apparently magically accepts the licenses. -SDK=4333796 -mkdir sdk -curl --retry 20 https://dl.google.com/android/repository/sdk-tools-linux-${SDK}.zip -O -unzip -q -d sdk sdk-tools-linux-${SDK}.zip +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/cmdline-tools commandlinetools-linux-${SDK}_latest.zip case "$1" in arm | armv7) api=24 - image="system-images;android-${api};google_apis;armeabi-v7a" + image="system-images;android-${api};default;armeabi-v7a" ;; aarch64) api=24 @@ -51,15 +51,22 @@ 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/tools/bin/sdkmanager --licenses --no_https | grep -v = || true -yes | ./sdk/tools/bin/sdkmanager --no_https \ - "emulator" \ +yes | ./sdk/cmdline-tools/tools/bin/sdkmanager --licenses --no_https | grep -v = || true +yes | ./sdk/cmdline-tools/tools/bin/sdkmanager --no_https \ "platform-tools" \ "platforms;android-${api}" \ "${image}" | grep -v = || true +# The newer emulator versions (31.3.12 or higher) fail to a valid AVD and the test gets stuck. +# Until we figure out why, we use the older version (31.3.11). +wget -q --tries=20 https://redirector.gvt1.com/edgedl/android/repository/emulator-linux_x64-9058569.zip +unzip -q -d sdk emulator-linux_x64-9058569.zip + +cp /android/android-emulator-package.xml /android/sdk/emulator/package.xml + echo "no" | - ./sdk/tools/bin/avdmanager create avd \ + ./sdk/cmdline-tools/tools/bin/avdmanager create avd \ --name "${1}" \ --package "${image}" | grep -v = || true +rm -rf commandlinetools-linux-${SDK}_latest.zip emulator-linux_x64-9058569.zip diff --git a/ci/docker/aarch64-linux-android/Dockerfile b/ci/docker/aarch64-linux-android/Dockerfile index c5655ed5e..2da2d83bf 100644 --- a/ci/docker/aarch64-linux-android/Dockerfile +++ b/ci/docker/aarch64-linux-android/Dockerfile @@ -7,12 +7,15 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ openjdk-8-jre \ python \ gcc \ - libc6-dev + libc6-dev \ + wget \ + python3 \ + python3-distutils COPY android-ndk.sh / RUN /android-ndk.sh arm64 ENV PATH=$PATH:/android-toolchain/bin # TODO: run tests in an emulator eventually -ENV CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER=aarch64-linux-android-gcc \ +ENV CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER=aarch64-linux-android21-clang \ CARGO_TARGET_AARCH64_LINUX_ANDROID_RUNNER=echo diff --git a/ci/docker/arm-linux-androideabi/Dockerfile b/ci/docker/arm-linux-androideabi/Dockerfile index 446a64cc0..69e255241 100644 --- a/ci/docker/arm-linux-androideabi/Dockerfile +++ b/ci/docker/arm-linux-androideabi/Dockerfile @@ -7,12 +7,15 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ openjdk-8-jre \ python \ gcc \ - libc6-dev + libc6-dev \ + wget \ + python3 \ + python3-distutils COPY android-ndk.sh / RUN /android-ndk.sh arm ENV PATH=$PATH:/android-toolchain/bin # TODO: run tests in an emulator eventually -ENV CARGO_TARGET_ARM_LINUX_ANDROIDEABI_LINKER=arm-linux-androideabi-gcc \ +ENV CARGO_TARGET_ARM_LINUX_ANDROIDEABI_LINKER=armv7a-linux-androideabi19-clang \ CARGO_TARGET_ARM_LINUX_ANDROIDEABI_RUNNER=echo diff --git a/ci/docker/armv7-linux-androideabi/Dockerfile b/ci/docker/armv7-linux-androideabi/Dockerfile index 539bbc494..25f864ac2 100644 --- a/ci/docker/armv7-linux-androideabi/Dockerfile +++ b/ci/docker/armv7-linux-androideabi/Dockerfile @@ -7,12 +7,15 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ openjdk-8-jre \ python \ gcc \ - libc6-dev + libc6-dev \ + wget \ + python3 \ + python3-distutils COPY android-ndk.sh / RUN /android-ndk.sh arm ENV PATH=$PATH:/android-toolchain/bin # TODO: run tests in an emulator eventually -ENV CARGO_TARGET_ARMV7_LINUX_ANDROIDEABI_LINKER=arm-linux-androideabi-gcc \ +ENV CARGO_TARGET_ARMV7_LINUX_ANDROIDEABI_LINKER=armv7a-linux-androideabi19-clang \ CARGO_TARGET_ARMV7_LINUX_ANDROIDEABI_RUNNER=echo diff --git a/ci/docker/i686-linux-android/Dockerfile b/ci/docker/i686-linux-android/Dockerfile index 83ccb2948..664bc6721 100644 --- a/ci/docker/i686-linux-android/Dockerfile +++ b/ci/docker/i686-linux-android/Dockerfile @@ -7,10 +7,13 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ openjdk-8-jre \ python \ gcc \ - libc6-dev + libc6-dev \ + wget \ + python3 \ + python3-distutils COPY android-ndk.sh / -RUN /android-ndk.sh x86 +RUN /android-ndk.sh i686 ENV PATH=$PATH:/android-toolchain/bin # TODO: run tests in an emulator eventually diff --git a/ci/docker/x86_64-linux-android/Dockerfile b/ci/docker/x86_64-linux-android/Dockerfile index 88a22ce6c..1e671fd96 100644 --- a/ci/docker/x86_64-linux-android/Dockerfile +++ b/ci/docker/x86_64-linux-android/Dockerfile @@ -7,12 +7,15 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ openjdk-8-jre \ python \ gcc \ - libc6-dev + libc6-dev \ + wget \ + python3 \ + python3-distutils COPY android-ndk.sh / RUN /android-ndk.sh x86_64 ENV PATH=$PATH:/android-toolchain/bin # TODO: run tests in an emulator eventually -ENV CARGO_TARGET_X86_64_LINUX_ANDROID_LINKER=x86_64-linux-android-gcc \ +ENV CARGO_TARGET_X86_64_LINUX_ANDROID_LINKER=x86_64-linux-android21-clang \ CARGO_TARGET_X86_64_LINUX_ANDROID_RUNNER=echo