Add new PNG images for clean and preview outputs
- Added `image_clean.png` to the output directory for the clean image representation. - Added `image_clean_preview.png` for the preview of the clean image. - Introduced `image_svg_clean.png` for the SVG clean image representation.
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
#!/bin/sh
|
||||
set -eu
|
||||
|
||||
APPDIR=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)
|
||||
VENV_DIR="$APPDIR/usr/opt/python"
|
||||
GAME_DIR="$APPDIR/usr/share/mice"
|
||||
|
||||
if [ -n "${MICE_DATA_DIR:-}" ]; then
|
||||
DATA_DIR="$MICE_DATA_DIR"
|
||||
elif [ -n "${XDG_DATA_HOME:-}" ]; then
|
||||
DATA_DIR="$XDG_DATA_HOME/mice"
|
||||
else
|
||||
DATA_DIR="$HOME/.local/share/mice"
|
||||
fi
|
||||
|
||||
mkdir -p "$DATA_DIR"
|
||||
|
||||
export PATH="$VENV_DIR/bin:${PATH:-}"
|
||||
export LD_LIBRARY_PATH="$APPDIR/usr/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
|
||||
export MICE_PROJECT_ROOT="$GAME_DIR"
|
||||
export MICE_DATA_DIR="$DATA_DIR"
|
||||
export PYTHONNOUSERSITE=1
|
||||
|
||||
cd "$GAME_DIR"
|
||||
exec "$VENV_DIR/bin/python" rats.py "$@"
|
||||
@@ -0,0 +1,9 @@
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=Mice!
|
||||
Comment=Strategic rat extermination game built with Python and SDL2
|
||||
Exec=mice
|
||||
Icon=mice
|
||||
Categories=Game;StrategyGame;
|
||||
Terminal=false
|
||||
StartupNotify=false
|
||||
@@ -0,0 +1,136 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
ROOT_DIR=$(CDPATH= cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." && pwd)
|
||||
DIST_DIR="${DIST_DIR:-$ROOT_DIR/dist}"
|
||||
APPDIR="${APPDIR:-$DIST_DIR/AppDir}"
|
||||
APP_NAME="Mice"
|
||||
APP_ID="mice"
|
||||
ARCH_EXPECTED="aarch64"
|
||||
APPIMAGETOOL_BIN="${APPIMAGETOOL_BIN:-appimagetool}"
|
||||
PYTHON_BIN="${PYTHON_BIN:-python3}"
|
||||
OUTPUT_APPIMAGE="${OUTPUT_APPIMAGE:-$DIST_DIR/${APP_NAME}-${ARCH_EXPECTED}.AppImage}"
|
||||
|
||||
PYTHON_DIR="$APPDIR/usr/opt/python"
|
||||
GAME_DIR="$APPDIR/usr/share/mice"
|
||||
LIB_DIR="$APPDIR/usr/lib"
|
||||
|
||||
require_command() {
|
||||
if ! command -v "$1" >/dev/null 2>&1; then
|
||||
printf 'Missing required command: %s\n' "$1" >&2
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
find_system_library() {
|
||||
local soname="$1"
|
||||
ldconfig -p | awk -v target="$soname" '$1 == target { print $NF; exit }'
|
||||
}
|
||||
|
||||
should_bundle_soname() {
|
||||
case "$1" in
|
||||
linux-vdso.so.*|libc.so.*|libm.so.*|libpthread.so.*|libdl.so.*|librt.so.*|libutil.so.*|libresolv.so.*|ld-linux*.so.*)
|
||||
return 1
|
||||
;;
|
||||
*)
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
copy_dependency_tree() {
|
||||
local binary="$1"
|
||||
local dep
|
||||
local soname
|
||||
|
||||
while IFS= read -r dep; do
|
||||
[ -n "$dep" ] || continue
|
||||
[ -f "$dep" ] || continue
|
||||
soname=$(basename "$dep")
|
||||
if ! should_bundle_soname "$soname"; then
|
||||
continue
|
||||
fi
|
||||
if [ ! -e "$LIB_DIR/$soname" ]; then
|
||||
cp -a "$dep" "$LIB_DIR/$soname"
|
||||
chmod 755 "$LIB_DIR/$soname" || true
|
||||
copy_dependency_tree "$dep"
|
||||
fi
|
||||
done < <(
|
||||
ldd "$binary" 2>/dev/null | awk '
|
||||
/=>/ && $3 ~ /^\// { print $3 }
|
||||
$1 ~ /^\// { print $1 }
|
||||
' | sort -u
|
||||
)
|
||||
}
|
||||
|
||||
copy_system_library() {
|
||||
local soname="$1"
|
||||
local path
|
||||
path=$(find_system_library "$soname")
|
||||
if [ -z "$path" ]; then
|
||||
printf 'Unable to locate required system library: %s\n' "$soname" >&2
|
||||
exit 1
|
||||
fi
|
||||
cp -a "$path" "$LIB_DIR/$(basename "$path")"
|
||||
chmod 755 "$LIB_DIR/$(basename "$path")" || true
|
||||
copy_dependency_tree "$path"
|
||||
}
|
||||
|
||||
printf '==> Checking build prerequisites\n'
|
||||
require_command rsync
|
||||
require_command "$PYTHON_BIN"
|
||||
require_command "$APPIMAGETOOL_BIN"
|
||||
require_command ldconfig
|
||||
require_command ldd
|
||||
|
||||
if [ "$(uname -m)" != "$ARCH_EXPECTED" ]; then
|
||||
printf 'This builder must run on %s. Current architecture: %s\n' "$ARCH_EXPECTED" "$(uname -m)" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
printf '==> Creating AppDir at %s\n' "$APPDIR"
|
||||
rm -rf "$APPDIR"
|
||||
mkdir -p "$DIST_DIR" "$LIB_DIR" "$GAME_DIR"
|
||||
|
||||
printf '==> Building bundled Python environment with %s\n' "$PYTHON_BIN"
|
||||
"$PYTHON_BIN" -m venv --copies "$PYTHON_DIR"
|
||||
"$PYTHON_DIR/bin/pip" install --upgrade pip setuptools wheel
|
||||
"$PYTHON_DIR/bin/pip" install -r "$ROOT_DIR/requirements.txt"
|
||||
|
||||
printf '==> Syncing game files\n'
|
||||
rsync -a \
|
||||
--delete \
|
||||
--exclude '.git' \
|
||||
--exclude '.github' \
|
||||
--exclude '.venv' \
|
||||
--exclude '__pycache__' \
|
||||
--exclude '*.pyc' \
|
||||
--exclude '.mypy_cache' \
|
||||
--exclude '.pytest_cache' \
|
||||
--exclude 'build' \
|
||||
--exclude 'dist' \
|
||||
--exclude 'packaging' \
|
||||
"$ROOT_DIR/" "$GAME_DIR/"
|
||||
|
||||
rm -f "$GAME_DIR/user_profiles.json" "$GAME_DIR/scores.txt"
|
||||
|
||||
printf '==> Installing AppImage metadata\n'
|
||||
install -Dm755 "$ROOT_DIR/packaging/appimage/AppRun" "$APPDIR/AppRun"
|
||||
install -Dm644 "$ROOT_DIR/packaging/appimage/mice.desktop" "$APPDIR/$APP_ID.desktop"
|
||||
install -Dm644 "$ROOT_DIR/packaging/appimage/mice.desktop" "$APPDIR/usr/share/applications/$APP_ID.desktop"
|
||||
install -Dm644 "$ROOT_DIR/assets/Rat/BMP_WEWIN.png" "$APPDIR/$APP_ID.png"
|
||||
install -Dm644 "$ROOT_DIR/assets/Rat/BMP_WEWIN.png" "$APPDIR/usr/share/icons/hicolor/256x256/apps/$APP_ID.png"
|
||||
|
||||
printf '==> Bundling native dependencies\n'
|
||||
copy_system_library libSDL2-2.0.so.0
|
||||
copy_system_library libSDL2_ttf-2.0.so.0
|
||||
copy_dependency_tree "$PYTHON_DIR/bin/python"
|
||||
|
||||
while IFS= read -r -d '' candidate; do
|
||||
copy_dependency_tree "$candidate"
|
||||
done < <(find "$PYTHON_DIR" -type f \( -name '*.so' -o -name '*.so.*' -o -perm -u+x \) -print0)
|
||||
|
||||
printf '==> Building AppImage %s\n' "$OUTPUT_APPIMAGE"
|
||||
ARCH="$ARCH_EXPECTED" "$APPIMAGETOOL_BIN" --appimage-extract-and-run "$APPDIR" "$OUTPUT_APPIMAGE"
|
||||
|
||||
printf 'AppImage created at %s\n' "$OUTPUT_APPIMAGE"
|
||||
Reference in New Issue
Block a user