Skip to content

Commit

Permalink
Add aarch64-android testing
Browse files Browse the repository at this point in the history
Updating to NDK 26d and API 21 revealed that the most recent emulator no
longer runs 32-bit devices at all. Indeed, Google stopped shipping
32-bit emulator images as of API level 31.

Since this architecture is more used, and current images no longer have
backcompat code for 32-bit code, testing aarch64 is both important for
enabling developers to ship apps that run on modern devices and to
future-proof us.
  • Loading branch information
maurer committed Jul 19, 2024
1 parent a1e538c commit 005ab82
Show file tree
Hide file tree
Showing 6 changed files with 56 additions and 7 deletions.
1 change: 1 addition & 0 deletions src/bootstrap/src/utils/change_tracker.rs
Original file line number Diff line number Diff line change
Expand Up @@ -199,6 +199,7 @@ pub const CONFIG_CHANGE_HISTORY: &[ChangeInfo] = &[
change_id: 126701,
severity: ChangeSeverity::Warning,
summary: "`llvm.lld` is enabled by default for the dist profile. If set to false, `lld` will not be included in the dist build.",
},
ChangeInfo {
change_id: 120593,
severity: ChangeSeverity::Info,
Expand Down
41 changes: 41 additions & 0 deletions src/ci/docker/host-x86_64/aarch64-android/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
FROM ubuntu:23.04

ARG DEBIAN_FRONTEND=noninteractive
COPY scripts/android-base-apt-get.sh /scripts/
RUN sh /scripts/android-base-apt-get.sh

COPY scripts/android-ndk.sh /scripts/
RUN . /scripts/android-ndk.sh && \
download_ndk android-ndk-r26d-linux.zip

RUN dpkg --add-architecture i386 && \
apt-get update && \
apt-get install -y --no-install-recommends \
libgl1-mesa-glx \
libpulse0 \
libstdc++6:i386 \
openjdk-8-jre-headless \
tzdata \
wget \
python3

COPY scripts/android-sdk.sh /scripts/
COPY scripts/android-sdk-manager.py /scripts/
COPY host-x86_64/aarch64-android/android-sdk.lock /android/sdk/android-sdk.lock
RUN /scripts/android-sdk.sh

ENV PATH=$PATH:/android/sdk/emulator
ENV PATH=$PATH:/android/sdk/tools
ENV PATH=$PATH:/android/sdk/platform-tools

ENV TARGETS=aarch64-linux-android

ENV RUST_CONFIGURE_ARGS --android-ndk=/android/ndk/

ENV SCRIPT python3 ../x.py --stage 2 test --host='' --target $TARGETS

COPY scripts/sccache.sh /scripts/
RUN sh /scripts/sccache.sh

COPY scripts/android-start-emulator.sh /scripts/
ENTRYPOINT ["/scripts/android-start-emulator.sh", "arm64-v8a", "auto"]
6 changes: 6 additions & 0 deletions src/ci/docker/host-x86_64/aarch64-android/android-sdk.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
emulator emulator-linux_x64-12038310.zip fe7a96bf6fbe7b026555dd7f76b713f22a07ec8b
patcher;v4 3534162-studio.sdk-patcher.zip 046699c5e2716ae11d77e0bad814f7f33fab261e
platform-tools platform-tools_r34.0.5-linux.zip 96097475cf7b279fdd8f218f5d043ffe94104ec3
platforms;android-21 android-21_r02.zip 53536556059bb29ae82f414fd2e14bc335a4eb4c
system-images;android-21;default;arm64-v8a sys-img/android/arm64-v8a-21_r04.zip c4375f1b4b4cd21a8617660e25f621cedcbd8332
tools sdk-tools-linux-4333796.zip 8c7c28554a32318461802c1291d76fccfafde054
2 changes: 1 addition & 1 deletion src/ci/docker/host-x86_64/arm-android/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -38,4 +38,4 @@ COPY scripts/sccache.sh /scripts/
RUN sh /scripts/sccache.sh

COPY scripts/android-start-emulator.sh /scripts/
ENTRYPOINT ["/scripts/android-start-emulator.sh"]
ENTRYPOINT ["/scripts/android-start-emulator.sh", "armeabi-v7a", "classic"]
10 changes: 4 additions & 6 deletions src/ci/docker/scripts/android-start-emulator.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,9 @@ set -ex
# emulator identify the system
export SHELL=/bin/bash

# Using the default qemu2 engine makes time::tests::since_epoch fails because
# the emulator date is set to unix epoch (in armeabi-v7a-18 image). Using
# classic engine the emulator starts with the current date and the tests run
# fine. If another image is used, this need to be evaluated again.
nohup nohup emulator @armeabi-v7a-18 \
-engine classic -no-window -partition-size 2047 0<&- &>/dev/null &
nohup nohup emulator @$1-21 \
-engine $2 -no-window -no-audio -partition-size 2047 0<&- &>/dev/null &

shift 2

exec "$@"
3 changes: 3 additions & 0 deletions src/ci/github-actions/jobs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,9 @@ auto:
- image: arm-android
<<: *job-linux-4c

- image: aarch64-android
<<: *job-linux-8c

- image: armhf-gnu
<<: *job-linux-4c

Expand Down

0 comments on commit 005ab82

Please sign in to comment.