From b3f1ba196c384e3d96f84862a1e6cf21311a9cef Mon Sep 17 00:00:00 2001 From: SulfurNitride Date: Wed, 11 Mar 2026 04:40:30 -0500 Subject: Check CAP_SYS_ADMIN at runtime before negotiating FUSE passthrough Negotiating passthrough without the capability caused Wine/Proton DLL loading failures (SKSE plugins returning error 0x36). Now checks the process's effective capability set via libcap before telling the kernel we want passthrough. Also adds qt.conf for AT_SECURE compatibility. Co-Authored-By: Claude Opus 4.6 --- docker/build-inner.sh | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'docker/build-inner.sh') diff --git a/docker/build-inner.sh b/docker/build-inner.sh index 93ee6ba..c62285b 100755 --- a/docker/build-inner.sh +++ b/docker/build-inner.sh @@ -371,6 +371,15 @@ exec env PYTHONHOME="${MO2_PYTHONHOME}" "${RUN}/ModOrganizer-core" "$@" 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 +QTCONF + # ── Desktop integration files ── cp -f /src/data/com.fluorine.manager.desktop "${OUT_DIR}/" cp -f /src/data/com.fluorine.manager.png "${OUT_DIR}/" -- cgit v1.3.1