Browse Source
G-024 - kit mapping converted to toml (tomlish-parsed), same-day activation->achieved: - src/runtime/mapvfs.toml: [kit.<name>] / [group.<name>] / [scheme.<name>] tables (header comment = user-facing spec). All 12 active line-format mappings migrated (order preserved - identical bakelist rows vs the legacy parse); historical comments carried over; mapvfs.config deleted here AND in the project-0.1 layout (converted to mapvfs.toml there). - make.tcl reader family under the unchanged G-121 model surface: mapvfs_locate (toml > legacy; PUNK_MAPVFS_CONFIG env override = characterization seam), mapvfs_parse dispatching on extension, strict mapvfs_parse_toml, deprecated mapvfs_parse_config fallback (un-migrated generated projects keep baking, with a NOTE; toml wins when both files exist). Shared toml helpers hoisted to punkboot::lib (inline toml_untag copies removed). - Strict entry-named validation: unknown keys/types/schemes, conflicting targets, duplicate outputs, parse failures fatal (exit 3 pre-build). Full-bake unresolvables split by nature: missing vfs folder (repo content) fatal per entry; missing runtime file (environment - part-populated stores are legitimate) entry-named recapped BUILD-WARNING + skip. - Groups: @<group> selection in bake/bakelist, group/default/scheme notes columns + detail lines, groups listed in errors and argdoc choices. verify-ix86 wraps the G-129 kits; bake_default=false excludes entries from full bakes. - G-023 versioned scheme declared live ([scheme.punk8]/[scheme.punk9], group versioned, bake_default=false pending G-023 activation): parse-time expansion from punkproject.toml to punk<gen>-<version> / punk<gen>-dev / release-gated punk<gen>; kit loop creates the plain name when absent and never overwrites it on a normal bake. punk9-dev baked end-to-end; punk9 gate skip demonstrated. - Consumer dedupe fix: several entries may share one runtime on one vfs - kit-output enumeration and the kit-loop runtimes list process each distinct runtime once (latent multiplication in the legacy format, unreachable there). G-115 - declarative .vfs composition with drop-in preservation, same-day activation->achieved: - Sibling declarations src/vfs/<name>.vfs.toml ([payload.<name>]: source, source_root src|packages, target, supersedes, replace) materialized by the new VFSPAYLOAD phase (bakehouse/bake/vfslibs; selective bakes narrow; strict entry-named errors). Drop-in-wins precedence via punkcheck -overwrite synced-targets: undeclared or modified-since-install files preserved and reported (changed-but-preserved NOTE = files_skipped minus sources_unchanged); supersedes/replace are the explicit exceptions; an undeclared .vfs is untouched. - vendorlib_vfs.toml relationship settled: folded/superseded - all six install entries migrated into per-.vfs files for the 13 participating folders (first materialization run reproduced every payload with zero tracked-content change); file deleted; a leftover copy warns and is ignored. - Demonstration kit punkdeclare (group declare-demo, bake_default=false, smokerequire udp+tcllibc): VCS carries only the boot fauxlink; the whole lib_tcl9 payload (tcludp vendor tree + tcllibc consent-gated packages tier) rematerializes from the declaration - clean-tree rebuild smokes pass in-kit, and drop-in survival was proven live (a foreign pkgIndex.tcl and an undeclared note both survived; the foreign file genuinely won until removed, caught by the G-133 smoke probe as designed). Payload ignored in both VCS (.gitignore + derived ignore-glob; ignore-sync verification clean). - Docs: src/vfs/README.md (format + precedence spec), src/vfs + src/runtime + src + bin AGENTS.md, ARCHITECTURE.md (+lint clean), workflow text and summaries/helptexts/argdoc; layout store seeds the convention (vfs README + mapvfs.toml; machinery travels via the established make.tcl sync). Verification: legacy-vs-toml identical kit rows; punkluck86 force-rebuilt under both formats content-identical (identical 1.73MB runtime+stamp prefix, identical 2993-member payloads; whole-artifact byte identity is not a pipeline property - consecutive same-config rebuilds differ in zip timestamp metadata, pre-existing); punkexe suite 98 tests 0 failures incl. 5 new G-024 characterizations (maketclbakelist.test: @group filter + PUNK_MAPVFS_CONFIG fixture tests) and updated pins (payloadcheck declared list + punkdeclare; platform detail wording). Goals: both flipped achieved 2026-07-31 with evidence in the detail files; GOALS.md entries moved to GOALS-archive.md; live-tier reference sweep applied (G-004/G-019/G-023/G-025/G-026/G-035/G-065/G-127/G-131/G-137/G-141) including the G-127 mapvfs-seam retirement note (PUNK_MAPVFS_CONFIG) and a direct G-137<->G-127 bridge replacing the archived G-024 one. Detail files move to goals/archive/ in the follow-up pure-rename commit. Also included as found: the developer's concurrent G-142 goal addition (GOALS.md entry + goals/G-142-punkbin-listing-manifests.md), committed unmodified for git/fossil coherence - not agent-authored. Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.commaster
51 changed files with 1893 additions and 581 deletions
@ -1,16 +0,0 @@
|
||||
#single line per runtime executable. Name of runtime followed by list of kit configuration lists. |
||||
#Each kit config list is from 1 to 3 elements |
||||
#1) .vfs folder with path relative to src folder. |
||||
#2) name of wrapped kit binary to create (default to rootname of .vfs folder e.g myapp.vfs will create a kit named myapp (or myapp.exe) on windows) |
||||
#3) Type of kit to create (zip or kit) - default kit. kit for metakit or vlerq based kit, zip for more modern zipkit. |
||||
# |
||||
# e.g The following creates 2 zipkits from the same runtime and 2 different .vfs folder |
||||
# mytcl90kit.exe {mainapp.vfs myapp.exe zip} {test.vfs testapp.exe zip} |
||||
# |
||||
#if runtime has no entry - it will only match a .vfs folder with a matching filename e.g runtime1.exe runtime1.vfs |
||||
#Use a runtime with a name of dash (-) to build a .kit file from the .vfs folder using no runtime |
||||
#e.g |
||||
#- myproject.vfs |
||||
#- punk86.vfs |
||||
# |
||||
tclsh902z.exe {project.vfs project zip} |
||||
@ -0,0 +1,34 @@
|
||||
# mapvfs.toml - kit output mapping (parsed with tomlish via make.tcl's ::punkboot::lib::mapvfs_parse). |
||||
# Maps runtime executables (<projectroot>/bin/runtime/<platform>/) and .vfs payload folders |
||||
# (src/vfs/) to the named kit executables a bake produces. |
||||
# |
||||
# [kit.<name>] - one table per kit output; <name> is the output executable's base name. |
||||
# runtime (required) runtime executable name, unsuffixed (a superfluous .exe is tolerated). |
||||
# Use "-" to build a runtime-less .kit file. A runtime with NO entry anywhere |
||||
# still auto-pairs with a same-named .vfs folder. |
||||
# vfs (required) .vfs folder name under src/vfs/ (e.g "project.vfs"). |
||||
# type kit|zip|zipcat|cookit|cookfs (default kit). kit = metakit/starkit wrap, |
||||
# zip = zipfs image, zipcat = raw exe+zip concatenation. |
||||
# target (optional) target platform-dir name ('help platforms' lists them); defaults to |
||||
# the build host's own target. Decides the bin/runtime/<tier> store, .exe |
||||
# suffixing and process tooling. A property of the RUNTIME - entries sharing a |
||||
# runtime must not disagree. |
||||
# smokerequire (optional) packages the freshly built kit must plain-'package require' |
||||
# (advisory probe; failures are recapped BUILD-WARNINGs). |
||||
# group (optional) named grouping - 'make.tcl bake @<group>' / 'bakelist @<group>'. |
||||
# bake_default (optional boolean, default true; a group's bake_default is the members' |
||||
# default) false = excluded from full bakes, still bakeable by name/@group. |
||||
# |
||||
# [group.<name>] - optional group attributes: description, bake_default. |
||||
# [scheme.<name>] - generative version-named outputs (scheme = "versioned"): expands to |
||||
# <prefix>-<version> + <prefix>-dev + release-gated plain <prefix> from the punkproject.toml |
||||
# [project] version. Keys: scheme, prefix (default: table name), runtime, vfs, type |
||||
# (required), plus target/smokerequire/group/bake_default as for kits. |
||||
# |
||||
# The punkshell tree's src/runtime/mapvfs.toml header carries the full format spec. |
||||
# (The pre-toml mapvfs.config line format remains readable as a deprecated fallback.) |
||||
|
||||
[kit.project] |
||||
runtime = "tclsh902z" |
||||
vfs = "project.vfs" |
||||
type = "zip" |
||||
@ -0,0 +1,31 @@
|
||||
# src/vfs - kit payload folders and per-.vfs payload declarations |
||||
|
||||
Each `<name>.vfs` folder is the payload of a configured kit output (kit mapping: |
||||
`src/runtime/mapvfs.toml`), merged with the `_vfscommon.vfs` overlay at bake time. |
||||
|
||||
## Per-.vfs payload declarations (optional) |
||||
|
||||
A `.vfs` folder's payload can be DECLARED in a sibling toml file and materialized by the |
||||
build - while the folder remains the operative assembly area: dropping files in by hand |
||||
needs no declaration, and materialization never clobbers what it did not itself install. |
||||
A `.vfs` with NO declaration file is untouched - pure drop-in mode. |
||||
|
||||
- Declaration file: `src/vfs/<name>.vfs.toml` (sibling of the folder, never baked into it). |
||||
- Processed by `tclsh src/make.tcl vfslibs`, and automatically as a phase of |
||||
`make.tcl bake` / `bakehouse`. |
||||
|
||||
```toml |
||||
[payload.<entryname>] |
||||
source = "vendorlib/mylib1.0" # folder path, resolved per source_root |
||||
source_root = "src" # optional: 'src' (default) or 'packages' |
||||
# (<projectroot>/bin/packages - 'make.tcl libfetch' tier) |
||||
target = "lib" # optional: folder INSIDE the .vfs (default: the .vfs root) |
||||
supersedes = ["mylib0.9"] # optional: legacy sibling folders removed from target first |
||||
replace = true # optional: clean-slate the SAME-NAMED target folder first |
||||
``` |
||||
|
||||
Precedence (drop-in wins): materialization is punkcheck-tracked with |
||||
`-overwrite synced-targets` - undeclared files are never touched, and a file at a declared |
||||
path is only overwritten when the mechanism itself installed it and it is unmodified |
||||
since; a foreign or hand-modified copy is preserved and reported. `supersedes` and |
||||
`replace` are the explicit declared exceptions. |
||||
@ -1,150 +0,0 @@
|
||||
#single line per runtime executable. Name of runtime followed by list of kit configuration lists. |
||||
#Each kit config list is from 1 to 5 elements |
||||
#1) .vfs folder with path relative to src folder. |
||||
#2) name of wrapped kit binary to create (default to rootname of .vfs folder e.g myapp.vfs will create a kit named myapp (or myapp.exe) for a windows target) |
||||
#3) Type of kit to create (zip or kit) - default kit. kit for metakit or vlerq based kit, zip for more modern zipkit. |
||||
#4) TARGET PLATFORM (G-122) - canonical punkshell platform-dir name ('help platforms' lists them). |
||||
# Defaults to the build host's own target: win32-x86_64 on windows INCLUDING from an |
||||
# msys2/cygwin-runtime tclsh, whose own canon (msys-x86_64) is a host identity, not a kit target. |
||||
# The declared target decides everything the entry emits: which store tier holds the runtime |
||||
# (bin/runtime/<target>/, macosx-* collapsing to the universal macosx folder), whether the runtime |
||||
# file and the built kit carry .exe, and which process tooling the pre-deploy sweep uses. |
||||
# It is a property of the RUNTIME: entries on one runtime line may repeat it but must not disagree. |
||||
#5) SMOKE-REQUIRE packages (G-133) - a list of package names the freshly built kit must be able to |
||||
# plain-'package require'. After building, a host-runnable kit is executed via its tclsh |
||||
# subcommand and each named package is required inside the real artifact - the only check that |
||||
# sees package RESOLUTION (e.g a higher-versioned wrong-arch copy shadowing a working one). |
||||
# ADVISORY: failures become recapped BUILD-WARNINGs naming kit, package and error; the kit still |
||||
# builds and deploys. Cross-target kits skip with a stated reason; kits with no declaration run |
||||
# nothing new. Interim line format - the schema's eventual home is the G-024 toml conversion. |
||||
# e.g myruntime.exe {myapp.vfs myapp zip win32-x86_64 {Thread sqlite3}} |
||||
# (element positions are fixed: declaring smoke-requires means also spelling out the target) |
||||
# |
||||
# e.g The following creates 2 zipkits from the same runtime and 2 different .vfs folder |
||||
# mytcl90kit.exe {mainapp.vfs myapp.exe zip} {test.vfs testapp.exe zip} |
||||
# |
||||
# e.g a runtime kept in bin/runtime/linux-x86_64/ producing a suffixless linux kit: |
||||
# mylinuxruntime {myapp.vfs myapp kit linux-x86_64} |
||||
# |
||||
#if runtime has no entry - it will only match a .vfs folder with a matching filename e.g runtime1.exe runtime1.vfs |
||||
#Use a runtime with a name of dash (-) to build a .kit file from the .vfs folder using no runtime |
||||
#e.g |
||||
#- myproject.vfs |
||||
#- punk86.vfs |
||||
# |
||||
|
||||
#0 |
||||
tclkit86bi.exe {punk8win.vfs punkbi kit} |
||||
|
||||
#tclkit-win64-dyn.exe {punk86bawt.vfs punkbawt kit} |
||||
|
||||
#------------------------------------------------------------------------ |
||||
#broken 'lreplace' - but runtime beforehand is ok - thread library issue? |
||||
#tclkit-win64-dyn.exe {punk86bawt.vfs punksys kit} |
||||
#------------------------------------------------------------------------ |
||||
#same kit with different .vfs is ok |
||||
#1 |
||||
tclkit-win64-dyn.exe {punk8win.vfs punksys kit} |
||||
|
||||
#punk86: the Tcl 8.6 reference punk kit (8.6-behaviour checks - see src/tests/AGENTS.md and the |
||||
#test-interpreter notes). Remapped 2026-07-21: the previous unmapped tclkit8613-era build had |
||||
#fossilized (kit-stamped punk::args 0.1.0 winning unversioned requires while versioned requires |
||||
#pulled modern modules - the runtests punk::args::define skew). Rebuilt from the 8.6.17 dyn |
||||
#tclkit, matching the native Tcl86 test interpreter patchlevel (punksys stays on the 8.6.13 dyn). |
||||
tclkit-win64-dyn-8617.exe {punk8win.vfs punk86 kit} |
||||
|
||||
#tclkit87a5.exe {punk86.vfs punk87} {punk.vfs punkmain} |
||||
|
||||
#TCL9 |
||||
#tclsh902z.exe {project.vfs project zip} |
||||
#2 |
||||
#tclsh90b2 {punk9wintk90b2.vfs punk90b2 zip} |
||||
#3 |
||||
#tclsh90b4_piperepl.exe {punk9wintk90b2.vfs punk90b4 zip} |
||||
#tclsh901t.exe {punk92in.vfs punk901t zip} |
||||
tclsh90magic.exe {punk9magicsplat.vfs punkmagic zipcat} |
||||
|
||||
#made with Bawt (2025-08) |
||||
#tclkit |
||||
#tclkit902.exe {punk9win_for_tkruntime.vfs punk902kit kit} |
||||
#static build - with tk dll and tk lib added to zip |
||||
#4 |
||||
tclsh902z.exe {punk9win_for_tkruntime.vfs punk902z zip} |
||||
|
||||
#apn's tcl-sfe |
||||
#https://github.com/apnadkarni/tcl-sfe/releases |
||||
#tclsfe-x64.exe is not a tk runtime. The versions with tk are 'wish' based so unsuitable. |
||||
#punk9win_for_tkruntime.vfs is intended for kits which already have Tk |
||||
tclsfe-x64.exe {punk9wintk903.vfs punk91 zip} |
||||
|
||||
#suite_tcl90 zig build (G-096/G-098, both achieved 2026-07-20) - runtime copied manually from |
||||
# src/buildsuites/_build/suite_tcl90/out/bin/tclsh90szip.exe (static tclsh 9.0.5 with attached zip |
||||
# carrying the tcl library). tk/thread dlls + script libs ride in the .vfs for this entry; the |
||||
# G-103 family runtimes below supersede that arrangement. |
||||
#_beta convention: wrap freshly suite-built runtimes as *_beta kits even BEFORE they have passed the |
||||
# punk test suites - so new-runtime behaviour can be trialled interactively. Drop _beta on acceptance. |
||||
# (punk905_beta trialled and PROMOTED to punk905 2026-07-21.) |
||||
#'make.tcl bakelist ?kitname ...?' lists the kit outputs configured here (runtime/vfs presence + |
||||
# deployed state); 'make.tcl bake ?kitname ...?' bakes/deploys only the named kits (G-121, achieved - |
||||
# see goals/archive/G-121-bakelist-selective-bake.md; wish originally recorded in archived G-104). |
||||
#5 |
||||
tclsh905.exe {punk9wintk905.vfs punk905 zip} |
||||
|
||||
#G-103 runtime kit family (suite_tcl90 'kit-family' step): self-contained runtimes whose attached |
||||
# zip already carries the tcl library PLUS Thread/tclvfs/tcllib+tcllibc (bi adds Tk+tklib). WORKING |
||||
# names per the G-103 naming decision (dotted tcl patchlevel; piperepl-patched runtimes carry |
||||
# 'punk'; -r<N> stays on the immutable punkbin artifact tier - 'runtime use' materializes an |
||||
# artifact into these names). Copied from src/buildsuites/_build/suite_tcl90/out/family/. |
||||
#punk runtime + the full punk vfs (which still carries its own tk/thread/etc payload - duplicated |
||||
# batteries resolve to the highest version, i.e. the runtime's; the vfs payload slims as G-103 |
||||
# progresses): |
||||
tclsh9.0.5-punk.exe {punk9wintk905.vfs punk9_beta zip} |
||||
#bi runtime already carries Tk - pair with the for-tkruntime vfs (no tk payload in the vfs): |
||||
tclsh9.0.5-punk-bi.exe {punk9win_for_tkruntime.vfs punk9bi_beta zip} |
||||
|
||||
#---------------------------------------------- |
||||
#experiment - what happens when we run against a 'wish' runtime? Will we have stdin stdout problems? |
||||
#tksfe-twapi-x64.exe {punk9wintk903.vfs punkwish91 zip} |
||||
# result so far: the kit builds - but the tk console doesn't display. |
||||
# we can run tk apps e.g punkwish91 lib:tkhello |
||||
# - todo - consider if we can first get the built in tk console showing for initial exploration, although it is unsuitable for a punk console as it doesn't handle any ansi. |
||||
# - see if we can develop a textwidget based virtual console that we can get punk shell running in. |
||||
#---------------------------------------------- |
||||
|
||||
#---------------------------------------------- |
||||
#testing wrong target kit type for runtime |
||||
#tclkit902.exe {punk9win_for_tkruntime.vfs punkwrongruntime zip} |
||||
|
||||
#only tclkit based runtime avail for linux for now - todo make zip-based runtime and install as artifact on gitea1.intx.com.au |
||||
#Cross-target entry (G-122): declares linux-x86_64 so the runtime is read from |
||||
#bin/runtime/linux-x86_64/ with no .exe suffix and the kit deploys as bin/punkshell902. |
||||
#Before the target declaration this row read runtime=missing from a windows host, |
||||
#because the runtime was looked for as tclkit-902-Linux64-intel-dyn.exe in the windows store. |
||||
#Smoke-require Thread (G-133): on a non-linux host this SKIPS with a stated reason (the |
||||
# artifact is not executable here) - a linux-hosted bake would probe the tclkit's Thread. |
||||
tclkit-902-Linux64-intel-dyn {punk9linux.vfs punkshell902 kit linux-x86_64 Thread} |
||||
|
||||
#G-129 verification runtimes: third-party 32-bit windows, bin/runtime/win32-ix86/ tier |
||||
# (see goals/archive/G-129-kitboot-mountpoint-derivation.md). Kept active so both zipfs |
||||
# mount conventions stay covered by real kits. |
||||
#These wrap the MINIMAL payloads punk8min.vfs / punk9min.vfs: boot fauxlinks plus |
||||
# multi-arch binary packages only (win32-ix86 subdir present: iocp-2.0.2 both majors, |
||||
# twapi-5.0b1 for tcl8), with the pure-tcl module/lib set arriving via the _vfscommon |
||||
# overlay. The original full punk8win/punk9win_for_tkruntime pairings shipped x64-only |
||||
# binary packages into 32-bit kits: a higher-versioned x64 Thread shadowed the runtime's |
||||
# working 32-bit copy (broke the repl), and x64-only dlls (tcludp etc) could never load |
||||
# (repointed 2026-07-27). |
||||
#androwish/undroidwish 8.6 zipfs backport (LUCK build): mounts its attached archive at the |
||||
# EXECUTABLE'S OWN PATH and has no tcl::zipfs::root - the boot derives the mount point |
||||
# from the runtime's own mount table. |
||||
#Smoke-require Thread (G-133): the 2026-07-27 incident kit - a payload x64 Thread 2.8.12 |
||||
# outversioned the runtime's working 32-bit 2.8.5, so plain 'package require Thread' |
||||
# selected the unloadable copy and the repl's tsv/codethread machinery died. The probe |
||||
# plain-requires Thread in the built artifact, so that class is caught by construction. |
||||
tclsh8.6.10-luck-zip.exe {punk8min.vfs punkluck86 zip win32-ix86 Thread} |
||||
#apn tcl-sfe 9.1b0 32-bit: modern //zipfs:/app convention - proves the 32-bit target |
||||
# itself needs nothing special. Runtime carries no Tk; Thread/twapi/sqlite3/tdbc are |
||||
# STATIC in this runtime (32-bit builtins - G-058 capture resolves them). |
||||
#Smoke-require (G-133): Thread resolves via the static builtin; iocp exercises the |
||||
# payload's platform-subdir (win32-ix86) dll selection inside the 32-bit artifact. |
||||
tclsh9.1b0-tclsfe.exe {punk9min.vfs punk91ix86 zip win32-ix86 {Thread iocp}} |
||||
@ -0,0 +1,220 @@
|
||||
# mapvfs.toml - kit output mapping (G-024; parsed with tomlish via ::punkboot::lib::mapvfs_parse). |
||||
# Maps runtime executables (bin/runtime/<platform>/) and .vfs payload folders (src/vfs/) to the |
||||
# named kit executables a bake produces. This header is the user-facing format spec - keep it in |
||||
# step with the reader ('make.tcl bakelist' shows how the file resolves; 'make.tcl bake ?name|@group ...?' |
||||
# builds it). The pre-G-024 line format mapvfs.config remains readable as a deprecated fallback in |
||||
# un-migrated trees; when both files exist this one wins. |
||||
# |
||||
# [kit.<name>] - one table per kit output; <name> is the output executable's base name. |
||||
# runtime (required) runtime executable name, unsuffixed (a superfluous .exe is tolerated |
||||
# and stripped so one config works cross-platform). Use "-" to build a runtime-less |
||||
# .kit file from the vfs folder. A runtime with NO entry anywhere still auto-pairs |
||||
# with a same-named .vfs folder, exactly as before. |
||||
# vfs (required) .vfs folder name under src/vfs/ (e.g "punk8win.vfs"). |
||||
# type kit|zip|zipcat|cookit|cookfs (default kit). kit = metakit/starkit wrap, |
||||
# zip = zipfs image, zipcat = raw exe+zip concatenation. |
||||
# target (optional) TARGET PLATFORM (G-122) - canonical punkshell platform-dir name |
||||
# ('help platforms' lists them). Defaults to the build host's own target |
||||
# (win32-x86_64 on windows INCLUDING from an msys2/cygwin-runtime tclsh). Decides |
||||
# which bin/runtime/<tier> holds the runtime, .exe suffixing of runtime and kit, |
||||
# and which process tooling the pre-deploy sweep uses. It is a property of the |
||||
# RUNTIME: entries sharing a runtime may repeat it but must not disagree. |
||||
# smokerequire (optional) list of package names the freshly built kit must be able to |
||||
# plain-'package require' (G-133). Advisory: failures are recapped BUILD-WARNINGs; |
||||
# cross-target kits skip with a stated reason. |
||||
# group (optional) named grouping (G-024): purely organisational unless the group (or |
||||
# entry) sets bake_default=false. 'make.tcl bake @<group>' / 'bakelist @<group>' |
||||
# select by group. |
||||
# bake_default (optional boolean, default true; a group's bake_default is the members' default) |
||||
# false = excluded from full (no-name) bakes - still listed by bakelist (default=no) |
||||
# and bakeable by name or @group. |
||||
# |
||||
# [group.<name>] - optional group attributes: description, bake_default. |
||||
# |
||||
# [scheme.<name>] - generative entries (G-023/G-024) expanded at parse time; no per-version edits. |
||||
# scheme = "versioned" is the only kind: reads the punkproject.toml [project] version and expands |
||||
# to THREE outputs - <prefix>-<version> (refreshed while that version is current), <prefix>-dev |
||||
# (always the latest build) and the release-gated plain <prefix> (created when absent, then |
||||
# replaced only by an explicit release step - G-023 owns that step; a normal bake never |
||||
# overwrites it). Keys: scheme, prefix (default: table name), runtime, vfs, type (required), |
||||
# plus target/smokerequire/group/bake_default as for kits. |
||||
# |
||||
# Validation is strict and entry-named: unknown keys/types/schemes, conflicting targets and |
||||
# unparseable toml are fatal config errors; a full bake also refuses when a default entry's vfs |
||||
# folder (always) or host-target runtime (missing from its tier) cannot be resolved - |
||||
# cross-target entries whose tier is unpopulated on this host skip with a stated reason. |
||||
# |
||||
# PUNK_MAPVFS_CONFIG env var: points bakelist/bake at an alternate mapping file |
||||
# (characterization-test seam - exercise config behaviour without editing this file). |
||||
|
||||
#-- Tcl 8.6 kits ------------------------------------------------------------------------------ |
||||
|
||||
[kit.punkbi] |
||||
runtime = "tclkit86bi" |
||||
vfs = "punk8win.vfs" |
||||
type = "kit" |
||||
|
||||
# historical note (pre-toml): tclkit-win64-dyn paired with punk86bawt.vfs produced a kit with a |
||||
# broken 'lreplace' (thread library issue?) although the runtime itself was ok - the same runtime |
||||
# with punk8win.vfs (punksys) is fine. |
||||
[kit.punksys] |
||||
runtime = "tclkit-win64-dyn" |
||||
vfs = "punk8win.vfs" |
||||
type = "kit" |
||||
|
||||
# punk86: the Tcl 8.6 reference punk kit (8.6-behaviour checks - see src/tests/AGENTS.md and the |
||||
# test-interpreter notes). Remapped 2026-07-21: the previous unmapped tclkit8613-era build had |
||||
# fossilized (kit-stamped punk::args 0.1.0 winning unversioned requires while versioned requires |
||||
# pulled modern modules - the runtests punk::args::define skew). Rebuilt from the 8.6.17 dyn |
||||
# tclkit, matching the native Tcl86 test interpreter patchlevel (punksys stays on the 8.6.13 dyn). |
||||
[kit.punk86] |
||||
runtime = "tclkit-win64-dyn-8617" |
||||
vfs = "punk8win.vfs" |
||||
type = "kit" |
||||
|
||||
#-- Tcl 9 kits -------------------------------------------------------------------------------- |
||||
|
||||
[kit.punkmagic] |
||||
runtime = "tclsh90magic" |
||||
vfs = "punk9magicsplat.vfs" |
||||
type = "zipcat" |
||||
|
||||
# static build - with tk dll and tk lib added to zip |
||||
[kit.punk902z] |
||||
runtime = "tclsh902z" |
||||
vfs = "punk9win_for_tkruntime.vfs" |
||||
type = "zip" |
||||
|
||||
# apn's tcl-sfe https://github.com/apnadkarni/tcl-sfe/releases |
||||
# tclsfe-x64.exe is not a tk runtime. The versions with tk are 'wish' based so unsuitable. |
||||
# punk9win_for_tkruntime.vfs is intended for kits which already have Tk. |
||||
[kit.punk91] |
||||
runtime = "tclsfe-x64" |
||||
vfs = "punk9wintk903.vfs" |
||||
type = "zip" |
||||
|
||||
# suite_tcl90 zig build (G-096/G-098, both achieved 2026-07-20) - runtime copied manually from |
||||
# src/buildsuites/_build/suite_tcl90/out/bin/tclsh90szip.exe (static tclsh 9.0.5 with attached zip |
||||
# carrying the tcl library). tk/thread dlls + script libs ride in the .vfs for this entry; the |
||||
# G-103 family runtimes below supersede that arrangement. |
||||
# _beta convention: wrap freshly suite-built runtimes as *_beta kits even BEFORE they have passed |
||||
# the punk test suites - so new-runtime behaviour can be trialled interactively. Drop _beta on |
||||
# acceptance. (punk905_beta trialled and PROMOTED to punk905 2026-07-21.) |
||||
[kit.punk905] |
||||
runtime = "tclsh905" |
||||
vfs = "punk9wintk905.vfs" |
||||
type = "zip" |
||||
|
||||
# G-103 runtime kit family (suite_tcl90 'kit-family' step): self-contained runtimes whose attached |
||||
# zip already carries the tcl library PLUS Thread/tclvfs/tcllib+tcllibc (bi adds Tk+tklib). WORKING |
||||
# names per the G-103 naming decision (dotted tcl patchlevel; piperepl-patched runtimes carry |
||||
# 'punk'; -r<N> stays on the immutable punkbin artifact tier - 'runtime use' materializes an |
||||
# artifact into these names). Copied from src/buildsuites/_build/suite_tcl90/out/family/. |
||||
# punk runtime + the full punk vfs (which still carries its own tk/thread/etc payload - duplicated |
||||
# batteries resolve to the highest version, i.e. the runtime's; the vfs payload slims as G-103 |
||||
# progresses): |
||||
[kit.punk9_beta] |
||||
runtime = "tclsh9.0.5-punk" |
||||
vfs = "punk9wintk905.vfs" |
||||
type = "zip" |
||||
|
||||
# bi runtime already carries Tk - pair with the for-tkruntime vfs (no tk payload in the vfs): |
||||
[kit.punk9bi_beta] |
||||
runtime = "tclsh9.0.5-punk-bi" |
||||
vfs = "punk9win_for_tkruntime.vfs" |
||||
type = "zip" |
||||
|
||||
# historical notes (pre-toml experiments): |
||||
# - 'wish' runtime experiment: tksfe-twapi-x64 {punk9wintk903.vfs punkwish91 zip} - the kit builds |
||||
# but the tk console doesn't display; tk apps run (punkwish91 lib:tkhello). Revisit with a |
||||
# textwidget-based virtual console if pursued. |
||||
# - wrong-target kit-type test row: tclkit902 {punk9win_for_tkruntime.vfs punkwrongruntime zip} |
||||
|
||||
#-- cross-target ------------------------------------------------------------------------------ |
||||
|
||||
# only tclkit based runtime avail for linux for now - todo make zip-based runtime and install as |
||||
# artifact on gitea1.intx.com.au |
||||
# Cross-target entry (G-122): target linux-x86_64 so the runtime is read from |
||||
# bin/runtime/linux-x86_64/ with no .exe suffix and the kit deploys as bin/punkshell902. |
||||
# smokerequire Thread (G-133): on a non-linux host this SKIPS with a stated reason (the artifact |
||||
# is not executable here) - a linux-hosted bake would probe the tclkit's Thread. |
||||
[kit.punkshell902] |
||||
runtime = "tclkit-902-Linux64-intel-dyn" |
||||
vfs = "punk9linux.vfs" |
||||
type = "kit" |
||||
target = "linux-x86_64" |
||||
smokerequire = ["Thread"] |
||||
|
||||
#-- G-129 verification kits (32-bit windows, third-party runtimes) ---------------------------- |
||||
|
||||
[group.verify-ix86] |
||||
description = "G-129 verification runtimes: third-party 32-bit windows, bin/runtime/win32-ix86/ tier - kept active so both zipfs mount conventions stay covered by real kits (see goals/archive/G-129-kitboot-mountpoint-derivation.md)" |
||||
|
||||
# These wrap the MINIMAL payloads punk8min.vfs / punk9min.vfs: boot fauxlinks plus multi-arch |
||||
# binary packages only (win32-ix86 subdir present: iocp-2.0.2 both majors, twapi-5.0b1 for tcl8), |
||||
# with the pure-tcl module/lib set arriving via the _vfscommon overlay. An x64-only binary package |
||||
# must NOT be added to these payloads - a higher-versioned wrong-arch copy silently shadows a |
||||
# runtime's own working 32-bit package on plain 'package require' (measured 2026-07-27: payload |
||||
# Thread 2.8.12 x64 beat the LUCK runtime's 2.8.5 and broke the repl). |
||||
# androwish/undroidwish 8.6 zipfs backport (LUCK build): mounts its attached archive at the |
||||
# EXECUTABLE'S OWN PATH and has no tcl::zipfs::root - the boot derives the mount point from the |
||||
# runtime's own mount table. |
||||
# smokerequire Thread (G-133): the 2026-07-27 incident kit - the probe plain-requires Thread in |
||||
# the built artifact, so that class is caught by construction. |
||||
[kit.punkluck86] |
||||
runtime = "tclsh8.6.10-luck-zip" |
||||
vfs = "punk8min.vfs" |
||||
type = "zip" |
||||
target = "win32-ix86" |
||||
smokerequire = ["Thread"] |
||||
group = "verify-ix86" |
||||
|
||||
# apn tcl-sfe 9.1b0 32-bit: modern //zipfs:/app convention - proves the 32-bit target itself needs |
||||
# nothing special. Runtime carries no Tk; Thread/twapi/sqlite3/tdbc are STATIC in this runtime |
||||
# (32-bit builtins - G-058 capture resolves them). smokerequire: Thread resolves via the static |
||||
# builtin; iocp exercises the payload's platform-subdir (win32-ix86) dll selection inside the |
||||
# 32-bit artifact. |
||||
[kit.punk91ix86] |
||||
runtime = "tclsh9.1b0-tclsfe" |
||||
vfs = "punk9min.vfs" |
||||
type = "zip" |
||||
target = "win32-ix86" |
||||
smokerequire = ["Thread", "iocp"] |
||||
group = "verify-ix86" |
||||
|
||||
#-- G-115 declarative-payload demonstration kit ----------------------------------------------- |
||||
|
||||
[group.declare-demo] |
||||
description = "G-115 demonstration: kit whose binary payload materializes from the punkdeclare.vfs.toml declaration (vendor tree + consent-gated packages tier) - bake with 'make.tcl bake punkdeclare'" |
||||
bake_default = false |
||||
|
||||
# punkdeclare.vfs is near-empty in VCS (boot fauxlink only): lib_tcl9 payload (tcludp from the |
||||
# vendor tree, tcllibc from the bin/packages tier) arrives via the per-.vfs declaration at |
||||
# src/vfs/punkdeclare.vfs.toml, and the smokerequire proves both binary packages resolve inside |
||||
# the built artifact. |
||||
[kit.punkdeclare] |
||||
runtime = "tclsh9.0.5-punk" |
||||
vfs = "punkdeclare.vfs" |
||||
type = "zip" |
||||
smokerequire = ["udp", "tcllibc"] |
||||
group = "declare-demo" |
||||
|
||||
#-- G-023 versioned naming schemes (declared, pending G-023 activation) ----------------------- |
||||
|
||||
[group.versioned] |
||||
description = "G-023 versioned/dev/release-gated outputs: punk<gen>-<version> + punk<gen>-dev + release-gated punk<gen>, names derived from punkproject.toml at bake time. bake_default=false until G-023 activates - bake with '@versioned' or by name (bakelist shows the expanded names)" |
||||
bake_default = false |
||||
|
||||
[scheme.punk8] |
||||
scheme = "versioned" |
||||
runtime = "tclkit-win64-dyn-8617" |
||||
vfs = "punk8win.vfs" |
||||
type = "kit" |
||||
group = "versioned" |
||||
|
||||
[scheme.punk9] |
||||
scheme = "versioned" |
||||
runtime = "tclsh9.0.5-punk" |
||||
vfs = "punk9wintk905.vfs" |
||||
type = "zip" |
||||
group = "versioned" |
||||
@ -1,122 +0,0 @@
|
||||
# vendorlib -> kit vfs platform-library propagation (goal G-037) |
||||
# |
||||
# Declares which vendored platform-library package folders (paths relative to src/) are |
||||
# installed into which kit vfs lib trees (paths relative to src/vfs/). Processed by |
||||
# 'tclsh src/make.tcl vfslibs' - and automatically as a phase of 'tclsh src/make.tcl bake' |
||||
# (and therefore of 'bakehouse'; G-112 folded the phase in so a bake cannot ship stale |
||||
# binary libs) - with punkcheck-tracked provenance (records in src/vfs/.punkcheck, |
||||
# outside kit payloads). |
||||
# |
||||
# Participation is per-package per-kit by design: kit vfs package sets intentionally differ |
||||
# (e.g. twapi versions vary per kit), so nothing is blanket-copied and a vendorlib drop does |
||||
# not force a package into every kit. |
||||
# |
||||
# Cross-generation installs are allowed when the package supports both Tcl major versions |
||||
# (e.g. tcludp 1.0.13 ships tcl9udp1013.dll + udp1013t.dll with a pkgIndex.tcl that selects |
||||
# by generation - so the same source folder serves lib_tcl9 and lib_tcl8 targets). |
||||
# |
||||
# Keys per [install.<name>] entry: |
||||
# source - package folder path, resolved per source_root |
||||
# source_root - optional: 'src' (default; source is relative to src/ - the |
||||
# vendored-tree declarations) or 'packages' (G-139; source is |
||||
# relative to <projectroot>/bin/packages - the untracked punkbin |
||||
# lib-tier input populated by 'tclsh src/make.tcl libfetch') |
||||
# targets - list of kit vfs lib folders relative to src/vfs/ |
||||
# supersedes - optional list of legacy/older package folder names to remove from |
||||
# each target before install (explicit - no silent mixed-version |
||||
# provision, per the G-035 concerns). Cannot name the folder being |
||||
# installed (same-name entries are ignored) - use 'replace' for that. |
||||
# replace - optional boolean (G-139): clean-slate a SAME-NAMED existing target |
||||
# folder before install. For same-name refreshes where the old copy |
||||
# may carry strays the new tree lacks (the pre-G-139 hand-drops |
||||
# nested md5c/tcllibc INSIDE their tcllib2.0 folder). |
||||
# |
||||
# This file is a candidate for absorption into the mapvfs toml conversion (goal G-024). |
||||
|
||||
[install.tcludp] |
||||
source = "vendorlib_tcl9/win32-x86_64/tcludp1.0.13" |
||||
targets = [ |
||||
"punk9wintk90b2.vfs/lib_tcl9", |
||||
"punk9wintk903.vfs/lib_tcl9", |
||||
"punk9wintk905.vfs/lib_tcl9", |
||||
"punk9win_for_tkruntime.vfs/lib_tcl9", |
||||
"punk8win.vfs/lib_tcl8", |
||||
] |
||||
supersedes = ["udp1.0.12", "tcludp1.0.12"] |
||||
|
||||
# -- G-139: suite-built tcllib/tcllibc from the punkbin lib tier --------------- |
||||
# Sourced from the bin/packages input tier ('make.tcl libfetch'; artifacts |
||||
# declared in libpackages.toml). Targets = the kit vfs trees that carried |
||||
# hand-dropped copies at switchover (2026-07-30) - per-kit participation, never |
||||
# blanket. replace=true because the old tcl9 hand-drops nested md5c + tcllibc |
||||
# INSIDE tcllib2.0 (same folder name as the new install - supersedes cannot |
||||
# touch it). The tcl8 kits upgrade tcllib1.21 (+nested tcllibc 0.4 + md5c) -> |
||||
# tcllib 2.0 via supersedes. tcllibc_tcl9 is the win32-x86_64 build for the |
||||
# windows kits; punk9linux (linux target) gets the platform-neutral tcllib2.0 |
||||
# plus its OWN tcllibc from the linux-x86_64 tier (G-140: the suite_tcl90 |
||||
# tcllibc-linux cross build - replace retires the provenance-less hand-dropped |
||||
# tcllibc, supersedes the stray-named tcllibc2.0). punk86bawt carried a bare |
||||
# tcllibc only - it gets the tcllibc refresh and no tcllib entry. |
||||
|
||||
[install.tcllib_tcl9] |
||||
source_root = "packages" |
||||
source = "allplatforms/tcl9/tcllib2.0" |
||||
replace = true |
||||
targets = [ |
||||
"mkzipfix.vfs/lib_tcl9", |
||||
"punk9cook.vfs/lib_tcl9", |
||||
"punk9cookbasic.vfs/lib_tcl9", |
||||
"punk9linux.vfs/lib_tcl9", |
||||
"punk9magicsplat.vfs/lib_tcl9", |
||||
"punk9win_for_tkruntime.vfs/lib_tcl9", |
||||
"punk9wintk903.vfs/lib_tcl9", |
||||
"punk9wintk905.vfs/lib_tcl9", |
||||
"punk9wintk90b2.vfs/lib_tcl9", |
||||
] |
||||
|
||||
[install.tcllibc_tcl9] |
||||
source_root = "packages" |
||||
source = "win32-x86_64/tcl9/tcllibc" |
||||
replace = true |
||||
targets = [ |
||||
"mkzipfix.vfs/lib_tcl9", |
||||
"punk9cook.vfs/lib_tcl9", |
||||
"punk9cookbasic.vfs/lib_tcl9", |
||||
"punk9magicsplat.vfs/lib_tcl9", |
||||
"punk9win_for_tkruntime.vfs/lib_tcl9", |
||||
"punk9wintk903.vfs/lib_tcl9", |
||||
"punk9wintk905.vfs/lib_tcl9", |
||||
"punk9wintk90b2.vfs/lib_tcl9", |
||||
] |
||||
supersedes = ["tcllibc2.0"] |
||||
|
||||
[install.tcllibc_tcl9_linux] |
||||
source_root = "packages" |
||||
source = "linux-x86_64/tcl9/tcllibc" |
||||
replace = true |
||||
targets = [ |
||||
"punk9linux.vfs/lib_tcl9", |
||||
] |
||||
supersedes = ["tcllibc2.0"] |
||||
|
||||
[install.tcllib_tcl8] |
||||
source_root = "packages" |
||||
source = "allplatforms/tcl8/tcllib2.0" |
||||
replace = true |
||||
targets = [ |
||||
"punk86.vfs/lib_tcl8", |
||||
"punk8win.vfs/lib_tcl8", |
||||
"punk8_statictwapi.vfs/lib_tcl8", |
||||
] |
||||
supersedes = ["tcllib1.21"] |
||||
|
||||
[install.tcllibc_tcl8] |
||||
source_root = "packages" |
||||
source = "win32-x86_64/tcl8/tcllibc" |
||||
replace = true |
||||
targets = [ |
||||
"punk86.vfs/lib_tcl8", |
||||
"punk8win.vfs/lib_tcl8", |
||||
"punk8_statictwapi.vfs/lib_tcl8", |
||||
"punk86bawt.vfs/lib_tcl8", |
||||
] |
||||
@ -0,0 +1,75 @@
|
||||
# src/vfs - kit payload folders and per-.vfs payload declarations |
||||
|
||||
Each `<name>.vfs` folder is the payload of a configured kit output (kit mapping: |
||||
`src/runtime/mapvfs.toml`), merged with the auto-generated `_vfscommon.vfs` overlay at bake |
||||
time. Folder ownership and payload rules: `src/vfs/AGENTS.md`. |
||||
|
||||
## Per-.vfs payload declarations (G-115) |
||||
|
||||
A `.vfs` folder's payload can be DECLARED in a sibling toml file and materialized by the |
||||
build - while the folder remains the operative assembly area: dropping files in by hand |
||||
needs no declaration, and materialization never clobbers what it did not itself install. |
||||
|
||||
- Declaration file: `src/vfs/<name>.vfs.toml` (sibling of `src/vfs/<name>.vfs/`, so the |
||||
declaration itself is never part of the kit payload). |
||||
- Processed by `tclsh src/make.tcl vfslibs`, and automatically as a phase of |
||||
`make.tcl bake` / `bakehouse` (a selective bake narrows to the selected kits' folders). |
||||
- A `.vfs` with NO declaration file is untouched - pure drop-in mode, exactly as before. |
||||
|
||||
### Entry format |
||||
|
||||
```toml |
||||
[payload.<entryname>] |
||||
source = "vendorlib_tcl9/win32-x86_64/tcludp1.0.13" # folder path, resolved per source_root |
||||
source_root = "src" # optional: 'src' (default) or 'packages' |
||||
target = "lib_tcl9" # optional: folder INSIDE the .vfs (default: the .vfs root) |
||||
supersedes = ["udp1.0.12"] # optional: legacy sibling folders removed from target first |
||||
replace = true # optional: clean-slate the SAME-NAMED target folder first |
||||
``` |
||||
|
||||
- `source_root = "src"` resolves against `src/` - vendor trees (`vendorlib*`, |
||||
`vendormodules*`), suite build products, any folder under src. |
||||
- `source_root = "packages"` resolves against `<projectroot>/bin/packages` - the untracked, |
||||
consent-gated punkbin lib tier populated by `tclsh src/make.tcl libfetch` (artifact |
||||
declarations + sha1 verification: `src/runtime/libpackages.toml`). This is how declared |
||||
BINARY content arrives on a clean tree without being committed (G-004 direction). |
||||
- The source folder is installed AS `<vfs>/<target>/<source-tail>/`. |
||||
- `target` must be a relative path inside the `.vfs` folder (no `..`). |
||||
- Unknown keys, missing sources, or an unparseable file fail the build naming the entry. |
||||
|
||||
### Precedence (drop-in wins) |
||||
|
||||
Materialization is punkcheck-tracked (records in `src/vfs/.punkcheck`, outside kit |
||||
payloads) using `-overwrite synced-targets`: |
||||
|
||||
1. Files the mechanism never declared are never touched (undeclared drop-ins survive |
||||
re-materialization by construction). |
||||
2. A file at a declared path is only overwritten when punkcheck's records show the |
||||
mechanism itself installed it AND it is unmodified since. A pre-existing foreign copy |
||||
(no install record) or a hand-modified installed copy is PRESERVED and reported |
||||
("changed file(s) NOT overwritten" note; per-file punkcheck skip lines). |
||||
3. The declared, explicit exceptions: `supersedes` removes the named legacy sibling |
||||
folders, and `replace = true` clean-slates the same-named package folder before |
||||
install. Use `replace`, or remove the files, to hand a collided path back to the |
||||
declaration. |
||||
|
||||
### Relationship to the former vendorlib_vfs.toml |
||||
|
||||
The per-package `src/runtime/vendorlib_vfs.toml` surface (G-037/G-139: `[install.<name>]` |
||||
entries with cross-kit target lists) was migrated into these per-.vfs files 2026-07-31 and |
||||
retired: per-kit files keep each kit's composition readable in one place, give new kits a |
||||
copy-a-sibling starting point, and are the surface later goals consume (G-141 derivation, |
||||
G-127 per-target payloads). A leftover `vendorlib_vfs.toml` is ignored with a warning. |
||||
Rationale and decision record: `goals/G-115-declarative-vfs-composition.md` (archived to |
||||
`goals/archive/` once the goal flips). |
||||
|
||||
### Demonstration kit |
||||
|
||||
`punkdeclare.vfs` + `punkdeclare.vfs.toml` demonstrate the mechanism end-to-end: the |
||||
folder in VCS carries only the boot fauxlink; its whole binary payload (tcludp from the |
||||
vendor tree, tcllibc from the packages tier) materializes from the declaration, and the |
||||
kit's smoke-require (`udp`, `tcllibc` - see `[kit.punkdeclare]` in mapvfs.toml) proves the |
||||
payload resolves inside the built artifact. `tclsh src/make.tcl bake -confirm 0 punkdeclare` |
||||
builds it (bake_default=false keeps it out of full bakes). The materialized |
||||
`punkdeclare.vfs/lib_tcl9/` tree is deliberately NOT committed (ignored in both VCS) - |
||||
reproducing it from the declaration is the point. |
||||
@ -0,0 +1,21 @@
|
||||
# Declarative payload for src/vfs/mkzipfix.vfs (G-115) - materialized by 'tclsh src/make.tcl vfslibs' |
||||
# (and automatically as a phase of 'make.tcl bake'/'bakehouse'). Entry format + the drop-in-wins |
||||
# precedence rules: src/vfs/README.md. punkcheck-tracked (records in src/vfs/.punkcheck). |
||||
# Migrated 2026-07-31 from the per-package src/runtime/vendorlib_vfs.toml surface (G-037/G-139). |
||||
|
||||
# G-139: suite-built tcllib/tcllibc from the punkbin lib tier (bin/packages input tier populated |
||||
# by 'tclsh src/make.tcl libfetch'; artifacts declared in src/runtime/libpackages.toml). |
||||
# replace=true because the old tcl9 hand-drops nested md5c + tcllibc INSIDE tcllib2.0 (same |
||||
# folder name as the new install - supersedes cannot touch it). |
||||
[payload.tcllib] |
||||
source_root = "packages" |
||||
source = "allplatforms/tcl9/tcllib2.0" |
||||
target = "lib_tcl9" |
||||
replace = true |
||||
|
||||
[payload.tcllibc] |
||||
source_root = "packages" |
||||
source = "win32-x86_64/tcl9/tcllibc" |
||||
target = "lib_tcl9" |
||||
replace = true |
||||
supersedes = ["tcllibc2.0"] |
||||
@ -0,0 +1,20 @@
|
||||
# Declarative payload for src/vfs/punk86.vfs (G-115) - materialized by 'tclsh src/make.tcl vfslibs' |
||||
# (and automatically as a phase of 'make.tcl bake'/'bakehouse'). Entry format + the drop-in-wins |
||||
# precedence rules: src/vfs/README.md. punkcheck-tracked (records in src/vfs/.punkcheck). |
||||
# Migrated 2026-07-31 from the per-package src/runtime/vendorlib_vfs.toml surface (G-037/G-139). |
||||
|
||||
# G-139: suite-built tcllib/tcllibc from the punkbin lib tier (bin/packages input tier populated |
||||
# by 'tclsh src/make.tcl libfetch'; artifacts declared in src/runtime/libpackages.toml). The tcl8 |
||||
# kits upgrade tcllib1.21 (+nested tcllibc 0.4 + md5c) -> tcllib 2.0 via supersedes. |
||||
[payload.tcllib] |
||||
source_root = "packages" |
||||
source = "allplatforms/tcl8/tcllib2.0" |
||||
target = "lib_tcl8" |
||||
replace = true |
||||
supersedes = ["tcllib1.21"] |
||||
|
||||
[payload.tcllibc] |
||||
source_root = "packages" |
||||
source = "win32-x86_64/tcl8/tcllibc" |
||||
target = "lib_tcl8" |
||||
replace = true |
||||
@ -0,0 +1,12 @@
|
||||
# Declarative payload for src/vfs/punk86bawt.vfs (G-115) - materialized by 'tclsh src/make.tcl vfslibs' |
||||
# (and automatically as a phase of 'make.tcl bake'/'bakehouse'). Entry format + the drop-in-wins |
||||
# precedence rules: src/vfs/README.md. punkcheck-tracked (records in src/vfs/.punkcheck). |
||||
# Migrated 2026-07-31 from the per-package src/runtime/vendorlib_vfs.toml surface (G-037/G-139). |
||||
|
||||
# punk86bawt carried a bare tcllibc only - it gets the tcllibc refresh and no tcllib entry |
||||
# (G-139 migration note). |
||||
[payload.tcllibc] |
||||
source_root = "packages" |
||||
source = "win32-x86_64/tcl8/tcllibc" |
||||
target = "lib_tcl8" |
||||
replace = true |
||||
@ -0,0 +1,20 @@
|
||||
# Declarative payload for src/vfs/punk8_statictwapi.vfs (G-115) - materialized by 'tclsh src/make.tcl vfslibs' |
||||
# (and automatically as a phase of 'make.tcl bake'/'bakehouse'). Entry format + the drop-in-wins |
||||
# precedence rules: src/vfs/README.md. punkcheck-tracked (records in src/vfs/.punkcheck). |
||||
# Migrated 2026-07-31 from the per-package src/runtime/vendorlib_vfs.toml surface (G-037/G-139). |
||||
|
||||
# G-139: suite-built tcllib/tcllibc from the punkbin lib tier (bin/packages input tier populated |
||||
# by 'tclsh src/make.tcl libfetch'; artifacts declared in src/runtime/libpackages.toml). The tcl8 |
||||
# kits upgrade tcllib1.21 (+nested tcllibc 0.4 + md5c) -> tcllib 2.0 via supersedes. |
||||
[payload.tcllib] |
||||
source_root = "packages" |
||||
source = "allplatforms/tcl8/tcllib2.0" |
||||
target = "lib_tcl8" |
||||
replace = true |
||||
supersedes = ["tcllib1.21"] |
||||
|
||||
[payload.tcllibc] |
||||
source_root = "packages" |
||||
source = "win32-x86_64/tcl8/tcllibc" |
||||
target = "lib_tcl8" |
||||
replace = true |
||||
@ -0,0 +1,27 @@
|
||||
# Declarative payload for src/vfs/punk8win.vfs (G-115) - materialized by 'tclsh src/make.tcl vfslibs' |
||||
# (and automatically as a phase of 'make.tcl bake'/'bakehouse'). Entry format + the drop-in-wins |
||||
# precedence rules: src/vfs/README.md. punkcheck-tracked (records in src/vfs/.punkcheck). |
||||
# Migrated 2026-07-31 from the per-package src/runtime/vendorlib_vfs.toml surface (G-037/G-139). |
||||
|
||||
# tcludp 1.0.13 (vendor tree; G-037 lineage). Cross-generation install: the tcl9-tree source |
||||
# folder ships udp1013t.dll + a pkgIndex.tcl selecting by generation, so it serves lib_tcl8 too. |
||||
[payload.tcludp] |
||||
source = "vendorlib_tcl9/win32-x86_64/tcludp1.0.13" |
||||
target = "lib_tcl8" |
||||
supersedes = ["udp1.0.12", "tcludp1.0.12"] |
||||
|
||||
# G-139: suite-built tcllib/tcllibc from the punkbin lib tier (bin/packages input tier populated |
||||
# by 'tclsh src/make.tcl libfetch'; artifacts declared in src/runtime/libpackages.toml). The tcl8 |
||||
# kits upgrade tcllib1.21 (+nested tcllibc 0.4 + md5c) -> tcllib 2.0 via supersedes. |
||||
[payload.tcllib] |
||||
source_root = "packages" |
||||
source = "allplatforms/tcl8/tcllib2.0" |
||||
target = "lib_tcl8" |
||||
replace = true |
||||
supersedes = ["tcllib1.21"] |
||||
|
||||
[payload.tcllibc] |
||||
source_root = "packages" |
||||
source = "win32-x86_64/tcl8/tcllibc" |
||||
target = "lib_tcl8" |
||||
replace = true |
||||
@ -0,0 +1,21 @@
|
||||
# Declarative payload for src/vfs/punk9cook.vfs (G-115) - materialized by 'tclsh src/make.tcl vfslibs' |
||||
# (and automatically as a phase of 'make.tcl bake'/'bakehouse'). Entry format + the drop-in-wins |
||||
# precedence rules: src/vfs/README.md. punkcheck-tracked (records in src/vfs/.punkcheck). |
||||
# Migrated 2026-07-31 from the per-package src/runtime/vendorlib_vfs.toml surface (G-037/G-139). |
||||
|
||||
# G-139: suite-built tcllib/tcllibc from the punkbin lib tier (bin/packages input tier populated |
||||
# by 'tclsh src/make.tcl libfetch'; artifacts declared in src/runtime/libpackages.toml). |
||||
# replace=true because the old tcl9 hand-drops nested md5c + tcllibc INSIDE tcllib2.0 (same |
||||
# folder name as the new install - supersedes cannot touch it). |
||||
[payload.tcllib] |
||||
source_root = "packages" |
||||
source = "allplatforms/tcl9/tcllib2.0" |
||||
target = "lib_tcl9" |
||||
replace = true |
||||
|
||||
[payload.tcllibc] |
||||
source_root = "packages" |
||||
source = "win32-x86_64/tcl9/tcllibc" |
||||
target = "lib_tcl9" |
||||
replace = true |
||||
supersedes = ["tcllibc2.0"] |
||||
@ -0,0 +1,21 @@
|
||||
# Declarative payload for src/vfs/punk9cookbasic.vfs (G-115) - materialized by 'tclsh src/make.tcl vfslibs' |
||||
# (and automatically as a phase of 'make.tcl bake'/'bakehouse'). Entry format + the drop-in-wins |
||||
# precedence rules: src/vfs/README.md. punkcheck-tracked (records in src/vfs/.punkcheck). |
||||
# Migrated 2026-07-31 from the per-package src/runtime/vendorlib_vfs.toml surface (G-037/G-139). |
||||
|
||||
# G-139: suite-built tcllib/tcllibc from the punkbin lib tier (bin/packages input tier populated |
||||
# by 'tclsh src/make.tcl libfetch'; artifacts declared in src/runtime/libpackages.toml). |
||||
# replace=true because the old tcl9 hand-drops nested md5c + tcllibc INSIDE tcllib2.0 (same |
||||
# folder name as the new install - supersedes cannot touch it). |
||||
[payload.tcllib] |
||||
source_root = "packages" |
||||
source = "allplatforms/tcl9/tcllib2.0" |
||||
target = "lib_tcl9" |
||||
replace = true |
||||
|
||||
[payload.tcllibc] |
||||
source_root = "packages" |
||||
source = "win32-x86_64/tcl9/tcllibc" |
||||
target = "lib_tcl9" |
||||
replace = true |
||||
supersedes = ["tcllibc2.0"] |
||||
@ -0,0 +1,20 @@
|
||||
# Declarative payload for src/vfs/punk9linux.vfs (G-115) - materialized by 'tclsh src/make.tcl vfslibs' |
||||
# (and automatically as a phase of 'make.tcl bake'/'bakehouse'). Entry format + the drop-in-wins |
||||
# precedence rules: src/vfs/README.md. punkcheck-tracked (records in src/vfs/.punkcheck). |
||||
# Migrated 2026-07-31 from the per-package src/runtime/vendorlib_vfs.toml surface (G-037/G-139). |
||||
|
||||
# G-139/G-140: platform-neutral tcllib plus this linux-target kit's OWN tcllibc from the |
||||
# linux-x86_64 tier (the suite_tcl90 tcllibc-linux cross build). replace retires the |
||||
# provenance-less hand-dropped tcllibc; supersedes removes the stray-named tcllibc2.0. |
||||
[payload.tcllib] |
||||
source_root = "packages" |
||||
source = "allplatforms/tcl9/tcllib2.0" |
||||
target = "lib_tcl9" |
||||
replace = true |
||||
|
||||
[payload.tcllibc] |
||||
source_root = "packages" |
||||
source = "linux-x86_64/tcl9/tcllibc" |
||||
target = "lib_tcl9" |
||||
replace = true |
||||
supersedes = ["tcllibc2.0"] |
||||
@ -0,0 +1,21 @@
|
||||
# Declarative payload for src/vfs/punk9magicsplat.vfs (G-115) - materialized by 'tclsh src/make.tcl vfslibs' |
||||
# (and automatically as a phase of 'make.tcl bake'/'bakehouse'). Entry format + the drop-in-wins |
||||
# precedence rules: src/vfs/README.md. punkcheck-tracked (records in src/vfs/.punkcheck). |
||||
# Migrated 2026-07-31 from the per-package src/runtime/vendorlib_vfs.toml surface (G-037/G-139). |
||||
|
||||
# G-139: suite-built tcllib/tcllibc from the punkbin lib tier (bin/packages input tier populated |
||||
# by 'tclsh src/make.tcl libfetch'; artifacts declared in src/runtime/libpackages.toml). |
||||
# replace=true because the old tcl9 hand-drops nested md5c + tcllibc INSIDE tcllib2.0 (same |
||||
# folder name as the new install - supersedes cannot touch it). |
||||
[payload.tcllib] |
||||
source_root = "packages" |
||||
source = "allplatforms/tcl9/tcllib2.0" |
||||
target = "lib_tcl9" |
||||
replace = true |
||||
|
||||
[payload.tcllibc] |
||||
source_root = "packages" |
||||
source = "win32-x86_64/tcl9/tcllibc" |
||||
target = "lib_tcl9" |
||||
replace = true |
||||
supersedes = ["tcllibc2.0"] |
||||
@ -0,0 +1,28 @@
|
||||
# Declarative payload for src/vfs/punk9win_for_tkruntime.vfs (G-115) - materialized by 'tclsh src/make.tcl vfslibs' |
||||
# (and automatically as a phase of 'make.tcl bake'/'bakehouse'). Entry format + the drop-in-wins |
||||
# precedence rules: src/vfs/README.md. punkcheck-tracked (records in src/vfs/.punkcheck). |
||||
# Migrated 2026-07-31 from the per-package src/runtime/vendorlib_vfs.toml surface (G-037/G-139). |
||||
|
||||
# tcludp 1.0.13 (vendor tree; G-037 lineage). Ships tcl9udp1013.dll + udp1013t.dll with a |
||||
# pkgIndex.tcl that selects by generation - the same source folder serves tcl9 and tcl8 kits. |
||||
[payload.tcludp] |
||||
source = "vendorlib_tcl9/win32-x86_64/tcludp1.0.13" |
||||
target = "lib_tcl9" |
||||
supersedes = ["udp1.0.12", "tcludp1.0.12"] |
||||
|
||||
# G-139: suite-built tcllib/tcllibc from the punkbin lib tier (bin/packages input tier populated |
||||
# by 'tclsh src/make.tcl libfetch'; artifacts declared in src/runtime/libpackages.toml). |
||||
# replace=true because the old tcl9 hand-drops nested md5c + tcllibc INSIDE tcllib2.0 (same |
||||
# folder name as the new install - supersedes cannot touch it). |
||||
[payload.tcllib] |
||||
source_root = "packages" |
||||
source = "allplatforms/tcl9/tcllib2.0" |
||||
target = "lib_tcl9" |
||||
replace = true |
||||
|
||||
[payload.tcllibc] |
||||
source_root = "packages" |
||||
source = "win32-x86_64/tcl9/tcllibc" |
||||
target = "lib_tcl9" |
||||
replace = true |
||||
supersedes = ["tcllibc2.0"] |
||||
@ -0,0 +1,28 @@
|
||||
# Declarative payload for src/vfs/punk9wintk903.vfs (G-115) - materialized by 'tclsh src/make.tcl vfslibs' |
||||
# (and automatically as a phase of 'make.tcl bake'/'bakehouse'). Entry format + the drop-in-wins |
||||
# precedence rules: src/vfs/README.md. punkcheck-tracked (records in src/vfs/.punkcheck). |
||||
# Migrated 2026-07-31 from the per-package src/runtime/vendorlib_vfs.toml surface (G-037/G-139). |
||||
|
||||
# tcludp 1.0.13 (vendor tree; G-037 lineage). Ships tcl9udp1013.dll + udp1013t.dll with a |
||||
# pkgIndex.tcl that selects by generation - the same source folder serves tcl9 and tcl8 kits. |
||||
[payload.tcludp] |
||||
source = "vendorlib_tcl9/win32-x86_64/tcludp1.0.13" |
||||
target = "lib_tcl9" |
||||
supersedes = ["udp1.0.12", "tcludp1.0.12"] |
||||
|
||||
# G-139: suite-built tcllib/tcllibc from the punkbin lib tier (bin/packages input tier populated |
||||
# by 'tclsh src/make.tcl libfetch'; artifacts declared in src/runtime/libpackages.toml). |
||||
# replace=true because the old tcl9 hand-drops nested md5c + tcllibc INSIDE tcllib2.0 (same |
||||
# folder name as the new install - supersedes cannot touch it). |
||||
[payload.tcllib] |
||||
source_root = "packages" |
||||
source = "allplatforms/tcl9/tcllib2.0" |
||||
target = "lib_tcl9" |
||||
replace = true |
||||
|
||||
[payload.tcllibc] |
||||
source_root = "packages" |
||||
source = "win32-x86_64/tcl9/tcllibc" |
||||
target = "lib_tcl9" |
||||
replace = true |
||||
supersedes = ["tcllibc2.0"] |
||||
@ -0,0 +1,28 @@
|
||||
# Declarative payload for src/vfs/punk9wintk905.vfs (G-115) - materialized by 'tclsh src/make.tcl vfslibs' |
||||
# (and automatically as a phase of 'make.tcl bake'/'bakehouse'). Entry format + the drop-in-wins |
||||
# precedence rules: src/vfs/README.md. punkcheck-tracked (records in src/vfs/.punkcheck). |
||||
# Migrated 2026-07-31 from the per-package src/runtime/vendorlib_vfs.toml surface (G-037/G-139). |
||||
|
||||
# tcludp 1.0.13 (vendor tree; G-037 lineage). Ships tcl9udp1013.dll + udp1013t.dll with a |
||||
# pkgIndex.tcl that selects by generation - the same source folder serves tcl9 and tcl8 kits. |
||||
[payload.tcludp] |
||||
source = "vendorlib_tcl9/win32-x86_64/tcludp1.0.13" |
||||
target = "lib_tcl9" |
||||
supersedes = ["udp1.0.12", "tcludp1.0.12"] |
||||
|
||||
# G-139: suite-built tcllib/tcllibc from the punkbin lib tier (bin/packages input tier populated |
||||
# by 'tclsh src/make.tcl libfetch'; artifacts declared in src/runtime/libpackages.toml). |
||||
# replace=true because the old tcl9 hand-drops nested md5c + tcllibc INSIDE tcllib2.0 (same |
||||
# folder name as the new install - supersedes cannot touch it). |
||||
[payload.tcllib] |
||||
source_root = "packages" |
||||
source = "allplatforms/tcl9/tcllib2.0" |
||||
target = "lib_tcl9" |
||||
replace = true |
||||
|
||||
[payload.tcllibc] |
||||
source_root = "packages" |
||||
source = "win32-x86_64/tcl9/tcllibc" |
||||
target = "lib_tcl9" |
||||
replace = true |
||||
supersedes = ["tcllibc2.0"] |
||||
@ -0,0 +1,28 @@
|
||||
# Declarative payload for src/vfs/punk9wintk90b2.vfs (G-115) - materialized by 'tclsh src/make.tcl vfslibs' |
||||
# (and automatically as a phase of 'make.tcl bake'/'bakehouse'). Entry format + the drop-in-wins |
||||
# precedence rules: src/vfs/README.md. punkcheck-tracked (records in src/vfs/.punkcheck). |
||||
# Migrated 2026-07-31 from the per-package src/runtime/vendorlib_vfs.toml surface (G-037/G-139). |
||||
|
||||
# tcludp 1.0.13 (vendor tree; G-037 lineage). Ships tcl9udp1013.dll + udp1013t.dll with a |
||||
# pkgIndex.tcl that selects by generation - the same source folder serves tcl9 and tcl8 kits. |
||||
[payload.tcludp] |
||||
source = "vendorlib_tcl9/win32-x86_64/tcludp1.0.13" |
||||
target = "lib_tcl9" |
||||
supersedes = ["udp1.0.12", "tcludp1.0.12"] |
||||
|
||||
# G-139: suite-built tcllib/tcllibc from the punkbin lib tier (bin/packages input tier populated |
||||
# by 'tclsh src/make.tcl libfetch'; artifacts declared in src/runtime/libpackages.toml). |
||||
# replace=true because the old tcl9 hand-drops nested md5c + tcllibc INSIDE tcllib2.0 (same |
||||
# folder name as the new install - supersedes cannot touch it). |
||||
[payload.tcllib] |
||||
source_root = "packages" |
||||
source = "allplatforms/tcl9/tcllib2.0" |
||||
target = "lib_tcl9" |
||||
replace = true |
||||
|
||||
[payload.tcllibc] |
||||
source_root = "packages" |
||||
source = "win32-x86_64/tcl9/tcllibc" |
||||
target = "lib_tcl9" |
||||
replace = true |
||||
supersedes = ["tcllibc2.0"] |
||||
@ -0,0 +1,20 @@
|
||||
# Declarative payload for src/vfs/punkdeclare.vfs (G-115) - materialized by 'tclsh src/make.tcl vfslibs' |
||||
# (and automatically as a phase of 'make.tcl bake'/'bakehouse'). Entry format + the drop-in-wins |
||||
# precedence rules: src/vfs/README.md. punkcheck-tracked (records in src/vfs/.punkcheck). |
||||
# Migrated 2026-07-31 from the per-package src/runtime/vendorlib_vfs.toml surface (G-037/G-139). |
||||
|
||||
# G-115 DEMONSTRATION: the entire binary payload of punkdeclare.vfs is DECLARED - the folder in |
||||
# VCS carries only the boot fauxlink (main.tcl -> _config/punk_main.tcl). Clean-tree |
||||
# reproduction: with lib_tcl9 absent (fresh clone, or deleted), 'tclsh src/make.tcl vfslibs' |
||||
# (or 'bake punkdeclare') rematerializes the payload from the declared sources; the kit's |
||||
# smokerequire (udp + tcllibc in mapvfs.toml) proves both binary packages resolve inside the |
||||
# built artifact. Undeclared files dropped into the folder are preserved across |
||||
# re-materialization (drop-in-wins precedence - src/vfs/README.md). |
||||
[payload.tcludp] |
||||
source = "vendorlib_tcl9/win32-x86_64/tcludp1.0.13" |
||||
target = "lib_tcl9" |
||||
|
||||
[payload.tcllibc] |
||||
source_root = "packages" |
||||
source = "win32-x86_64/tcl9/tcllibc" |
||||
target = "lib_tcl9" |
||||
Loading…
Reference in new issue