Browse Source

G-098 increment 2: tklib installed via its own installer (batch, suite shell); tooltip smoke

Installer behaviour checked first per user caveat: module exclusions,
app-script generation, doc options, and the aggregating top-level
pkgIndex.tcl (gen_main_index) - not a straight copy; critcl DSL stubbed to
no-ops (pure-tcl). Driver runs it with the suite-built tclsh in batch mode,
packages only, landing out/lib/tklib0.9. Smoke: package require Tk +
tooltip -> 2.0.4 in the suite shell.

Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
master
Julian Noble 1 week ago
parent
commit
32bb7c17e8
  1. 20
      goals/G-098-suite-tk-tcllib-critcl.md
  2. 17
      src/buildsuites/suite_tcl90/suite.tcl

20
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;

17
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 <out>/lib/<tklib-version-dir>.
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"

Loading…
Cancel
Save