[Guix packaging] lockie/lispy-rogue #141
Labels
No labels
accessibility
bug
category:ai-tool
category:browser
category:command-line-tool
category:compiler-toolchain
category:desktop-application
category:developer-tool
category:editor-extension
category:emulator
category:font
category:game
category:input-accessibility
category:library-framework
category:mud-client
category:multimedia
category:networking-client
category:programming-language
category:roguelike
category:storage-media-tool
category:system-tool
category:terminal-application
complexity:high
complexity:low
complexity:medium
difficulty:blocked
difficulty:easy
difficulty:hard
difficulty:moderate
documentation
duplicate
enhancement
good first issue
gooflow:guix-package-high
gooflow:guix-package-moderate
gooflow:guix-package-quality-gates
gooflow:guix-research-disposition
gooflow:guix-runtime-evidence-refresh
help wanted
invalid
kind:disposition
kind:packaging
needs:license-investigation
priority:quick
question
ready-for-agent
state:available-elsewhere
state:blocked
state:deferred
state:out-of-scope
state:ready
state:research
wontfix
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
tay/guix-channel#141
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Candidate
b2249bf7fe05e4ae53468d0f8855fcf4f4057337(checked 2026-08-14)MIT(MIT License). No GPL only-or-later term is inferred beyond the upstream evidence.Scope and blockers
Package the local terminal game and its data assets.
Acceptance checks
guix lint -L . lispy-rogueguix build -L . lispy-rogueImported from GitHub issue/PR. Originally posted by htayj on 2026-08-14T13:17:52Z.
Goocastle recorded disposition: implementation-ready.
Created implementation ticket: #644.
Canonical target and fixed source: https://github.com/lockie/lispy-rogue at commit b2249bf7fe05e4ae53468d0f8855fcf4f4057337, ASDF version 0.0.2. The local immutable source ledger already provides lockie-lispy-rogue-source for that codeload snapshot with Guix base32 hash 1f0n7smll05hgn2syqvzqnyybcvcfbjdq7227vkq8zb4g11lmb4x; reuse it rather than creating a second target origin. The pinned tree has no .gitmodules and git submodule status --recursive is empty. The target LICENSE at that revision is the complete MIT grant (Andrew Kravchuk, 2024), and the ASDF system is a source-buildable Common Lisp application with deploy-op and entry point lispy-rogue:main. Existing Guix coverage search found no equivalent package for this upstream origin; the local channel only has the source snapshot.
Required ASDF origins and exact license evidence: cl-astar 0.0.4 at https://gitlab.com/lockie/cl-astar commit 00d37d04187ce42211b2029402ee46a6813a5bce has LICENSE with an MIT grant; cl-liballegro-nuklear 0.0.12 at https://github.com/lockie/cl-liballegro-nuklear commit eb45ded76be495c59c82bc743850db275119cb2a has LICENSE.md with an MIT grant, while its bundled nuklear.h at that same fixed revision explicitly declares Nuklear public domain and its embedded stb components state public-domain/MIT alternatives; cl-tiled 0.2.2 at https://github.com/Zulu-Inuoe/cl-tiled commit 80332bfbf18734f342c9c2c7b6228560f64a3d54 has LICENSE.md with the complete zlib/libpng grant. There are no submodule origins. The Guix-provided direct closure is usable at the inspected fixed revisions: alexandria 49e82add16cb9f1ffa72c77cd687271247181ff3 (LICENCE: public domain with 0-clause-MIT fallback), cl-fast-ecs 491a16b21c1efe45a5f793d39ccf4aa30de6ff41 (LICENSE: MIT), cl-liballegro 49f632ce97fc4f835bf5d450588793234b980a64 (ASDF and README identify zlib), cl-ppcre 1ca0cd9ca0d161acd49c463d6cb5fff897596e2f (source headers contain the BSD redistribution grant), livesupport 71e6e412df9f3759ad8378fabb203913d82e228a (LICENSE: BSD 2-Clause), deploy c9b869d943d39fcddd8c4aa380995645bd2e3c0b (LICENSE: zlib), and allegro 5.2.7.0 (existing Guix package metadata: Modified BSD). The transitive systems named by the three new ASDF libraries—let-plus, float-features, trivial-adjust-simple-array, CFFI/cffi-libffi, trivial-features, chipz, cl-base64, cl-json, nibbles, parse-float, split-sequence, uiop, and xmls—are already available as Guix SBCL inputs.
The runtime assets are fixed bytes in the target commit: dungeon.ogg SHA256 18da6d6c4492d744f5ebde5bb128a636770df4197d2d4a0b5e8d65df6e27f57b and the OpenGameArt Dungeon Ambience page identifies that asset as CC0; urizen-tileset.png SHA256 b8093319d17fe5032f3d5a9a206a365b8a64c1fa95f5fe3e215c4b12e3dbf9bf and the author page identifies Urizen 1Bit Tileset as CC0 v1.0; fantasque-sans-mono.ttf SHA256 88f574f228dde6889146e5b0574ddfac5f84aaa2bd475578346214eb4a2defac and the upstream Fantasque repository identifies it as SIL OFL 1.1; inconsolata.ttf SHA256 ccd0bf1697854e35cae9fec9ba20be3b145a194657f9bfa8507c67dcde3a8962 and the upstream Google Fonts repository identifies it as SIL OFL 1.1. The TSX file is target metadata. The README also credits CC-BY-3.0 cover art and Tango icons, but those are not loaded by the game; omit package/icon.png and all package-only artwork from the installed deliverable unless its exact source revision and notice are separately documented. Preserve the target LICENSE and an asset notice containing the two OFL licenses and attribution/links.
Delivery brief: add a package module such as tay/packages/lispy-rogue.scm defining exactly lispy-rogue (the acceptance name), importing tay/packages/starred-i-m and using (package-source lockie-lispy-rogue-source), version 0.0.2, asdf-build-system/sbcl, and ASDF system lispy-rogue. Add private/public SBCL recipes for the three absent systems at the revisions above, then use inputs sbcl-alexandria, sbcl-cl-astar, sbcl-cl-fast-ecs, sbcl-cl-liballegro, sbcl-cl-liballegro-nuklear, sbcl-cl-ppcre, sbcl-cl-tiled, sbcl-livesupport, sbcl-deploy plus their Guix closure. cl-liballegro-nuklear's ASDF build runs make, pkg-config, swig -cffi, and a C compiler against Allegro's allegro-5, allegro_dialog-5, allegro_font-5, allegro_image-5, allegro_primitives-5, and allegro_ttf-5 pc files, so provide make, gcc-toolchain, pkg-config, and swig as native inputs and allegro as a native/runtime input as appropriate. Do not run upstream package/build.lisp: it calls ql:update-all-dists and is network-dependent. Invoke the pinned system through Guix's offline ASDF configuration and its declared deploy-op (or an equivalent post-create-asdf-configuration build phase), install the generated executable as $out/bin/lispy-rogue, ensure the generated liballegro_nuklear.so and Allegro foreign-library search paths are available at runtime, and copy Resources to $out/Resources. This layout is required because the boot hook computes Resources relative to the parent of deploy:runtime-directory and main chdirs there before loading dungeon.ogg, the two fonts, and urizen-tileset.tsx; the wrapper must work from any current directory, use the real executable argv[0], set LD_LIBRARY_PATH/CFFI search paths for generated and Guix Allegro libraries, and never write to the immutable output. Limit the package to x86_64-linux because the inspected Guix Allegro/SBCL bindings are available there.
Acceptance proof after implementation: run the exact gates guix lint -L . lispy-rogue and guix build -L . lispy-rogue; assert the output executable, all four runtime assets, LICENSE, and asset notices exist. Then in a fresh temporary HOME/XDG tree start the installed executable under an isolated Xvfb display such as :99 with -nolisten tcp and software rendering, wait for the window titled Lispy Rogue using xwininfo/xdotool, send the window-close/WM_DELETE_WINDOW event (Escape only cancels help and is not an exit), and require clean exit status 0. Assert the pre/post output digest is unchanged and no files are created outside the temporary HOME/XDG tree. This proves system load, native library resolution, resource loading, display startup, and the source close-event cleanup path without claiming that research itself passed the future package gates. On this host, guix download could not run because /var/guix/daemon-socket/socket is absent and sbcl, swig, gcc, and Xvfb are not installed, so no package/build proof is claimed here; those are environment limitations, not source blockers.
Imported from GitHub comment. Originally posted by htayj on 2026-08-29T10:49:36Z.
Delivered signed/authenticated
66dec362f5, pushed to Forgejo. Lispy Rogue0.0.2 output72znkzks8a1jy34zxqx08rdkvhkx1fl0: deterministic compiled FASL native launcher with explicit store ASDF registry. Exact source-font RGB match proves startup/help/dungeon/wait/inventory transitions, real audio stream and clean WM close. No save/combat completeness claim. Final source build, bit-identical --check, package lint and real native/integrated consumers passed. Offline sameUID/read-only store/unchanged NAR. Genuine screenshots .goocastle/evidence/, full scoped receipts ACCOUNTING.md, readable categorized README.md.