Linux builder and launcher update the way the Windows ones do #697

Merged
SkippySteve merged 4 commits from feat/linux-launcher-updates into main 2026-11-08 18:30:41 +00:00
SkippySteve commented 2026-11-08 17:33:23 +00:00 (Migrated from github.com)

Summary

  • The game folder's hookshot is a launcher, as hookshot.exe is on Windows: Play, and Update when a newer release is out. The game itself moves to bin/hookshot; saves, settings and image.bin stay in the folder. Starting bin/hookshot directly still asks, then closes so the builder can run.
  • Update installs the new builder under $XDG_DATA_HOME/hookshot/builder and downloads only the AppImage parts whose checksum changed. The version release carries hookshot-linux.txt; the zips live on the linux-parts release, which is not marked latest. The first AppImage is still the whole builder.
  • The object cache no longer includes the AppImage mount path (/tmp/.mount_... changes every start), so an update recompiles only the objects that changed.
  • A game older than the builder is rebuilt with it directly, without asking GitHub.

Test plan

  • python3 -I -B tests/test_linux_update.py (includes the packaged finish step putting the launcher at hookshot and the game in bin/, and an installed builder finding its own root; both fail without the fix)
  • tests/test_hookshot_launch.py, test_linux_builder_jobs.py, test_desktop_exec.py, test_finish_output.py, test_builder_status.py, test_sdl_audio_library.py, test_make_game_cache.py, nx2/test_version.py
  • host/hos_update.c compiles with -Wall -Wextra -Werror against host/posix
  • On a real 740 MB AppDir: two releases differing in one tools file produce identical zips for every other part (2.4 MB of ~240 MB changes). Installing from the AppDir downloads nothing; updating from the installed builder, using its own Python, downloads only the tools part, removes the old version, and the new version's clang runs.
  • On a version tag, the AppImage workflow uploads hookshot-linux.txt with the AppImage and any new HookshotLinux-*.zip files to the linux-parts release.
  • From a released AppImage, Update on a game folder downloads only the changed parts and rebuilds that folder.
## Summary - The game folder's `hookshot` is a launcher, as `hookshot.exe` is on Windows: Play, and Update when a newer release is out. The game itself moves to `bin/hookshot`; saves, settings and `image.bin` stay in the folder. Starting `bin/hookshot` directly still asks, then closes so the builder can run. - Update installs the new builder under `$XDG_DATA_HOME/hookshot/builder` and downloads only the AppImage parts whose checksum changed. The version release carries `hookshot-linux.txt`; the zips live on the `linux-parts` release, which is not marked latest. The first AppImage is still the whole builder. - The object cache no longer includes the AppImage mount path (`/tmp/.mount_...` changes every start), so an update recompiles only the objects that changed. - A game older than the builder is rebuilt with it directly, without asking GitHub. ## Test plan - [x] `python3 -I -B tests/test_linux_update.py` (includes the packaged finish step putting the launcher at `hookshot` and the game in `bin/`, and an installed builder finding its own root; both fail without the fix) - [x] `tests/test_hookshot_launch.py`, `test_linux_builder_jobs.py`, `test_desktop_exec.py`, `test_finish_output.py`, `test_builder_status.py`, `test_sdl_audio_library.py`, `test_make_game_cache.py`, `nx2/test_version.py` - [x] `host/hos_update.c` compiles with `-Wall -Wextra -Werror` against `host/posix` - [x] On a real 740 MB AppDir: two releases differing in one tools file produce identical zips for every other part (2.4 MB of ~240 MB changes). Installing from the AppDir downloads nothing; updating from the installed builder, using its own Python, downloads only the tools part, removes the old version, and the new version's clang runs. - [ ] On a version tag, the AppImage workflow uploads `hookshot-linux.txt` with the AppImage and any new `HookshotLinux-*.zip` files to the `linux-parts` release. - [ ] From a released AppImage, Update on a game folder downloads only the changed parts and rebuilds that folder.
shayderrr commented 2026-11-08 18:20:56 +00:00 (Migrated from github.com)

Fix conflicts please @SkippySteve

Fix conflicts please @SkippySteve
shayderrr commented 2026-11-08 18:30:36 +00:00 (Migrated from github.com)

Thank you!

Thank you!
Commenting is not possible because the repository is archived.
No description provided.