Browse Source

G-096 clean-checkout re-verification PASS; suite tools quieted (zig stderr-warning cosmetics)

Fresh clone (shallow path + core.longpaths - the deep-path first attempt
hit windows MAX_PATH on the modpod template trees, caveat recorded) ->
the clone's own punk-getzig fetched 0.16.0 (mirror chain, minisign,
versioned dir) -> cold-cache suite build PASS: 9.0.5 static/zip/pr/przip
shells with recipe-generated configure-products, zip shell smoked, all
tk/tklib/tcllib/tcllibc legs green.

Cold-log 'failed command:' blocks diagnosed as BENIGN zig 0.16 behaviour
(build_runner prints that block for any step with nonempty result_stderr
even on success) triggered by our own tools' informational stderr prints
- zipfs_mkzip/mkimg call echoes now go to stdout and wrapfiletofile's
octet count is removed; rebuild shows zero occurrences, PASS.

All G-096 acceptance items are now met - achieved flip pending user
confirmation.

Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
master
Julian Noble 1 week ago
parent
commit
cae1483b73
  1. 29
      goals/G-096-zig-buildsuite-piperepl.md
  2. 4
      src/buildsuites/suite_tcl90/tools/wrapfiletofile.zig
  3. 7
      src/buildsuites/suite_tcl90/tools/zipfs_mkimg.tcl
  4. 2
      src/buildsuites/suite_tcl90/tools/zipfs_mkzip.tcl

29
goals/G-096-zig-buildsuite-piperepl.md

@ -372,3 +372,32 @@ Remaining for acceptance:
minisig downloaded -> signature verified -> versioned extract -> minisig downloaded -> signature verified -> versioned extract ->
ZIG VERSION: 0.15.2. ZIG VERSION: 0.15.2.
- Remaining for this goal: the final clean-checkout re-verification only. - Remaining for this goal: the final clean-checkout re-verification only.
### 2026-07-20 increment: final clean-checkout re-verification PASS - all acceptance items met
- Flow: fresh git clone of the repo (at 9496a898) -> the CLONE'S OWN
bin/punk-getzig.cmd (empty bin/tools; real 0.16.0 fetch via the mirror chain,
minisign-verified, versioned dir) -> suite.tcl build with a cold zig cache ->
'suite_tcl90: PASS - built 9.0.5 (checkout 1a9c3b9d96, zig 0.16.0)' with
recipe-generated tclUuid.h + tclsh.exe.manifest (TCL_WIN_VERSION 9.0.2.905),
static + zip + pr + przip shells produced, zip shell smoked (9.0.5, tz set),
tk/tklib/tcllib/tcllibc legs all completed in the clone.
- CAVEAT recorded: the first attempt (clone under the deep agent-scratchpad path)
failed at checkout with windows MAX_PATH 'Filename too long' on the modpod
template trees - a clean checkout of this repo on windows needs a SHALLOW base
path and/or git core.longpaths=true (same MAX_PATH class as the known
project.new-outdir trap). Verified from C:/Users/<u>/AppData/Local/Temp/pkverify
with -c core.longpaths=true.
- Cold-build log oddity diagnosed as BENIGN and then removed at source: zig 0.16's
build_runner prints a 'failed command:' block for any step whose result_stderr is
nonempty EVEN ON SUCCESS (build_runner.zig prints error/warning messages when
result_stderr.len > 0 regardless of result). Our zipfs_mkzip/zipfs_mkimg call
echoes and wrapfiletofile's octet count went to stderr, so uncached (cold) runs
showed four alarming-but-successful 'failed command' blocks (warm runs fewer -
cached steps don't re-run). The informational prints now go to stdout (or are
removed); a rebuild shows zero 'failed command' occurrences with PASS.
- With this, every Acceptance item is met: clean-checkout + punk-getzig-pinned-zig
build (this increment), recovered+rebased patch set with the G-103 gate policy
and behaviour matrix (earlier increments), both-VCS tracking + samplesuite1/
vendorbuild reconciliation, bin/AGENTS.md naming policy + punk-getzig rename
(original increments). Ready for the achieved flip on user confirmation.

4
src/buildsuites/suite_tcl90/tools/wrapfiletofile.zig

@ -70,7 +70,9 @@ pub fn main(init: std.process.Init.Minimal) !void {
fatal("Unable to read '{s}': {s}", .{ input_file_path, @errorName(err) }); fatal("Unable to read '{s}': {s}", .{ input_file_path, @errorName(err) });
}; };
defer arena.free(input_data); defer arena.free(input_data);
std.debug.print("inputfile - Read {d} octets.\n", .{input_data.len}); //no informational print here: std.debug.print writes to stderr, and zig 0.16's
//build_runner reports any step with nonempty stderr under a misleading
//"failed command:" block even on success. Quiet on success, loud on error.
var output_file = std.Io.Dir.cwd().createFile(io, output_file_path, .{}) catch |err| { var output_file = std.Io.Dir.cwd().createFile(io, output_file_path, .{}) catch |err| {
fatal("Unable to open '{s}': {s}", .{ output_file_path, @errorName(err) }); fatal("Unable to open '{s}': {s}", .{ output_file_path, @errorName(err) });

7
src/buildsuites/suite_tcl90/tools/zipfs_mkimg.tcl

@ -5,7 +5,10 @@
set script_title "[file tail [info nameofexecutable]] [file tail [info script]]" set script_title "[file tail [info nameofexecutable]] [file tail [info script]]"
set usage "$script_title -outfile <target_zipfile_path> -indir <folder_to_zip> ?-strip <path_prefix_to_strip>? ?-password <plaintext>? ?-infile <explicit_prepend_file>?" set usage "$script_title -outfile <target_zipfile_path> -indir <folder_to_zip> ?-strip <path_prefix_to_strip>? ?-password <plaintext>? ?-infile <explicit_prepend_file>?"
set arglist $::argv set arglist $::argv
puts stderr "====> '$arglist'" #informational arglist echo goes to stdout if wanted - stderr output makes zig build
#report the (successful) step with a misleading "failed command:" block (0.16
#build_runner prints that whenever result_stderr is nonempty, success or not)
puts stdout "====> '$arglist'"
#error 42 #error 42
if {![llength $arglist]} { if {![llength $arglist]} {
puts stderr $usage puts stderr $usage
@ -44,7 +47,7 @@ set callargs [list [file normalize [dict get $opts -outfile]] [file normalize [d
if {[dict exists $opts -infile]} { if {[dict exists $opts -infile]} {
lappend callargs [file normalize [dict get $opts -infile]] lappend callargs [file normalize [dict get $opts -infile]]
} }
puts stderr "$script_title call 'tcl::zipfs::mkimg $callargs'" puts stdout "$script_title call 'tcl::zipfs::mkimg $callargs'" ;#stdout: stderr makes zig report the successful step as 'failed command'
if {[catch { if {[catch {
tcl::zipfs::mkimg {*}$callargs tcl::zipfs::mkimg {*}$callargs

2
src/buildsuites/suite_tcl90/tools/zipfs_mkzip.tcl

@ -54,7 +54,7 @@ if {[dict exists $opts -password]} {
} }
lappend callargs [dict get $opts -password] lappend callargs [dict get $opts -password]
} }
puts stderr "$script_title call 'tcl::zipfs::mkzip $callargs'" puts stdout "$script_title call 'tcl::zipfs::mkzip $callargs'" ;#stdout: stderr makes zig report the successful step as 'failed command'
if {[catch { if {[catch {
tcl::zipfs::mkzip {*}$callargs tcl::zipfs::mkzip {*}$callargs

Loading…
Cancel
Save