-
Notifications
You must be signed in to change notification settings - Fork 25
Expand file tree
/
Copy pathDockerfile_20.04_android_15.0.0_2.0.0
More file actions
97 lines (76 loc) · 4.99 KB
/
Copy pathDockerfile_20.04_android_15.0.0_2.0.0
File metadata and controls
97 lines (76 loc) · 4.99 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
# SPDX-License-Identifier: (GPL-2.0+ OR MIT)
# Copyright 2021 - 2025 Variscite Ltd.
FROM ubuntu:20.04
MAINTAINER Nate Drude "nate.d@variscite.com"
RUN apt-get update
RUN apt-get install -y sudo openssl apt-utils
WORKDIR /workdir
# Define username and temporary uid and gid
ENV USER=vari USER_ID=1000 USER_GID=1000
# now creating user, change password to 'ubuntu'
RUN groupadd --gid "${USER_GID}" "${USER}" && \
useradd \
--uid ${USER_ID} \
--gid ${USER_GID} \
--create-home \
--shell /bin/bash \
--password $(openssl passwd -1 ubuntu) \
${USER}
ENV DEBIAN_FRONTEND=noninteractive
# Android
RUN apt-get update && apt-get install -y \
tzdata git-core gnupg flex bison apt-utils build-essential zip curl \
zlib1g-dev liblz4-dev gcc-multilib g++-multilib libc6-dev-i386 \
libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev \
libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig uuid uuid-dev \
liblzo2-2 liblzo2-dev lzop git u-boot-tools mtd-utils \
android-sdk-libsparse-utils android-sdk-ext4-utils device-tree-compiler \
gdisk m4 make libssl-dev libghc-gnutls-dev swig libdw-dev dwarves \
python bc cpio tar lz4 rsync ninja-build clang xxd \
liblz-dev libgnutls28-dev liblz4-tool libelf-dev efitools cmake \
&& ln -fs /usr/share/zoneinfo/Europe/Berlin /etc/localtime \
&& dpkg-reconfigure -f noninteractive tzdata
# Android Toolchain setup
# If failed to connect to android.googlesource.com, you can refer to the line below.
#ENV https_proxy=http://username:password@example.com:8080
ENV GCC_CROSS_COMPILE_TOOL_CHAIN_AARCH64 arm-gnu-toolchain-12.3.rel1-x86_64-aarch64-none-linux-gnu
RUN curl -o ${GCC_CROSS_COMPILE_TOOL_CHAIN_AARCH64}.tar.xz https://armkeil.blob.core.windows.net/developer/Files/downloads/gnu/12.3.rel1/binrel/${GCC_CROSS_COMPILE_TOOL_CHAIN_AARCH64}.tar.xz \
&& tar -xvJf ${GCC_CROSS_COMPILE_TOOL_CHAIN_AARCH64}.tar.xz -C /opt \
&& rm -rf ${GCC_CROSS_COMPILE_TOOL_CHAIN_AARCH64}.tar.xz
ENV GCC_CROSS_COMPILE_TOOL_CHAIN_AARCH32 arm-gnu-toolchain-12.3.rel1-x86_64-arm-none-eabi
RUN curl -o ${GCC_CROSS_COMPILE_TOOL_CHAIN_AARCH32}.tar.xz https://armkeil.blob.core.windows.net/developer/Files/downloads/gnu/12.3.rel1/binrel/${GCC_CROSS_COMPILE_TOOL_CHAIN_AARCH32}.tar.xz \
&& tar -xvJf ${GCC_CROSS_COMPILE_TOOL_CHAIN_AARCH32}.tar.xz -C /opt \
&& rm -rf ${GCC_CROSS_COMPILE_TOOL_CHAIN_AARCH32}.tar.xz
ENV AARCH32_GCC_CROSS_COMPILE=/opt/${GCC_CROSS_COMPILE_TOOL_CHAIN_AARCH32}/bin/arm-none-eabi-
ENV ARMGCC_DIR=/opt/${GCC_CROSS_COMPILE_TOOL_CHAIN_AARCH32}
# Create directories with appropriate permissions
RUN mkdir -p /opt/android-kernel-prebuilts-6.12/clang/host/linux-x86 /opt/android-kernel-prebuilts-6.12/kernel-build-tools \
/opt/android-kernel-prebuilts-6.12/rust /opt/android-kernel-prebuilts-6.12/clang-tools \
&& chmod 777 /opt/android-kernel-prebuilts-6.12/clang/host/linux-x86 /opt/android-kernel-prebuilts-6.12/kernel-build-tools \
/opt/android-kernel-prebuilts-6.12/rust /opt/android-kernel-prebuilts-6.12/clang-tools
RUN git clone -b main-kernel --single-branch --depth 1 https://android.googlesource.com/platform/prebuilts/clang/host/linux-x86 /opt/android-kernel-prebuilts-6.12/clang/host/linux-x86 \
&& cd /opt/android-kernel-prebuilts-6.12/clang/host/linux-x86 \
&& git fetch origin 66acdd82ee62e4aaa4248f03191c59dfed9db193 \
&& git checkout 66acdd82ee62e4aaa4248f03191c59dfed9db193
RUN git clone -b main --single-branch --depth 1 https://android.googlesource.com/kernel/prebuilts/build-tools /opt/android-kernel-prebuilts-6.12/kernel-build-tools \
&& cd /opt/android-kernel-prebuilts-6.12/kernel-build-tools \
&& git fetch origin 3c5e4f14b451ec85167c38b917d2459687abd7f4 \
&& git checkout 3c5e4f14b451ec85167c38b917d2459687abd7f4
RUN git clone -b main-kernel --single-branch --depth 1 https://android.googlesource.com/platform/prebuilts/rust /opt/android-kernel-prebuilts-6.12/rust \
&& cd /opt/android-kernel-prebuilts-6.12/rust \
&& git fetch origin 5156e7f81ae254c79ee736e44c960e75ad685c67 \
&& git checkout 5156e7f81ae254c79ee736e44c960e75ad685c67
RUN git clone -b main --single-branch --depth 1 https://android.googlesource.com/platform/prebuilts/clang-tools /opt/android-kernel-prebuilts-6.12/clang-tools \
&& cd /opt/android-kernel-prebuilts-6.12/clang-tools \
&& git fetch origin 17329f6590e2872dcf04a0c96a176be089470cd9 \
&& git checkout 17329f6590e2872dcf04a0c96a176be089470cd9
ENV ENV_RUN_SCRIPT="export KERNEL_PREBUILTS_PATH=/opt/android-kernel-prebuilts-6.12; \
export AARCH32_GCC_CROSS_COMPILE=/opt/arm-gnu-toolchain-12.3.rel1-x86_64-arm-none-eabi/bin/arm-none-eabi-; \
export AARCH64_GCC_CROSS_COMPILE=/opt/${GCC_CROSS_COMPILE_TOOL_CHAIN_AARCH64}/bin/aarch64-none-linux-gnu-"
# Update to latest
RUN apt-get update && apt-get dist-upgrade -y
# make /bin/sh symlink to bash instead of dash:
RUN echo "dash dash/sh boolean false" | debconf-set-selections
RUN DEBIAN_FRONTEND=noninteractive dpkg-reconfigure dash
COPY docker-entrypoint.sh /usr/local/bin/
ENTRYPOINT ["docker-entrypoint.sh"]