mirror of
https://github.com/PrismLauncher/PrismLauncher.git
synced 2026-04-17 07:47:00 -04:00
75 lines
2.3 KiB
Docker
75 lines
2.3 KiB
Docker
ARG DEBIAN_VERSION=stable-slim
|
|
|
|
FROM docker.io/library/debian:${DEBIAN_VERSION}
|
|
|
|
ARG QT_ABI=gcc_64
|
|
ARG QT_ARCH=
|
|
ARG QT_HOST=linux
|
|
ARG QT_TARGET=desktop
|
|
ARG QT_VERSION=6.10.2
|
|
|
|
ARG DEBIAN_FRONTEND=noninteractive
|
|
|
|
RUN apt-get update \
|
|
&& apt-get --assume-yes upgrade \
|
|
&& apt-get --assume-yes autopurge
|
|
|
|
# Use Adoptium for Java 17
|
|
RUN apt-get --assume-yes --no-install-recommends install \
|
|
apt-transport-https ca-certificates curl gpg
|
|
RUN curl -L https://packages.adoptium.net/artifactory/api/gpg/key/public | gpg --dearmor | tee /etc/apt/trusted.gpg.d/adoptium.gpg
|
|
RUN echo "deb https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" | tee /etc/apt/sources.list.d/adoptium.list
|
|
RUN apt-get update
|
|
|
|
# Install base dependencies
|
|
RUN apt-get --assume-yes --no-install-recommends install \
|
|
# Compilers
|
|
clang lld llvm temurin-17-jdk \
|
|
# Build system
|
|
cmake ninja-build extra-cmake-modules pkg-config \
|
|
# Dependencies
|
|
cmark gamemode-dev libarchive-dev libcmark-dev libgamemode0 libgl1-mesa-dev libqrencode-dev libtomlplusplus-dev libvulkan-dev scdoc zlib1g-dev \
|
|
# Tooling
|
|
clang-format clang-tidy git
|
|
|
|
# Use LLD by default for faster linking
|
|
ENV CMAKE_LINKER_TYPE=lld
|
|
|
|
# Prepare and install Qt
|
|
## Setup UTF-8 locale (required, apparently)
|
|
RUN apt-get --assume-yes --no-install-recommends install locales
|
|
RUN echo "C.UTF-8 UTF-8" > /etc/locale.gen
|
|
RUN locale-gen
|
|
ENV LC_ALL=C.UTF-8
|
|
|
|
## Some libraries are required for the official binaries
|
|
RUN apt-get --assume-yes --no-install-recommends install \
|
|
libglib2.0-0t64 libxkbcommon0 python3-pip
|
|
|
|
RUN pip3 install --break-system-packages aqtinstall
|
|
RUN aqt install-qt \
|
|
${QT_HOST} ${QT_TARGET} ${QT_VERSION} ${QT_ARCH} \
|
|
--outputdir /opt/qt \
|
|
--modules qtimageformats qtnetworkauth
|
|
|
|
ENV PATH=/opt/qt/${QT_VERSION}/${QT_ABI}/bin:$PATH
|
|
ENV QT_PLUGIN_PATH=/opt/qt/${QT_VERSION}/${QT_ABI}/plugins/
|
|
|
|
## We don't use these. Nuke them
|
|
RUN rm -rf \
|
|
"$QT_PLUGIN_PATH"/designer \
|
|
"$QT_PLUGIN_PATH"/help \
|
|
# "$QT_PLUGIN_PATH"/platformthemes/libqgtk3.so \
|
|
"$QT_PLUGIN_PATH"/printsupport \
|
|
"$QT_PLUGIN_PATH"/qmllint \
|
|
"$QT_PLUGIN_PATH"/qmlls \
|
|
"$QT_PLUGIN_PATH"/qmltooling \
|
|
"$QT_PLUGIN_PATH"/sqldrivers
|
|
|
|
# Setup workspace
|
|
RUN mkdir /work
|
|
WORKDIR /work
|
|
|
|
ENTRYPOINT ["bash"]
|
|
CMD ["-i"]
|