[Guix packaging] Martin's Dungeon Bash #438

Open
opened 2026-08-24 17:31:46 +00:00 by htayj · 1 comment
htayj commented 2026-08-24 17:31:46 +00:00 (Migrated from github.com)

Candidate

Scope

Package the independently playable roguelike 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:31:46Z.

## Candidate - Project: Martin's Dungeon Bash - Candidate upstream/homepage: https://github.com/rsaarelm/martins-dungeon-bash - Discovery evidence: [RogueBasin](https://www.roguebasin.com/index.php/Category:Open_source) - Reported license: NOASSERTION - License status: needs authoritative upstream verification before packaging ## Scope Package the independently playable roguelike 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/438). Originally posted by [htayj](https://github.com/htayj) on 2026-08-24T17:31:46Z.
htayj commented 2026-09-11 05:00:58 +00:00 (Migrated from github.com)

Goocastle recorded disposition: implementation-ready.

Created implementation ticket: #705.

Canonical upstream is Martin Read's official project page https://www.chiark.greenend.org.uk/~mpread/dungeonbash/; the candidate GitHub URL https://github.com/rsaarelm/martins-dungeon-bash currently returns HTTP 404 and must not be used. The official page identifies stable v1.7, released 2009-01-06, at https://www.chiark.greenend.org.uk/~mpread/dungeonbash/archive-1.7/dungeonbash-1.7.tar.gz; observed SHA-256 is 790bde04ff869ba2817ad1f07d062d75f7f15af4a2c99669dd60a4b98fdf1380. The fixed archive has no Git submodules, language registries, fonts, tiles, sounds, or bundled third-party dependencies: it contains C sources/headers, a Makefile, notes.txt, and project HTML spoiler documentation. notes.txt states copyright 2005-2009 Martin Read and reproduces the BSD 2-clause license; the C source headers carry the same redistribution grant. Install notes.txt or an extracted copy of that notice with the binary; omit the HTML spoiler files unless their documentation license is separately verified. Makefile metadata is a direct GCC build of dungeonbash with -lpanel -lncurses; use module path tay/packages/martins-dungeon-bash.scm and package name martins-dungeon-bash, native gcc-toolchain, ncurses for panel/curses, bash-minimal because upstream save/load use system(), gzip because they call gzip and gunzip, and util-linux for the PTY smoke wrapper. Current GNU Guix gnu/packages/games.scm and the local channel inventory contain no matching Martin's Dungeon Bash, dungeonbash, or Cave Chop package, so this is not a duplicate. Package by copying the built executable to libexec and provide a wrapper executable named dungeonbash with a safe --smoke mode: in a fresh temporary working directory and PTY, send a stand-still/gameplay key followed by S and an exit key to create dunbash.sav.gz, launch again in the same directory so the program loads that save, answer X/Y to quit, assert the observed Game loaded. message, and print the single-line marker MARTINS_DUNGEON_BASH_SMOKE_OK; use util-linux script and fixed store paths for helper tools, and keep all state outside the store. Normal invocation must preserve the upstream working-directory save behavior. This is implementation-ready from source metadata, but no package proof is claimed here because the host intentionally has no Guix daemon; the delivery phase must run lint, no-graft offline build/check, and the fresh-HOME/XDG wrapper smoke with the planned screenshot artifact.


Imported from GitHub comment. Originally posted by htayj on 2026-09-11T05:00:58Z.

<!-- goocastle-disposition:sequential-reviewer:438:1:implementation-ready --> Goocastle recorded disposition: implementation-ready. Created implementation ticket: #705. Canonical upstream is Martin Read's official project page https://www.chiark.greenend.org.uk/~mpread/dungeonbash/; the candidate GitHub URL https://github.com/rsaarelm/martins-dungeon-bash currently returns HTTP 404 and must not be used. The official page identifies stable v1.7, released 2009-01-06, at https://www.chiark.greenend.org.uk/~mpread/dungeonbash/archive-1.7/dungeonbash-1.7.tar.gz; observed SHA-256 is 790bde04ff869ba2817ad1f07d062d75f7f15af4a2c99669dd60a4b98fdf1380. The fixed archive has no Git submodules, language registries, fonts, tiles, sounds, or bundled third-party dependencies: it contains C sources/headers, a Makefile, notes.txt, and project HTML spoiler documentation. notes.txt states copyright 2005-2009 Martin Read and reproduces the BSD 2-clause license; the C source headers carry the same redistribution grant. Install notes.txt or an extracted copy of that notice with the binary; omit the HTML spoiler files unless their documentation license is separately verified. Makefile metadata is a direct GCC build of dungeonbash with -lpanel -lncurses; use module path tay/packages/martins-dungeon-bash.scm and package name martins-dungeon-bash, native gcc-toolchain, ncurses for panel/curses, bash-minimal because upstream save/load use system(), gzip because they call gzip and gunzip, and util-linux for the PTY smoke wrapper. Current GNU Guix gnu/packages/games.scm and the local channel inventory contain no matching Martin's Dungeon Bash, dungeonbash, or Cave Chop package, so this is not a duplicate. Package by copying the built executable to libexec and provide a wrapper executable named dungeonbash with a safe --smoke mode: in a fresh temporary working directory and PTY, send a stand-still/gameplay key followed by S and an exit key to create dunbash.sav.gz, launch again in the same directory so the program loads that save, answer X/Y to quit, assert the observed Game loaded. message, and print the single-line marker MARTINS_DUNGEON_BASH_SMOKE_OK; use util-linux script and fixed store paths for helper tools, and keep all state outside the store. Normal invocation must preserve the upstream working-directory save behavior. This is implementation-ready from source metadata, but no package proof is claimed here because the host intentionally has no Guix daemon; the delivery phase must run lint, no-graft offline build/check, and the fresh-HOME/XDG wrapper smoke with the planned screenshot artifact. --- Imported from [GitHub comment](https://github.com/htayj/guix-channel/issues/438#issuecomment-5629724420). Originally posted by [htayj](https://github.com/htayj) on 2026-09-11T05:00:58Z.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
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#438
No description provided.