[Guix packaging] brouhaha/tapeutils #53

Closed
opened 2026-08-14 13:16:45 +00:00 by htayj · 2 comments
htayj commented 2026-08-14 13:16:45 +00:00 (Migrated from github.com)

Candidate

  • Upstream canonical URL: https://github.com/brouhaha/tapeutils
  • Source pinned commit/release when known: 84a3a78d2c028d7a4e2e68b89be0411cebd94563 (default-branch snapshot checked 2026-08-14)
  • Target concrete installed deliverable: tapeutils magnetic-tape image CLI suite
  • Primary category: storage-media-tool
  • Tags: tape
  • Primary language normalized: C
  • Build system: gnu-build-system with GNU-make portability patch
  • SPDX expression: GPL-2.0-only
  • License status: confirmed-free
  • License evidence: The upstream LICENSE/COPYING was previously inspected at the pinned snapshot and identifies GPL-2.0-only.
  • Difficulty: moderate — The Makefile uses BSD make syntax and needs a bounded GNU make port or compatible build arrangement.
  • 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 documented tape image utilities only.

Acceptance checks

  • guix lint -L. <package-name> and guix build -L. <package-name> pass once a package definition exists.
  • Create, dump, and read a local tape-image fixture without hardware.

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

## Candidate - Upstream canonical URL: https://github.com/brouhaha/tapeutils - Source pinned commit/release when known: `84a3a78d2c028d7a4e2e68b89be0411cebd94563` (default-branch snapshot checked 2026-08-14) - Target concrete installed deliverable: tapeutils magnetic-tape image CLI suite - Primary category: storage-media-tool - Tags: tape - Primary language normalized: C - Build system: gnu-build-system with GNU-make portability patch - SPDX expression: GPL-2.0-only - License status: confirmed-free - License evidence: The upstream LICENSE/COPYING was previously inspected at the pinned snapshot and identifies GPL-2.0-only. - Difficulty: moderate — The Makefile uses BSD make syntax and needs a bounded GNU make port or compatible build arrangement. - 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 documented tape image utilities only. ## Acceptance checks - `guix lint -L. <package-name>` and `guix build -L. <package-name>` pass once a package definition exists. - Create, dump, and read a local tape-image fixture without hardware. --- Imported from [GitHub issue/PR](https://github.com/htayj/guix-channel/issues/53). Originally posted by [htayj](https://github.com/htayj) on 2026-08-14T13:16:45Z.
htayj commented 2026-08-25 15:46:20 +00:00 (Migrated from github.com)

Goocastle recorded disposition: implementation-ready.

Created implementation ticket: #614.

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.


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

<!-- goocastle-disposition:sequential-reviewer:53:1:implementation-ready --> Goocastle recorded disposition: implementation-ready. Created implementation ticket: #614. 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. --- Imported from [GitHub comment](https://github.com/htayj/guix-channel/issues/53#issuecomment-5412975365). Originally posted by [htayj](https://github.com/htayj) on 2026-08-25T15:46:20Z.
Owner

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.

Published signed Guix-authenticated commit c2e982a0303a49b2444ed22e9c1bd4edc7b92037. 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.
tay closed this issue 2026-09-30 19:33:54 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
2 participants
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#53
No description provided.