Implement researched Guix package outcome for #61: [Guix packaging] PDP-10/xpl-pdp-10 #618

Closed
opened 2026-08-25 17:17:32 +00:00 by htayj · 1 comment
htayj commented 2026-08-25 17:17:32 +00:00 (Migrated from github.com)

Context

This delivery ticket was created from research issue #61 ([Guix packaging] PDP-10/xpl-pdp-10).

The host-validated research finding follows:

Canonical target: https://github.com/PDP-10/xpl-pdp-10 at fixed commit 0e57cbd9e2e2997134332f6784dccc262a069d99 (version 0-0e57cbd, 2021-01-29). At that exact revision, README says the original compiler is PDP-10-only and that port/nexcom.xpl is the host port built with the XPL-to-C translator at https://sourceforge.net/projects/xpl-compiler/; port/makefile gives the source-build path: translate nexcom.xpl to nexcom.c with xpl, then link nexcom.c with libxpl.a and xpl.h. The parent origin's exact-revision license evidence is github.com/PDP-10/xpl-pdp-10@0e57cbd9e2/COPYING: Free Public License 1.0.0 expressly permits use, copying, modification, and distribution for any purpose with or without fee. The bootstrap origin is the canonical SourceForge Git repository https://git.code.sf.net/p/xpl-compiler/code at fixed commit 643907731538b4e2256f11c48e3166bf5bb2609c (release 1.4, 2026-07-06); its exact-revision tree has its own COPYING with the same explicit grant, and its top-level/compiler makefiles build xpl and libxpl.a from tracked C sources before generating the XPL tools. There are no .gitmodules files or gitlink submodules in either fixed tree, so these are the complete independently fetched source origins and each has exact-revision redistribution evidence. The license is legally source-redistributable but non-standard; record LicenseRef-Free-Public-License-1.0.0 with a Guix custom license/non-copyleft value pointing to each exact COPYING file and retain both notices; the mapping needs normal Guix review, not a missing-permission blocker. No equivalent installed compiler package exists in the local channel or official Guix tree: tay/packages/pdp10-t-z.scm only provides pdp10-xpl-pdp-10-source, an unbuilt copy snapshot. Implement tay/packages/pdp10-xpl.scm, module (tay packages pdp10-xpl), with public package pdp10-xpl-pdp-10 and a private/native-input bootstrap package for the SourceForge translator. Use gnu-build-system; the target has the bootstrap translator as a native input only, implicit GCC/binutils/make for compilation, and no runtime XPL-to-C input because the generated nexcom executable is linked with libxpl.a. In the target build substitute the /Users/linda/xpl assignment in port/makefile with the bootstrap input's bin/include/lib paths, translate port/nexcom.xpl, link it with the bootstrap libxpl.a, install the executable under libexec, install port/xpl.lib and port/hello.xpl under share/pdp10-xpl, and retain the parent COPYING. The installed bin/xpl must be a Guix-path wrapper that executes the libexec compiler with -l $out/share/pdp10-xpl/xpl.lib before user arguments so the default library works from any working directory; later user -l arguments must remain able to override it. The isolated smoke proof is: in a fresh temporary directory with network disabled and no source checkout, invoke the installed bin/xpl on the installed hello.xpl with an absolute -o output path, assert exit status zero and a non-empty hello.rel; this proves the packaged host compiler and packaged local xpl.lib path without the bootstrap translator at runtime. Required acceptance facts after implementation are guix lint -L. pdp10-xpl-pdp-10 and guix build -L. pdp10-xpl-pdp-10, followed by that out-of-tree hello compilation; this research did not claim those package checks passed because no package definition was added.

Acceptance criteria

  • Implement the viable package change identified in the host-validated research finding.
  • Preserve Guix source provenance, licensing, and deterministic build requirements recorded in the finding.
  • Add and pass a package-specific safe smoke proof using isolated HOME/XDG state before closure.

Imported from GitHub issue/PR. Originally posted by htayj on 2026-08-25T17:17:32Z.

<!-- goocastle-implementation-ticket:sequential-reviewer:61:1:implementation-ready --> ## Context This delivery ticket was created from research issue #61 ([Guix packaging] PDP-10/xpl-pdp-10). The host-validated research finding follows: Canonical target: https://github.com/PDP-10/xpl-pdp-10 at fixed commit 0e57cbd9e2e2997134332f6784dccc262a069d99 (version 0-0e57cbd, 2021-01-29). At that exact revision, README says the original compiler is PDP-10-only and that port/nexcom.xpl is the host port built with the XPL-to-C translator at https://sourceforge.net/projects/xpl-compiler/; port/makefile gives the source-build path: translate nexcom.xpl to nexcom.c with xpl, then link nexcom.c with libxpl.a and xpl.h. The parent origin's exact-revision license evidence is https://github.com/PDP-10/xpl-pdp-10/blob/0e57cbd9e2e2997134332f6784dccc262a069d99/COPYING: Free Public License 1.0.0 expressly permits use, copying, modification, and distribution for any purpose with or without fee. The bootstrap origin is the canonical SourceForge Git repository https://git.code.sf.net/p/xpl-compiler/code at fixed commit 643907731538b4e2256f11c48e3166bf5bb2609c (release 1.4, 2026-07-06); its exact-revision tree has its own COPYING with the same explicit grant, and its top-level/compiler makefiles build xpl and libxpl.a from tracked C sources before generating the XPL tools. There are no .gitmodules files or gitlink submodules in either fixed tree, so these are the complete independently fetched source origins and each has exact-revision redistribution evidence. The license is legally source-redistributable but non-standard; record LicenseRef-Free-Public-License-1.0.0 with a Guix custom license/non-copyleft value pointing to each exact COPYING file and retain both notices; the mapping needs normal Guix review, not a missing-permission blocker. No equivalent installed compiler package exists in the local channel or official Guix tree: tay/packages/pdp10-t-z.scm only provides pdp10-xpl-pdp-10-source, an unbuilt copy snapshot. Implement tay/packages/pdp10-xpl.scm, module (tay packages pdp10-xpl), with public package pdp10-xpl-pdp-10 and a private/native-input bootstrap package for the SourceForge translator. Use gnu-build-system; the target has the bootstrap translator as a native input only, implicit GCC/binutils/make for compilation, and no runtime XPL-to-C input because the generated nexcom executable is linked with libxpl.a. In the target build substitute the /Users/linda/xpl assignment in port/makefile with the bootstrap input's bin/include/lib paths, translate port/nexcom.xpl, link it with the bootstrap libxpl.a, install the executable under libexec, install port/xpl.lib and port/hello.xpl under share/pdp10-xpl, and retain the parent COPYING. The installed bin/xpl must be a Guix-path wrapper that executes the libexec compiler with -l $out/share/pdp10-xpl/xpl.lib before user arguments so the default library works from any working directory; later user -l arguments must remain able to override it. The isolated smoke proof is: in a fresh temporary directory with network disabled and no source checkout, invoke the installed bin/xpl on the installed hello.xpl with an absolute -o output path, assert exit status zero and a non-empty hello.rel; this proves the packaged host compiler and packaged local xpl.lib path without the bootstrap translator at runtime. Required acceptance facts after implementation are guix lint -L. pdp10-xpl-pdp-10 and guix build -L. pdp10-xpl-pdp-10, followed by that out-of-tree hello compilation; this research did not claim those package checks passed because no package definition was added. ## Acceptance criteria - Implement the viable package change identified in the host-validated research finding. - Preserve Guix source provenance, licensing, and deterministic build requirements recorded in the finding. - Add and pass a package-specific safe smoke proof using isolated HOME/XDG state before closure. --- Imported from [GitHub issue/PR](https://github.com/htayj/guix-channel/issues/618). Originally posted by [htayj](https://github.com/htayj) on 2026-08-25T17:17:32Z.
htayj commented 2026-08-26 08:31:19 +00:00 (Migrated from github.com)

Implemented and fully proved in signed commit 5db7f2b: isolated bootstrap build, reproducibility check, lint, and a networkless installed-wrapper smoke compile all pass.


Imported from GitHub comment. Originally posted by htayj on 2026-08-26T08:31:19Z.

Implemented and fully proved in signed commit 5db7f2b: isolated bootstrap build, reproducibility check, lint, and a networkless installed-wrapper smoke compile all pass. --- Imported from [GitHub comment](https://github.com/htayj/guix-channel/issues/618#issuecomment-5422688437). Originally posted by [htayj](https://github.com/htayj) on 2026-08-26T08:31:19Z.
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#618
No description provided.