Browse Source
Per user direction and draft refinements 2026-07-20: matching tklib alongside Tk (pure-tcl, own installer.tcl where it does more than straight copy); tcllib installed via its installer machinery (installer.tcl/sak.tcl checked for non-copy behaviour) with critcl-built tcllibc driving zig cc; the totals-parsing test gate owns the 72-failure triage. goals_lint clean. Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.commaster
2 changed files with 44 additions and 0 deletions
@ -0,0 +1,40 @@
|
||||
# G-098 suite_tcl90 full punkshell dependency set: Tk+tklib, tcllib with critcl accelerators, and testsuite gating |
||||
|
||||
Status: proposed |
||||
Scope: src/buildsuites/suite_tcl90/ (recipe extensions, driver steps, testsuite gate), src/buildsuites/_build/ (tk/tklib/tcllib/critcl sources and outputs), bin/tools/ (pinned zig as consumed), src/tests/ (punkshell suites exercised against the suite-built runtime) |
||||
Goal: suite_tcl90 builds/installs the remaining runtime pieces punkshell testing depends on - Tk (fossil core.tcl-lang.org/tk) loadable by the suite's Tcl 9.0 windows runtime together with a matching tklib (fossil core.tcl-lang.org/tklib; pure-tcl, installed via its own installer.tcl where that does more than a straight copy), and tcllib (fossil core.tcl-lang.org/tcllib) installed via its documented mechanism (installer.tcl / sak.tcl checked for installation behaviour that is not just a straight copy) WITH its critcl-built C accelerators (tcllibc; critcl from github.com/andreas-kupries/critcl driving zig cc as the compiler, bootstrapped by the suite-built tclsh - no MS toolchain) - and the suite's test surface becomes a gate: suite.tcl test parses the all.tcl totals rather than trusting the exit code and fails on failures absent from a recorded expected-failure baseline. |
||||
Acceptance: from the pinned zig and fetched sources the suite produces a Tk the suite tclsh loads (package require Tk with a create/destroy-window verification recorded in this file) and a matching tklib whose packages resolve from the install (a representative tklib package require recorded); a tcllib install performed via its own installer machinery (installer.tcl/sak.tcl behaviour checked and recorded - module selection, pkgIndex/tm generation, critcl module handling) whose accelerators load (package require tcllibc) with a punkcheck-relevant hashing comparison showing the accelerated path engaged versus pure-tcl; critcl is version-pinned and driven with zig cc; suite.tcl test gates on parsed totals against a recorded expected-failure baseline and the current 72 core-test failures are dispositioned (fixed or baselined with reasons); punkshell's runtests can run against the suite-built runtime with Tk-dependent suites no longer skipped for lack of Tk. |
||||
|
||||
## Context |
||||
|
||||
Follow-on from G-096 (tracked zig buildsuite; zig 0.16.0 pin adopted 2026-07-20), per |
||||
user direction 2026-07-20: |
||||
|
||||
- Tk must be built to run ALL punkshell tests (Tk-dependent suites currently skip). |
||||
- A matching tklib may be required for Tk to function properly - believed pure-tcl, so |
||||
a fossil pull plus possibly its installer.tcl "depending on whether it does anything |
||||
special" (user wording). |
||||
- tcllib is mostly pure-tcl but its critcl-built accelerators make a huge performance |
||||
difference - without tcllibc, punkcheck hash checking is very slow. tcllib has an |
||||
installer.tcl and sak.tcl which should be checked for installation behaviour that |
||||
is not just a straight copy. |
||||
- critcl (github.com/andreas-kupries/critcl) may be required for the accelerators; |
||||
it needs a tclsh (the suite-built shell) and a C compiler (zig cc - keeps the |
||||
no-MS-toolchain policy; the mechanism is zig-version-agnostic). |
||||
- Testsuite state at goal creation: full Tcl core suite on the suite-built shell runs |
||||
66350 tests, 72 FAILED (triage pending; native-runtime baseline on this machine is |
||||
exec-14.3 only), and all.tcl's exit code does not reflect failures - hence the |
||||
totals-parsing gate requirement. |
||||
|
||||
## Notes |
||||
|
||||
- Related goals: G-096 (the buildsuite this extends; its remaining items - piperepl |
||||
rebase/matrix and punk-getzig per-version fetch - stay with G-096), G-005 (zig build |
||||
infrastructure direction), G-060 (qemu cross-platform matrix - eventual multi-platform |
||||
consumer), G-021/G-020 (agent visual verification - a working Tk underpins those). |
||||
- The 72-failure triage is tracked HERE (gate clause), not in G-096, to avoid double |
||||
tracking. |
||||
- Fetch conventions follow suite_tcl90: fossil clones cached in ~/.fossils, checkouts |
||||
under src/buildsuites/_build with FOSSIL_HOME isolation and --nested; critcl is git, |
||||
not fossil - clone/pin convention to be settled in the work (git clone under _build |
||||
with a pinned tag/commit is the expected shape). |
||||
Loading…
Reference in new issue