golang.org/x/build@v0.0.0-20240506185731-218518f32b70/env/android-amd64-emu/Dockerfile (about)

     1  # Copyright 2019 The Go Authors. All rights reserved.
     2  # Use of this source code is governed by a BSD-style
     3  # license that can be found in the LICENSE file.
     4  
     5  FROM golang/buildlet-stage0 AS stage0
     6  
     7  FROM debian:buster
     8  MAINTAINER golang-dev <golang-dev@googlegroups.com>
     9  
    10  ENV DEBIAN_FRONTEND noninteractive
    11  
    12  ENV GO_BUILDER_ENV android-amd64-emu
    13  
    14  # For gomobile tests
    15  ENV ANDROID_SDK_ROOT=/android/sdk
    16  # TODO(golang.org/issues/39945): delete the use of ANDROID_HOME after cl/244057 lands.
    17  ENV ANDROID_HOME=${ANDROID_SDK_ROOT}
    18  ENV CGO_CFLAGS=-I/android/openal-headers
    19  
    20  ENV PATH="${PATH}:${ANDROID_SDK_ROOT}/platform-tools:${ANDROID_SDK_ROOT}/build-tools/27.0.3:/android/gradle/bin"
    21  ENV CC_FOR_android_386=/android/sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/i686-linux-android26-clang
    22  ENV CC_FOR_android_amd64=/android/sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android26-clang
    23  
    24  # gdb: optionally used by runtime tests for gdb
    25  # strace: optionally used by some net/http tests
    26  # gcc libc6-dev: for building Go's bootstrap 'dist' prog
    27  # libc6-dev-i386 gcc-multilib: for 32-bit builds
    28  # procps lsof psmisc: misc basic tools
    29  # libgles2-mesa-dev libopenal-dev fonts-noto: required by x/mobile repo
    30  # unzip openjdk-8-jdk python lib32z1: required by the Android SDK
    31  RUN apt-get update && apt-get install -y \
    32  	--no-install-recommends \
    33  	ca-certificates \
    34  	curl \
    35  	gdb \
    36  	strace \
    37  	gcc \
    38  	libc6-dev \
    39  	libc6-dev-i386 \
    40  	gcc-multilib \
    41  	procps \
    42  	lsof \
    43  	psmisc \
    44  	libgles2-mesa-dev \
    45  	libopenal-dev \
    46  	fonts-noto \
    47  	fonts-noto-mono \
    48  	openssh-server \
    49  	unzip \
    50  	openjdk-8-jdk \
    51  	python \
    52  	lib32z1 \
    53  	sudo \
    54  	&& rm -rf /var/lib/apt/lists/*
    55  
    56  RUN mkdir -p /go1.4-amd64 \
    57  	&& ( \
    58  		curl --silent https://storage.googleapis.com/golang/go1.4.linux-amd64.tar.gz | tar -C /go1.4-amd64 -zxv \
    59  	) \
    60  	&& mv /go1.4-amd64/go /go1.4 \
    61  	&& rm -rf /go1.4-amd64 \
    62  	&& rm -rf /go1.4/pkg/linux_amd64_race \
    63  		/go1.4/api \
    64  		/go1.4/blog \
    65  		/go1.4/doc \
    66  		/go1.4/misc \
    67  		/go1.4/test \
    68  	&& find /go1.4 -type d -name testdata | xargs rm -rf
    69  RUN mkdir -p /android/sdk \
    70  	&& curl -o /android/sdk/sdk-tools-linux.zip https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip \
    71  	&& unzip -d /android/sdk /android/sdk/sdk-tools-linux.zip \
    72  	&& rm -rf /android/sdk/sdk-tools-linux.zip
    73  
    74  RUN yes | /android/sdk/tools/bin/sdkmanager --licenses \
    75  	&& /android/sdk/tools/bin/sdkmanager ndk-bundle "system-images;android-26;default;x86_64" \
    76  	&& /android/sdk/tools/bin/sdkmanager "build-tools;21.1.2" "platforms;android-26" \
    77  	&& /android/sdk/tools/bin/sdkmanager --update
    78  
    79  # Gradle for gomobile
    80  RUN curl -L -o /android/gradle-5.2.1-bin.zip https://services.gradle.org/distributions/gradle-5.2.1-bin.zip \
    81  	&& unzip -d /android /android/gradle-5.2.1-bin.zip \
    82  	&& rm /android/gradle-5.2.1-bin.zip \
    83  	&& mv /android/gradle-5.2.1 /android/gradle
    84  
    85  # Create emulator
    86  RUN echo no | /android/sdk/tools/bin/avdmanager create avd --force --name android-avd --package "system-images;android-26;default;x86_64"
    87  
    88  RUN mkdir /android/openal-headers
    89  RUN cp -a /usr/include/AL /android/openal-headers/
    90  
    91  COPY --from=stage0 /go/bin/* /usr/local/bin/
    92  
    93  CMD ["/usr/local/bin/run-worker.sh"]