Skip to content

Commit 8c5cc14

Browse files
authored
Merge pull request #1930 from lzutao/update-android-targets
build: Use rustc docker for android targets
2 parents 866e029 + 28f00f3 commit 8c5cc14

File tree

3 files changed

+26
-53
lines changed

3 files changed

+26
-53
lines changed

ci/docker/android/Dockerfile

+17-51
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,18 @@
1-
FROM ubuntu:18.04
2-
USER root
1+
FROM rust-android
32

4-
RUN apt-get update && \
5-
apt-get install -y --no-install-recommends \
6-
ca-certificates \
7-
cmake \
8-
curl \
9-
gcc \
10-
libc6-dev \
11-
make \
12-
pkg-config
13-
14-
COPY ci/docker/scripts/sccache.bash /scripts/
15-
RUN bash /scripts/sccache.bash
16-
17-
RUN apt-get install -y --no-install-recommends \
18-
unzip \
19-
python && \
20-
curl -O https://dl.google.com/android/repository/android-ndk-r13b-linux-x86_64.zip && \
21-
unzip -q android-ndk-r13b-linux-x86_64.zip && \
22-
./android-ndk-r13b/build/tools/make_standalone_toolchain.py \
23-
--install-dir /android-ndk/arm \
24-
--arch arm \
25-
--api 21 && \
26-
./android-ndk-r13b/build/tools/make_standalone_toolchain.py \
27-
--install-dir /android-ndk/arm64 \
28-
--arch arm64 \
29-
--api 21 && \
30-
./android-ndk-r13b/build/tools/make_standalone_toolchain.py \
31-
--install-dir /android-ndk/x86 \
32-
--arch x86 \
33-
--api 21 && \
34-
./android-ndk-r13b/build/tools/make_standalone_toolchain.py \
35-
--install-dir /android-ndk/x86_64 \
36-
--arch x86_64 \
37-
--api 21 && \
38-
rm -rf ./android-ndk-r13b-linux-x86_64.zip ./android-ndk-r13b && \
39-
apt-get purge --auto-remove -y unzip python
40-
41-
ENV PATH=$PATH:/android-ndk/arm/bin
42-
ENV PATH=$PATH:/android-ndk/arm64/bin
43-
ENV PATH=$PATH:/android-ndk/x86/bin
44-
ENV PATH=$PATH:/android-ndk/x86_64/bin
45-
46-
ENV CARGO_TARGET_ARM_LINUX_ANDROIDEABI_LINKER=arm-linux-androideabi-gcc
47-
ENV CARGO_TARGET_ARMV7_LINUX_ANDROIDEABI_LINKER=arm-linux-androideabi-gcc
48-
ENV CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER=aarch64-linux-android-gcc
49-
ENV CARGO_TARGET_I686_LINUX_ANDROID_LINKER=i686-linux-android-gcc
50-
ENV CARGO_TARGET_X86_64_LINUX_ANDROID_LINKER=x86_64-linux-android-gcc
51-
52-
WORKDIR /buildslave
3+
ENV PATH=$PATH:/android/ndk/arm-14/bin:/android/ndk/arm64-21/bin:/android/ndk/x86-14/bin:/android/ndk/x86_64-21/bin \
4+
CC_arm_linux_androideabi=arm-linux-androideabi-clang \
5+
CC_armv7_linux_androideabi=arm-linux-androideabi-clang \
6+
CC_aarch64_linux_android=aarch64-linux-android-clang \
7+
CC_i686_linux_android=i686-linux-android-clang \
8+
CC_x86_64_linux_android=x86_64-linux-android-clang \
9+
CXX_arm_linux_androideabi=arm-linux-androideabi-clang++ \
10+
CXX_armv7_linux_androideabi=arm-linux-androideabi-clang++ \
11+
CXX_aarch64_linux_android=aarch64-linux-android-clang++ \
12+
CXX_i686_linux_android=i686-linux-android-clang++ \
13+
CXX_x86_64_linux_android=x86_64-linux-android-clang++ \
14+
CARGO_TARGET_ARM_LINUX_ANDROIDEABI_LINKER=arm-linux-androideabi-clang \
15+
CARGO_TARGET_ARMV7_LINUX_ANDROIDEABI_LINKER=arm-linux-androideabi-clang \
16+
CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER=aarch64-linux-android-clang \
17+
CARGO_TARGET_I686_LINUX_ANDROID_LINKER=i686-linux-android-clang \
18+
CARGO_TARGET_X86_64_LINUX_ANDROID_LINKER=x86_64-linux-android-clang

ci/fetch-rust-docker.bash

+4-2
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ TARGET="$1"
1111

1212
RUST_REPO="https://github.com/rust-lang/rust"
1313
S3_BASE_URL="https://rust-lang-ci2.s3.amazonaws.com/rustc-builds"
14+
LOCAL_DOCKER_TAG="rust-$TARGET"
1415

1516
# Use images from rustc master
1617
case "$TARGET" in
@@ -19,6 +20,7 @@ case "$TARGET" in
1920
arm-unknown-linux-gnueabihf) image=dist-armhf-linux ;;
2021
armv7-unknown-linux-gnueabihf) image=dist-armv7-linux ;;
2122
i686-unknown-linux-gnu) image=dist-i686-linux ;;
23+
*-linux-android*) image=dist-android; LOCAL_DOCKER_TAG=rust-android ;;
2224
mips-unknown-linux-gnu) image=dist-mips-linux ;;
2325
mips64-unknown-linux-gnuabi64) image=dist-mips64-linux ;;
2426
mips64el-unknown-linux-gnuabi64) image=dist-mips64el-linux ;;
@@ -40,7 +42,7 @@ rm -f "$info"
4042
curl -o "$info" "$image_url"
4143
digest=$(grep -m1 ^sha "$info")
4244

43-
if [ -z "$(docker images -q "rust-$TARGET")" ]; then
45+
if [ -z "$(docker images -q "${LOCAL_DOCKER_TAG}")" ]; then
4446
url=$(grep -m1 ^https "$info")
4547
cache=/tmp/rustci_docker_cache
4648
echo "Attempting to download $url"
@@ -49,5 +51,5 @@ if [ -z "$(docker images -q "rust-$TARGET")" ]; then
4951
travis_retry curl -y 30 -Y 10 --connect-timeout 30 -f -L -C - -o "$cache" "$url"
5052
set -e
5153
docker load --quiet -i "$cache"
52-
docker tag "$digest" "rust-$TARGET"
54+
docker tag "$digest" "${LOCAL_DOCKER_TAG}"
5355
fi

ci/run.bash

+5
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,11 @@ if [ "$TRAVIS_OS_NAME" != "windows" ]; then
1212
FEATURES=('--features' 'vendored-openssl')
1313
fi
1414

15+
# rustc only supports armv7: https://forge.rust-lang.org/platform-support.html
16+
if [ "$TARGET" = arm-linux-androideabi ]; then
17+
export CFLAGS='-march=armv7'
18+
fi
19+
1520
cargo build --locked -v --release --target "$TARGET" "${FEATURES[@]}"
1621

1722
runtest () {

0 commit comments

Comments
 (0)