[Guix packaging] aap/blincolnlights #41

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

Candidate

  • Upstream canonical URL: https://github.com/aap/blincolnlights
  • Source pinned commit/release when known: 932d2cedfaec3368d6e1890b15645decc4815429 (default-branch snapshot checked 2026-08-14)
  • Target concrete installed deliverable: SDL virtual panels and host emulators
  • Primary category: emulator
  • Tags: historical-computing
  • Primary language normalized: C
  • Build system: gnu-build-system with custom make phase
  • SPDX expression: MIT
  • License status: confirmed-free
  • License evidence: The upstream LICENSE was previously inspected at the pinned snapshot and identifies MIT.
  • Difficulty: moderate — The initial package must separate host SDL emulators from optional GPIO/PiDP hardware paths.
  • 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 virtual panel and emulator programs; exclude GPIO and physical-panel drivers.

Acceptance checks

  • guix lint -L. <package-name> and guix build -L. <package-name> pass once a package definition exists.
  • Run one headless/virtual-panel startup path under a local display.

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

## Candidate - Upstream canonical URL: https://github.com/aap/blincolnlights - Source pinned commit/release when known: `932d2cedfaec3368d6e1890b15645decc4815429` (default-branch snapshot checked 2026-08-14) - Target concrete installed deliverable: SDL virtual panels and host emulators - Primary category: emulator - Tags: historical-computing - Primary language normalized: C - Build system: gnu-build-system with custom make phase - SPDX expression: MIT - License status: confirmed-free - License evidence: The upstream LICENSE was previously inspected at the pinned snapshot and identifies MIT. - Difficulty: moderate — The initial package must separate host SDL emulators from optional GPIO/PiDP hardware paths. - 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 virtual panel and emulator programs; exclude GPIO and physical-panel drivers. ## Acceptance checks - `guix lint -L. <package-name>` and `guix build -L. <package-name>` pass once a package definition exists. - Run one headless/virtual-panel startup path under a local display. --- Imported from [GitHub issue/PR](https://github.com/htayj/guix-channel/issues/41). Originally posted by [htayj](https://github.com/htayj) on 2026-08-14T13:16:35Z.
htayj commented 2026-08-25 12:32:23 +00:00 (Migrated from github.com)

Goocastle recorded disposition: implementation-ready.

Created implementation ticket: #605.

Canonical upstream is https://github.com/aap/blincolnlights at fixed revision 932d2cedfaec3368d6e1890b15645decc4815429 (commit date 2026-08-14; use Guix version 0-932d2ce, git-fetch with recursive? #f; the locally audited non-recursive checkout hash is 1dq8h2y8hc7avszsb36b5war8cahkiyyig3z1fx7f1fhxb6246s9). Upstream README at github.com/aap/blincolnlights@932d2cedfa/README.md documents three SDL virtual panels (Blincolnlights 18, PDP-1, Whirlwind), host emulators for Whirlwind, TX-0, PDP-1, and PDP-5, and mmap panel files; the root Makefile at github.com/aap/blincolnlights@932d2cedfa/Makefile also confirms that the default build mixes hardware drivers with host targets, so do not invoke root make. The root LICENSE at github.com/aap/blincolnlights@932d2cedfa/LICENSE is MIT, matching Guix license:expat; the selected host-side files do not require the Lua gitlink or Raspberry Pi code, so the source is legally redistributable and statically source-buildable with GNU C, libc, pthread, and math plus SDL2 for PDP-1 audio and SDL2 plus SDL2_image for the three virtual panels. No installable equivalent exists in this channel: tay/packages/larsbrinkhoff-a-f.scm:25 contains only the older source-only preservation package at 660f37803bd3c7ff8c3e24154c7d9cc7f29c2d34, generated by the copy-only helper in tay/packages/source-snapshot.scm; it is not the pinned revision and does not build or install emulators. Add a new module tay/packages/blincolnlights.scm with module (tay packages blincolnlights), package blincolnlights, gnu-build-system, native input pkg-config, and SDL2/SDL2_image inputs; use an explicit custom build phase or direct compiler invocations because the upstream Makefiles hard-code cc and library flags. Build and install these exact host artifacts: vpanel_b18/panel_b18 as blincolnlights-panel-b18, vpanel_pdp1/panel_pdp1 as blincolnlights-panel-pdp1, vpanel_whirlwind/panel_whirlwind as blincolnlights-panel-whirlwind, pdp1/pdp1 and pdp1_b18 as blincolnlights-pdp1 and blincolnlights-pdp1-b18, pdp5/pdp5 as blincolnlights-pdp5, tx0/tx0_pdp1 and tx0_b18 as blincolnlights-tx0-pdp1 and blincolnlights-tx0-b18, whirlwind/whirlwind and whirlwind_b18 as blincolnlights-whirlwind and blincolnlights-whirlwind-b18, and tools/mkptyfl plus tools/mkptyfio as support utilities. Exclude panel_b18, panel_pidp1, panel_pidp10, panel_pidp1_user, panel_pidp1_kernel, pinctrl, gpio.c, vpanel_pdp6, pdp6, pdp_periph, tapevis, and netmem_cache; those are hardware, Raspberry Pi, unvendored-Lua, peripheral, or out-of-scope paths. Install the PDP-1 maindec and tapes under share/blincolnlights/pdp1 and add the package-owned alias tapes/dpys5.rim -> tapes/ddt.rim: pinned pdp1/main.c:322-325 opens the absent relative default tapes/dpys5.rim even though ddt.rim is present. Each host-emulator launcher must create or use ${XDG_STATE_HOME:-$HOME/.local/state}/blincolnlights/, symlink the read-only packaged data there, cd to that writable directory before exec so coremem and punch.out never target the Guix store, and preserve all user arguments; virtual-panel launchers may exec directly because their PNG assets are compiled into the binaries. The shared panel paths are hard-coded as /tmp/b18_panel, /tmp/pdp1_panel, and /tmp/whirlwind_panel in common/panel code, and the emulators expose fixed TCP services documented by the README (PDP-1 1040-1043 and 3400-3401; PDP-5 1550), so document single-user/port-collision behavior and do not claim network isolation. Acceptance must be exact and bounded: after the definition exists, run guix lint -L. blincolnlights and guix build -L. blincolnlights; then create a fresh HOME and XDG_STATE_HOME, remove only the test-owned /tmp/pdp1_panel with a trap, run xvfb-run -a with SDL_VIDEODRIVER=x11, start blincolnlights-panel-pdp1, wait until /tmp/pdp1_panel exists and is nonempty, start blincolnlights-pdp5, require both processes to remain alive for at least two seconds, verify the PDP-5 state directory receives writable runtime state after clean termination, and assert neither log reports cannot find operator panel before cleaning up both processes and the shared file. This is a delivery plan, not a claim that Guix lint/build or the smoke has already passed.


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

<!-- goocastle-disposition:sequential-reviewer:41:1:implementation-ready --> Goocastle recorded disposition: implementation-ready. Created implementation ticket: #605. Canonical upstream is https://github.com/aap/blincolnlights at fixed revision 932d2cedfaec3368d6e1890b15645decc4815429 (commit date 2026-08-14; use Guix version 0-932d2ce, git-fetch with recursive? #f; the locally audited non-recursive checkout hash is 1dq8h2y8hc7avszsb36b5war8cahkiyyig3z1fx7f1fhxb6246s9). Upstream README at https://github.com/aap/blincolnlights/blob/932d2cedfaec3368d6e1890b15645decc4815429/README.md documents three SDL virtual panels (Blincolnlights 18, PDP-1, Whirlwind), host emulators for Whirlwind, TX-0, PDP-1, and PDP-5, and mmap panel files; the root Makefile at https://github.com/aap/blincolnlights/blob/932d2cedfaec3368d6e1890b15645decc4815429/Makefile also confirms that the default build mixes hardware drivers with host targets, so do not invoke root make. The root LICENSE at https://github.com/aap/blincolnlights/blob/932d2cedfaec3368d6e1890b15645decc4815429/LICENSE is MIT, matching Guix license:expat; the selected host-side files do not require the Lua gitlink or Raspberry Pi code, so the source is legally redistributable and statically source-buildable with GNU C, libc, pthread, and math plus SDL2 for PDP-1 audio and SDL2 plus SDL2_image for the three virtual panels. No installable equivalent exists in this channel: tay/packages/larsbrinkhoff-a-f.scm:25 contains only the older source-only preservation package at 660f37803bd3c7ff8c3e24154c7d9cc7f29c2d34, generated by the copy-only helper in tay/packages/source-snapshot.scm; it is not the pinned revision and does not build or install emulators. Add a new module tay/packages/blincolnlights.scm with module (tay packages blincolnlights), package blincolnlights, gnu-build-system, native input pkg-config, and SDL2/SDL2_image inputs; use an explicit custom build phase or direct compiler invocations because the upstream Makefiles hard-code cc and library flags. Build and install these exact host artifacts: vpanel_b18/panel_b18 as blincolnlights-panel-b18, vpanel_pdp1/panel_pdp1 as blincolnlights-panel-pdp1, vpanel_whirlwind/panel_whirlwind as blincolnlights-panel-whirlwind, pdp1/pdp1 and pdp1_b18 as blincolnlights-pdp1 and blincolnlights-pdp1-b18, pdp5/pdp5 as blincolnlights-pdp5, tx0/tx0_pdp1 and tx0_b18 as blincolnlights-tx0-pdp1 and blincolnlights-tx0-b18, whirlwind/whirlwind and whirlwind_b18 as blincolnlights-whirlwind and blincolnlights-whirlwind-b18, and tools/mkptyfl plus tools/mkptyfio as support utilities. Exclude panel_b18, panel_pidp1, panel_pidp10, panel_pidp1_user, panel_pidp1_kernel, pinctrl, gpio.c, vpanel_pdp6, pdp6, pdp_periph, tapevis, and netmem_cache; those are hardware, Raspberry Pi, unvendored-Lua, peripheral, or out-of-scope paths. Install the PDP-1 maindec and tapes under share/blincolnlights/pdp1 and add the package-owned alias tapes/dpys5.rim -> tapes/ddt.rim: pinned pdp1/main.c:322-325 opens the absent relative default tapes/dpys5.rim even though ddt.rim is present. Each host-emulator launcher must create or use ${XDG_STATE_HOME:-$HOME/.local/state}/blincolnlights/<program>, symlink the read-only packaged data there, cd to that writable directory before exec so coremem and punch.out never target the Guix store, and preserve all user arguments; virtual-panel launchers may exec directly because their PNG assets are compiled into the binaries. The shared panel paths are hard-coded as /tmp/b18_panel, /tmp/pdp1_panel, and /tmp/whirlwind_panel in common/panel code, and the emulators expose fixed TCP services documented by the README (PDP-1 1040-1043 and 3400-3401; PDP-5 1550), so document single-user/port-collision behavior and do not claim network isolation. Acceptance must be exact and bounded: after the definition exists, run guix lint -L. blincolnlights and guix build -L. blincolnlights; then create a fresh HOME and XDG_STATE_HOME, remove only the test-owned /tmp/pdp1_panel with a trap, run xvfb-run -a with SDL_VIDEODRIVER=x11, start blincolnlights-panel-pdp1, wait until /tmp/pdp1_panel exists and is nonempty, start blincolnlights-pdp5, require both processes to remain alive for at least two seconds, verify the PDP-5 state directory receives writable runtime state after clean termination, and assert neither log reports cannot find operator panel before cleaning up both processes and the shared file. This is a delivery plan, not a claim that Guix lint/build or the smoke has already passed. --- Imported from [GitHub comment](https://github.com/htayj/guix-channel/issues/41#issuecomment-5410416803). Originally posted by [htayj](https://github.com/htayj) on 2026-08-25T12:32:23Z.
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#41
No description provided.