summaryrefslogtreecommitdiff
path: root/meshmc/Containerfile
diff options
context:
space:
mode:
authorMehmet Samet Duman <yongdohyun@projecttick.org>2026-04-02 18:45:07 +0300
committerMehmet Samet Duman <yongdohyun@projecttick.org>2026-04-02 18:45:07 +0300
commit31b9a8949ed0a288143e23bf739f2eb64fdc63be (patch)
tree8a984fa143c38fccad461a77792d6864f3e82cd3 /meshmc/Containerfile
parent934382c8a1ce738589dee9ee0f14e1cec812770e (diff)
parentfad6a1066616b69d7f5fef01178efdf014c59537 (diff)
downloadProject-Tick-31b9a8949ed0a288143e23bf739f2eb64fdc63be.tar.gz
Project-Tick-31b9a8949ed0a288143e23bf739f2eb64fdc63be.zip
Add 'meshmc/' from commit 'fad6a1066616b69d7f5fef01178efdf014c59537'
git-subtree-dir: meshmc git-subtree-mainline: 934382c8a1ce738589dee9ee0f14e1cec812770e git-subtree-split: fad6a1066616b69d7f5fef01178efdf014c59537
Diffstat (limited to 'meshmc/Containerfile')
-rw-r--r--meshmc/Containerfile74
1 files changed, 74 insertions, 0 deletions
diff --git a/meshmc/Containerfile b/meshmc/Containerfile
new file mode 100644
index 0000000000..59595fe55b
--- /dev/null
+++ b/meshmc/Containerfile
@@ -0,0 +1,74 @@
+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 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"]