From 5467e210668eb24de9a4429ef0ddcbc6442e8932 Mon Sep 17 00:00:00 2001 From: SulfurNitride Date: Thu, 19 Feb 2026 17:25:48 -0600 Subject: Add Python init diagnostics, AppImage build system, misc Linux fixes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 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 --- build.sh | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100755 build.sh (limited to 'build.sh') 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/" -- cgit v1.3.1