Skip to content

Commit 6500357

Browse files
committed
Add host build for aarch64-linux-android
1 parent 40ac5a5 commit 6500357

File tree

5 files changed

+77
-39
lines changed

5 files changed

+77
-39
lines changed

.travis.yml

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ matrix:
1515
- env: IMAGE=arm-android
1616
- env: IMAGE=armhf-gnu
1717
- env: IMAGE=cross DEPLOY=1
18+
- env: IMAGE=dist-aarch64-android DEPLOY=1
1819
- env: IMAGE=dist-aarch64-linux DEPLOY=1
1920
- env: IMAGE=dist-android DEPLOY=1
2021
- env: IMAGE=dist-arm-linux DEPLOY=1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
FROM ubuntu:16.04
2+
3+
RUN apt-get update && \
4+
apt-get install -y --no-install-recommends \
5+
g++ \
6+
make \
7+
file \
8+
curl \
9+
ca-certificates \
10+
python2.7 \
11+
git \
12+
cmake \
13+
unzip \
14+
sudo \
15+
xz-utils \
16+
libssl-dev \
17+
pkg-config
18+
19+
RUN curl -OL https://github.com/Yelp/dumb-init/releases/download/v1.2.0/dumb-init_1.2.0_amd64.deb && \
20+
dpkg -i dumb-init_*.deb && \
21+
rm dumb-init_*.deb
22+
23+
RUN curl -o /usr/local/bin/sccache \
24+
https://s3.amazonaws.com/rust-lang-ci/rust-ci-mirror/2017-04-04-sccache-x86_64-unknown-linux-musl && \
25+
chmod +x /usr/local/bin/sccache
26+
27+
RUN curl -O https://dl.google.com/android/repository/android-ndk-r13b-linux-x86_64.zip && \
28+
unzip -q android-ndk-r13b-linux-x86_64.zip && \
29+
python2.7 android-ndk-r13b/build/tools/make_standalone_toolchain.py \
30+
--install-dir /android-ndk \
31+
--arch arm64 \
32+
--api 21 && \
33+
rm -rf android-ndk-*
34+
35+
ENTRYPOINT ["/usr/bin/dumb-init", "--"]
36+
37+
ENV PATH=$PATH:/android-ndk/bin
38+
39+
ENV DEP_Z_ROOT=/android-ndk/sysroot/usr/
40+
41+
ENV RUST_CONFIGURE_ARGS \
42+
--target=aarch64-linux-android \
43+
--host=aarch64-linux-android \
44+
--aarch64-linux-android-ndk=/android-ndk \
45+
--disable-rpath \
46+
--enable-extended \
47+
--enable-cargo-openssl-static
48+
49+
ENV SCRIPT python2.7 ../x.py dist --target aarch64-linux-android --host aarch64-linux-android

src/ci/docker/dist-android/Dockerfile

+10-18
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
FROM ubuntu:16.04
22

3-
RUN dpkg --add-architecture i386 && \
4-
apt-get update && \
3+
RUN apt-get update && \
54
apt-get install -y --no-install-recommends \
65
g++ \
76
make \
@@ -12,40 +11,33 @@ RUN dpkg --add-architecture i386 && \
1211
git \
1312
cmake \
1413
unzip \
15-
expect \
16-
openjdk-9-jre \
1714
sudo \
18-
libstdc++6:i386 \
1915
xz-utils \
2016
libssl-dev \
2117
pkg-config
2218

23-
WORKDIR /android/
24-
ENV PATH=$PATH:/android/ndk-arm-9/bin:/android/sdk/tools:/android/sdk/platform-tools
25-
26-
COPY install-ndk.sh /android/
27-
RUN sh /android/install-ndk.sh
28-
2919
RUN curl -OL https://github.com/Yelp/dumb-init/releases/download/v1.2.0/dumb-init_1.2.0_amd64.deb && \
3020
dpkg -i dumb-init_*.deb && \
3121
rm dumb-init_*.deb
32-
ENTRYPOINT ["/usr/bin/dumb-init", "--"]
3322

3423
RUN curl -o /usr/local/bin/sccache \
3524
https://s3.amazonaws.com/rust-lang-ci/rust-ci-mirror/2017-04-04-sccache-x86_64-unknown-linux-musl && \
3625
chmod +x /usr/local/bin/sccache
3726

27+
COPY install-ndk.sh /android/
28+
RUN sh /android/install-ndk.sh
29+
30+
ENTRYPOINT ["/usr/bin/dumb-init", "--"]
31+
3832
ENV TARGETS=arm-linux-androideabi
39-
ENV TARGETS=$TARGETS,i686-linux-android
40-
ENV TARGETS=$TARGETS,aarch64-linux-android
4133
ENV TARGETS=$TARGETS,armv7-linux-androideabi
34+
ENV TARGETS=$TARGETS,i686-linux-android
4235

4336
ENV RUST_CONFIGURE_ARGS \
4437
--target=$TARGETS \
4538
--enable-extended \
46-
--arm-linux-androideabi-ndk=/android/ndk-arm-9 \
47-
--armv7-linux-androideabi-ndk=/android/ndk-arm-9 \
48-
--i686-linux-android-ndk=/android/ndk-x86-9 \
49-
--aarch64-linux-android-ndk=/android/ndk-aarch64
39+
--arm-linux-androideabi-ndk=/android/ndk/arm-9 \
40+
--armv7-linux-androideabi-ndk=/android/ndk/arm-9 \
41+
--i686-linux-android-ndk=/android/ndk/x86-9
5042

5143
ENV SCRIPT python2.7 ../x.py dist --target $TARGETS

src/ci/docker/dist-android/install-ndk.sh

+16-21
Original file line numberDiff line numberDiff line change
@@ -11,28 +11,23 @@
1111

1212
set -ex
1313

14+
install_ndk() {
15+
python2.7 android-ndk-r13b/build/tools/make_standalone_toolchain.py \
16+
--install-dir /android/ndk/$1-$2 \
17+
--arch $1 \
18+
--api $2
19+
}
20+
21+
mkdir -p /android/ndk
22+
cd android
23+
1424
# Prep the Android NDK
1525
#
1626
# See https://github.com/servo/servo/wiki/Building-for-Android
17-
curl -O https://dl.google.com/android/repository/android-ndk-r11c-linux-x86_64.zip
18-
unzip -q android-ndk-r11c-linux-x86_64.zip
19-
bash android-ndk-r11c/build/tools/make-standalone-toolchain.sh \
20-
--platform=android-9 \
21-
--toolchain=arm-linux-androideabi-4.9 \
22-
--install-dir=/android/ndk-arm-9 \
23-
--ndk-dir=/android/android-ndk-r11c \
24-
--arch=arm
25-
bash android-ndk-r11c/build/tools/make-standalone-toolchain.sh \
26-
--platform=android-21 \
27-
--toolchain=aarch64-linux-android-4.9 \
28-
--install-dir=/android/ndk-aarch64 \
29-
--ndk-dir=/android/android-ndk-r11c \
30-
--arch=arm64
31-
bash android-ndk-r11c/build/tools/make-standalone-toolchain.sh \
32-
--platform=android-9 \
33-
--toolchain=x86-4.9 \
34-
--install-dir=/android/ndk-x86-9 \
35-
--ndk-dir=/android/android-ndk-r11c \
36-
--arch=x86
27+
curl -O https://dl.google.com/android/repository/android-ndk-r13b-linux-x86_64.zip
28+
unzip -q android-ndk-r13b-linux-x86_64.zip
29+
30+
install_ndk arm 9
31+
install_ndk x86 9
3732

38-
rm -rf ./android-ndk-r11c-linux-x86_64.zip ./android-ndk-r11c
33+
rm -rf android-ndk-*

src/tools/build-manifest/src/main.rs

+1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ use std::path::{PathBuf, Path};
1919
use std::process::{Command, Stdio};
2020

2121
static HOSTS: &'static [&'static str] = &[
22+
"aarch64-linux-android",
2223
"aarch64-unknown-linux-gnu",
2324
"arm-unknown-linux-gnueabi",
2425
"arm-unknown-linux-gnueabihf",

0 commit comments

Comments
 (0)