Implement researched Guix package outcome for #101: [Guix packaging] charlesrosenbauer/Clojure-Roguelike #636
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
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
tay/guix-channel#636
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?
Context
This delivery ticket was created from research issue #101 ([Guix packaging] charlesrosenbauer/Clojure-Roguelike).
The host-validated research finding follows:
Delivery brief for the exact pinned tree: package canonical upstream https://github.com/charlesrosenbauer/Clojure-Roguelike at revision 16102d6123a19dbac03f457a13e8b9f1e181f577 (2018-09-21), using the existing codeload origin and Guix base32 source hash 0qr8frwyig2qjmm0b3mzrzy9j8c782wkkxjc48pdfi3lyryj8l3l recorded by tay/packages/starred-a-c.scm. The tree contains project.clj, src/roguelike/core.clj, test/roguelike/core_test.clj, documentation, and LICENSE; git ls-tree shows no submodules, and there are no assets, services, credentials, network calls, or optional integrations. LICENSE is the Eclipse Public License v1.0 text and project.clj independently declares Eclipse Public License, so the application source and object code have a clear redistribution grant. The only declared application dependency is org.clojure/clojure 1.8.0. The local Guix channel has only the preservation package charlesrosenbauer-clojure-roguelike-source, and Guix search/local package inspection found no equivalent installable package from this origin. Source-build assessment: use a new tay/packages/clojure-roguelike.scm module with clojure-build-system, source-dirs
src, test-dirstest, main classroguelike.core, and AOT ofroguelike.core; pass a private exact Clojure 1.8 runtime built from the separate canonical origin https://github.com/clojure/clojure at dereferenced tag commit 4ff462372c29ff2bc22b4d39962ad526f7e2c73d. At that fixed Clojure revision, readme.txt and epl-v10.html provide EPL-1.0 evidence, readme.txt records the embedded ASM three-clause BSD notice and Guava Murmur3 Apache-2.0 notice, and the package must retain those notices alongside the application LICENSE/README/CHANGELOG. Clojure 1.8 is not exported by the current channel (current clojure is 1.12.4), so this private runtime is required to honor the pinned dependency; build it with Guix ant-build-system, an empty maven-classpath.properties, tests disabled for the runtime, and existing Guixicedtea/OpenJDK 8 because the fixed Clojure build.xml targets Java 1.6. The Clojure 1.8 POM lists jsr166y only as provided and test.generative/test.check only for tests; the application uses only Clojure core and clojure.string, so no Maven artifacts or network resolution are needed. The application package should disable Guix tests with a documented reason: test/roguelike/core_test.clj contains the sole test, namedFIXME, I fail, and asserts(= 0 1); do not report that upstream test as passing. After the normal Clojure compilation, create one deterministic uberjar at share/java/clojure-roguelike.jar by merging the AOT application classes/source with the exact built Clojure 1.8 runtime jar, replacing the runtime manifest with Main-Classroguelike.core, and preserving the Clojure runtime notices in installed documentation. Install a /bin/clojure-roguelike wrapper with a fixed Guix bash interpreter that execs the fixed Guix Java runtime with that jar and forwards argv; the pinned -main performs only one-shot terminal rendering and does not read stdin or write state, so no XDG/state wrapper or service is needed. Specific smoke proof: build the package with Guix's network-isolated builder from the pinned application and private Clojure source, with no Leiningen/Maven invocation; inspect the output for the single jar, Main-Class, launcher, application notices, and Clojure EPL/ASM/Apache notices; then run the launcher through a PTY (script -qefc) from a fresh temporary HOME/XDG tree and private temporary cwd, feed onlyq\n, and use a fail-closed private network namespace (or equivalent network-denied runner). Require exit status 0, no created files outside the temporary tree, no network access, and stdout exactly########\n#......#\n#......#\n.......#\n#......#\n#......#\n#......#\n########\n, which is the room emitted by the pinned -main. Final gates for implementation areguix lint -L. clojure-roguelikewith no new errors andguix build -L. clojure-roguelikesucceeding from the fixed sources; this research run makes no package-proof claim because the host lacks /var/guix/daemon-socket/socket.Acceptance criteria
Imported from GitHub issue/PR. Originally posted by htayj on 2026-08-28T11:22:26Z.
Goocastle blocked this ticket after the bounded repair budget was exhausted for the required command gate.
The failure receipt and task branch provenance remain preserved; inspect the branch and repair the package before retrying.
Bounded failure evidence:
Failed command: sh .goocastle/prove-guix-package.sh
Exit status: 1
Final failure lines:
[stderr] adding: clojure/instant$fail.class (stored 0%)
[stderr] error: in phase 'generate-jar-indices': uncaught exception:
[stderr] %exception #<&invoke-error program: "jar" arguments: ("-i" "/gnu/store/4d744zrzn2q0jjsbja9lad6xwcs53cgc-clojure-1.8-1.8.0-0.4ff4623/share/java/clojure-1.8.0.jar") exit-status: 1 term-signal: #f stop-signal: #f>
[stderr] phase
generate-jar-indices' failed after 0.0 seconds [stderr] command "jar" "-i" "/gnu/store/4d744zrzn2q0jjsbja9lad6xwcs53cgc-clojure-1.8-1.8.0-0.4ff4623/share/java/clojure-1.8.0.jar" failed with status 1 [stderr] builder for/gnu/store/f7x0nix8s55iyi257qb7jahprfa31rj9-clojure-1.8-1.8.0-0.4ff4623.drv' failed with exit code 1[stderr] build of /gnu/store/f7x0nix8s55iyi257qb7jahprfa31rj9-clojure-1.8-1.8.0-0.4ff4623.drv failed
[stderr] guix build: error: build of `/gnu/store/y9b2ixj6zc6afxfibpkyn0s38x0nli9a-clojure-roguelike-0.1.0-0.16102d6.drv' failed
[earlier or oversized output omitted]
Imported from GitHub comment. Originally posted by htayj on 2026-08-28T14:48:44Z.
Goocastle blocked this ticket after the bounded repair budget was exhausted for the required command gate.
The failure receipt and task branch provenance remain preserved; inspect the branch and repair the package before retrying.
Bounded failure evidence:
Failed command: sh .goocastle/prove-guix-package.sh
Exit status: 1
Final failure lines:
[stderr] guix build: warning: failed to load '(tay packages opencode-desktop)':
[stderr] error: in phase 'build': uncaught exception:
[stderr] %exception #<&invoke-error program: "ant" arguments: ("jar") exit-status: 143 term-signal: #f stop-signal: #f>
[stderr] phase
build' failed after 1.4 seconds [stderr] command "ant" "jar" failed with status 143 [stderr] builder for/gnu/store/bz0kam0li60r5v8fl37q76nz6za3428c-clojure-1.8-1.8.0-0.4ff4623.drv' failed with exit code 1[stderr] build of /gnu/store/bz0kam0li60r5v8fl37q76nz6za3428c-clojure-1.8-1.8.0-0.4ff4623.drv failed
[stderr] guix build: error: build of `/gnu/store/4llnn83xb14q6rl2pnf34ivxxpkwnpbf-clojure-roguelike-0.1.0-0.16102d6.drv' failed
[earlier or oversized output omitted]
Imported from GitHub comment. Originally posted by htayj on 2026-08-28T16:44:33Z.
Goocastle verified runtime evidence.
Runtime receipt
Guix package issue #636safe-package-proof["sh",".goocastle/prove-guix-package.sh"]runtime-screenshot["sh",".goocastle/capture-guix-package-screenshot.sh"].goocastle/evidence/issue-636.pngb41b1ce4a4f7af0620e3c8564d464721f35b1e5d499ab8cf6e5309d63c318c6b1d627b366f6478d52e917dd2ee3e64543db604dd1775575 bytes / pngImported from GitHub comment. Originally posted by htayj on 2026-08-28T17:18:59Z.
Completed by Goocastle
Imported from GitHub comment. Originally posted by htayj on 2026-08-28T17:19:03Z.
Evidence correction: the earlier artifact did not visibly demonstrate the packaged application.
The package has now been rebuilt and
tests/clojure-roguelike-smoke.shpassed using a fresh HOME/XDG tree and a networkless user namespace. The launcher was then invoked directly through a PTY withqinput; it exited successfully and rendered the map shown here: actual packaged Clojure Roguelike runtime screenshot.This is program output from
clojure-roguelike, rather than a build or smoke-test transcript.Imported from GitHub comment. Originally posted by htayj on 2026-08-29T01:02:53Z.
Resolved after replacing the insufficient evidence with an inspected screenshot of the actual packaged program running.
Imported from GitHub comment. Originally posted by htayj on 2026-08-29T01:02:54Z.