Implement researched Guix package outcome for #53: [Guix packaging] brouhaha/tapeutils #614
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
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
tay/guix-channel#614
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 #53 ([Guix packaging] brouhaha/tapeutils).
The host-validated research finding follows:
Implement package tapeutils from the canonical upstream repository https://github.com/brouhaha/tapeutils at fixed commit 84a3a78d2c028d7a4e2e68b89be0411cebd94563 (2025-01-22, upstream Makefile version 0.6), using Guix version 0.6-0.84a3a78 and the exact codeload source hash (base32) 0mkb6as44739dkdx71sv01hifh0zcrkzmmlhvgjbzqj82wihl0n2; this hash was independently reproduced from https://codeload.github.com/brouhaha/tapeutils/tar.gz/84a3a78d2c028d7a4e2e68b89be0411cebd94563. The fixed tree contains one source origin only, 14 files, no .gitmodules file, and no Git submodule entries, so there are no separately fetched origins or submodule licenses to resolve. License evidence at this exact revision is the repository COPYING file containing the GNU General Public License Version 2, plus the Makefile, tapeio.c, tapeio.h, tapecopy.c, tapedump.c, taperead.c, tapewrite.c, t10backup.c, and tapex.c notices explicitly granting GPL version 2 only and denying later-version redistribution; the remaining legacy read20.c and data headers are part of that same single-origin tree and have no contrary notice. Treat the source as GPL-2.0-only and install COPYING with the package. No equivalent executable package exists in the local channel: only the immutable larsbrinkhoff-tapeutils-source preservation snapshot is present, guix search tapeutils returns no package, and the recorded 2026-08-14 review found no same-origin package in GNU Guix, Nonguix, Guix Science, Guix HPC, Guix Past, Guix R Us, or RDE. Add a module tay/packages/tapeutils.scm defining tapeutils with gnu-build-system, preferably inheriting the existing fixed source snapshot; use no package-specific inputs beyond the implicit Guix gmake/gcc-toolchain, libc, and Linux header toolchain because all code is C, uses only POSIX/Linux headers and libc facilities including regex and sockets, and has no external library dependency or runtime data dependency. Apply one bounded downstream GNU-make portability patch replacing the BSD assignment UNAME != uname with GNU syntax UNAME := $(shell uname); delete the absent configure phase, disable the absent upstream tests/check target, build the Makefile all target, and manually install exactly tapecopy, tapedump, taperead, tapewrite, t10backup, read20, and tapex into $out/bin plus COPYING under share/doc/tapeutils. No wrapper is required: the programs select hardware only for names beginning /dev/, remote rmt only for names containing a colon, and local tape images for other paths; tapeio also maps - to stdin/stdout and honors TAPE only when no explicit name is supplied, so the package must preserve those argv/environment semantics and must not add network or hardware setup. The installed smoke proof must create a fresh temporary directory and HOME/XDG_CONFIG_HOME/XDG_CACHE_HOME/XDG_STATE_HOME, unset TAPE, run offline with a local non-/dev path, and assert all seven binaries are executable and the installed COPYING contains GNU GENERAL PUBLIC LICENSE. Create a deterministic payload exactly 1024 bytes, run tapewrite $tmp/tape.img $tmp/payload, assert the resulting Wilson image is exactly 1040 bytes (little-endian 1024-byte record plus data plus trailing length and two four-byte tape marks), run tapedump $tmp/tape.img and require file 0 record 0: length 1024 and end of tape, then run taperead $tmp/tape.img in a separate empty directory and require file0000 to byte-compare equal to the payload. Snapshot the installed output/store file metadata before and after and require no change; do not invoke /dev paths, colon paths, remote services, or hardware. Final acceptance is guix lint -L. tapeutils and guix build -L. tapeutils passing once the definition exists, followed by this isolated fixture smoke; no package build or package proof is claimed by this research disposition.
Acceptance criteria
Imported from GitHub issue/PR. Originally posted by htayj on 2026-08-25T15:46:15Z.
Completed by Goocastle
Imported from GitHub comment. Originally posted by htayj on 2026-08-25T22:49:35Z.
Published signed Guix-authenticated commit
c2e982a030. Main independently passed local source build, --check reproducibility, offline lint and isolated runtime/integrated target. Two files/five tape records written, listed, copied and extracted byte-identically; corrupted frame rejected; restored NAR/read-only invariant independently passed. Actual tapedump screenshot614. Existing legacy compiler warnings remain disclosed in README. No physical keyboard/tape hardware, host display or deployed profile changed. PDP worker violated no-execution/no-Goocastle-renderer instructions on deleted temporary artifacts; none accepted as proof. All final gates and committed screenshots independently produced by Main without Goocastle execution.