Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 17 additions & 51 deletions ci/docker/android/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,52 +1,18 @@
FROM ubuntu:18.04
USER root
FROM rust-android

RUN apt-get update && \
apt-get install -y --no-install-recommends \
ca-certificates \
cmake \
curl \
gcc \
libc6-dev \
make \
pkg-config

COPY ci/docker/scripts/sccache.bash /scripts/
RUN bash /scripts/sccache.bash

RUN apt-get install -y --no-install-recommends \
unzip \
python && \
curl -O https://dl.google.com/android/repository/android-ndk-r13b-linux-x86_64.zip && \
unzip -q android-ndk-r13b-linux-x86_64.zip && \
./android-ndk-r13b/build/tools/make_standalone_toolchain.py \
--install-dir /android-ndk/arm \
--arch arm \
--api 21 && \
./android-ndk-r13b/build/tools/make_standalone_toolchain.py \
--install-dir /android-ndk/arm64 \
--arch arm64 \
--api 21 && \
./android-ndk-r13b/build/tools/make_standalone_toolchain.py \
--install-dir /android-ndk/x86 \
--arch x86 \
--api 21 && \
./android-ndk-r13b/build/tools/make_standalone_toolchain.py \
--install-dir /android-ndk/x86_64 \
--arch x86_64 \
--api 21 && \
rm -rf ./android-ndk-r13b-linux-x86_64.zip ./android-ndk-r13b && \
apt-get purge --auto-remove -y unzip python

ENV PATH=$PATH:/android-ndk/arm/bin
ENV PATH=$PATH:/android-ndk/arm64/bin
ENV PATH=$PATH:/android-ndk/x86/bin
ENV PATH=$PATH:/android-ndk/x86_64/bin

ENV CARGO_TARGET_ARM_LINUX_ANDROIDEABI_LINKER=arm-linux-androideabi-gcc
ENV CARGO_TARGET_ARMV7_LINUX_ANDROIDEABI_LINKER=arm-linux-androideabi-gcc
ENV CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER=aarch64-linux-android-gcc
ENV CARGO_TARGET_I686_LINUX_ANDROID_LINKER=i686-linux-android-gcc
ENV CARGO_TARGET_X86_64_LINUX_ANDROID_LINKER=x86_64-linux-android-gcc

WORKDIR /buildslave
ENV PATH=$PATH:/android/ndk/arm-14/bin:/android/ndk/arm64-21/bin:/android/ndk/x86-14/bin:/android/ndk/x86_64-21/bin \
CC_arm_linux_androideabi=arm-linux-androideabi-clang \
CC_armv7_linux_androideabi=arm-linux-androideabi-clang \
CC_aarch64_linux_android=aarch64-linux-android-clang \
CC_i686_linux_android=i686-linux-android-clang \
CC_x86_64_linux_android=x86_64-linux-android-clang \
CXX_arm_linux_androideabi=arm-linux-androideabi-clang++ \
CXX_armv7_linux_androideabi=arm-linux-androideabi-clang++ \
CXX_aarch64_linux_android=aarch64-linux-android-clang++ \
CXX_i686_linux_android=i686-linux-android-clang++ \
CXX_x86_64_linux_android=x86_64-linux-android-clang++ \
CARGO_TARGET_ARM_LINUX_ANDROIDEABI_LINKER=arm-linux-androideabi-clang \
CARGO_TARGET_ARMV7_LINUX_ANDROIDEABI_LINKER=arm-linux-androideabi-clang \
CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER=aarch64-linux-android-clang \
CARGO_TARGET_I686_LINUX_ANDROID_LINKER=i686-linux-android-clang \
CARGO_TARGET_X86_64_LINUX_ANDROID_LINKER=x86_64-linux-android-clang
6 changes: 4 additions & 2 deletions ci/fetch-rust-docker.bash
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ TARGET="$1"

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

# Use images from rustc master
case "$TARGET" in
Expand All @@ -19,6 +20,7 @@ case "$TARGET" in
arm-unknown-linux-gnueabihf) image=dist-armhf-linux ;;
armv7-unknown-linux-gnueabihf) image=dist-armv7-linux ;;
i686-unknown-linux-gnu) image=dist-i686-linux ;;
*-linux-android*) image=dist-android; LOCAL_DOCKER_TAG=rust-android ;;
mips-unknown-linux-gnu) image=dist-mips-linux ;;
mips64-unknown-linux-gnuabi64) image=dist-mips64-linux ;;
mips64el-unknown-linux-gnuabi64) image=dist-mips64el-linux ;;
Expand All @@ -40,7 +42,7 @@ rm -f "$info"
curl -o "$info" "$image_url"
digest=$(grep -m1 ^sha "$info")

if [ -z "$(docker images -q "rust-$TARGET")" ]; then
if [ -z "$(docker images -q "${LOCAL_DOCKER_TAG}")" ]; then
url=$(grep -m1 ^https "$info")
cache=/tmp/rustci_docker_cache
echo "Attempting to download $url"
Expand All @@ -49,5 +51,5 @@ if [ -z "$(docker images -q "rust-$TARGET")" ]; then
travis_retry curl -y 30 -Y 10 --connect-timeout 30 -f -L -C - -o "$cache" "$url"
set -e
docker load --quiet -i "$cache"
docker tag "$digest" "rust-$TARGET"
docker tag "$digest" "${LOCAL_DOCKER_TAG}"
fi
5 changes: 5 additions & 0 deletions ci/run.bash
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,11 @@ if [ "$TRAVIS_OS_NAME" != "windows" ]; then
FEATURES=('--features' 'vendored-openssl')
fi

# rustc only supports armv7: https://forge.rust-lang.org/platform-support.html
if [ "$TARGET" = arm-linux-androideabi ]; then
export CFLAGS='-march=armv7'
fi

cargo build --locked -v --release --target "$TARGET" "${FEATURES[@]}"

runtest () {
Expand Down