builder: explain staging permissions and test staged installs #469

Closed
monsterlag wants to merge 5 commits from fix/finish-output-replacement into main
monsterlag commented 2026-11-08 04:31:06 +00:00 (Migrated from github.com)

Permission failures while preparing a .new file currently become unexpected errors, and a denied final replacement always says the game is running. Report the affected source, stage and output paths, and offer closing a running game conditionally for replacement failures.

Preserve upstream's stage-all policy: every executable/library and image is copied completely before any installed file is swapped. Retained .new files and existing permissions are preserved.

Validation:

  • Eleven Windows regressions execute the actual production staging/copy/swap statements with authored files, covering EXE/image preservation through all copies, partial copies, first install, source modes, denied staging, real Windows sharing locks, read-only destinations and existing staging files.
  • Against upstream 37f38bf, the fixture reproduces two raw permission exceptions and three inadequate diagnostics; preservation/success cases already pass. All eleven pass with the fix. Six cache-coherency and six builder-error/status checks also passed.
  • Normal merges retain the latest compile-retry release (fa22c2d) and the shared import fixture repair from #488. At 3b1902d, production and fixture inputs are byte-identical to the completed eleven-case check on the integrated latest-release build. Whitespace checks pass. All four hosted checks pass at this refreshed head: Windows and Linux source checks, SPIR-V emission, and AppImage packaging. Older failed Linux runs predate the #488 dependency.

The folder is not a transaction: a later replacement can fail after earlier swaps. Users still need to resolve permissions/locks before retrying. No full GUI/game build or Linux runtime check is claimed for this PR.

Refs #457.

Permission failures while preparing a `.new` file currently become unexpected errors, and a denied final replacement always says the game is running. Report the affected source, stage and output paths, and offer closing a running game conditionally for replacement failures. Preserve upstream's stage-all policy: every executable/library and image is copied completely before any installed file is swapped. Retained `.new` files and existing permissions are preserved. Validation: - Eleven Windows regressions execute the actual production staging/copy/swap statements with authored files, covering EXE/image preservation through all copies, partial copies, first install, source modes, denied staging, real Windows sharing locks, read-only destinations and existing staging files. - Against upstream `37f38bf`, the fixture reproduces two raw permission exceptions and three inadequate diagnostics; preservation/success cases already pass. All eleven pass with the fix. Six cache-coherency and six builder-error/status checks also passed. - Normal merges retain the latest `compile-retry` release (`fa22c2d`) and the shared import fixture repair from #488. At `3b1902d`, production and fixture inputs are byte-identical to the completed eleven-case check on the integrated latest-release build. Whitespace checks pass. All four hosted checks pass at this refreshed head: Windows and Linux source checks, SPIR-V emission, and AppImage packaging. Older failed Linux runs predate the #488 dependency. The folder is not a transaction: a later replacement can fail after earlier swaps. Users still need to resolve permissions/locks before retrying. No full GUI/game build or Linux runtime check is claimed for this PR. Refs #457.
NotRexed commented 2026-11-08 08:21:26 +00:00 (Migrated from github.com)
Merged into main (in https://github.com/NotRexed/Hookshot/releases/tag/ultrawide). Thanks!
Commenting is not possible because the repository is archived.
No description provided.