aboutsummaryrefslogtreecommitdiff
path: root/docker
diff options
context:
space:
mode:
authorSulfurNitride <SulfurNitride@users.noreply.github.com>2026-03-12 11:20:16 -0500
committerSulfurNitride <SulfurNitride@users.noreply.github.com>2026-03-12 11:20:16 -0500
commit3ba283d9350783c038cc2844450f4938ad125f08 (patch)
tree8ba8ac306bbf45b0b30b85bd4db1557145e4c558 /docker
parent1a32fc8cb914050ed9417b5c4c1c30d8b2778d8a (diff)
Upgrade bundled Qt from 6.9 to 6.10 via aqtinstall
NixOS/Arch users have Qt 6.10 system-wide, causing Qt_6.10 symbol errors when loading mobase.so against the bundled Qt 6.9. Switch Docker build to install Qt 6.10.2 from aqtinstall instead of Ubuntu's Qt 6.9 packages. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Diffstat (limited to 'docker')
-rw-r--r--docker/Dockerfile30
-rwxr-xr-xdocker/build-inner.sh14
2 files changed, 35 insertions, 9 deletions
diff --git a/docker/Dockerfile b/docker/Dockerfile
index a8798dc..d197569 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -21,19 +21,35 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
liblz4-dev zlib1g-dev libzstd-dev libbz2-dev liblzma-dev \
libssl-dev libcurl4-openssl-dev \
libtomlplusplus-dev \
- # Qt 6
- qt6-base-dev qt6-base-dev-tools \
- qt6-webengine-dev \
- libqt6websockets6-dev \
- qt6-svg-dev qt6-svg-plugins \
- qt6-wayland \
+ # Qt 6 runtime deps (aqtinstall provides Qt 6.10 headers/tools/libs for build)
kde-style-breeze \
+ libgl-dev libopengl-dev libvulkan-dev libxkbcommon-dev libfontconfig1-dev \
+ libfreetype-dev libx11-dev libxext-dev libxfixes-dev \
+ libxi-dev libxrender-dev libxcb1-dev libxcb-cursor-dev \
+ libxcb-glx0-dev libxcb-keysyms1-dev libxcb-image0-dev \
+ libxcb-shm0-dev libxcb-icccm4-dev libxcb-sync-dev \
+ libxcb-xfixes0-dev libxcb-shape0-dev libxcb-randr0-dev \
+ libxcb-render-util0-dev libxcb-xinerama0-dev \
+ libxcb-xkb-dev libxkbcommon-x11-dev libatspi2.0-dev \
+ libwayland-dev \
# Python
- python3 python3-pyqt6 \
+ python3 python3-pip python3-pyqt6 \
# Misc
icoutils zip unzip \
&& rm -rf /var/lib/apt/lists/*
+# ── Qt 6.10 via aqtinstall ──
+RUN pip3 install --break-system-packages aqtinstall && \
+ aqt install-qt linux desktop 6.10.2 linux_gcc_64 \
+ -m qtwebsockets qtwaylandcompositor \
+ --outputdir /opt/qt6 && \
+ ls /opt/qt6/6.10.2/gcc_64/bin/qmake && \
+ (pip3 uninstall -y aqtinstall --break-system-packages 2>/dev/null || true)
+ENV Qt6_DIR=/opt/qt6/6.10.2/gcc_64
+ENV CMAKE_PREFIX_PATH="/opt/qt6/6.10.2/gcc_64:${CMAKE_PREFIX_PATH}"
+ENV PATH="/opt/qt6/6.10.2/gcc_64/bin:${PATH}"
+ENV LD_LIBRARY_PATH="/opt/qt6/6.10.2/gcc_64/lib:${LD_LIBRARY_PATH}"
+
# ── uv (Python package manager) ──
RUN curl -LsSf https://astral.sh/uv/install.sh | sh
ENV PATH="/root/.local/bin:${PATH}"
diff --git a/docker/build-inner.sh b/docker/build-inner.sh
index 42cb45d..0f6fcdb 100755
--- a/docker/build-inner.sh
+++ b/docker/build-inner.sh
@@ -160,8 +160,18 @@ rm -f "${ALL_DEPS}"
echo "Dependencies bundled."
# ── Qt6 platform plugins ──
-QT6_PLUGIN_DIR="/usr/lib/x86_64-linux-gnu/qt6/plugins"
-if [ ! -d "${QT6_PLUGIN_DIR}" ]; then
+# Prefer aqtinstall location (Docker), then system, then qtpaths6 fallback.
+QT6_PLUGIN_DIR=""
+for _candidate in \
+ "${Qt6_DIR:-}/plugins" \
+ "/opt/qt6/6.10.2/gcc_64/plugins" \
+ "/usr/lib/x86_64-linux-gnu/qt6/plugins"; do
+ if [ -d "${_candidate}" ]; then
+ QT6_PLUGIN_DIR="${_candidate}"
+ break
+ fi
+done
+if [ -z "${QT6_PLUGIN_DIR}" ]; then
QT6_PLUGIN_DIR="$(qtpaths6 --plugin-dir 2>/dev/null || echo "")"
fi
if [ -d "${QT6_PLUGIN_DIR}" ]; then