diff --git a/goals/G-098-suite-tk-tcllib-critcl.md b/goals/G-098-suite-tk-tcllib-critcl.md index a5bd89e9..d428c8de 100644 --- a/goals/G-098-suite-tk-tcllib-critcl.md +++ b/goals/G-098-suite-tk-tcllib-critcl.md @@ -69,10 +69,24 @@ user direction 2026-07-20: 3840x2160 depth 32; label pack + update + destroy clean (real window station exercised, not just a load). -Remaining for acceptance: +### 2026-07-20 increment 2: tklib installed via its own installer; tooltip smoke + +- Installer behaviour checked (per the user's caveat) before use: NOT a straight copy + - module exclusion list (unless +excluded), app-script generation, optional + nroff/html doc install, and generation of the aggregating top-level pkgIndex.tcl + (gen_main_index sources each module's index - required for package resolution since + module indexes sit two levels below auto_path). critcl DSL procs are stubbed to + no-ops (pure-tcl confirmed). Batch surface: -no-gui -no-wait with + -pkgs/-apps/-html/-nroff/-examples toggles and *-path overrides; default paths + derive from the RUNNING tclsh. +- Driver step: run installer.tcl with the SUITE-BUILT shell, batch, packages only + (-no-gui -no-wait -pkgs -no-apps -no-html -no-nroff -no-examples) - defaults land + it at out/lib/tklib0.9 with the generated main pkgIndex. Idempotent (skipped when + a tklib* install exists). +- SMOKE PASS: in the suite shell, package require Tk + package require tooltip -> + tooltip 2.0.4 (a Tk-dependent tklib package resolving through the aggregate index). -- tklib install via its installer.tcl (behaviour check first) + representative - package require evidence. +Remaining for acceptance: - tcllib install via installer.tcl/sak.tcl (behaviour check) + critcl-built tcllibc (critcl git clone/pin driving zig cc) + hashing comparison evidence. - suite.tcl test gate: parse all.tcl totals vs a recorded expected-failure baseline; diff --git a/src/buildsuites/suite_tcl90/suite.tcl b/src/buildsuites/suite_tcl90/suite.tcl index 8e657824..e68dd5fd 100644 --- a/src/buildsuites/suite_tcl90/suite.tcl +++ b/src/buildsuites/suite_tcl90/suite.tcl @@ -290,4 +290,21 @@ foreach {label path script} [list \ log "$label shell: $out" if {![string match "$patchlevel*" $out]} {fail "$label shell patchlevel mismatch: got '$out' want '$patchlevel'"} } +#-- tklib install (G-098) -------------------------------------------------- +#tklib is pure-tcl but its installer is NOT a straight copy: module exclusions and +#generation of the aggregating pkgIndex.tcl (gen_main_index). Run it in batch mode +#(packages only) with the suite-built shell; default paths derive from that shell, +#landing the packages under /lib/. +if {![llength [glob -nocomplain [file join $stage out lib tklib*]]]} { + log "installing tklib (batch, packages only) via its own installer" + set savedpwd [pwd] + cd [file join $stage tklib] + run $exe installer.tcl -no-gui -no-wait -pkgs -no-apps -no-html -no-nroff -no-examples + cd $savedpwd +} +set tkliblanded [glob -nocomplain [file join $stage out lib tklib*]] +if {![llength $tkliblanded]} {fail "tklib install did not land under [file join $stage out lib]"} +set tksmoke [exec $exe << {package require Tk; wm withdraw .; puts "tooltip: [package require tooltip]"; destroy .; exit}] +log "tklib: [file tail [lindex $tkliblanded 0]] installed; smoke $tksmoke" + log "PASS - built $patchlevel (checkout [string range $uuid 0 11]..., zig $zigv) -> $stage/out"