aboutsummaryrefslogtreecommitdiff
path: root/docker
diff options
context:
space:
mode:
authorSulfurNitride <SulfurNitride@users.noreply.github.com>2026-04-12 03:00:11 -0500
committerSulfurNitride <SulfurNitride@users.noreply.github.com>2026-04-12 03:00:11 -0500
commitb54e479a3f9e973a083c643905f21c59fadd63bb (patch)
treeff920cc2614c5d014e7de910cbad75875257776e /docker
parentbf7a57fc55493247a624ecfd65e4d73964e7d8d2 (diff)
Remove LOOT integration entirely
The sort button was already hidden on Linux (setVisible(false)) and the LOOT feedback path (LootDialog -> addLootReport) has always been Windows-only, meaning the dirty/incompatibilities/missingMasters/messages tooltip bullets and the dirty-plugin icon could never fire on Linux. MO2 shipped lootcli + libloot for a load-order sort mechanism that was unreachable from the UI. Users who want LOOT can download it from https://github.com/loot/loot and run it against their instance directly. - Drop libs/lootcli/, libloot Dockerfile build step, and lootcli staging/patchelf in build-inner.sh - Drop src/src/loot.{cpp,h}, src/src/lootdialog.{cpp,h,ui} - Extract MarkdownDocument / MarkdownPage (used by UpdateDialog for its changelog view) into src/src/markdowndocument.{h,cpp} - Strip addLootReport, makeLootTooltip, Loot::Plugin field, LOOT icon checks, and LOOT tooltip/isProblematic/hasInfo paths from pluginlist - Delete sortButton widget, updateSortButton(), onSortButtonClicked(), and all m_didUpdateMasterList wiring - Delete lootLogLevel setting, combo box, and "Integrated LOOT" group from the diagnostics settings tab
Diffstat (limited to 'docker')
-rw-r--r--docker/Dockerfile29
-rwxr-xr-xdocker/build-inner.sh18
2 files changed, 0 insertions, 47 deletions
diff --git a/docker/Dockerfile b/docker/Dockerfile
index 6c92aa2..60caaf6 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -72,35 +72,6 @@ RUN /opt/python-bundled/bin/pip3 install --no-cache-dir \
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | \
sh -s -- -y --default-toolchain stable --profile minimal
-# ── Build and install libloot ──
-ARG LIBLOOT_REF=master
-RUN git clone --depth 1 --branch ${LIBLOOT_REF} \
- https://github.com/loot/libloot.git /tmp/libloot && \
- cmake -S /tmp/libloot/cpp -B /tmp/libloot/build -G Ninja \
- -DCMAKE_BUILD_TYPE=Release \
- -DBUILD_SHARED_LIBS=ON \
- -DLIBLOOT_INSTALL_DOCS=OFF \
- -DBUILD_TESTING=OFF \
- -DCMAKE_INSTALL_PREFIX=/usr/local && \
- cmake --build /tmp/libloot/build --parallel && \
- cmake --install /tmp/libloot/build && \
- # Create pkg-config metadata
- mkdir -p /usr/local/lib/pkgconfig && \
- printf '%s\n' \
- 'prefix=/usr/local' \
- 'exec_prefix=${prefix}' \
- 'libdir=${prefix}/lib' \
- 'includedir=${prefix}/include' \
- '' \
- 'Name: libloot' \
- 'Description: LOOT C++ API library' \
- 'Version: 0.29.0' \
- 'Libs: -L${libdir} -lloot' \
- 'Cflags: -I${includedir}' \
- > /usr/local/lib/pkgconfig/libloot.pc && \
- ldconfig && \
- rm -rf /tmp/libloot
-
# ── Pre-download linuxdeploy tooling (optional, only for AppImage builds) ──
# Set BUILD_APPIMAGE=1 to include linuxdeploy in the image.
# Without it, only tarball and installer builds are available.
diff --git a/docker/build-inner.sh b/docker/build-inner.sh
index cfbb061..a5c8c0b 100755
--- a/docker/build-inner.sh
+++ b/docker/build-inner.sh
@@ -49,10 +49,6 @@ cp -f "${RUNDIR}/ModOrganizer" "${OUT_DIR}/ModOrganizer-core"
[ -f "${RUNDIR}/README-PORTABLE.txt" ] && cp -f "${RUNDIR}/README-PORTABLE.txt" "${OUT_DIR}/"
[ -f "/src/src/fluorine-manager" ] && cp -f "/src/src/fluorine-manager" "${OUT_DIR}/"
-# lootcli (spawned by MO2 for load-order sorting).
-LOOTCLI="build/libs/lootcli/src/lootcli"
-[ -f "${LOOTCLI}" ] && cp -f "${LOOTCLI}" "${OUT_DIR}/"
-
# wrestool/icotool no longer needed — icon extraction is built into the C++ PE parser
# ── MO2 plugins (.so) ──
@@ -164,8 +160,6 @@ collect_deps "${OUT_DIR}/ModOrganizer-core" >> "${ALL_DEPS}"
find "${OUT_DIR}/plugins" -name "*.so" -exec sh -c 'ldd "$1" 2>/dev/null | grep "=>" | awk "{print \$3}" | grep "^/"' _ {} \; >> "${ALL_DEPS}"
# Our own libs
find "${OUT_DIR}/lib" -name "*.so*" -exec sh -c 'ldd "$1" 2>/dev/null | grep "=>" | awk "{print \$3}" | grep "^/"' _ {} \; >> "${ALL_DEPS}"
-# lootcli
-[ -f "${OUT_DIR}/lootcli" ] && collect_deps "${OUT_DIR}/lootcli" >> "${ALL_DEPS}"
sort -u "${ALL_DEPS}" | while read -r dep; do
dep_name="$(basename "${dep}")"
# Skip system libs
@@ -232,13 +226,6 @@ else
echo "WARNING: Could not find Qt6 plugin directory"
fi
-# libloot (custom-built, never on user systems).
-if [ -f /usr/local/lib/libloot.so.0 ]; then
- cp -Lf /usr/local/lib/libloot.so.0 "${OUT_DIR}/lib/"
- # Create the unversioned symlink too.
- ln -sf libloot.so.0 "${OUT_DIR}/lib/libloot.so"
-fi
-
# ── Bundle PBS Python 3.12 runtime ──
# PYTHONHOME only needs lib/python3.12/ (the stdlib). We do NOT copy the
# binary, headers, static lib, or .py sources — only stripped .pyc + .so.
@@ -328,16 +315,12 @@ strip --strip-unneeded "${OUT_DIR}/ModOrganizer-core" 2>/dev/null || true
find "${OUT_DIR}/plugins" -name "*.so" -exec strip --strip-unneeded {} \; 2>/dev/null || true
find "${OUT_DIR}/dlls" -name "*.so" -o -name "*.dll" | xargs -r strip --strip-unneeded 2>/dev/null || true
find "${OUT_DIR}/lib" -name "*.so" -exec strip --strip-unneeded {} \; 2>/dev/null || true
-for tool in lootcli; do
- [ -f "${OUT_DIR}/${tool}" ] && strip --strip-unneeded "${OUT_DIR}/${tool}" 2>/dev/null || true
-done
# ── Fix RPATH so binaries find libs without LD_LIBRARY_PATH ──
# Use --force-rpath to set DT_RPATH (not DT_RUNPATH) for reliable
# library resolution regardless of LD_LIBRARY_PATH.
echo "Patching RPATH..."
patchelf --force-rpath --set-rpath '$ORIGIN/lib' "${OUT_DIR}/ModOrganizer-core"
-[ -f "${OUT_DIR}/lootcli" ] && patchelf --force-rpath --set-rpath '$ORIGIN/lib' "${OUT_DIR}/lootcli"
find "${OUT_DIR}/plugins" -maxdepth 1 -name "*.so" -exec patchelf --force-rpath --set-rpath '$ORIGIN/../lib' {} \; 2>/dev/null || true
find "${OUT_DIR}/plugins/libs" -name "*.so" -exec patchelf --force-rpath --set-rpath '$ORIGIN/../../lib' {} \; 2>/dev/null || true
find "${OUT_DIR}/lib" \( -name "*.so" -o -name "*.so.*" \) -exec patchelf --force-rpath --set-rpath '$ORIGIN' {} \; 2>/dev/null || true
@@ -624,7 +607,6 @@ build_appimage() {
fi
patchelf --force-rpath --set-rpath '$ORIGIN/../lib' "${APPDIR}/usr/bin/ModOrganizer-core"
- [ -f "${APPDIR}/usr/bin/lootcli" ] && patchelf --force-rpath --set-rpath '$ORIGIN/../lib' "${APPDIR}/usr/bin/lootcli"
find "${APPDIR}/usr/bin/plugins" -name "*.so" -exec patchelf --force-rpath --set-rpath '$ORIGIN/../../lib' {} \; 2>/dev/null || true
find "${APPDIR}/usr/lib" -name "*.so" -exec patchelf --force-rpath --set-rpath '$ORIGIN' {} \; 2>/dev/null || true