aboutsummaryrefslogtreecommitdiff
path: root/build.sh
diff options
context:
space:
mode:
authorSulfurNitride <SulfurNitride@users.noreply.github.com>2026-02-19 17:25:48 -0600
committerSulfurNitride <SulfurNitride@users.noreply.github.com>2026-02-19 17:25:48 -0600
commit5467e210668eb24de9a4429ef0ddcbc6442e8932 (patch)
tree6c672183779c800963d73db5bee6742bf08c65fd /build.sh
parent6d70b7fa6a9cdf8ea59c7aa98f92249c5a4e0060 (diff)
Add Python init diagnostics, AppImage build system, misc Linux fixes
- python: switch Py_InitializeEx → Py_InitializeFromConfig for explicit error reporting; add dladdr + fprintf diagnostics to trace which DSO Python symbols resolve to and whether Py_IsInitialized succeeds - python: log RTLD_NOLOAD vs fresh-load outcome when promoting libpython to RTLD_GLOBAL - build: add Docker-based AppImage build script (build.sh), update Dockerfile and build-inner.sh for AppImage-only workflow - build: remove Flatpak support entirely; move AppImage metadata (desktop/metainfo/icon) from flatpak/ to data/ - Add Monster Hunter Wilds basic_games plugin - .gitignore: exclude squashfs-root, build-source, flatpak-repo, __pycache__, fomod-plus-settings.ini - Various Linux port fixes across wineprefix, processrunner, proton launcher, FUSE connector, instance manager, download manager, sanitychecks, and NaK Rust paths/runtime_wrap Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Diffstat (limited to 'build.sh')
-rwxr-xr-xbuild.sh58
1 files changed, 58 insertions, 0 deletions
diff --git a/build.sh b/build.sh
new file mode 100755
index 0000000..766e8d7
--- /dev/null
+++ b/build.sh
@@ -0,0 +1,58 @@
+#!/usr/bin/env bash
+set -euo pipefail
+
+# Build Fluorine Manager using Docker.
+#
+# Usage:
+# ./build.sh # Build AppImage + staging dir
+# ./build.sh shell # Drop into the build container for debugging
+#
+# Prerequisites: Docker or Podman
+
+SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
+
+# Auto-detect container runtime
+if command -v podman >/dev/null 2>&1; then
+ DOCKER=podman
+elif command -v docker >/dev/null 2>&1; then
+ DOCKER=docker
+else
+ echo "ERROR: Neither podman nor docker found in PATH"
+ exit 1
+fi
+IMAGE_NAME="fluorine-builder"
+CONTAINER_NAME="fluorine-build-$$"
+
+cd "${SCRIPT_DIR}"
+
+# Build the Docker image if it doesn't exist or Dockerfile changed
+echo "=== Ensuring build image is up to date ==="
+${DOCKER} build -t "${IMAGE_NAME}" docker/
+
+if [ "${1:-}" = "shell" ]; then
+ echo "=== Dropping into build container shell ==="
+ exec ${DOCKER} run --rm -it \
+ -v "${SCRIPT_DIR}:/src:rw" \
+ -w /src \
+ --device /dev/fuse \
+ --cap-add SYS_ADMIN \
+ "${IMAGE_NAME}" \
+ bash
+fi
+
+echo "=== Starting build ==="
+${DOCKER} run --rm \
+ -v "${SCRIPT_DIR}:/src:rw" \
+ -w /src \
+ --device /dev/fuse \
+ --cap-add SYS_ADMIN \
+ --name "${CONTAINER_NAME}" \
+ "${IMAGE_NAME}" \
+ bash /src/docker/build-inner.sh
+
+echo ""
+echo "=== Done ==="
+if ls build/*.AppImage >/dev/null 2>&1; then
+ echo "AppImage: $(ls build/*.AppImage)"
+fi
+echo "Staging: build/staging/"