Files
lutris/utils/appimage/build.sh
Daniel Johnson ecdb045bcb Default LUTRIS_VERSION from lutris/__init__.py in AppImage build
Previously `make appimage` produced Lutris-dev-x86_64.AppImage unless the
caller remembered to set LUTRIS_VERSION. On a tagged release commit that
yielded a misleadingly-named artifact. Have build.sh awk the version out
of lutris/__init__.py when no explicit value is provided; an env override
(e.g. LUTRIS_VERSION=0.5.23-rc1 for a release candidate) still wins.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-11 17:15:30 -04:00

58 lines
1.8 KiB
Bash
Executable File

#!/usr/bin/env bash
# Top-level wrapper for the Lutris AppImage proof-of-concept build.
#
# Builds (or reuses) the Docker image defined by ./Dockerfile, then runs
# the in-container build script with the repo mounted at /src. The
# finished AppImage lands in ./dist/.
#
# Usage:
# utils/appimage/build.sh # builds with version "dev"
# LUTRIS_VERSION=0.5.23 utils/appimage/build.sh
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
REPO_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
IMAGE_TAG="lutris-appimage-builder:ubuntu22.04"
# Default LUTRIS_VERSION to whatever lutris/__init__.py advertises so a
# plain `make appimage` produces a sensibly-named artifact on a release
# commit. Explicit env override still wins (e.g. for RC tags).
if [ -z "${LUTRIS_VERSION:-}" ]; then
LUTRIS_VERSION="$(awk -F'"' '/^__version__/ { print $2; exit }' \
"$REPO_ROOT/lutris/__init__.py")"
fi
: "${LUTRIS_VERSION:=dev}"
echo "Building Lutris AppImage version: $LUTRIS_VERSION"
if command -v docker >/dev/null 2>&1; then
OCI=docker
elif command -v podman >/dev/null 2>&1; then
OCI=podman
else
echo "docker or podman is required to build the AppImage" >&2
exit 1
fi
echo "Using container engine: $OCI"
"$OCI" build -t "$IMAGE_TAG" "$SCRIPT_DIR"
mkdir -p "$REPO_ROOT/dist"
# --privileged lets appimagetool / linuxdeploy mount the squashfs they
# operate on; under podman with SELinux we also need :z on the bind mount.
MOUNT_OPTS=""
if [ "$OCI" = "podman" ]; then
MOUNT_OPTS=":z"
fi
"$OCI" run --rm \
--privileged \
-v "$REPO_ROOT":/src${MOUNT_OPTS} \
-e LUTRIS_VERSION="$LUTRIS_VERSION" \
"$IMAGE_TAG" \
bash /src/utils/appimage/build-in-container.sh
echo
echo "Built AppImage(s):"
ls -lh "$REPO_ROOT/dist/"*.AppImage 2>/dev/null || echo "(no AppImage produced — check build output above)"