Implement researched Guix package outcome for #41: [Guix packaging] aap/blincolnlights #605
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#605
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?
Context
This delivery ticket was created from research issue #41 ([Guix packaging] aap/blincolnlights).
The host-validated research finding follows:
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.mddocuments 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 atgithub.com/aap/blincolnlights@932d2cedfa/Makefilealso confirms that the default build mixes hardware drivers with host targets, so do not invoke root make. The root LICENSE atgithub.com/aap/blincolnlights@932d2cedfa/LICENSEis 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.Acceptance criteria
Imported from GitHub issue/PR. Originally posted by htayj on 2026-08-25T12:32:18Z.
Rebased the verified branch onto current master, restored the concurrent Apout Makefile target that the textual conflict resolution initially dropped, and reran the safe package proof. Merged and pushed as
2b3829e.Imported from GitHub comment. Originally posted by htayj on 2026-08-26T05:32:04Z.