nethack: preserve playable curses and persistent saves#58
Open
brandonpayton wants to merge 2 commits into
Open
nethack: preserve playable curses and persistent saves#58brandonpayton wants to merge 2 commits into
brandonpayton wants to merge 2 commits into
Conversation
9e895e5 to
c267f37
Compare
Member
Author
|
Independent exact-head review completed for
No Formula blocker was found. Registry/browser-smoke artifacts are not Homebrew bottle evidence. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Purpose
Migrate NetHack 3.6.7 from the registry into a first-class Homebrew Formula without reducing it to a noninteractive demo. Build upstream game/data from source, link tap ncurses, and preserve real curses play, scores, fork instrumentation, and persistent save state.
Source and build
https://www.nethack.org/download/3.6.7/nethack-367-src.tgz98cf67df6debf9668a61745aa84c09bcab362e5d33f5b944ec5155d44d2aacb2nhdat, symbols, license, and manpage are installedThe port fixes upstream host/wasm serialization-width assumptions and terminal fallback at source level; no runtime wrapper is introduced.
Persistent state
Stable guest paths:
/home/linuxbrew/.linuxbrew/opt/nethack/share/nethack/home/linuxbrew/.linuxbrew/var/nethackpost_installcreates state files andsave/without overwriting existing data. Formula tests use an isolated writable mount rather than mutating the installed prefix or assuming a writable root image.Exact source head
Base:
c5705667a90b05754d2244a362f3f7fc95d2f9c3Head:
c267f37fa6657395e6595204445d024418bf6aebTwo-commit shape:
21db9ca57555479db69411fece19e5baca8bd824preserves the accepted functional Formula byte-for-byte; README context is the only restack difference.c267f37fa6657395e6595204445d024418bf6aebadds Binaryen/WABT, validates final post-instrumentation bytes with sharedfork: :required, and removes weaker duplicate test-time generic guards.Accepted functional Formula SHA-256:
55628b33acda6680cbd5b738aa79bfa24b9d0867b04454b6483e0a1a2447ad47Final Formula SHA-256:
c4f7814effcb0bc4355d50672c49aa771008e2f0091c7d306ef38a03504480edExact syntax, diff, ancestry, clean-worktree, and static contract checks pass; shared support passes 37 runs / 279 assertions. A fresh final-head source build/test was not run.
Historical functional evidence
The accepted implementation previously established on ABI 18:
293cb574de1e1a02cfa6c17efe3b01c99068aacabd54ae638095e17ec7ea97d8;nhdat57f30deb73838e091bdb9e41c9bca9b85b710f82e0b27beaa12350f26441f97cThe first run saved a supported character and the second printed
Restoring save file...; both exercised alternate-screen lifecycle.These are historical functional results, not current-head source-build, ABI 39 bottle, or Chromium evidence. Do not cite the earlier
202895...false-positive artifact.Gates
Final platform baseline is exact #907 / ABI 39. Source/artifact gates are #873, #882, and deterministic #888-on-#889. #903 is unnecessary because the exact 5.4 MB artifact passes #882 inspection. #905/#892/#895 are unrelated to the Formula's direct fork/persistence test.
Publication stack is #881 -> #887 -> #890 -> #885 plus tap #22 and #900. #887 covers Binaryen/WABT; #890/#900 prove the recursive same-tap dependency closure.
Final dependency order is libcxx -> ncurses -> NetHack. Publish/pour exact ABI 39 libcxx and ncurses first, build NetHack from those poured bottles, then run a naturally passing literal Node Formula test and stock Chromium character selection, save, relaunch, and restore with persistent state.
#907's registry NetHack/browser-bundle matrix and existing browser
nethack -ssmoke are platform setup evidence only; they do not prove a Homebrew bottle pour or gameplay persistence.No bottle block, binary artifact, platform change, or ABI change is included.