diff options
| author | SulfurNitride <SulfurNitride@users.noreply.github.com> | 2026-04-12 03:00:11 -0500 |
|---|---|---|
| committer | SulfurNitride <SulfurNitride@users.noreply.github.com> | 2026-04-12 03:00:11 -0500 |
| commit | b54e479a3f9e973a083c643905f21c59fadd63bb (patch) | |
| tree | ff920cc2614c5d014e7de910cbad75875257776e /docker | |
| parent | bf7a57fc55493247a624ecfd65e4d73964e7d8d2 (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/Dockerfile | 29 | ||||
| -rwxr-xr-x | docker/build-inner.sh | 18 |
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 |
