[Guix packaging] Dragonslayer #333

Open
opened 2026-08-24 17:29:15 +00:00 by htayj · 1 comment
htayj commented 2026-08-24 17:29:15 +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:29:15Z.

## Candidate - Project: Dragonslayer - Candidate upstream/homepage: http://www.astrolog.org/labyrnth/daedalus/dragon.htm - Discovery evidence: [IRLDb](https://forums.roguetemple.com/irldb/index.php?i=47e013c) - Reported license: [[GPL]]v2 - License status: reported free license; verify exact terms and asset coverage against the pinned upstream source - Catalog note: IRLDb status: stable. ## 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/333). Originally posted by [htayj](https://github.com/htayj) on 2026-08-24T17:29:15Z.
htayj commented 2026-09-03 07:27:57 +00:00 (Migrated from github.com)

Goocastle recorded disposition: implementation-ready.

Created implementation ticket: #681.

Canonical upstream is Walter D. Pullen's Daedalus 3.5 source mirror at https://github.com/CruiserOne/Daedalus, fixed at tag v3.5 and commit 32af46ddf22e53c9bfd7bd7eacca1e249c60a5e8 (2024-10-31 upstream release; the mirror README identifies itself as the official 3.5 source copy with only a README addition). The cloned tree has 87 tracked files and no submodules. Audit hashes are Guix recursive base32 lf4pteu5f2l67eysaq3yd277vmha3yfkpjfouu52umw7zp7ix44q and raw git-archive SHA-256 e23f94cd538d190943b87d8011c32c55796a4c4669a6af059d4cb5e5858be0c6. The only fetched source origin is this fixed commit. It contains license.htm with the complete GNU GPL version 2 text (Version 2, June 1991), the upstream changes page states GPL v2 or later, and the common Walter D. Pullen notice is present throughout the C++ sources; dragon.ds carries the author attribution and embeds its stone, crystal, leaf, door, weapon, armor, amulet, potion, scroll, and wand texture data. No separate fonts, sounds, maps, registries, dependencies, or submodule origins are required; do not install the unrelated hunger.bmp. Preserve license.htm, source notices, and author credits in installed documentation. The embedded leaf data is annotated as based on a Windows 3.1 leaves.bmp, but no separate leaves origin is fetched or installed; retain the upstream attribution and treat the pinned upstream license/notice as the license evidence for the shipped single-origin script and embedded assets. The Makefile documents the offline Unix build g++ -c -O *.cpp; g++ -o daedalus *.o -lm and lists 16 objects. A Guix package should use module (tay packages dragonslayer), package name dragonslayer, version 3.5 with the fixed git revision and the recorded Guix hash, gnu-build-system, patch util.h to comment out WIN and PC for the command-line build, and use only the normal GCC/make toolchain plus libc/libm; no runtime library such as ncurses, SDL, or X11 is indicated. Install the private Daedalus executable, dragon.ds under share/dragonslayer, and license/documentation under share/doc/dragonslayer. The local channel and audit history contain no same-upstream dragonslayer/Daedalus package, closed delivery, or runtime proof, so this is a distinct ordinary package delivery. No daemon-backed build was attempted because the trusted phase has no Guix daemon and prohibits guix shell; the source metadata establishes feasibility but is not package proof. The wrapper should use absolute store paths, avoid network/download/updater/telemetry behavior, provide normal textual command interaction, and add dragonslayer --smoke that opens dragon.ds, performs one MoveU action, prints exactly DRAGONSLAYER_SMOKE_OK, and exits without save commands or store writes. Later acceptance must run package-specific guix lint -L . dragonslayer, a no-network guix build -L . --no-grafts dragonslayer, and guix build -L . --no-grafts --check dragonslayer; upstream has no test target, so document that fact. In a fresh temporary HOME/XDG environment, run the exact smoke invocation through the bounded validator, assert the marker and meaningful gameplay initialization/movement, verify no files are written to the store or unexpected user state, and capture the successful terminal/game state at .goocastle/evidence/issue-333.png while checking installed license and notices.


Imported from GitHub comment. Originally posted by htayj on 2026-09-03T07:27:57Z.

<!-- goocastle-disposition:sequential-reviewer:333:1:implementation-ready --> Goocastle recorded disposition: implementation-ready. Created implementation ticket: #681. Canonical upstream is Walter D. Pullen's Daedalus 3.5 source mirror at https://github.com/CruiserOne/Daedalus, fixed at tag v3.5 and commit 32af46ddf22e53c9bfd7bd7eacca1e249c60a5e8 (2024-10-31 upstream release; the mirror README identifies itself as the official 3.5 source copy with only a README addition). The cloned tree has 87 tracked files and no submodules. Audit hashes are Guix recursive base32 lf4pteu5f2l67eysaq3yd277vmha3yfkpjfouu52umw7zp7ix44q and raw git-archive SHA-256 e23f94cd538d190943b87d8011c32c55796a4c4669a6af059d4cb5e5858be0c6. The only fetched source origin is this fixed commit. It contains license.htm with the complete GNU GPL version 2 text (Version 2, June 1991), the upstream changes page states GPL v2 or later, and the common Walter D. Pullen notice is present throughout the C++ sources; dragon.ds carries the author attribution and embeds its stone, crystal, leaf, door, weapon, armor, amulet, potion, scroll, and wand texture data. No separate fonts, sounds, maps, registries, dependencies, or submodule origins are required; do not install the unrelated hunger.bmp. Preserve license.htm, source notices, and author credits in installed documentation. The embedded leaf data is annotated as based on a Windows 3.1 leaves.bmp, but no separate leaves origin is fetched or installed; retain the upstream attribution and treat the pinned upstream license/notice as the license evidence for the shipped single-origin script and embedded assets. The Makefile documents the offline Unix build `g++ -c -O *.cpp; g++ -o daedalus *.o -lm` and lists 16 objects. A Guix package should use module `(tay packages dragonslayer)`, package name `dragonslayer`, version 3.5 with the fixed git revision and the recorded Guix hash, gnu-build-system, patch util.h to comment out WIN and PC for the command-line build, and use only the normal GCC/make toolchain plus libc/libm; no runtime library such as ncurses, SDL, or X11 is indicated. Install the private Daedalus executable, dragon.ds under share/dragonslayer, and license/documentation under share/doc/dragonslayer. The local channel and audit history contain no same-upstream dragonslayer/Daedalus package, closed delivery, or runtime proof, so this is a distinct ordinary package delivery. No daemon-backed build was attempted because the trusted phase has no Guix daemon and prohibits guix shell; the source metadata establishes feasibility but is not package proof. The wrapper should use absolute store paths, avoid network/download/updater/telemetry behavior, provide normal textual command interaction, and add `dragonslayer --smoke` that opens dragon.ds, performs one MoveU action, prints exactly `DRAGONSLAYER_SMOKE_OK`, and exits without save commands or store writes. Later acceptance must run package-specific `guix lint -L . dragonslayer`, a no-network `guix build -L . --no-grafts dragonslayer`, and `guix build -L . --no-grafts --check dragonslayer`; upstream has no test target, so document that fact. In a fresh temporary HOME/XDG environment, run the exact smoke invocation through the bounded validator, assert the marker and meaningful gameplay initialization/movement, verify no files are written to the store or unexpected user state, and capture the successful terminal/game state at .goocastle/evidence/issue-333.png while checking installed license and notices. --- Imported from [GitHub comment](https://github.com/htayj/guix-channel/issues/333#issuecomment-5522166642). Originally posted by [htayj](https://github.com/htayj) on 2026-09-03T07:27:57Z.
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#333
No description provided.