[Guix packaging] charlesrosenbauer/Clojure-Roguelike #101
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#101
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
16102d6123a19dbac03f457a13e8b9f1e181f577onmaster(default branch snapshot reviewed 2026-08-14).project.clj; uberjar profile)LICENSEcontains the Eclipse Public License v1.0 andproject.cljdeclares it.Scope and blockers
Package the pinned upstream source as the stated deliverable, retaining upstream notices and making runtime services, credentials, downloaded assets, and optional integrations explicit. Pin the obsolete Clojure 1.8 dependency and confirm the minimal project has a reproducible terminal launch path.
Acceptance checks
guix lint -L. clojure-roguelikepasses with no new errors.guix build -L. clojure-roguelikesucceeds from the pinned source with tests enabled where practical.Imported from GitHub issue/PR. Originally posted by htayj on 2026-08-14T13:17:22Z.
Goocastle recorded disposition: implementation-ready.
Created implementation ticket: #636.
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.Imported from GitHub comment. Originally posted by htayj on 2026-08-28T11:22:31Z.