mirror of
https://github.com/lutris/lutris.git
synced 2026-07-31 23:55:49 -04:00
Jammy's WebKit2GTK 4.1 point release (2.42) has a bug that kills the WebKitWebProcess after one input event on the ZOOM Platform login page; once the renderer dies the dialog freezes, stops repainting, and accepts no further input. The dialog frame itself stays alive so it wasn't obvious from the outside — the page just seemed to hang. Non-AppImage runs weren't affected because they load the host's newer WebKit. Noble's 2.44+ point release fixes it. Bump the base image, update apt package names where they've been renamed in the t64 transition (libfuse2 → libfuse2t64, libgnome-desktop-3-19 → libgnome-desktop-3-20t64), switch to apt's meson (Noble's is current enough for meson-python), and pass --break-system-packages to pip since Noble's system Python is PEP 668-managed. Trade-off: glibc floor moves from 2.35 to 2.39, so the AppImage stops running on hosts older than roughly 2024 distros (Ubuntu 22.04 and Debian 12 are too old). Documented in the Dockerfile header. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
58 lines
1.8 KiB
Bash
Executable File
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:ubuntu24.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)"
|