[Guix packaging] DoctorWkt/Apout #40
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#40
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?
Candidate
bd9af21bd8bb2fa956dcda5db0b0aeec2cffc8f7(default-branch snapshot checked 2026-08-14)Scope and blockers
Build only the host user-mode apout executable, not a guest system image.
Acceptance checks
guix lint -L. <package-name>andguix build -L. <package-name>pass once a package definition exists.Imported from GitHub issue/PR. Originally posted by htayj on 2026-08-14T13:16:34Z.
Goocastle recorded disposition: implementation-ready.
Created implementation ticket: #604.
Canonical upstream is https://github.com/DoctorWkt/Apout at the fixed master commit bd9af21bd8bb2fa956dcda5db0b0aeec2cffc8f7 (the local source snapshot larsbrinkhoff-apout-source records Guix version 0-bd9af21, codeload hash 1w7xckknr3acdsf2d7vg4vib93m7kh65lr212gqwhr0db9nxn551; upstream identifies this tree as Apout 2.4.0). The pinned tree contains the complete host C emulator and Makefile target apout, has no configure step, generated assets, vendored dependency graph, or build-time downloads, and links only -lm against the normal target C/POSIX runtime, so it is source-buildable with gnu-build-system plus the standard target GCC/make/libc toolchain and no nonstandard inputs or guest OS image. Use a new module tay/packages/apout.scm importing (tay packages larsbrinkhoff-a-f), guix build-system gnu, guix gexp, guix build utils, and guix packages; define package apout from that exact source, delete configure, replace build with an explicit make apout phase using CC=$(cc-for-target), and disable the nonexistent upstream check target. Do not use upstream install, which hard-codes /usr/local: install apout to $out/bin, apout.1 to $out/share/man/man1, and README/CHANGES/LIMITATIONS/TODO/LICENSE/COPYRIGHT under $out/share/doc/apout-0-bd9af21. Apply one small Makefile patch changing the default preprocessor flag -DEMUv1 to -DEMUV1: the README, defines.h, aout.c, ke11a.c, and v1trap.c all use EMUV1, so the upstream spelling otherwise silently omits first/second-edition support. Pass deterministic APOUT_OPTIONS=-DEMU211 -DEMUV1 -DNATIVES -DAPOUT_DONT_ASSUME_ROOT in the make flags; the last supported upstream option makes invocation fail rather than defaulting absolute guest paths to the host /. No wrapper or guest filesystem belongs in the output. At runtime users must set APOUT_ROOT to a user-owned guest root; preserve optional APOUT_UNIX_VERSION for ambiguous 0407 a.out files. NATIVES and the trap code deliberately execute native programs and directly call host filesystem/process/socket APIs, so document that APOUT_ROOT is not a security sandbox and do not claim network isolation from the package itself. The upstream LICENSE is GPL version 3 only; COPYRIGHT records Warren Toomey and the Eric A. Edwards-derived PDP-11 simulator code, and bsd_signal.c preserves the Berkeley notice. Use Guix license:gpl3 and install both LICENSE and COPYRIGHT; no other bundled executable or asset needs a separate license review. Local inspection shows no apout executable package: larsbrinkhoff-apout-source is preservation-only, and the issue inventory found no same-origin equivalent in GNU Guix, Nonguix, Guix Science, Guix HPC, Guix Past, Guix 'R Us, or RDE. Add tests/apout-smoke.sh as the meaningful proof: require a supplied, provenance- and redistribution-cleared historical PDP-11 a.out fixture (prefer a fixed V7 cal/echo fixture with an expected transcript; do not fetch or package an unlicensed TUHS binary or a guest image), obtain the apout output path with guix build -L. apout or accept it as the sole argument, and fail if the fixture is absent. Run the probe from a fresh temporary HOME, XDG_CONFIG_HOME, XDG_DATA_HOME, XDG_CACHE_HOME, current directory, and APOUT_ROOT, under unshare --user --map-root-user --net or the Guix no-network build sandbox with failure if an isolated namespace cannot be established. Set APOUT_UNIX_VERSION=V7 when applicable, invoke $out/bin/apout against the fixture with its fixed argument and assert exit status plus the exact expected historical-program output, verify unset APOUT_ROOT is rejected with the supported diagnostic, grep installed LICENSE/COPYRIGHT notices, and compare a pre/post manifest of the package output to prove the run wrote only into temporary state. After implementation, the precise acceptance commands are guix lint -L. apout and guix build -L. apout; this research disposition does not claim either package proof.
Imported from GitHub comment. Originally posted by htayj on 2026-08-25T12:14:06Z.