[Guix packaging] dseagrav/ld #111

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

Candidate

  • Upstream canonical URL: https://github.com/dseagrav/ld
  • Source pinned commit/release when known: 9f2c4bcd4e010f0226ff601496acff2f5521233a on master (default branch snapshot reviewed 2026-08-14).
  • Target concrete installed deliverable: LambdaDelta LMI Lambda Lisp Machine emulator (ld)
  • Primary category: emulator
  • Tags: lisp-machine, historical-computing, tape
  • Primary language normalized: C
  • Build system: Autotools (configure.ac, Makefile.am; SDL1/SDL2 and tuntap/BPF I/O)
  • SPDX expression: GPL-2.0-or-later
  • License status: confirmed-free
  • License evidence: COPYING contains GPLv2 and README explicitly says GPLv2 or later.
  • Difficulty: hard — Reproduce the Autotools build and isolate optional network/tuntap and historical ROM/microcode inputs; do not fetch or redistribute proprietary images.
  • 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. Reproduce the Autotools build and isolate optional network/tuntap and historical ROM/microcode inputs; do not fetch or redistribute proprietary images.

Acceptance checks

  • guix lint -L. ld passes with no new errors.
  • guix build -L. ld succeeds from the pinned source with tests enabled where practical.
  • App-specific offline smoke: Build offline and run ld --help/a blank configuration, then exercise a local ROM fixture with network disabled.

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

## Candidate - Upstream canonical URL: https://github.com/dseagrav/ld - Source pinned commit/release when known: `9f2c4bcd4e010f0226ff601496acff2f5521233a` on `master` (default branch snapshot reviewed 2026-08-14). - Target concrete installed deliverable: LambdaDelta LMI Lambda Lisp Machine emulator (`ld`) - Primary category: emulator - Tags: lisp-machine, historical-computing, tape - Primary language normalized: C - Build system: Autotools (`configure.ac`, `Makefile.am`; SDL1/SDL2 and tuntap/BPF I/O) - SPDX expression: GPL-2.0-or-later - License status: confirmed-free - License evidence: `COPYING` contains GPLv2 and README explicitly says GPLv2 or later. - Difficulty: hard — Reproduce the Autotools build and isolate optional network/tuntap and historical ROM/microcode inputs; do not fetch or redistribute proprietary images. - 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. Reproduce the Autotools build and isolate optional network/tuntap and historical ROM/microcode inputs; do not fetch or redistribute proprietary images. ## Acceptance checks - `guix lint -L. ld` passes with no new errors. - `guix build -L. ld` succeeds from the pinned source with tests enabled where practical. - App-specific offline smoke: Build offline and run `ld --help`/a blank configuration, then exercise a local ROM fixture with network disabled. --- Imported from [GitHub issue/PR](https://github.com/htayj/guix-channel/issues/111). Originally posted by [htayj](https://github.com/htayj) on 2026-08-14T13:17:30Z.
Owner

Goocastle recorded disposition: blocked.

Blocked only by the absence of a safe, meaningful runtime-proof contract. Canonical upstream https://github.com/dseagrav/ld at fixed revision 9f2c4bcd4e010f0226ff601496acff2f5521233a (version 0.98.3 metadata in configure.ac) was fetched and inspected at that commit. Its COPYING is the GPLv2 text and README.md line 41 grants 'GNU GPL Version 2 or later'; there are no Git submodules, so no independent submodule-origin license question applies. The channel already ships the identical revision as immutable source snapshot dseagrav-ld-source (guix/tay/packages/starred-d-h.scm:205), but no installed emulator package or closed terminal delivery exists, so this is not a duplicate delivery. Build feasibility is supported by configure.ac/Makefile.am: GNU Autotools generate the build; one of SDL1 or SDL2 is mandatory, FUSE is optional, YAML is conditionally used when its headers are detected, network/tuntap/BPF support is compile-time optional, and Makefile.am has no test harness. A Guix package should use the GNU build system from the configured source with autoreconf, explicitly select SDL2 via --with-SDL2=yes --without-SDL1, disable optional FUSE unless deliberately packaged, retain available legal notices, and avoid any bundled proprietary ROM, microcode, disk, or tape inputs. A wrapper should provide an isolated writable working directory and require user-supplied ROM images, while leaving network integration explicitly disabled by default. Runtime evidence is the exact blocker: at this revision main first prints LambdaDelta, then normal execution unconditionally initializes the SDL video subsystem before reading ROMs (src/kernel.c lines 4675-4688); the supported -? path exits after printing usage before initialization (lines 4622-4634), and issue policy forbids help/metadata-only proofs. There is no application-provided headless/noninteractive smoke mode or deterministic ROM-independent observable state. It cannot be made implementation-ready without either upstream adding a safe headless smoke/self-test mode or the delivery issue explicitly authorizing a packaged noninteractive wrapper/self-test that observes emulator startup state while stubbing or containing all display/backend inputs; a user-supplied proprietary ROM cannot be used in unattended Guix CI. Unblocking requires an accepted deterministic invocation and single-line success marker for the installed executable, after which this otherwise viable package can proceed.

<!-- goocastle-disposition:sequential-reviewer:111:1:blocked --> Goocastle recorded disposition: blocked. Blocked only by the absence of a safe, meaningful runtime-proof contract. Canonical upstream https://github.com/dseagrav/ld at fixed revision 9f2c4bcd4e010f0226ff601496acff2f5521233a (version 0.98.3 metadata in configure.ac) was fetched and inspected at that commit. Its COPYING is the GPLv2 text and README.md line 41 grants 'GNU GPL Version 2 or later'; there are no Git submodules, so no independent submodule-origin license question applies. The channel already ships the identical revision as immutable source snapshot dseagrav-ld-source (guix/tay/packages/starred-d-h.scm:205), but no installed emulator package or closed terminal delivery exists, so this is not a duplicate delivery. Build feasibility is supported by configure.ac/Makefile.am: GNU Autotools generate the build; one of SDL1 or SDL2 is mandatory, FUSE is optional, YAML is conditionally used when its headers are detected, network/tuntap/BPF support is compile-time optional, and Makefile.am has no test harness. A Guix package should use the GNU build system from the configured source with autoreconf, explicitly select SDL2 via --with-SDL2=yes --without-SDL1, disable optional FUSE unless deliberately packaged, retain available legal notices, and avoid any bundled proprietary ROM, microcode, disk, or tape inputs. A wrapper should provide an isolated writable working directory and require user-supplied ROM images, while leaving network integration explicitly disabled by default. Runtime evidence is the exact blocker: at this revision main first prints LambdaDelta, then normal execution unconditionally initializes the SDL video subsystem before reading ROMs (src/kernel.c lines 4675-4688); the supported -? path exits after printing usage before initialization (lines 4622-4634), and issue policy forbids help/metadata-only proofs. There is no application-provided headless/noninteractive smoke mode or deterministic ROM-independent observable state. It cannot be made implementation-ready without either upstream adding a safe headless smoke/self-test mode or the delivery issue explicitly authorizing a packaged noninteractive wrapper/self-test that observes emulator startup state while stubbing or containing all display/backend inputs; a user-supplied proprietary ROM cannot be used in unattended Guix CI. Unblocking requires an accepted deterministic invocation and single-line success marker for the installed executable, after which this otherwise viable package can proceed.
Sign in to join this conversation.
No milestone
No project
No assignees
2 participants
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#111
No description provided.