diff options
| author | SulfurNitride <SulfurNitride@users.noreply.github.com> | 2026-03-12 11:20:16 -0500 |
|---|---|---|
| committer | SulfurNitride <SulfurNitride@users.noreply.github.com> | 2026-03-12 11:20:16 -0500 |
| commit | 3ba283d9350783c038cc2844450f4938ad125f08 (patch) | |
| tree | 8ba8ac306bbf45b0b30b85bd4db1557145e4c558 /docker | |
| parent | 1a32fc8cb914050ed9417b5c4c1c30d8b2778d8a (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/Dockerfile | 30 | ||||
| -rwxr-xr-x | docker/build-inner.sh | 14 |
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 |
