Skip to content

Commit

Permalink
Upgrade Android NDK version
Browse files Browse the repository at this point in the history
  • Loading branch information
JohnTitor committed Nov 12, 2023
1 parent 614d5e2 commit 73fc089
Show file tree
Hide file tree
Showing 7 changed files with 49 additions and 57 deletions.
40 changes: 5 additions & 35 deletions ci/android-install-ndk.sh
Expand Up @@ -2,40 +2,10 @@

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-r26b
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;
mv ./${NDK}/toolchains/llvm/prebuilt/linux-x86_64 /android

python3 ${NDK}/build/tools/make_standalone_toolchain.py \
--install-dir "/android/ndk-${1}" \
--arch "${arch}" \
--api ${api}

rm -rf ./${NDK}-linux-x86_64.zip ./${NDK}
rm -rf ./${NDK}-linux.zip ./${NDK}
5 changes: 3 additions & 2 deletions ci/docker/aarch64-linux-android/Dockerfile
Expand Up @@ -19,9 +19,9 @@ WORKDIR /android/
COPY android* /android/

ENV ANDROID_ARCH=aarch64
ENV PATH=$PATH:/android/ndk-$ANDROID_ARCH/bin:/android/sdk/cmdline-tools/tools:/android/sdk/platform-tools
ENV PATH=$PATH:/android/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-ndk.sh
RUN sh /android/android-install-sdk.sh $ANDROID_ARCH
RUN mv /root/.android /tmp
RUN chmod 777 -R /tmp/.android
Expand All @@ -31,6 +31,7 @@ ENV PATH=$PATH:/rust/bin \
CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER=aarch64-linux-android28-clang \
CARGO_TARGET_AARCH64_LINUX_ANDROID_RUNNER=/tmp/runtest \
CC_aarch64_linux_android=aarch64-linux-android28-clang \
AR_aarch64_linux_android=llvm-ar \
HOME=/tmp

ADD runtest-android.rs /tmp/runtest.rs
Expand Down
9 changes: 5 additions & 4 deletions ci/docker/arm-linux-androideabi/Dockerfile
Expand Up @@ -19,18 +19,19 @@ WORKDIR /android/
COPY android* /android/

ENV ANDROID_ARCH=arm
ENV PATH=$PATH:/android/ndk-$ANDROID_ARCH/bin:/android/sdk/cmdline-tools/tools:/android/sdk/platform-tools
ENV PATH=$PATH:/android/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-ndk.sh
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/*

ENV PATH=$PATH:/rust/bin \
CARGO_TARGET_ARM_LINUX_ANDROIDEABI_LINKER=arm-linux-androideabi-gcc \
CARGO_TARGET_ARM_LINUX_ANDROIDEABI_LINKER=armv7a-linux-androideabi28-clang \
CARGO_TARGET_ARM_LINUX_ANDROIDEABI_RUNNER=/tmp/runtest \
CC_arm_linux_androideabi=arm-linux-androideabi-gcc \
CC_arm_linux_androideabi=armv7a-linux-androideabi28-clang \
AR_arm_linux_androideabi=llvm-ar \
HOME=/tmp

ADD runtest-android.rs /tmp/runtest.rs
Expand Down
9 changes: 5 additions & 4 deletions ci/docker/i686-linux-android/Dockerfile
Expand Up @@ -19,18 +19,19 @@ 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/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-ndk.sh
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/*

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_i686_linux_android=llvm-ar \
HOME=/tmp

ADD runtest-android.rs /tmp/runtest.rs
Expand Down
11 changes: 6 additions & 5 deletions ci/docker/x86_64-linux-android/Dockerfile
Expand Up @@ -13,15 +13,16 @@ RUN apt-get update && \
WORKDIR /android/
ENV ANDROID_ARCH=x86_64
COPY android-install-ndk.sh /android/
RUN sh /android/android-install-ndk.sh $ANDROID_ARCH
RUN sh /android/android-install-ndk.sh

# We do not run x86_64-linux-android tests on an android emulator.
# See ci/android-sysimage.sh for information about how tests are run.
COPY android-sysimage.sh /android/
RUN bash /android/android-sysimage.sh x86_64 x86_64-24_r07.zip

ENV PATH=$PATH:/rust/bin:/android/ndk-$ANDROID_ARCH/bin \
CARGO_TARGET_X86_64_LINUX_ANDROID_LINKER=x86_64-linux-android-gcc \
CC_x86_64_linux_android=x86_64-linux-android-gcc \
CXX_x86_64_linux_android=x86_64-linux-android-g++ \
ENV PATH=$PATH:/rust/bin:/android/linux-x86_64/bin \
CARGO_TARGET_X86_64_LINUX_ANDROID_LINKER=x86_64-linux-android28-clang \
CC_x86_64_linux_android=x86_64-linux-android28-clang \
CXX_x86_64_linux_android=x86_64-linux-android28-clang++ \
AR_x86_64_linux_android=llvm-ar \
HOME=/tmp
7 changes: 1 addition & 6 deletions ci/install-rust.sh
Expand Up @@ -8,12 +8,7 @@ toolchain=
if [ -n "$TOOLCHAIN" ]; then
toolchain=$TOOLCHAIN
else
# Pin the nightly version as newer nightly versions break CI,
# https://github.com/rust-lang/rust/issues/103673 contains related information.
case "$TARGET" in
*android*) toolchain=nightly-2022-10-09;;
*) toolchain=nightly;;
esac
toolchain=nightly
fi
if [ "$OS" = "windows" ]; then
: "${TARGET?The TARGET environment variable must be set.}"
Expand Down
25 changes: 24 additions & 1 deletion libc-test/build.rs
Expand Up @@ -1758,6 +1758,14 @@ fn test_android(target: &str) {
// These are tested in the `linux_elf.rs` file.
"Elf64_Phdr" | "Elf32_Phdr" => true,

// FIXME: The type of `iv` has been changed.
"af_alg_iv" => true,

// FIXME: The size of struct has been changed:
"inotify_event" => true,
// FIXME: The field has been changed:
"sockaddr_vm" => true,

_ => false,
}
});
Expand Down Expand Up @@ -1863,6 +1871,14 @@ fn test_android(target: &str) {
| "NTF_EXT_LOCKED"
| "ALG_SET_DRBG_ENTROPY" => true,

// FIXME: Something has been changed on r26b:
| "IPPROTO_MAX"
| "NFNL_SUBSYS_COUNT"
| "NF_NETDEV_NUMHOOKS"
| "NFT_MSG_MAX"
| "SW_MAX"
| "SW_CNT" => true,

_ => false,
}
});
Expand Down Expand Up @@ -1909,6 +1925,11 @@ fn test_android(target: &str) {
// Added in API level 28, but some tests use level 24.
"fread_unlocked" | "fwrite_unlocked" | "fgets_unlocked" | "fflush_unlocked" => true,

// FIXME: bad function pointers:
"isalnum" | "isalpha" | "iscntrl" | "isdigit" | "isgraph" | "islower" | "isprint"
| "ispunct" | "isspace" | "isupper" | "isxdigit" | "isblank" | "tolower"
| "toupper" => true,

_ => false,
}
});
Expand All @@ -1924,7 +1945,9 @@ fn test_android(target: &str) {
// incorrect, see: https://github.com/rust-lang/libc/issues/1359
(struct_ == "sigaction" && field == "sa_sigaction") ||
// signalfd had SIGSYS fields added in Android 4.19, but CI does not have that version yet.
(struct_ == "signalfd_siginfo" && field == "ssi_call_addr")
(struct_ == "signalfd_siginfo" && field == "ssi_call_addr") ||
// FIXME: Seems the type has been changed on NDK r26b
(struct_ == "flock64" && (field == "l_start" || field == "l_len"))
});

cfg.skip_field(move |struct_, field| {
Expand Down

0 comments on commit 73fc089

Please sign in to comment.