build/Dockerfile
akadmin efb4feb07b Initial commit: build env for the Ubtouch OS
Change-Id: I4bf8c32811d2785bd86a532f4cb435794f5c14d2
2025-10-08 16:49:47 +03:00

124 lines
3.2 KiB
Docker

# Use specific Ubuntu version for reproducibility
FROM ubuntu:22.04
LABEL maintainer="Brax <support@braxtech.net>" \
description="Ubuntu Touch OS build environment" \
version="1.0"
# Set build arguments for flexibility
ARG CCACHE_SIZE=10G
ARG DEBIAN_FRONTEND=noninteractive
ARG TZ=UTC
# Environment variables
ENV DEBIAN_FRONTEND=${DEBIAN_FRONTEND} \
TZ=${TZ} \
USE_CCACHE=1 \
CCACHE_EXEC=/usr/bin/ccache \
JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
# Set timezone to prevent tzdata interactive prompt
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && \
echo $TZ > /etc/timezone
# Update package lists and install essential packages
RUN dpkg --add-architecture i386 && \
apt-get update && \
apt-get install --no-install-recommends -y \
# Build essentials \
software-properties-common \
bc \
bison \
build-essential \
ccache \
curl \
git \
gnupg \
ca-certificates \
cpio \
curl \
fakeroot \
flex \
kmod \
libelf-dev \
libssl-dev \
libtinfo5 \
lz4 \
python3 \
sudo \
img2simg \
simg2img \
unzip \
zip \
wget \
zstd \
jq \
libncurses5 \
imagemagick \
liblz4-tool \
schedtool \
xsltproc \
rsync \
libxml2-utils \
python3-markdown \
tofrodos \
python2 \
gperf \
bzr \
libc6-dev \
libncurses5-dev:i386 \
x11proto-core-dev \
libx11-dev:i386 \
libreadline6-dev:i386 \
libgl1-mesa-glx:i386 \
libgl1-mesa-dev \
g++-multilib \
mingw-w64-i686-dev \
zlib1g-dev:i386 \
lzop \
xz-utils && \
# Clean up package cache
apt-get autoclean && \
rm -rf /var/lib/apt/lists/*
# python 2 is required for some android build tools
RUN update-alternatives --install /usr/bin/python python /usr/bin/python2 1
# Download and install Android platform-tools
RUN mkdir -p /opt/platform-tools && \
cd /opt/platform-tools && \
wget -q https://dl.google.com/android/repository/platform-tools-latest-linux.zip && \
unzip -q platform-tools-latest-linux.zip && \
rm platform-tools-latest-linux.zip && \
mv platform-tools/* . && \
rmdir platform-tools && \
chmod +x adb fastboot
# Add platform-tools to PATH
ENV PATH="/opt/platform-tools:${PATH}"
# Configure ccache
RUN ccache -M ${CCACHE_SIZE} && \
ccache -s
# Create workspace directory with proper ownership
RUN mkdir -p /workspace && \
chown -R ${BUILD_USER}:${BUILD_USER} /workspace
# Copy and set up entrypoint script
COPY --chown=root:root docker-entrypoint.sh /usr/local/bin/docker-entrypoint
COPY --chown=root:root docker-build.sh /usr/local/bin/docker-build
RUN chmod +x /usr/local/bin/docker-entrypoint && \
chmod +x /usr/local/bin/docker-build
# Switch to non-root user for security
USER root
WORKDIR /workspace
# Set up user-specific configurations
RUN echo 'export USE_CCACHE=1' >> ~/.bashrc && \
echo 'export CCACHE_EXEC=/usr/bin/ccache' >> ~/.bashrc
# Set entrypoint and default command
ENTRYPOINT ["docker-entrypoint"]
CMD ["/bin/bash"]