[Guix packaging] larsbrinkhoff/uc-explorer #55

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

Candidate

  • Upstream canonical URL: https://github.com/larsbrinkhoff/uc-explorer
  • Source pinned commit/release when known: fc4f9f3324d3497f553512b661ad37cbdde89ccb (default-branch snapshot checked 2026-08-14)
  • Target concrete installed deliverable: uc-explorer Symbolics microcode CLI
  • Primary category: developer-tool
  • Tags: historical-computing, lisp-machine
  • Primary language normalized: Rust
  • Build system: cargo-build-system
  • SPDX expression: GPL-3.0-only
  • License status: confirmed-free
  • License evidence: The upstream LICENSE/COPYING was previously inspected at the pinned snapshot and identifies GPL-3.0-only.
  • Difficulty: moderate — The old Clap dependency must be verified against a vendored lockfile and current Rust packaging support.
  • 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

Install the uc-explorer command-line tool.

Acceptance checks

  • guix lint -L. <package-name> and guix build -L. <package-name> pass once a package definition exists.
  • Run uc-explorer on a local microcode fixture with networking disabled.

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

## Candidate - Upstream canonical URL: https://github.com/larsbrinkhoff/uc-explorer - Source pinned commit/release when known: `fc4f9f3324d3497f553512b661ad37cbdde89ccb` (default-branch snapshot checked 2026-08-14) - Target concrete installed deliverable: uc-explorer Symbolics microcode CLI - Primary category: developer-tool - Tags: historical-computing, lisp-machine - Primary language normalized: Rust - Build system: cargo-build-system - SPDX expression: GPL-3.0-only - License status: confirmed-free - License evidence: The upstream LICENSE/COPYING was previously inspected at the pinned snapshot and identifies GPL-3.0-only. - Difficulty: moderate — The old Clap dependency must be verified against a vendored lockfile and current Rust packaging support. - 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 Install the uc-explorer command-line tool. ## Acceptance checks - `guix lint -L. <package-name>` and `guix build -L. <package-name>` pass once a package definition exists. - Run uc-explorer on a local microcode fixture with networking disabled. --- Imported from [GitHub issue/PR](https://github.com/htayj/guix-channel/issues/55). Originally posted by [htayj](https://github.com/htayj) on 2026-08-14T13:16:47Z.
htayj commented 2026-08-25 16:23:35 +00:00 (Migrated from github.com)

Goocastle recorded disposition: implementation-ready.

Created implementation ticket: #615.

Package name: uc-explorer. Canonical upstream: https://github.com/larsbrinkhoff/uc-explorer. Use the exact upstream Cargo package version 0.1.0 at commit fc4f9f3324d3497f553512b661ad37cbdde89ccb (2018-06-27; no release tags). The local channel already has the exact codeload source origin as larsbrinkhoff-uc-explorer-source, Guix source version 0-fc4f9f, URL https://codeload.github.com/larsbrinkhoff/uc-explorer/tar.gz/fc4f9f3324d3497f553512b661ad37cbdde89ccb, and Nix base32 hash 1f167p0200283aflm831gvbyzahiwdbsss470cq263dgrinbjqj6. The pinned Git tree contains Cargo.toml, Cargo.lock, README.md, COPYING, src/main.rs, src/ucode.rs, and documentation only; .gitmodules is absent and git ls-tree has no gitlink entries, so there are no separately fetched submodules or unreviewed submodule licenses. Legal evidence for the parent origin at the exact commit is Cargo.toml license GPL-3.0-or-later, README.md and both Rust source notices granting GNU GPL version 3 or any later version, and the full GPLv3 text in COPYING at github.com/larsbrinkhoff/uc-explorer@fc4f9f3324/COPYING; declare the executable package license as license:gpl3+. The existing source snapshot metadata currently says license:gpl3, so the future executable definition must not inherit that stale package-license value; this metadata discrepancy is not a legal blocker because the authoritative pinned upstream notices grant GPL-3.0-or-later. No equivalent installed deliverable exists in this local channel: exhaustive channel search finds only larsbrinkhoff-uc-explorer-source, a preservation copy-build package, and no package defining or installing the uc-explorer CLI; ks10-udis is a different KS10 disassembler. Put the deliverable in a dedicated module tay/packages/uc-explorer.scm, importing the existing source package and guix build-system cargo, packages, gexp, download, and licenses. Source-build assessment: the project has one direct dependency, clap ^2.31, and the exact Cargo.lock resolves to clap 2.32.0 plus the following 15 immutable crates; all exact crates.io version records report yanked=false, their downloaded Cargo.toml license fields are explicit, and the listed Nix base32 values are the Guix inputs: ansi_term@0.11.0 MIT, metadata https://crates.io/api/v1/crates/ansi_term/0.11.0, hash 16wpvrghvd0353584i1idnsgm0r3vchg8fyrm0x8ayv1rgvbljgf; atty@0.2.10 MIT, metadata https://crates.io/api/v1/crates/atty/0.2.10, hash 1lfvh0nm0a5byaw9xwj2s8ci9y8sbj4821hg4n573h149jma3i1g; bitflags@1.0.3 MIT OR Apache-2.0, metadata https://crates.io/api/v1/crates/bitflags/1.0.3, hash 12b75san2w67hhpfbnrdkzchp7b7ypdzrvlp27r6gialyjw4pifh; clap@2.32.0 MIT, metadata https://crates.io/api/v1/crates/clap/2.32.0, hash 0gidrrbcfwdbb3s5hy3jlzpwc68q0744liaz1pbvjqva9f7xhmxr; libc@0.2.42 MIT OR Apache-2.0, metadata https://crates.io/api/v1/crates/libc/0.2.42, hash 1wdmgr8r82ywz548lcs2q5csjipqiry1i9q7vz5gql5rya6hi1dn; redox_syscall@0.1.40 MIT, metadata https://crates.io/api/v1/crates/redox_syscall/0.1.40, hash 1c8j05dgfyhj5ms5is5yy9sb857bmmrqjmqywjjfjhyg7qfyj562; redox_termios@0.1.1 MIT, metadata https://crates.io/api/v1/crates/redox_termios/0.1.1, hash 0xhgvdh62mymgdl3jqrngl8hr4i8xwpnbsxnldq0l47993z1r2by; strsim@0.7.0 MIT, metadata https://crates.io/api/v1/crates/strsim/0.7.0, hash 0l7mkwvdk4vgnml67b85mczk466074aj8yf25gjrjslj4l0khkxv; termion@1.5.1 MIT, metadata https://crates.io/api/v1/crates/termion/1.5.1, hash 15i0x5vcwb8bkd72g1vlafz3qza1g165rpw7pj9gsfdlmbgkp6k8; textwrap@0.10.0 MIT, metadata https://crates.io/api/v1/crates/textwrap/0.10.0, hash 1xnkk81wksg87mc7mj71m44g7h14jnd6ya34vaa1zrwkkj38cxih; unicode-width@0.1.5 MIT OR Apache-2.0, metadata https://crates.io/api/v1/crates/unicode-width/0.1.5, hash 09k5lipygardwy0660jhls08fsgknrazzivmn804gps53hiqc8w8; vec_map@0.8.1 MIT OR Apache-2.0, metadata https://crates.io/api/v1/crates/vec_map/0.8.1, hash 06n8hw4hlbcz328a3gbpvmy0ma46vg1lc0r5wf55900szf3qdiq5; winapi@0.3.5 MIT OR Apache-2.0, metadata https://crates.io/api/v1/crates/winapi/0.3.5, hash 1z803zsdx7w8zw1qwxm9j2qc697z8bjh3w8g1n2psjzjqpfgjgkp; winapi-i686-pc-windows-gnu@0.4.0 MIT OR Apache-2.0, metadata https://crates.io/api/v1/crates/winapi-i686-pc-windows-gnu/0.4.0, hash 1dmpa6mvcvzz16zg6d5vrfy4bxgg541wxrcip7cnshi06v38ffxc; winapi-x86_64-pc-windows-gnu@0.4.0 MIT OR Apache-2.0, metadata https://crates.io/api/v1/crates/winapi-x86_64-pc-windows-gnu/0.4.0, hash 0gqq64czqb64kskjryj8isp62m2sgvx25yyj3kpc2myh85w24bki. The exact archive SHA-256 values are also the Cargo.lock checksums: ansi_term ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b; atty 2fc4a1aa4c24c0718a250f0681885c1af91419d242f29eb8f2ab28502d80dbd1; bitflags d0c54bb8f454c567f21197eefcdbf5679d0bd99f2ddbe52e84c77061952e6789; clap b957d88f4b6a63b9d70d5f454ac8011819c6efa7727858f458ab71c756ce2d3e; libc b685088df2b950fccadf07a7187c8ef846a959c142338a48f9dc0b94517eb5f1; redox_syscall c214e91d3ecf43e9a4e41e578973adeb14b474f2bee858742d127af75a0112b1; redox_termios 7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76; strsim bb4f380125926a99e52bc279241539c018323fab05ad6368b56f93d9369ff550; termion 689a3bdfaab439fd92bc87df5c4c78417d3cbe537487274e9b0b2dce76e92096; textwrap 307686869c93e71f94da64286f9a9524c0f308a9e1c87a583de8e9c9039ad3f6; unicode-width 882386231c45df4700b275c7ff55b6f3698780a650026380e72dabe76fa46526; vec_map 05c78687fb1a80548ae3250346c3db86a80a7cdd77bda190189f2d0a0987c81a; winapi 773ef9dcc5f24b7d850d0ff101e542ff24c3b090a9768e03ff889fdef41f00fd; winapi-i686-pc-windows-gnu ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6; winapi-x86_64-pc-windows-gnu 712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f. Current Guix 1.5 cargo-build-system vendors rust-* inputs, invokes Cargo offline, and deletes Cargo.lock during configure; follow the channel's existing dipc/terminaldrome pattern by saving the upstream lock in unpack, restoring it after configure and before install, and removing checksum lines when using vendored sources, or otherwise ensure Cargo resolves only the listed exact archives. Use #:install-source? #f and retain offline cargo test/build; no native inputs or runtime data files are required. Cargo's default binary target is uc-explorer, and the program only opens the positional local file with std::fs::File, so no wrapper, network service, environment contract, or runtime input is needed; install out/bin/uc-explorer. Specific isolated smoke proof after implementation: create a temporary fixture containing the valid minimal byte stream section header/magic 01 05, version section 02 01 00, empty comment 03 00, empty A/B/C sections 04 00 00 05 00 00 06 00 00, empty type map 07 00 00 00 00 00 00, and EOF 08; run the installed binary against that fixture in guix shell --container with no --network option and a shared temporary directory, with a clean environment, and assert exit status 0 plus output lines valid ucode, version=0x0001, a-mem length=0, b-mem length=0, c-mem length=0, type-map length=0, and pico-store length=0. Final acceptance is exact: guix lint -L. uc-explorer and guix build -L. uc-explorer must pass, followed by that no-network fixture smoke; this research records the actionable path and does not claim those package proofs have already run.


Imported from GitHub comment. Originally posted by htayj on 2026-08-25T16:23:35Z.

<!-- goocastle-disposition:sequential-reviewer:55:1:implementation-ready --> Goocastle recorded disposition: implementation-ready. Created implementation ticket: #615. Package name: uc-explorer. Canonical upstream: https://github.com/larsbrinkhoff/uc-explorer. Use the exact upstream Cargo package version 0.1.0 at commit fc4f9f3324d3497f553512b661ad37cbdde89ccb (2018-06-27; no release tags). The local channel already has the exact codeload source origin as larsbrinkhoff-uc-explorer-source, Guix source version 0-fc4f9f, URL https://codeload.github.com/larsbrinkhoff/uc-explorer/tar.gz/fc4f9f3324d3497f553512b661ad37cbdde89ccb, and Nix base32 hash 1f167p0200283aflm831gvbyzahiwdbsss470cq263dgrinbjqj6. The pinned Git tree contains Cargo.toml, Cargo.lock, README.md, COPYING, src/main.rs, src/ucode.rs, and documentation only; .gitmodules is absent and git ls-tree has no gitlink entries, so there are no separately fetched submodules or unreviewed submodule licenses. Legal evidence for the parent origin at the exact commit is Cargo.toml license GPL-3.0-or-later, README.md and both Rust source notices granting GNU GPL version 3 or any later version, and the full GPLv3 text in COPYING at https://github.com/larsbrinkhoff/uc-explorer/blob/fc4f9f3324d3497f553512b661ad37cbdde89ccb/COPYING; declare the executable package license as license:gpl3+. The existing source snapshot metadata currently says license:gpl3, so the future executable definition must not inherit that stale package-license value; this metadata discrepancy is not a legal blocker because the authoritative pinned upstream notices grant GPL-3.0-or-later. No equivalent installed deliverable exists in this local channel: exhaustive channel search finds only larsbrinkhoff-uc-explorer-source, a preservation copy-build package, and no package defining or installing the uc-explorer CLI; ks10-udis is a different KS10 disassembler. Put the deliverable in a dedicated module tay/packages/uc-explorer.scm, importing the existing source package and guix build-system cargo, packages, gexp, download, and licenses. Source-build assessment: the project has one direct dependency, clap ^2.31, and the exact Cargo.lock resolves to clap 2.32.0 plus the following 15 immutable crates; all exact crates.io version records report yanked=false, their downloaded Cargo.toml license fields are explicit, and the listed Nix base32 values are the Guix inputs: ansi_term@0.11.0 MIT, metadata https://crates.io/api/v1/crates/ansi_term/0.11.0, hash 16wpvrghvd0353584i1idnsgm0r3vchg8fyrm0x8ayv1rgvbljgf; atty@0.2.10 MIT, metadata https://crates.io/api/v1/crates/atty/0.2.10, hash 1lfvh0nm0a5byaw9xwj2s8ci9y8sbj4821hg4n573h149jma3i1g; bitflags@1.0.3 MIT OR Apache-2.0, metadata https://crates.io/api/v1/crates/bitflags/1.0.3, hash 12b75san2w67hhpfbnrdkzchp7b7ypdzrvlp27r6gialyjw4pifh; clap@2.32.0 MIT, metadata https://crates.io/api/v1/crates/clap/2.32.0, hash 0gidrrbcfwdbb3s5hy3jlzpwc68q0744liaz1pbvjqva9f7xhmxr; libc@0.2.42 MIT OR Apache-2.0, metadata https://crates.io/api/v1/crates/libc/0.2.42, hash 1wdmgr8r82ywz548lcs2q5csjipqiry1i9q7vz5gql5rya6hi1dn; redox_syscall@0.1.40 MIT, metadata https://crates.io/api/v1/crates/redox_syscall/0.1.40, hash 1c8j05dgfyhj5ms5is5yy9sb857bmmrqjmqywjjfjhyg7qfyj562; redox_termios@0.1.1 MIT, metadata https://crates.io/api/v1/crates/redox_termios/0.1.1, hash 0xhgvdh62mymgdl3jqrngl8hr4i8xwpnbsxnldq0l47993z1r2by; strsim@0.7.0 MIT, metadata https://crates.io/api/v1/crates/strsim/0.7.0, hash 0l7mkwvdk4vgnml67b85mczk466074aj8yf25gjrjslj4l0khkxv; termion@1.5.1 MIT, metadata https://crates.io/api/v1/crates/termion/1.5.1, hash 15i0x5vcwb8bkd72g1vlafz3qza1g165rpw7pj9gsfdlmbgkp6k8; textwrap@0.10.0 MIT, metadata https://crates.io/api/v1/crates/textwrap/0.10.0, hash 1xnkk81wksg87mc7mj71m44g7h14jnd6ya34vaa1zrwkkj38cxih; unicode-width@0.1.5 MIT OR Apache-2.0, metadata https://crates.io/api/v1/crates/unicode-width/0.1.5, hash 09k5lipygardwy0660jhls08fsgknrazzivmn804gps53hiqc8w8; vec_map@0.8.1 MIT OR Apache-2.0, metadata https://crates.io/api/v1/crates/vec_map/0.8.1, hash 06n8hw4hlbcz328a3gbpvmy0ma46vg1lc0r5wf55900szf3qdiq5; winapi@0.3.5 MIT OR Apache-2.0, metadata https://crates.io/api/v1/crates/winapi/0.3.5, hash 1z803zsdx7w8zw1qwxm9j2qc697z8bjh3w8g1n2psjzjqpfgjgkp; winapi-i686-pc-windows-gnu@0.4.0 MIT OR Apache-2.0, metadata https://crates.io/api/v1/crates/winapi-i686-pc-windows-gnu/0.4.0, hash 1dmpa6mvcvzz16zg6d5vrfy4bxgg541wxrcip7cnshi06v38ffxc; winapi-x86_64-pc-windows-gnu@0.4.0 MIT OR Apache-2.0, metadata https://crates.io/api/v1/crates/winapi-x86_64-pc-windows-gnu/0.4.0, hash 0gqq64czqb64kskjryj8isp62m2sgvx25yyj3kpc2myh85w24bki. The exact archive SHA-256 values are also the Cargo.lock checksums: ansi_term ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b; atty 2fc4a1aa4c24c0718a250f0681885c1af91419d242f29eb8f2ab28502d80dbd1; bitflags d0c54bb8f454c567f21197eefcdbf5679d0bd99f2ddbe52e84c77061952e6789; clap b957d88f4b6a63b9d70d5f454ac8011819c6efa7727858f458ab71c756ce2d3e; libc b685088df2b950fccadf07a7187c8ef846a959c142338a48f9dc0b94517eb5f1; redox_syscall c214e91d3ecf43e9a4e41e578973adeb14b474f2bee858742d127af75a0112b1; redox_termios 7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76; strsim bb4f380125926a99e52bc279241539c018323fab05ad6368b56f93d9369ff550; termion 689a3bdfaab439fd92bc87df5c4c78417d3cbe537487274e9b0b2dce76e92096; textwrap 307686869c93e71f94da64286f9a9524c0f308a9e1c87a583de8e9c9039ad3f6; unicode-width 882386231c45df4700b275c7ff55b6f3698780a650026380e72dabe76fa46526; vec_map 05c78687fb1a80548ae3250346c3db86a80a7cdd77bda190189f2d0a0987c81a; winapi 773ef9dcc5f24b7d850d0ff101e542ff24c3b090a9768e03ff889fdef41f00fd; winapi-i686-pc-windows-gnu ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6; winapi-x86_64-pc-windows-gnu 712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f. Current Guix 1.5 cargo-build-system vendors rust-* inputs, invokes Cargo offline, and deletes Cargo.lock during configure; follow the channel's existing dipc/terminaldrome pattern by saving the upstream lock in unpack, restoring it after configure and before install, and removing checksum lines when using vendored sources, or otherwise ensure Cargo resolves only the listed exact archives. Use #:install-source? #f and retain offline cargo test/build; no native inputs or runtime data files are required. Cargo's default binary target is uc-explorer, and the program only opens the positional local file with std::fs::File, so no wrapper, network service, environment contract, or runtime input is needed; install out/bin/uc-explorer. Specific isolated smoke proof after implementation: create a temporary fixture containing the valid minimal byte stream section header/magic 01 05, version section 02 01 00, empty comment 03 00, empty A/B/C sections 04 00 00 05 00 00 06 00 00, empty type map 07 00 00 00 00 00 00, and EOF 08; run the installed binary against that fixture in guix shell --container with no --network option and a shared temporary directory, with a clean environment, and assert exit status 0 plus output lines valid ucode, version=0x0001, a-mem length=0, b-mem length=0, c-mem length=0, type-map length=0, and pico-store length=0. Final acceptance is exact: guix lint -L. uc-explorer and guix build -L. uc-explorer must pass, followed by that no-network fixture smoke; this research records the actionable path and does not claim those package proofs have already run. --- Imported from [GitHub comment](https://github.com/htayj/guix-channel/issues/55#issuecomment-5413428434). Originally posted by [htayj](https://github.com/htayj) on 2026-08-25T16:23:35Z.
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#55
No description provided.