[Guix packaging] Hellcrawl #392

Closed
opened 2026-08-24 17:30:40 +00:00 by htayj · 2 comments
htayj commented 2026-08-24 17:30:40 +00:00 (Migrated from github.com)

Candidate

Scope

Package the independently playable roguelike variant from source. The canonical repository, latest stable release, source hash, complete dependency closure, and relationship to parent games or sibling forks must be established before implementation. Do not substitute an opaque prebuilt binary.

Research checklist

  • Identify the canonical maintained source repository and immutable release/commit.
  • Verify the exact FOSS license for code and every installed font, tile, sound, map, documentation, and bundled dependency.
  • Check GNU Guix and the channel audit set for an equivalent same-upstream package.
  • Determine the offline build system and source closure, including submodules or language registries.
  • Identify updater, telemetry, runtime download, mutable-state, and network behavior that needs Guix integration.

Acceptance checks

  • guix lint -L . <package> has no package-specific findings.
  • guix build -L . --no-grafts <package> succeeds without network access or opaque binaries.
  • Upstream tests run where available, and guix build -L . --no-grafts --check <package> verifies reproducibility.
  • A fresh HOME/XDG smoke test starts a real local game, exercises meaningful gameplay or save/load behavior, and proves no store writes.
  • Installed license and third-party notices cover the shipped closure and assets.

Imported from GitHub issue/PR. Originally posted by htayj on 2026-08-24T17:30:40Z.

## Candidate - Project: Hellcrawl - Candidate upstream/homepage: https://github.com/Hellmonk/hellcrawl - Discovery evidence: [Variant catalogs](https://www.roguebasin.com/index.php/Dungeon_Crawl_Stone_Soup) - Reported license: GPL-2.0 - License status: reported free license; verify exact terms and asset coverage against the pinned upstream source ## Scope Package the independently playable roguelike variant from source. The canonical repository, latest stable release, source hash, complete dependency closure, and relationship to parent games or sibling forks must be established before implementation. Do not substitute an opaque prebuilt binary. ## Research checklist - Identify the canonical maintained source repository and immutable release/commit. - Verify the exact FOSS license for code and every installed font, tile, sound, map, documentation, and bundled dependency. - Check GNU Guix and the channel audit set for an equivalent same-upstream package. - Determine the offline build system and source closure, including submodules or language registries. - Identify updater, telemetry, runtime download, mutable-state, and network behavior that needs Guix integration. ## Acceptance checks - `guix lint -L . <package>` has no package-specific findings. - `guix build -L . --no-grafts <package>` succeeds without network access or opaque binaries. - Upstream tests run where available, and `guix build -L . --no-grafts --check <package>` verifies reproducibility. - A fresh HOME/XDG smoke test starts a real local game, exercises meaningful gameplay or save/load behavior, and proves no store writes. - Installed license and third-party notices cover the shipped closure and assets. --- Imported from [GitHub issue/PR](https://github.com/htayj/guix-channel/issues/392). Originally posted by [htayj](https://github.com/htayj) on 2026-08-24T17:30:40Z.
htayj commented 2026-09-06 14:12:40 +00:00 (Migrated from github.com)

Goocastle recorded disposition: implementation-ready.

Created implementation ticket: #694.

Canonical upstream: https://github.com/Hellmonk/hellcrawl, published stable tag 5.7 at immutable commit 8abd87763372e1c1be472510ac55faeff7b0dca7; moving master 1886dd7e54ed54f9cfa2baff6c7f3b7d5ef9a806 is not the pin. A Guix git-fetch tree hash was computed as base32 105593jwy1k7s25m1nlvszcy3hqc616hkmvdh6n5qmyy4lwagc79 (raw git-archive SHA-256 0f0fb566c6af9ecd1fdf1306fb2c2984b8cbda71f19b5bc5d31ff32b3b8bbffb). Hellcrawl is an independently playable DCSS 0.19-era fork, materially distinct from local bloatcrawl2 and bcrawl sibling packages; no exact Hellcrawl package or duplicate delivery is present in the local channel. crawl-ref/licence.txt grants the program GPLv2-or-later and identifies compatible BSD-2/BSD-3, CC0/public-domain, MIT, zlib, and Apache-2.0 components. The terminal-only closure installs code, maps/data, documentation, CREDITS, and docs/license notices; it deliberately excludes tiles, fonts, sound, webserver content, and all contrib gitlink contents, avoiding the upstream artwork caveat and separately fetched origins. The 11 fixed contrib gitlinks (fonts, freetype, libpng, Lua, LuaJIT, PCRE, SDL2, SDL2-image, SDL2-mixer, SQLite, zlib) must not be recursively fetched; crawl-ref/INSTALL.txt explicitly says the listed external development libraries are the complete set and avoid bundled contribs. Implement tay/packages/hellcrawl.scm with gnu-build-system, deleting configure, entering crawl-ref/source, setting a fixed release version for generated metadata, and building with TILES=, DATADIR=$out/share/hellcrawl, LUA_PACKAGE=lua-5.1, system SQLite headers/libs, and forced gcc/g++. Expected native inputs are bison, flex, perl, pkg-config, and which; inputs are bash-minimal/coreutils-minimal/findutils, lua-5.1, ncurses, sqlite, and zlib, with the GNU toolchain supplied by gnu-build-system. Install only terminal data and the upstream docs/license notices, and provide a launcher that keeps mutable saves/logs under XDG_DATA_HOME (fallback $HOME/.local/share/hellcrawl), preserves a read-only store, and has no updater, telemetry, or runtime download. Add a wrapper-only --smoke mode: it must use a fresh HOME/XDG tree, TERM=xterm-256color and LC_ALL=C, run the real installed terminal game through a PTY with deterministic normal-game arguments -seed 285 -no-save -name Goocastle -species Hu -background Fi, and assert character creation plus dungeon entry before emitting the single-line marker 'hellcrawl smoke: terminal UI OK; no store writes'. Acceptance is guix lint -L . hellcrawl with no package findings; offline guix build -L . --no-grafts --no-substitutes hellcrawl; upstream nondebug tests where available; guix build -L . --no-grafts --no-substitutes --check hellcrawl; then the isolated runtime proof through bounded-validation/unshare, asserting the marker, captured PTY gameplay evidence, empty HOME/XDG config/cache/state/runtime trees, immutable output, and .goocastle/evidence/issue-392.png. No package proof is claimed in this research phase.


Imported from GitHub comment. Originally posted by htayj on 2026-09-06T14:12:40Z.

<!-- goocastle-disposition:sequential-reviewer:392:1:implementation-ready --> Goocastle recorded disposition: implementation-ready. Created implementation ticket: #694. Canonical upstream: https://github.com/Hellmonk/hellcrawl, published stable tag 5.7 at immutable commit 8abd87763372e1c1be472510ac55faeff7b0dca7; moving master 1886dd7e54ed54f9cfa2baff6c7f3b7d5ef9a806 is not the pin. A Guix git-fetch tree hash was computed as base32 105593jwy1k7s25m1nlvszcy3hqc616hkmvdh6n5qmyy4lwagc79 (raw git-archive SHA-256 0f0fb566c6af9ecd1fdf1306fb2c2984b8cbda71f19b5bc5d31ff32b3b8bbffb). Hellcrawl is an independently playable DCSS 0.19-era fork, materially distinct from local bloatcrawl2 and bcrawl sibling packages; no exact Hellcrawl package or duplicate delivery is present in the local channel. crawl-ref/licence.txt grants the program GPLv2-or-later and identifies compatible BSD-2/BSD-3, CC0/public-domain, MIT, zlib, and Apache-2.0 components. The terminal-only closure installs code, maps/data, documentation, CREDITS, and docs/license notices; it deliberately excludes tiles, fonts, sound, webserver content, and all contrib gitlink contents, avoiding the upstream artwork caveat and separately fetched origins. The 11 fixed contrib gitlinks (fonts, freetype, libpng, Lua, LuaJIT, PCRE, SDL2, SDL2-image, SDL2-mixer, SQLite, zlib) must not be recursively fetched; crawl-ref/INSTALL.txt explicitly says the listed external development libraries are the complete set and avoid bundled contribs. Implement tay/packages/hellcrawl.scm with gnu-build-system, deleting configure, entering crawl-ref/source, setting a fixed release version for generated metadata, and building with TILES=, DATADIR=$out/share/hellcrawl, LUA_PACKAGE=lua-5.1, system SQLite headers/libs, and forced gcc/g++. Expected native inputs are bison, flex, perl, pkg-config, and which; inputs are bash-minimal/coreutils-minimal/findutils, lua-5.1, ncurses, sqlite, and zlib, with the GNU toolchain supplied by gnu-build-system. Install only terminal data and the upstream docs/license notices, and provide a launcher that keeps mutable saves/logs under XDG_DATA_HOME (fallback $HOME/.local/share/hellcrawl), preserves a read-only store, and has no updater, telemetry, or runtime download. Add a wrapper-only --smoke mode: it must use a fresh HOME/XDG tree, TERM=xterm-256color and LC_ALL=C, run the real installed terminal game through a PTY with deterministic normal-game arguments -seed 285 -no-save -name Goocastle -species Hu -background Fi, and assert character creation plus dungeon entry before emitting the single-line marker 'hellcrawl smoke: terminal UI OK; no store writes'. Acceptance is guix lint -L . hellcrawl with no package findings; offline guix build -L . --no-grafts --no-substitutes hellcrawl; upstream nondebug tests where available; guix build -L . --no-grafts --no-substitutes --check hellcrawl; then the isolated runtime proof through bounded-validation/unshare, asserting the marker, captured PTY gameplay evidence, empty HOME/XDG config/cache/state/runtime trees, immutable output, and .goocastle/evidence/issue-392.png. No package proof is claimed in this research phase. --- Imported from [GitHub comment](https://github.com/htayj/guix-channel/issues/392#issuecomment-5559788593). Originally posted by [htayj](https://github.com/htayj) on 2026-09-06T14:12:40Z.
Owner

Implemented and published in signed, Guix-authenticated commit 62f09e33feb2119a835d7b346606d7811d9d3500.

Hellcrawl: original dungeon UI, turns 0→1, native save/exit, independent exact restore at turn1 and continuation to turn2; unchanged NAR. Output yya0gqyzrvcvd2iwprvw2g3kifv0vzir.

Source build, final reproducibility --check, offline lint without package-specific findings, standalone and integrated Make acceptance passed. README records exact commands and limits; unrelated Fourk/flex/legacy Cargo diagnostics are not claimed clean. No deployed system changed; no OKF deployment update applies.

Implemented and published in signed, Guix-authenticated commit `62f09e33feb2119a835d7b346606d7811d9d3500`. Hellcrawl: original dungeon UI, turns 0→1, native save/exit, independent exact restore at turn1 and continuation to turn2; unchanged NAR. Output yya0gqyzrvcvd2iwprvw2g3kifv0vzir. Source build, final reproducibility `--check`, offline lint without package-specific findings, standalone and integrated Make acceptance passed. README records exact commands and limits; unrelated Fourk/flex/legacy Cargo diagnostics are not claimed clean. No deployed system changed; no OKF deployment update applies.
tay closed this issue 2026-10-03 10:08:35 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
tay/guix-channel#392
No description provided.