Files
feedc0de 0384137c85
Build Linux and Android / build (push) Failing after 10s
First try with CI
2026-08-13 10:08:58 +02:00

102 lines
3.7 KiB
Docker

FROM ubuntu:24.04
ARG QT_VERSION=6.11.1
ARG AQTINSTALL_VERSION=3.3.0
ARG ANDROID_COMMAND_LINE_TOOLS_VERSION=15859902
ARG ANDROID_COMMAND_LINE_TOOLS_SHA256=4e4c464f145a7512b57d088ac6c278c03c9eea610886b35a5e0804e74eedf583
ARG ANDROID_NDK_VERSION=27.2.12479018
ARG ANDROID_OPENSSL_COMMIT=32ebe304ff064a9affb699b2185af78e3494f49a
ENV DEBIAN_FRONTEND=noninteractive \
QT_ROOT=/opt/Qt \
ANDROID_SDK_ROOT=/opt/android-sdk \
ANDROID_HOME=/opt/android-sdk \
ANDROID_NDK_ROOT=/opt/android-sdk/ndk/${ANDROID_NDK_VERSION} \
JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64 \
PATH=/opt/aqt/bin:/opt/android-sdk/cmdline-tools/latest/bin:/opt/android-sdk/platform-tools:${PATH}
RUN apt-get update \
&& apt-get install --yes --no-install-recommends \
ca-certificates \
ccache \
cmake \
curl \
file \
git \
libavahi-client-dev \
libdbus-1-3 \
libegl1 \
libfontconfig1 \
libgl1 \
libx11-6 \
libx11-xcb1 \
libxcb-cursor0 \
libxcb-glx0 \
libxcb-icccm4 \
libxcb-image0 \
libxcb-keysyms1 \
libxcb-randr0 \
libxcb-render-util0 \
libxcb-shape0 \
libxcb-shm0 \
libxcb-sync1 \
libxcb-util1 \
libxcb-xfixes0 \
libxcb-xinerama0 \
libxcb-xkb1 \
libxcb1 \
libxkbcommon-x11-0 \
ninja-build \
openjdk-21-jdk-headless \
p7zip-full \
pkg-config \
python3 \
python3-venv \
unzip \
&& rm -rf /var/lib/apt/lists/*
RUN python3 -m venv /opt/aqt \
&& /opt/aqt/bin/pip install --no-cache-dir "aqtinstall==${AQTINSTALL_VERSION}" \
&& aqt install-qt linux desktop "${QT_VERSION}" linux_gcc_64 \
-m qtcharts qtwebsockets -O "${QT_ROOT}" \
&& aqt install-qt linux android "${QT_VERSION}" android_arm64_v8a \
-m qtcharts qtwebsockets -O "${QT_ROOT}" \
&& aqt install-qt linux android "${QT_VERSION}" android_armv7 \
-m qtcharts qtwebsockets -O "${QT_ROOT}"
RUN mkdir -p "${ANDROID_SDK_ROOT}/cmdline-tools" \
&& curl --fail --location --retry 5 \
--output /tmp/android-command-line-tools.zip \
"https://dl.google.com/android/repository/commandlinetools-linux-${ANDROID_COMMAND_LINE_TOOLS_VERSION}_latest.zip" \
&& echo "${ANDROID_COMMAND_LINE_TOOLS_SHA256} /tmp/android-command-line-tools.zip" | sha256sum --check \
&& unzip -q /tmp/android-command-line-tools.zip -d "${ANDROID_SDK_ROOT}/cmdline-tools" \
&& mv "${ANDROID_SDK_ROOT}/cmdline-tools/cmdline-tools" "${ANDROID_SDK_ROOT}/cmdline-tools/latest" \
&& rm /tmp/android-command-line-tools.zip \
&& yes | sdkmanager --licenses >/dev/null \
&& sdkmanager \
"platform-tools" \
"platforms;android-36" \
"build-tools;36.0.0" \
"ndk;${ANDROID_NDK_VERSION}"
RUN git init "${ANDROID_SDK_ROOT}/android_openssl" \
&& git -C "${ANDROID_SDK_ROOT}/android_openssl" remote add origin https://github.com/KDAB/android_openssl.git \
&& git -C "${ANDROID_SDK_ROOT}/android_openssl" fetch --depth 1 origin "${ANDROID_OPENSSL_COMMIT}" \
&& git -C "${ANDROID_SDK_ROOT}/android_openssl" checkout --detach FETCH_HEAD \
&& rm -rf "${ANDROID_SDK_ROOT}/android_openssl/.git"
# Build dependencies needed by applications using the prebuilt desktop Qt.
# Keep these in a separate layer so changes here do not invalidate the large
# Qt and Android SDK downloads above.
RUN apt-get update \
&& apt-get install --yes --no-install-recommends \
build-essential \
libgl1-mesa-dev \
libglib2.0-0t64 \
&& rm -rf /var/lib/apt/lists/*
ENV LANG=C.UTF-8 \
LC_ALL=C.UTF-8
WORKDIR /workspace