diff options
| author | SulfurNitride <SulfurNitride@users.noreply.github.com> | 2026-02-19 17:25:48 -0600 |
|---|---|---|
| committer | SulfurNitride <SulfurNitride@users.noreply.github.com> | 2026-02-19 17:25:48 -0600 |
| commit | 5467e210668eb24de9a4429ef0ddcbc6442e8932 (patch) | |
| tree | 6c672183779c800963d73db5bee6742bf08c65fd /build.sh | |
| parent | 6d70b7fa6a9cdf8ea59c7aa98f92249c5a4e0060 (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-x | build.sh | 58 |
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/" |
