[Guix packaging] aap/pdp6 #52

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

Candidate

  • Upstream canonical URL: https://github.com/aap/pdp6
  • Source pinned commit/release when known: 2645ed907d0267710866fd8228863ce8867f4dc6 (default-branch snapshot checked 2026-08-14)
  • Target concrete installed deliverable: PDP-6 host C emulator
  • 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 — SDL dependencies must be packaged while FPGA/front-panel/cross-hardware paths stay excluded.
  • 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 host PDP-6 emulator only.

Acceptance checks

  • guix lint -L. <package-name> and guix build -L. <package-name> pass once a package definition exists.
  • Launch the host emulator under a local display with no FPGA or network access.

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

## Candidate - Upstream canonical URL: https://github.com/aap/pdp6 - Source pinned commit/release when known: `2645ed907d0267710866fd8228863ce8867f4dc6` (default-branch snapshot checked 2026-08-14) - Target concrete installed deliverable: PDP-6 host C emulator - 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 — SDL dependencies must be packaged while FPGA/front-panel/cross-hardware paths stay excluded. - 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 host PDP-6 emulator only. ## Acceptance checks - `guix lint -L. <package-name>` and `guix build -L. <package-name>` pass once a package definition exists. - Launch the host emulator under a local display with no FPGA or network access. --- Imported from [GitHub issue/PR](https://github.com/htayj/guix-channel/issues/52). Originally posted by [htayj](https://github.com/htayj) on 2026-08-14T13:16:44Z.
htayj commented 2026-08-25 15:27:09 +00:00 (Migrated from github.com)

Goocastle recorded disposition: implementation-ready.

Created implementation ticket: #613.

Canonical upstream is https://github.com/aap/pdp6, fixed as version 0-2645ed9 at commit 2645ed907d0267710866fd8228863ce8867f4dc6 (the pinned master snapshot, commit date 2026-03-19); use the existing Guix codeload source origin and hash recorded by larsbrinkhoff-pdp6-source in tay/packages/larsbrinkhoff-n-s.scm: https://codeload.github.com/aap/pdp6/tar.gz/2645ed907d0267710866fd8228863ce8867f4dc6, base32 0n9mg2qz85vcmpn5az9jw5i8xa6rc5h35pmhch8jbxx3rz9gvm9i. LICENSE at that exact revision grants MIT permission to use, modify, and redistribute the source and associated documentation. The exact revision has no .gitmodules file and no gitlink entries, so the only independently fetched upstream origin is aap/pdp6 itself; there is no separately fetched submodule whose license must be supplied. The external Guix build inputs are sdl2 (Modified BSD), sdl2-image (Zlib), and native pkg-config (GPL-2-or-later); pthread and libm come from the normal GNU build environment. The source-buildable host target is emu/pdp6: its pinned emu/Makefile has a concrete custom make recipe equivalent to make -C emu pdp6 and requires gcc, sdl2-config, pkg-config SDL2_image, pthread, and libm. Use gnu-build-system with the configure phase deleted, build only that target, and install the resulting C SDL2 host emulator. Do not select newemu: its pinned Makefile names newemu/ttytelnet.c, which is absent at the same revision; do not build emu/pdp6_s, emu/pdp6_n, fe6, panel, or other serial, network, FPGA, and cross-hardware paths. The local channel already has larsbrinkhoff-pdp6-source at this exact revision, but guix search and the local package inventory contain no equivalent installable package for this upstream origin. Implement module (tay packages pdp6) with public package name pdp6, inheriting that source snapshot, inputs sdl2, sdl2-image, and bash-minimal, native input pkg-config, and the implicit GCC/make toolchain. Install the binary under a private libexec runtime root and provide a bin/pdp6 launcher that changes directory to that root before exec. Ship a controlled init.ini containing only the local defaultconfig device and bus/memory setup from emu/emu.c (APR, TTY, paper-tape reader/punch, DC/DECtape, fast/core memory and connect lines), with no netmem or netcons commands and no mount directives; do not ship the stock init.ini because it attempts localhost:10007 and references absent dump/tape paths. The launcher must therefore start the graphical SDL virtual console from any caller directory without writing to the store, while excluding hardware serial, standalone-panel, FPGA, and network setup. Acceptance is: guix lint -L. pdp6 and guix build -L. pdp6 both succeed; then run the installed launcher in an isolated Guix container with no -N network permission, no device bindings, a fresh HOME/XDG tree, Xvfb :99 -screen 0 1399x740x24 -nolisten tcp, DISPLAY=:99, SDL_VIDEODRIVER=x11, SDL_AUDIODRIVER=dummy, SDL_JOYSTICK_DISABLED=1, and strace -f -e trace=network. Poll xwininfo -root -tree until it finds the window title PDP-6 console, terminate the emulator, and require the trace to contain no AF_INET or AF_INET6 calls; this proves the packaged host UI starts on a local display under network isolation without the excluded FPGA or network paths. This is a delivery brief and source audit, not a claim that the package has already passed lint, build, or runtime proof.


Imported from GitHub comment. Originally posted by htayj on 2026-08-25T15:27:09Z.

<!-- goocastle-disposition:sequential-reviewer:52:1:implementation-ready --> Goocastle recorded disposition: implementation-ready. Created implementation ticket: #613. Canonical upstream is https://github.com/aap/pdp6, fixed as version 0-2645ed9 at commit 2645ed907d0267710866fd8228863ce8867f4dc6 (the pinned master snapshot, commit date 2026-03-19); use the existing Guix codeload source origin and hash recorded by larsbrinkhoff-pdp6-source in tay/packages/larsbrinkhoff-n-s.scm: https://codeload.github.com/aap/pdp6/tar.gz/2645ed907d0267710866fd8228863ce8867f4dc6, base32 0n9mg2qz85vcmpn5az9jw5i8xa6rc5h35pmhch8jbxx3rz9gvm9i. LICENSE at that exact revision grants MIT permission to use, modify, and redistribute the source and associated documentation. The exact revision has no .gitmodules file and no gitlink entries, so the only independently fetched upstream origin is aap/pdp6 itself; there is no separately fetched submodule whose license must be supplied. The external Guix build inputs are sdl2 (Modified BSD), sdl2-image (Zlib), and native pkg-config (GPL-2-or-later); pthread and libm come from the normal GNU build environment. The source-buildable host target is emu/pdp6: its pinned emu/Makefile has a concrete custom make recipe equivalent to make -C emu pdp6 and requires gcc, sdl2-config, pkg-config SDL2_image, pthread, and libm. Use gnu-build-system with the configure phase deleted, build only that target, and install the resulting C SDL2 host emulator. Do not select newemu: its pinned Makefile names newemu/ttytelnet.c, which is absent at the same revision; do not build emu/pdp6_s, emu/pdp6_n, fe6, panel, or other serial, network, FPGA, and cross-hardware paths. The local channel already has larsbrinkhoff-pdp6-source at this exact revision, but guix search and the local package inventory contain no equivalent installable package for this upstream origin. Implement module (tay packages pdp6) with public package name pdp6, inheriting that source snapshot, inputs sdl2, sdl2-image, and bash-minimal, native input pkg-config, and the implicit GCC/make toolchain. Install the binary under a private libexec runtime root and provide a bin/pdp6 launcher that changes directory to that root before exec. Ship a controlled init.ini containing only the local defaultconfig device and bus/memory setup from emu/emu.c (APR, TTY, paper-tape reader/punch, DC/DECtape, fast/core memory and connect lines), with no netmem or netcons commands and no mount directives; do not ship the stock init.ini because it attempts localhost:10007 and references absent dump/tape paths. The launcher must therefore start the graphical SDL virtual console from any caller directory without writing to the store, while excluding hardware serial, standalone-panel, FPGA, and network setup. Acceptance is: guix lint -L. pdp6 and guix build -L. pdp6 both succeed; then run the installed launcher in an isolated Guix container with no -N network permission, no device bindings, a fresh HOME/XDG tree, Xvfb :99 -screen 0 1399x740x24 -nolisten tcp, DISPLAY=:99, SDL_VIDEODRIVER=x11, SDL_AUDIODRIVER=dummy, SDL_JOYSTICK_DISABLED=1, and strace -f -e trace=network. Poll xwininfo -root -tree until it finds the window title PDP-6 console, terminate the emulator, and require the trace to contain no AF_INET or AF_INET6 calls; this proves the packaged host UI starts on a local display under network isolation without the excluded FPGA or network paths. This is a delivery brief and source audit, not a claim that the package has already passed lint, build, or runtime proof. --- Imported from [GitHub comment](https://github.com/htayj/guix-channel/issues/52#issuecomment-5412732245). Originally posted by [htayj](https://github.com/htayj) on 2026-08-25T15:27:09Z.
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#52
No description provided.