[Guix packaging] charlesrosenbauer/Clojure-Roguelike #101

Open
opened 2026-08-14 13:17:22 +00:00 by htayj · 1 comment
htayj commented 2026-08-14 13:17:22 +00:00 (Migrated from github.com)

Candidate

  • Upstream canonical URL: https://github.com/charlesrosenbauer/Clojure-Roguelike
  • Source pinned commit/release when known: 16102d6123a19dbac03f457a13e8b9f1e181f577 on master (default branch snapshot reviewed 2026-08-14).
  • Target concrete installed deliverable: Clojure Roguelike terminal game uberjar
  • Primary category: game
  • Tags: roguelike
  • Primary language normalized: Clojure
  • Build system: Leiningen (project.clj; uberjar profile)
  • SPDX expression: EPL-1.0
  • License status: confirmed-free
  • License evidence: LICENSE contains the Eclipse Public License v1.0 and project.clj declares it.
  • Difficulty: moderate — Pin the obsolete Clojure 1.8 dependency and confirm the minimal project has a reproducible terminal launch path.
  • Workflow state: research
  • Existing Guix coverage: Checked 2026-08-14: GNU Guix, Nonguix, Guix Science, Guix HPC, Guix Past, Guix 'R Us, and RDE; no equivalent package with the same upstream origin was found.

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-roguelike passes with no new errors.
  • guix build -L. clojure-roguelike succeeds from the pinned source with tests enabled where practical.
  • App-specific offline smoke: Build the uberjar offline and run the game in a pseudo-terminal with local-only input and no network.

Imported from GitHub issue/PR. Originally posted by htayj on 2026-08-14T13:17:22Z.

## Candidate - Upstream canonical URL: https://github.com/charlesrosenbauer/Clojure-Roguelike - Source pinned commit/release when known: `16102d6123a19dbac03f457a13e8b9f1e181f577` on `master` (default branch snapshot reviewed 2026-08-14). - Target concrete installed deliverable: Clojure Roguelike terminal game uberjar - Primary category: game - Tags: roguelike - Primary language normalized: Clojure - Build system: Leiningen (`project.clj`; uberjar profile) - SPDX expression: EPL-1.0 - License status: confirmed-free - License evidence: `LICENSE` contains the Eclipse Public License v1.0 and `project.clj` declares it. - Difficulty: moderate — Pin the obsolete Clojure 1.8 dependency and confirm the minimal project has a reproducible terminal launch path. - Workflow state: research - Existing Guix coverage: Checked 2026-08-14: GNU Guix, Nonguix, Guix Science, Guix HPC, Guix Past, Guix 'R Us, and RDE; no equivalent package with the same upstream origin was found. ## 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-roguelike` passes with no new errors. - `guix build -L. clojure-roguelike` succeeds from the pinned source with tests enabled where practical. - App-specific offline smoke: Build the uberjar offline and run the game in a pseudo-terminal with local-only input and no network. --- Imported from [GitHub issue/PR](https://github.com/htayj/guix-channel/issues/101). Originally posted by [htayj](https://github.com/htayj) on 2026-08-14T13:17:22Z.
htayj commented 2026-08-28 11:22:31 +00:00 (Migrated from github.com)

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-dirs test, main class roguelike.core, and AOT of roguelike.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 Guix icedtea/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, named FIXME, 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-Class roguelike.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 only q\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 are guix lint -L. clojure-roguelike with no new errors and guix build -L. clojure-roguelike succeeding 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.

<!-- goocastle-disposition:sequential-reviewer:101:1:implementation-ready --> 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-dirs `test`, main class `roguelike.core`, and AOT of `roguelike.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 Guix `icedtea`/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, named `FIXME, 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-Class `roguelike.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 only `q\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 are `guix lint -L. clojure-roguelike` with no new errors and `guix build -L. clojure-roguelike` succeeding 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](https://github.com/htayj/guix-channel/issues/101#issuecomment-5451908265). Originally posted by [htayj](https://github.com/htayj) on 2026-08-28T11:22:31Z.
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#101
No description provided.