aboutsummaryrefslogtreecommitdiff
path: root/docker
diff options
context:
space:
mode:
authorSulfurNitride <SulfurNitride@users.noreply.github.com>2026-03-11 07:11:59 -0500
committerSulfurNitride <SulfurNitride@users.noreply.github.com>2026-03-11 07:11:59 -0500
commit03fc1da756d26944d66cff8997d712521b1fde2c (patch)
tree1ae93be8d334a8486425e9b6aa3307a4bbb0f342 /docker
parentb3f1ba196c384e3d96f84862a1e6cf21311a9cef (diff)
Remove FUSE passthrough, flake.nix, and stop archiving build output
FUSE passthrough caused Wine DLL loading failures (ERROR_NOACCESS 0x3E6) for all file types, not just executables. Root cause is a kernel-level incompatibility between FUSE passthrough I/O and Wine's file access patterns. Removed all passthrough code, the passthrough helper binary, libcap dependency, and the settings UI toggle. Also removed flake.nix (unused with Docker build system) and stopped tar.gz'ing the build output since GitHub zips release assets automatically. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Diffstat (limited to 'docker')
-rwxr-xr-xdocker/build-inner.sh27
1 files changed, 9 insertions, 18 deletions
diff --git a/docker/build-inner.sh b/docker/build-inner.sh
index c62285b..ca6bac7 100755
--- a/docker/build-inner.sh
+++ b/docker/build-inner.sh
@@ -290,10 +290,8 @@ for tool in wrestool icotool lootcli; do
done
# ── Fix RPATH so binaries find libs without LD_LIBRARY_PATH ──
-# IMPORTANT: Use --force-rpath to set DT_RPATH (not DT_RUNPATH).
-# DT_RPATH is honored even when the binary has file capabilities
-# (e.g. cap_sys_admin for FUSE passthrough). DT_RUNPATH and
-# LD_LIBRARY_PATH are both ignored by the kernel for capability binaries.
+# 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:$ORIGIN/python/lib' "${OUT_DIR}/ModOrganizer-core"
[ -f "${OUT_DIR}/lootcli" ] && patchelf --force-rpath --set-rpath '$ORIGIN/lib' "${OUT_DIR}/lootcli"
@@ -350,9 +348,7 @@ PYTHON_DIR="${RUN}/python"
export PATH="${RUN}:${PATH}"
# NOTE: Do NOT set LD_LIBRARY_PATH here. The binary uses DT_RPATH
-# ($ORIGIN/lib:$ORIGIN/python/lib) to find its libraries. Setting
-# LD_LIBRARY_PATH on a capability-bearing binary (cap_sys_admin for FUSE
-# passthrough) triggers AT_SECURE mode, which drops all file capabilities.
+# ($ORIGIN/lib:$ORIGIN/python/lib) to find its libraries.
export MO2_BASE_DIR="${RUN}"
export MO2_PLUGINS_DIR="${RUN}/plugins"
export MO2_DLLS_DIR="${RUN}/dlls"
@@ -372,9 +368,6 @@ LAUNCH
chmod +x "${OUT_DIR}/fluorine-manager"
# ── qt.conf — tells Qt where to find plugins without QT_PLUGIN_PATH env ──
-# This is required when the binary has file capabilities (cap_sys_admin for
-# FUSE passthrough), because glibc strips environment variables in AT_SECURE
-# mode. qt.conf is read by Qt at startup regardless of env.
cat > "${OUT_DIR}/qt.conf" <<'QTCONF'
[Paths]
Plugins = qt6plugins
@@ -389,19 +382,17 @@ cp -f /src/data/com.fluorine.manager.metainfo.xml "${OUT_DIR}/"
# BUILD_MODE is passed from build.sh: tarball (default), installer, appimage, all
BUILD_MODE="${BUILD_MODE:-tarball}"
-# ── Build tarball (portable distribution) ──
+# ── Build portable distribution (directory) ──
+# No archive created — GitHub zips release assets automatically.
build_tarball() {
echo ""
- echo "=== Building tarball ==="
+ echo "=== Building portable distribution ==="
cd /src/build
- # Create a clean directory name for the archive
TARBALL_NAME="fluorine-manager"
rm -rf "${TARBALL_NAME}"
cp -a staging "${TARBALL_NAME}"
- tar czf "${TARBALL_NAME}.tar.gz" "${TARBALL_NAME}"/
- rm -rf "${TARBALL_NAME}"
- echo "Tarball: /src/build/${TARBALL_NAME}.tar.gz"
- ls -lh "/src/build/${TARBALL_NAME}.tar.gz"
+ echo "Output: /src/build/${TARBALL_NAME}/"
+ du -sh "/src/build/${TARBALL_NAME}"
}
# ── Build self-extracting installer (.bin frontloader) ──
@@ -686,4 +677,4 @@ echo "=== Build Summary ==="
du -sh "${OUT_DIR}"/*/ "${OUT_DIR}"/ModOrganizer-core 2>/dev/null | sort -rh
echo ""
echo "Build outputs:"
-ls -lh /src/build/fluorine-manager.tar.gz /src/build/fluorine-manager.bin /src/build/*.AppImage 2>/dev/null || echo " (none found)"
+ls -dh /src/build/fluorine-manager/ /src/build/fluorine-manager.bin /src/build/*.AppImage 2>/dev/null || echo " (none found)"