Skip to content

Commit 49f793a

Browse files
committed
ci: Update android ndk and sdk
1 parent 8aad3a3 commit 49f793a

File tree

8 files changed

+139
-119
lines changed

8 files changed

+139
-119
lines changed

src/ci/docker/arm-android/Dockerfile

+38-20
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,35 +11,54 @@ RUN dpkg --add-architecture i386 && \
1211
git \
1312
cmake \
1413
unzip \
15-
expect \
16-
openjdk-9-jre-headless \
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 install-sdk.sh accept-licenses.sh /android/
27-
RUN sh /android/install-ndk.sh
28-
RUN sh /android/install-sdk.sh
29-
3019
RUN curl -OL https://github.com/Yelp/dumb-init/releases/download/v1.2.0/dumb-init_1.2.0_amd64.deb && \
3120
dpkg -i dumb-init_*.deb && \
3221
rm dumb-init_*.deb
3322

34-
COPY start-emulator.sh /android/
23+
RUN curl -o /usr/local/bin/sccache \
24+
https://s3.amazonaws.com/rust-lang-ci/rust-ci-mirror/2017-04-29-sccache-x86_64-unknown-linux-musl && \
25+
chmod +x /usr/local/bin/sccache
3526

36-
ENTRYPOINT ["/usr/bin/dumb-init", "--", "/android/start-emulator.sh"]
27+
# Install NDK
28+
COPY install-ndk.sh /tmp
29+
RUN . /tmp/install-ndk.sh && \
30+
download_ndk android-ndk-r13b-linux-x86_64.zip && \
31+
make_standalone_toolchain arm 9 && \
32+
remove_ndk
3733

38-
RUN curl -o /usr/local/bin/sccache \
39-
https://s3.amazonaws.com/rust-lang-ci/rust-ci-mirror/2017-02-24-sccache-x86_64-unknown-linux-gnu && \
40-
chmod +x /usr/local/bin/sccache
34+
# Install SDK
35+
RUN dpkg --add-architecture i386 && \
36+
apt-get update && \
37+
apt-get install -y --no-install-recommends \
38+
openjdk-9-jre-headless \
39+
tzdata \
40+
libstdc++6:i386 \
41+
libgl1-mesa-glx \
42+
libpulse0
43+
44+
COPY install-sdk.sh /tmp
45+
RUN . /tmp/install-sdk.sh && \
46+
download_sdk tools_r25.2.5-linux.zip && \
47+
download_sysimage armeabi-v7a 18 && \
48+
create_avd armeabi-v7a 18
49+
50+
# Setup env
51+
ENV PATH=$PATH:/android/sdk/tools
52+
ENV PATH=$PATH:/android/sdk/platform-tools
53+
54+
ENV TARGETS=arm-linux-androideabi
4155

4256
ENV RUST_CONFIGURE_ARGS \
43-
--target=arm-linux-androideabi \
44-
--arm-linux-androideabi-ndk=/android/ndk-arm-9
57+
--target=$TARGETS \
58+
--arm-linux-androideabi-ndk=/android/ndk/arm-9
59+
60+
ENV SCRIPT python2.7 ../x.py test --target $TARGETS --verbose
4561

46-
ENV SCRIPT python2.7 ../x.py test --target arm-linux-androideabi
62+
# Entrypoint
63+
COPY start-emulator.sh /android/
64+
ENTRYPOINT ["/usr/bin/dumb-init", "--", "/android/start-emulator.sh"]

src/ci/docker/arm-android/accept-licenses.sh

-15
This file was deleted.

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

+19-17
Original file line numberDiff line numberDiff line change
@@ -11,23 +11,25 @@
1111

1212
set -ex
1313

14-
cpgdb() {
15-
cp android-ndk-r11c/prebuilt/linux-x86_64/bin/gdb /android/$1/bin/$2-gdb
16-
cp android-ndk-r11c/prebuilt/linux-x86_64/bin/gdb-orig /android/$1/bin/gdb-orig
17-
cp -r android-ndk-r11c/prebuilt/linux-x86_64/share /android/$1/share
14+
URL=https://dl.google.com/android/repository
15+
16+
download_ndk() {
17+
mkdir -p /android/ndk
18+
cd /android/ndk
19+
curl -O $URL/$1
20+
unzip -q $1
21+
rm $1
22+
mv android-ndk-* ndk
1823
}
1924

20-
# Prep the Android NDK
21-
#
22-
# See https://github.com/servo/servo/wiki/Building-for-Android
23-
curl -O https://dl.google.com/android/repository/android-ndk-r11c-linux-x86_64.zip
24-
unzip -q android-ndk-r11c-linux-x86_64.zip
25-
bash android-ndk-r11c/build/tools/make-standalone-toolchain.sh \
26-
--platform=android-9 \
27-
--toolchain=arm-linux-androideabi-4.9 \
28-
--install-dir=/android/ndk-arm-9 \
29-
--ndk-dir=/android/android-ndk-r11c \
30-
--arch=arm
31-
cpgdb ndk-arm-9 arm-linux-androideabi
25+
make_standalone_toolchain() {
26+
# See https://developer.android.com/ndk/guides/standalone_toolchain.html
27+
python2.7 /android/ndk/ndk/build/tools/make_standalone_toolchain.py \
28+
--install-dir /android/ndk/$1-$2 \
29+
--arch $1 \
30+
--api $2
31+
}
3232

33-
rm -rf ./android-ndk-r11c-linux-x86_64.zip ./android-ndk-r11c
33+
remove_ndk() {
34+
rm -rf /android/ndk/ndk
35+
}

src/ci/docker/arm-android/install-sdk.sh

+33-17
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#!/bin/sh
2-
# Copyright 2016 The Rust Project Developers. See the COPYRIGHT
2+
# Copyright 2017 The Rust Project Developers. See the COPYRIGHT
33
# file at the top-level directory of this distribution and at
44
# http://rust-lang.org/COPYRIGHT.
55
#
@@ -11,23 +11,39 @@
1111

1212
set -ex
1313

14-
# Prep the SDK and emulator
15-
#
16-
# Note that the update process requires that we accept a bunch of licenses, and
17-
# we can't just pipe `yes` into it for some reason, so we take the same strategy
18-
# located in https://github.com/appunite/docker by just wrapping it in a script
19-
# which apparently magically accepts the licenses.
14+
URL=https://dl.google.com/android/repository
15+
16+
download_sdk() {
17+
mkdir -p /android/sdk
18+
cd /android/sdk
19+
curl -O $URL/$1
20+
unzip -q $1
21+
rm -rf $1
22+
}
23+
24+
download_sysimage() {
25+
# See https://developer.android.com/studio/tools/help/android.html
26+
abi=$1
27+
api=$2
28+
29+
filter="platform-tools,android-$api"
30+
filter="$filter,sys-img-$abi-android-$api"
2031

21-
mkdir sdk
22-
curl https://dl.google.com/android/android-sdk_r24.4-linux.tgz | \
23-
tar xzf - -C sdk --strip-components=1
32+
# Keep printing yes to accept the licenses
33+
while true; do echo yes; sleep 10; done | \
34+
/android/sdk/tools/android update sdk -a --no-ui \
35+
--filter "$filter"
36+
}
2437

25-
filter="platform-tools,android-18"
26-
filter="$filter,sys-img-armeabi-v7a-android-18"
38+
create_avd() {
39+
# See https://developer.android.com/studio/tools/help/android.html
40+
abi=$1
41+
api=$2
2742

28-
./accept-licenses.sh "android - update sdk -a --no-ui --filter $filter"
43+
echo no | \
44+
/android/sdk/tools/android create avd \
45+
--name $abi-$api \
46+
--target android-$api \
47+
--abi $abi
48+
}
2949

30-
echo "no" | android create avd \
31-
--name arm-18 \
32-
--target android-18 \
33-
--abi armeabi-v7a

src/ci/docker/arm-android/start-emulator.sh

+8-1
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,12 @@ set -ex
1414
# Setting SHELL to a file instead on a symlink helps android
1515
# emulator identify the system
1616
export SHELL=/bin/bash
17-
nohup nohup emulator @arm-18 -no-window -partition-size 2047 0<&- &>/dev/null &
17+
18+
# Using the default qemu2 engine makes time::tests::since_epoch fails because
19+
# the emulator date is set to unix epoch (in armeabi-v7a-18 image). Using
20+
# classic engine the emulator starts with the current date and the tests run
21+
# fine. If another image is used, this need to be evaluated again.
22+
nohup nohup emulator @armeabi-v7a-18 \
23+
-engine classic -no-window -partition-size 2047 0<&- &>/dev/null &
24+
1825
exec "$@"

src/ci/docker/dist-android/Dockerfile

+19-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,28 +11,30 @@ 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-29-sccache-x86_64-unknown-linux-musl && \
36-
chmod +x /usr/local/bin/sccache
25+
chmod +x /usr/local/bin/sccache
26+
27+
ENTRYPOINT ["/usr/bin/dumb-init", "--"]
28+
29+
# Install NDK
30+
COPY install-ndk.sh /tmp
31+
RUN . /tmp/install-ndk.sh && \
32+
download_ndk android-ndk-r13b-linux-x86_64.zip && \
33+
make_standalone_toolchain arm 9 && \
34+
make_standalone_toolchain x86 9 && \
35+
make_standalone_toolchain arm64 21 && \
36+
make_standalone_toolchain x86_64 21 && \
37+
remove_ndk
3738

3839
ENV TARGETS=arm-linux-androideabi
3940
ENV TARGETS=$TARGETS,armv7-linux-androideabi
@@ -44,10 +45,10 @@ ENV TARGETS=$TARGETS,x86_64-linux-android
4445
ENV RUST_CONFIGURE_ARGS \
4546
--target=$TARGETS \
4647
--enable-extended \
47-
--arm-linux-androideabi-ndk=/android/ndk-arm-9 \
48-
--armv7-linux-androideabi-ndk=/android/ndk-arm-9 \
49-
--i686-linux-android-ndk=/android/ndk-x86-9 \
50-
--aarch64-linux-android-ndk=/android/ndk-arm64-21 \
51-
--x86_64-linux-android-ndk=/android/ndk-x86_64-21
48+
--arm-linux-androideabi-ndk=/android/ndk/arm-9 \
49+
--armv7-linux-androideabi-ndk=/android/ndk/arm-9 \
50+
--i686-linux-android-ndk=/android/ndk/x86-9 \
51+
--aarch64-linux-android-ndk=/android/ndk/arm64-21 \
52+
--x86_64-linux-android-ndk=/android/ndk/x86_64-21
5253

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

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

+21-30
Original file line numberDiff line numberDiff line change
@@ -11,34 +11,25 @@
1111

1212
set -ex
1313

14-
# Prep the Android NDK
15-
#
16-
# 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-arm64-21 \
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
37-
bash android-ndk-r11c/build/tools/make-standalone-toolchain.sh \
38-
--platform=android-21 \
39-
--toolchain=x86_64-4.9 \
40-
--install-dir=/android/ndk-x86_64-21 \
41-
--ndk-dir=/android/android-ndk-r11c \
42-
--arch=x86_64
14+
URL=https://dl.google.com/android/repository
15+
16+
download_ndk() {
17+
mkdir -p /android/ndk
18+
cd /android/ndk
19+
curl -O $URL/$1
20+
unzip -q $1
21+
rm $1
22+
mv android-ndk-* ndk
23+
}
24+
25+
make_standalone_toolchain() {
26+
# See https://developer.android.com/ndk/guides/standalone_toolchain.html
27+
python2.7 /android/ndk/ndk/build/tools/make_standalone_toolchain.py \
28+
--install-dir /android/ndk/$1-$2 \
29+
--arch $1 \
30+
--api $2
31+
}
4332

44-
rm -rf ./android-ndk-r11c-linux-x86_64.zip ./android-ndk-r11c
33+
remove_ndk() {
34+
rm -rf /android/ndk/ndk
35+
}

src/tools/compiletest/src/runtest.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -570,7 +570,7 @@ actual:\n\
570570
format!("-command={}", debugger_script.to_str().unwrap())];
571571

572572
let mut gdb_path = tool_path;
573-
gdb_path.push_str(&format!("/bin/{}-gdb", self.config.target));
573+
gdb_path.push_str("/bin/gdb");
574574
let procsrv::Result {
575575
out,
576576
err,

0 commit comments

Comments
 (0)