Merge pull request #419 from outis1one/claude/wolf-pair-port-conflict-7nz8qg
wolf: actually build ti99sim-sdl instead of punting it to a manual step
This commit is contained in:
+64
-31
@@ -948,14 +948,15 @@ UDEV
|
|||||||
# ti99sim-sdl (billzajac/ti99sim) is the real target — genuine SDL2
|
# ti99sim-sdl (billzajac/ti99sim) is the real target — genuine SDL2
|
||||||
# joystick/gamepad support, confirmed against its own README — but it's
|
# joystick/gamepad support, confirmed against its own README — but it's
|
||||||
# source-only with no AppImage, so unlike Azahar/PCSX2/Dolphin/Cemu this
|
# source-only with no AppImage, so unlike Azahar/PCSX2/Dolphin/Cemu this
|
||||||
# installer can't just download a working binary: building it here would
|
# installer can't just download a working binary. Building it against the
|
||||||
# mean compiling against the HOST's glibc/SDL2 while the binary actually
|
# HOST's glibc/SDL2 risks a mismatch against the ES-DE container's own
|
||||||
# needs to run inside the ES-DE container's own (different) runtime, and
|
# (different) runtime, so instead it's built INSIDE a throwaway container
|
||||||
# that mismatch isn't something to guess at blind. The custom system
|
# running the exact same image ES-DE itself runs
|
||||||
|
# (ghcr.io/games-on-whales/es-de:edge) — that's what actually guarantees
|
||||||
|
# compatibility rather than just avoiding the question. The custom system
|
||||||
# definition below always gets written — cheap and correct regardless —
|
# definition below always gets written — cheap and correct regardless —
|
||||||
# pointing at emulators/ti99sim-sdl (the same ~/Applications convention
|
# pointing at emulators/ti99sim-sdl (the same ~/Applications convention
|
||||||
# every other standalone emulator here uses), so dropping a working
|
# every other standalone emulator here uses).
|
||||||
# binary there is the only remaining step.
|
|
||||||
echo ""
|
echo ""
|
||||||
local _GET_TI99=""
|
local _GET_TI99=""
|
||||||
prompt_yn "Set up TI-99/4A as its own ES-DE system (artwork scraping, gameplay-time tracking)? (y/n):" "n" _GET_TI99
|
prompt_yn "Set up TI-99/4A as its own ES-DE system (artwork scraping, gameplay-time tracking)? (y/n):" "n" _GET_TI99
|
||||||
@@ -984,18 +985,49 @@ XMLEOF
|
|||||||
log_info "TI-99/4A system definition already present — left as-is."
|
log_info "TI-99/4A system definition already present — left as-is."
|
||||||
fi
|
fi
|
||||||
echo ""
|
echo ""
|
||||||
log_warning "ti99sim-sdl itself still needs to be built and placed by hand — this installer can't"
|
if [ ! -x "$GAME_STORAGE_DIR/emulators/ti99sim-sdl" ]; then
|
||||||
log_warning "safely cross-compile a binary that's guaranteed to run inside the ES-DE container:"
|
# Build inside a container running the EXACT SAME image ES-DE
|
||||||
log_info " 1. git clone https://github.com/billzajac/ti99sim.git && cd ti99sim && make"
|
# itself runs (ghcr.io/games-on-whales/es-de:edge), not the host —
|
||||||
log_info " (needs libsdl2-dev — same build machine/container the ES-DE image itself runs on"
|
# that's what actually eliminates the glibc/SDL2 mismatch risk,
|
||||||
log_info " gives the best chance the result actually runs; a plain host build may hit a"
|
# rather than just noting it and asking the user to build blind.
|
||||||
log_info " glibc/SDL2 mismatch inside the container)"
|
# --entrypoint overrides GoW's own init (which normally drops to
|
||||||
log_info " 2. Copy the resulting ti99sim-sdl binary to:"
|
# the unprivileged 'retro' user), so -u root is explicit here for
|
||||||
log_info " $GAME_STORAGE_DIR/emulators/ti99sim-sdl"
|
# apt-get; the built binary only ever runs later as 'retro',
|
||||||
log_info " 3. You'll also need your own TI-99/4A console ROM + GROM dump (real console"
|
# unaffected by what user built it.
|
||||||
log_info " firmware, same legal situation as any other console BIOS) — ti99sim's own"
|
log_info "Building ti99sim-sdl inside the same container image ES-DE runs (matches its"
|
||||||
log_info " README covers where it expects that once you have it."
|
log_info "glibc/SDL2 exactly, so the result is guaranteed compatible)..."
|
||||||
log_info " 4. Drop .ctg/.rpk/.bin cartridge files into roms/ti994a/"
|
# `make` alone leaves the binary under src/, not the repo root —
|
||||||
|
# confirmed against the project's own README ("all the
|
||||||
|
# executables are left in their corresponding directories").
|
||||||
|
# `make install` is the project's own reliable way to collect
|
||||||
|
# it (copies to /opt/ti99sim/bin, symlinks into
|
||||||
|
# /usr/local/bin), so use that instead of guessing the exact
|
||||||
|
# build subpath.
|
||||||
|
if docker run --rm -u root --entrypoint /bin/bash \
|
||||||
|
-v "$GAME_STORAGE_DIR/emulators:/output" \
|
||||||
|
ghcr.io/games-on-whales/es-de:edge -c '
|
||||||
|
set -e
|
||||||
|
apt-get update -qq
|
||||||
|
apt-get install -y -qq git build-essential libsdl2-dev ca-certificates
|
||||||
|
git clone -q https://github.com/billzajac/ti99sim.git /tmp/ti99sim
|
||||||
|
cd /tmp/ti99sim
|
||||||
|
make
|
||||||
|
make install
|
||||||
|
cp /usr/local/bin/ti99sim-sdl /output/ti99sim-sdl
|
||||||
|
'; then
|
||||||
|
chmod +x "$GAME_STORAGE_DIR/emulators/ti99sim-sdl"
|
||||||
|
chown "$ACTUAL_USER:$ACTUAL_USER" "$GAME_STORAGE_DIR/emulators/ti99sim-sdl"
|
||||||
|
log_success "ti99sim-sdl built and installed -> $GAME_STORAGE_DIR/emulators/ti99sim-sdl"
|
||||||
|
else
|
||||||
|
log_warning "Build failed — check the docker output above. Retry later with: sudo ./setup.sh wolf"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
log_info "ti99sim-sdl already present — skipping build."
|
||||||
|
fi
|
||||||
|
log_info "The one thing this can't do for you: your own TI-99/4A console ROM + GROM dump"
|
||||||
|
log_info "(real console firmware, same legal situation as any other BIOS) — ti99sim-sdl's"
|
||||||
|
log_info "own README covers exactly where it expects that once you have it."
|
||||||
|
log_info "Then just drop .ctg/.rpk/.bin cartridge files into roms/ti994a/"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# ── App selection ─────────────────────────────────────────────────────────
|
# ── App selection ─────────────────────────────────────────────────────────
|
||||||
@@ -3474,19 +3506,20 @@ tracking) via a custom system definition at
|
|||||||
service, which is browser-based and isn't something ES-DE can launch as a
|
service, which is browser-based and isn't something ES-DE can launch as a
|
||||||
system.
|
system.
|
||||||
|
|
||||||
The emulator itself, \`ti99sim-sdl\` (real SDL2 gamepad support), isn't
|
The emulator itself, \`ti99sim-sdl\` (real SDL2 gamepad support), has no
|
||||||
auto-downloaded — it has no AppImage, and building it on the host risks a
|
AppImage — so instead of a plain host build (which risks a glibc/SDL2
|
||||||
glibc/SDL2 mismatch against the ES-DE container's own runtime that isn't
|
mismatch against the ES-DE container's own runtime), this installer builds
|
||||||
safe to guess at blind. Build it yourself and drop the binary at
|
it inside a throwaway container running the exact same image ES-DE itself
|
||||||
\`emulators/ti99sim-sdl\`:
|
runs (\`ghcr.io/games-on-whales/es-de:edge\`), guaranteeing compatibility,
|
||||||
\`\`\`bash
|
and drops the result at \`emulators/ti99sim-sdl\` automatically. Re-run
|
||||||
git clone https://github.com/billzajac/ti99sim.git && cd ti99sim && make
|
\`sudo ./setup.sh wolf\` if the build ever needs retrying (network hiccup,
|
||||||
\`\`\`
|
etc.) — it skips the build if the binary's already there.
|
||||||
(needs \`libsdl2-dev\`). You'll also need your own TI-99/4A console ROM +
|
|
||||||
GROM dump — same legal situation as any other console BIOS, and not
|
The one thing this can't do for you: your own TI-99/4A console ROM + GROM
|
||||||
something this installer supplies — ti99sim's own README covers where it
|
dump — same legal situation as any other console BIOS, and not something
|
||||||
expects that. Then drop \`.ctg\`/\`.rpk\`/\`.bin\` cartridge files into
|
any installer can supply — ti99sim-sdl's own README covers exactly where
|
||||||
\`roms/ti994a/\`.
|
it expects that once you have it. Then just drop \`.ctg\`/\`.rpk\`/\`.bin\`
|
||||||
|
cartridge files into \`roms/ti994a/\`.
|
||||||
|
|
||||||
## MAME: sample packs showing up as games
|
## MAME: sample packs showing up as games
|
||||||
MAME sample packs (audio for a handful of older analog-sound games) use the
|
MAME sample packs (audio for a handful of older analog-sound games) use the
|
||||||
|
|||||||
Reference in New Issue
Block a user