diff --git a/src/modules/punk/mix/#modpod-templates-999999.0a1.0/templates/project_layouts/vendor/punk/project-0.1/src/buildsuites/README.md b/src/modules/punk/mix/#modpod-templates-999999.0a1.0/templates/project_layouts/vendor/punk/project-0.1/src/buildsuites/README.md new file mode 100644 index 00000000..111d351a --- /dev/null +++ b/src/modules/punk/mix/#modpod-templates-999999.0a1.0/templates/project_layouts/vendor/punk/project-0.1/src/buildsuites/README.md @@ -0,0 +1,36 @@ +# src/buildsuites - building binary components for this project + +This folder is where a project keeps BUILDSUITES: self-describing recipes that +build Tcl runtimes and binary library packages from external upstream sources +with a pinned zig toolchain. Most projects never need one - the default ways to +obtain binary components are lighter: + +## Route 1 (default): fetch published artifacts + +`tclsh src/make.tcl libfetch` fetches library packages (e.g. tcllib + the +tcllibc critcl accelerators) as verified zip artifacts from the punkbin +artifact server's lib tier into the untracked `bin/packages//` input +tier, sha1-verified, and materializes them for the libs build. Declare the +artifacts your project consumes in `src/runtime/libpackages.toml` +([artifact.] entries with `name` = the immutable +`--r.zip` artifact filename and `target` = +`allplatforms` or a platform-dir name - see the punkshell repo's copy for a +worked example). Runtimes are fetched the same spirit via +`bin/punk-runtime.cmd`. The canonical punkbin origin is trusted by default; +other servers require the explicit `-trust-server` flag. + +## Route 2 (alternative): build in-project with a copied suite + +Copy a real suite tree from the punkshell repo's `src/buildsuites/` (e.g. +`suite_tcl90`) into this folder and retarget it: every suite is +COPY-AND-TWEAK by contract - its `sources.config` declares its sources, +products and pinned toolchain, and `tclsh src/make.tcl buildsuite +list|info|build ` discovers and drives it with no make.tcl edits +(the G-104 self-description contract). Note a tcllib/tcllibc-only suite is +genuinely light: critcl bundles its own Tcl headers, so building the +accelerators needs only a driving tclsh + zig + the tcllib/critcl checkouts - +no Tcl source tree. + +The pre-2026 `samplesuite1` sketch that used to live here (a mingw64/gcc-era +download_and_build.config outline) predated these mechanisms and was removed +when the fetch route landed (punkshell goal G-139). diff --git a/src/modules/punk/mix/#modpod-templates-999999.0a1.0/templates/project_layouts/vendor/punk/project-0.1/src/buildsuites/samplesuite1/download_and_build.config b/src/modules/punk/mix/#modpod-templates-999999.0a1.0/templates/project_layouts/vendor/punk/project-0.1/src/buildsuites/samplesuite1/download_and_build.config deleted file mode 100644 index 1e9033d5..00000000 --- a/src/modules/punk/mix/#modpod-templates-999999.0a1.0/templates/project_layouts/vendor/punk/project-0.1/src/buildsuites/samplesuite1/download_and_build.config +++ /dev/null @@ -1,57 +0,0 @@ -#======================================================= -#configuration data for download and build of buildsuite -#======================================================= -#windows build mechanism: mingw64 -ucrt64 gcc -#other platforms build mechanism: gcc - - - -#------------------------------------------------------- -set buildprefix /vendorbuild/samplesuite1 -set basemakeflags [list -j 2] -set baseconfigflags [list --enable-64bit --prefix=$buildprefix] -set repofolder ~/.fossils -#------------------------------------------------------- - - - - - -SOURCEDOWNLOAD -project tcl\ - -mechanism fossil\ - -localrepo tcl.fossil\ - -branch core-8\ - -remote https://core.tcl-lang.org/tcl - -#etc. -#SOURCEDOWNLOAD tk... -#SOURCEDOWNLOAD thread... - -#SOURCEDOWNLOAD -project critcl\ - -mechanism git\ - -branch master\ - -remote http://github.com/andreas-kupries/critcl - -#SOURCEDOWNLOAD -project tclbench\ - -mechanism fossil\ - -remote https://core.tcl-lang.org/tclbench - -#CONFIGSTART tcl /win - -#CONFIGSTART tk /win -#EXTRACONFIG tk --with-tcl=$buildprefix/lib --with-tclinclude=$buildprefix/include - - -#CONFIGSTART thread ??? -#EXTRACONFIG thread --with-tcl=$buildprefix/lib --with-tclinclude=$buildprefix/include - - -#SOURCEDOWNLOAD -project zint\ - -mechanism git\ - -branch master\ - -remote https://git.code.sf.net/p/zint/code - - - - - diff --git a/src/modules/punk/mix/#modpod-templates-999999.0a1.0/templates/project_layouts/vendor/punk/project-0.1/src/buildsuites/samplesuite1/tcl/empty_project_source.txt b/src/modules/punk/mix/#modpod-templates-999999.0a1.0/templates/project_layouts/vendor/punk/project-0.1/src/buildsuites/samplesuite1/tcl/empty_project_source.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/src/modules/punk/mix/#modpod-templates-999999.0a1.0/templates/project_layouts/vendor/punk/project-0.1/src/buildsuites/samplesuite1/tk/empty_project_source.txt b/src/modules/punk/mix/#modpod-templates-999999.0a1.0/templates/project_layouts/vendor/punk/project-0.1/src/buildsuites/samplesuite1/tk/empty_project_source.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/src/modules/punk/mix/#modpod-templates-999999.0a1.0/templates/project_layouts/vendor/punk/project-0.1/src/make.tcl b/src/modules/punk/mix/#modpod-templates-999999.0a1.0/templates/project_layouts/vendor/punk/project-0.1/src/make.tcl index 75e7391e..a55eda23 100644 --- a/src/modules/punk/mix/#modpod-templates-999999.0a1.0/templates/project_layouts/vendor/punk/project-0.1/src/make.tcl +++ b/src/modules/punk/mix/#modpod-templates-999999.0a1.0/templates/project_layouts/vendor/punk/project-0.1/src/make.tcl @@ -2132,8 +2132,8 @@ proc ::punkboot::punkboot_gethelp {args} { append h " - update the src/vendormodules based on src/vendormodules/include_modules.config" \n \n append h " - update the src/vendorlib based on src/vendorlib/config.toml (todo)" \n \n append h " $scriptname vfslibs" \n - append h " - propagate declared vendored platform-library packages into kit vfs lib_tcl trees" \n - append h " - declarations (per-package per-kit, with superseded-version removal) live in src/runtime/vendorlib_vfs.toml" \n + append h " - propagate declared platform-library packages (vendored src/ or bin/packages tier) into kit vfs lib_tcl trees" \n + append h " - declarations (per-package per-kit, with superseded-version removal + clean-slate replace) live in src/runtime/vendorlib_vfs.toml" \n append h " - also runs automatically as a phase of '$scriptname bake' (and therefore of '$scriptname bakehouse')" \n \n append h " $scriptname libfetch ?-serverurl ? ?-trust-server? ?-force?" \n append h " - fetch declared punkbin lib-tier library artifacts (src/runtime/libpackages.toml) into bin/packages/" \n @@ -2327,7 +2327,7 @@ DIAGRAM 2 - KIT ASSEMBLY DETAIL (the 'make.tcl bake' stage; incl. vfslibs phase) running shell still holds the old exe [K5] -LIBRARY-ARTIFACT FETCH (G-139; input tier so far - lib_tcl/kit consumption follows) +LIBRARY-ARTIFACT FETCH + CONSUMPTION (G-139) ---------------------------------------------------------------------------- src/runtime/libpackages.toml which punkbin LIB-TIER artifacts this checkout @@ -2345,6 +2345,15 @@ LIBRARY-ARTIFACT FETCH (G-139; input tier so far - lib_tcl/kit consumption fo bin/packages//tcl// materialized installed-shape trees, self-describing via their embedded punkbin-artifact.toml records + | + | consumption (two lanes, both punkcheck-tracked): + | PACKAGES_tcl phase of modules/libs/packages/bakehouse + | -> lib_tcl/allplatforms + lib_tcl/; + | vfslibs entries with source_root = "packages" + | -> declared kit vfs lib_tcl trees (see DIAGRAM 2) + v + lib_tcl/... + src/vfs/.vfs/lib_tcl/... (embedded records ride along + into deployed trees and baked kit payloads) KEY / NOTES @@ -2548,7 +2557,7 @@ if {[info exists ::env(PUNKBOOT_PLAIN)] && [string is true -strict $::env(PUNKBO libs "Build pkgIndex.tcl libraries from src/lib, src/vendorlib etc into /lib etc" bake "Assemble kit/zipkit executables from promoted payload (src/vfs) and runtimes into /bin" bakelist "List the kit outputs configured in src/runtime/mapvfs.config: type, runtime/vfs presence, deployed state" - vfslibs "Propagate declared vendored platform-library packages into kit vfs lib_tcl trees" + vfslibs "Propagate declared platform-library packages (vendored or bin/packages tier) into kit vfs lib_tcl trees" bin "Install executables from src/bin into /bin, then build kits as for bake" vendorupdate "Update src/vendormodules based on src/vendormodules/include_modules.config" libfetch "Fetch declared punkbin lib-tier library artifacts into bin/packages/ (sha1-verified) and materialize the package trees" @@ -2648,10 +2657,14 @@ if {[info exists ::env(PUNKBOOT_PLAIN)] && [string is true -strict $::env(PUNKBO only - never builds." vfslibs " - Propagate declared vendored platform-library packages into kit vfs - lib_tcl trees. - Declarations (per-package per-kit, with superseded-version removal) - live in src/runtime/vendorlib_vfs.toml. + Propagate declared platform-library packages into kit vfs + lib_tcl trees - from vendored src/ folders (source_root + 'src', the default) or from the bin/packages punkbin lib-tier + input (source_root 'packages', populated by 'make.tcl + libfetch' - G-139). + Declarations (per-package per-kit, with superseded-version + removal and clean-slate same-name 'replace') live in + src/runtime/vendorlib_vfs.toml. Also runs automatically as a phase of 'make.tcl bake' (and therefore of 'make.tcl bakehouse'); this standalone narrowing serves quick iteration on the declarations." @@ -2672,7 +2685,12 @@ if {[info exists ::env(PUNKBOOT_PLAIN)] && [string is true -strict $::env(PUNKBO (never an interactive prompt - unattended runs stay unattended). A file:// origin is supported for local mirrors/fixtures. Transport for http(s): Tcl http+tls when loadable, else curl, - else PowerShell (windows)." + else PowerShell (windows). + Isolation seams (env-only): PUNK_LIBFETCH_CONFIG points at an + alternate declarations file and PUNK_LIBFETCH_PACKAGES at an + alternate tier root - fixture/test runs leave the real + declarations and bin/packages untouched. Neither bypasses the + -trust-server consent gate." bin " Install executables from src/bin to /bin, then check vfs @@ -5273,6 +5291,20 @@ if {$::punkboot::command eq "libfetch"} { } set libfetch_config $sourcefolder/runtime/libpackages.toml + set libfetch_packagesroot $projectroot/bin/packages + #Isolation seams (env-only, the PUNK_RUNTIME_PLATFORM idiom): an alternate + #declarations file and an alternate tier root, so fixture-driven runs (the + #shell/testsuites/punkexe/maketcllibfetch.test characterization suite, + #local-mirror experiments) never read the real declarations or write the + #real bin/packages tier. The server-trust gate below is deliberately NOT + #seam-bypassable - fixtures consent with -trust-server like any other + #non-canonical origin. + if {[info exists ::env(PUNK_LIBFETCH_CONFIG)] && $::env(PUNK_LIBFETCH_CONFIG) ne ""} { + set libfetch_config [file normalize $::env(PUNK_LIBFETCH_CONFIG)] + } + if {[info exists ::env(PUNK_LIBFETCH_PACKAGES)] && $::env(PUNK_LIBFETCH_PACKAGES) ne ""} { + set libfetch_packagesroot [file normalize $::env(PUNK_LIBFETCH_PACKAGES)] + } #Canonical origin: the punkbin raw-file base (the punk-runtime.cmd #convention; lib tier addressed as /lib//...). #Server-trust consent (G-139, the G-123 posture): the canonical origin @@ -5355,7 +5387,7 @@ if {$::punkboot::command eq "libfetch"} { puts stderr "$A(BAD)LIBFETCH: artifact.$aname name '$artifact' does not match -tcl-r.zip$A(RST)" exit 3 } - set tierdir $projectroot/bin/packages/$target + set tierdir $libfetch_packagesroot/$target file mkdir $tierdir #server truth per target: lib//sha1sums.txt (fetched once per #run per target; the local copy in the tier mirrors the punk-runtime @@ -5492,7 +5524,7 @@ if {$::punkboot::command eq "libfetch"} { puts stderr "$A(BAD)LIBFETCH: FAILED - one or more declared artifacts could not be fetched/verified/materialized (see above)$A(RST)" exit 3 } - puts stdout "LIBFETCH: done ([llength $libfetch_actions] action(s)) -> $projectroot/bin/packages" + puts stdout "LIBFETCH: done ([llength $libfetch_actions] action(s)) -> $libfetch_packagesroot" } flush stdout ::exit 0 diff --git a/src/project_layouts/vendor/punk/basic/src/make.tcl b/src/project_layouts/vendor/punk/basic/src/make.tcl index 75e7391e..a55eda23 100644 --- a/src/project_layouts/vendor/punk/basic/src/make.tcl +++ b/src/project_layouts/vendor/punk/basic/src/make.tcl @@ -2132,8 +2132,8 @@ proc ::punkboot::punkboot_gethelp {args} { append h " - update the src/vendormodules based on src/vendormodules/include_modules.config" \n \n append h " - update the src/vendorlib based on src/vendorlib/config.toml (todo)" \n \n append h " $scriptname vfslibs" \n - append h " - propagate declared vendored platform-library packages into kit vfs lib_tcl trees" \n - append h " - declarations (per-package per-kit, with superseded-version removal) live in src/runtime/vendorlib_vfs.toml" \n + append h " - propagate declared platform-library packages (vendored src/ or bin/packages tier) into kit vfs lib_tcl trees" \n + append h " - declarations (per-package per-kit, with superseded-version removal + clean-slate replace) live in src/runtime/vendorlib_vfs.toml" \n append h " - also runs automatically as a phase of '$scriptname bake' (and therefore of '$scriptname bakehouse')" \n \n append h " $scriptname libfetch ?-serverurl ? ?-trust-server? ?-force?" \n append h " - fetch declared punkbin lib-tier library artifacts (src/runtime/libpackages.toml) into bin/packages/" \n @@ -2327,7 +2327,7 @@ DIAGRAM 2 - KIT ASSEMBLY DETAIL (the 'make.tcl bake' stage; incl. vfslibs phase) running shell still holds the old exe [K5] -LIBRARY-ARTIFACT FETCH (G-139; input tier so far - lib_tcl/kit consumption follows) +LIBRARY-ARTIFACT FETCH + CONSUMPTION (G-139) ---------------------------------------------------------------------------- src/runtime/libpackages.toml which punkbin LIB-TIER artifacts this checkout @@ -2345,6 +2345,15 @@ LIBRARY-ARTIFACT FETCH (G-139; input tier so far - lib_tcl/kit consumption fo bin/packages//tcl// materialized installed-shape trees, self-describing via their embedded punkbin-artifact.toml records + | + | consumption (two lanes, both punkcheck-tracked): + | PACKAGES_tcl phase of modules/libs/packages/bakehouse + | -> lib_tcl/allplatforms + lib_tcl/; + | vfslibs entries with source_root = "packages" + | -> declared kit vfs lib_tcl trees (see DIAGRAM 2) + v + lib_tcl/... + src/vfs/.vfs/lib_tcl/... (embedded records ride along + into deployed trees and baked kit payloads) KEY / NOTES @@ -2548,7 +2557,7 @@ if {[info exists ::env(PUNKBOOT_PLAIN)] && [string is true -strict $::env(PUNKBO libs "Build pkgIndex.tcl libraries from src/lib, src/vendorlib etc into /lib etc" bake "Assemble kit/zipkit executables from promoted payload (src/vfs) and runtimes into /bin" bakelist "List the kit outputs configured in src/runtime/mapvfs.config: type, runtime/vfs presence, deployed state" - vfslibs "Propagate declared vendored platform-library packages into kit vfs lib_tcl trees" + vfslibs "Propagate declared platform-library packages (vendored or bin/packages tier) into kit vfs lib_tcl trees" bin "Install executables from src/bin into /bin, then build kits as for bake" vendorupdate "Update src/vendormodules based on src/vendormodules/include_modules.config" libfetch "Fetch declared punkbin lib-tier library artifacts into bin/packages/ (sha1-verified) and materialize the package trees" @@ -2648,10 +2657,14 @@ if {[info exists ::env(PUNKBOOT_PLAIN)] && [string is true -strict $::env(PUNKBO only - never builds." vfslibs " - Propagate declared vendored platform-library packages into kit vfs - lib_tcl trees. - Declarations (per-package per-kit, with superseded-version removal) - live in src/runtime/vendorlib_vfs.toml. + Propagate declared platform-library packages into kit vfs + lib_tcl trees - from vendored src/ folders (source_root + 'src', the default) or from the bin/packages punkbin lib-tier + input (source_root 'packages', populated by 'make.tcl + libfetch' - G-139). + Declarations (per-package per-kit, with superseded-version + removal and clean-slate same-name 'replace') live in + src/runtime/vendorlib_vfs.toml. Also runs automatically as a phase of 'make.tcl bake' (and therefore of 'make.tcl bakehouse'); this standalone narrowing serves quick iteration on the declarations." @@ -2672,7 +2685,12 @@ if {[info exists ::env(PUNKBOOT_PLAIN)] && [string is true -strict $::env(PUNKBO (never an interactive prompt - unattended runs stay unattended). A file:// origin is supported for local mirrors/fixtures. Transport for http(s): Tcl http+tls when loadable, else curl, - else PowerShell (windows)." + else PowerShell (windows). + Isolation seams (env-only): PUNK_LIBFETCH_CONFIG points at an + alternate declarations file and PUNK_LIBFETCH_PACKAGES at an + alternate tier root - fixture/test runs leave the real + declarations and bin/packages untouched. Neither bypasses the + -trust-server consent gate." bin " Install executables from src/bin to /bin, then check vfs @@ -5273,6 +5291,20 @@ if {$::punkboot::command eq "libfetch"} { } set libfetch_config $sourcefolder/runtime/libpackages.toml + set libfetch_packagesroot $projectroot/bin/packages + #Isolation seams (env-only, the PUNK_RUNTIME_PLATFORM idiom): an alternate + #declarations file and an alternate tier root, so fixture-driven runs (the + #shell/testsuites/punkexe/maketcllibfetch.test characterization suite, + #local-mirror experiments) never read the real declarations or write the + #real bin/packages tier. The server-trust gate below is deliberately NOT + #seam-bypassable - fixtures consent with -trust-server like any other + #non-canonical origin. + if {[info exists ::env(PUNK_LIBFETCH_CONFIG)] && $::env(PUNK_LIBFETCH_CONFIG) ne ""} { + set libfetch_config [file normalize $::env(PUNK_LIBFETCH_CONFIG)] + } + if {[info exists ::env(PUNK_LIBFETCH_PACKAGES)] && $::env(PUNK_LIBFETCH_PACKAGES) ne ""} { + set libfetch_packagesroot [file normalize $::env(PUNK_LIBFETCH_PACKAGES)] + } #Canonical origin: the punkbin raw-file base (the punk-runtime.cmd #convention; lib tier addressed as /lib//...). #Server-trust consent (G-139, the G-123 posture): the canonical origin @@ -5355,7 +5387,7 @@ if {$::punkboot::command eq "libfetch"} { puts stderr "$A(BAD)LIBFETCH: artifact.$aname name '$artifact' does not match -tcl-r.zip$A(RST)" exit 3 } - set tierdir $projectroot/bin/packages/$target + set tierdir $libfetch_packagesroot/$target file mkdir $tierdir #server truth per target: lib//sha1sums.txt (fetched once per #run per target; the local copy in the tier mirrors the punk-runtime @@ -5492,7 +5524,7 @@ if {$::punkboot::command eq "libfetch"} { puts stderr "$A(BAD)LIBFETCH: FAILED - one or more declared artifacts could not be fetched/verified/materialized (see above)$A(RST)" exit 3 } - puts stdout "LIBFETCH: done ([llength $libfetch_actions] action(s)) -> $projectroot/bin/packages" + puts stdout "LIBFETCH: done ([llength $libfetch_actions] action(s)) -> $libfetch_packagesroot" } flush stdout ::exit 0 diff --git a/src/project_layouts/vendor/punk/project-0.1/src/make.tcl b/src/project_layouts/vendor/punk/project-0.1/src/make.tcl index 75e7391e..a55eda23 100644 --- a/src/project_layouts/vendor/punk/project-0.1/src/make.tcl +++ b/src/project_layouts/vendor/punk/project-0.1/src/make.tcl @@ -2132,8 +2132,8 @@ proc ::punkboot::punkboot_gethelp {args} { append h " - update the src/vendormodules based on src/vendormodules/include_modules.config" \n \n append h " - update the src/vendorlib based on src/vendorlib/config.toml (todo)" \n \n append h " $scriptname vfslibs" \n - append h " - propagate declared vendored platform-library packages into kit vfs lib_tcl trees" \n - append h " - declarations (per-package per-kit, with superseded-version removal) live in src/runtime/vendorlib_vfs.toml" \n + append h " - propagate declared platform-library packages (vendored src/ or bin/packages tier) into kit vfs lib_tcl trees" \n + append h " - declarations (per-package per-kit, with superseded-version removal + clean-slate replace) live in src/runtime/vendorlib_vfs.toml" \n append h " - also runs automatically as a phase of '$scriptname bake' (and therefore of '$scriptname bakehouse')" \n \n append h " $scriptname libfetch ?-serverurl ? ?-trust-server? ?-force?" \n append h " - fetch declared punkbin lib-tier library artifacts (src/runtime/libpackages.toml) into bin/packages/" \n @@ -2327,7 +2327,7 @@ DIAGRAM 2 - KIT ASSEMBLY DETAIL (the 'make.tcl bake' stage; incl. vfslibs phase) running shell still holds the old exe [K5] -LIBRARY-ARTIFACT FETCH (G-139; input tier so far - lib_tcl/kit consumption follows) +LIBRARY-ARTIFACT FETCH + CONSUMPTION (G-139) ---------------------------------------------------------------------------- src/runtime/libpackages.toml which punkbin LIB-TIER artifacts this checkout @@ -2345,6 +2345,15 @@ LIBRARY-ARTIFACT FETCH (G-139; input tier so far - lib_tcl/kit consumption fo bin/packages//tcl// materialized installed-shape trees, self-describing via their embedded punkbin-artifact.toml records + | + | consumption (two lanes, both punkcheck-tracked): + | PACKAGES_tcl phase of modules/libs/packages/bakehouse + | -> lib_tcl/allplatforms + lib_tcl/; + | vfslibs entries with source_root = "packages" + | -> declared kit vfs lib_tcl trees (see DIAGRAM 2) + v + lib_tcl/... + src/vfs/.vfs/lib_tcl/... (embedded records ride along + into deployed trees and baked kit payloads) KEY / NOTES @@ -2548,7 +2557,7 @@ if {[info exists ::env(PUNKBOOT_PLAIN)] && [string is true -strict $::env(PUNKBO libs "Build pkgIndex.tcl libraries from src/lib, src/vendorlib etc into /lib etc" bake "Assemble kit/zipkit executables from promoted payload (src/vfs) and runtimes into /bin" bakelist "List the kit outputs configured in src/runtime/mapvfs.config: type, runtime/vfs presence, deployed state" - vfslibs "Propagate declared vendored platform-library packages into kit vfs lib_tcl trees" + vfslibs "Propagate declared platform-library packages (vendored or bin/packages tier) into kit vfs lib_tcl trees" bin "Install executables from src/bin into /bin, then build kits as for bake" vendorupdate "Update src/vendormodules based on src/vendormodules/include_modules.config" libfetch "Fetch declared punkbin lib-tier library artifacts into bin/packages/ (sha1-verified) and materialize the package trees" @@ -2648,10 +2657,14 @@ if {[info exists ::env(PUNKBOOT_PLAIN)] && [string is true -strict $::env(PUNKBO only - never builds." vfslibs " - Propagate declared vendored platform-library packages into kit vfs - lib_tcl trees. - Declarations (per-package per-kit, with superseded-version removal) - live in src/runtime/vendorlib_vfs.toml. + Propagate declared platform-library packages into kit vfs + lib_tcl trees - from vendored src/ folders (source_root + 'src', the default) or from the bin/packages punkbin lib-tier + input (source_root 'packages', populated by 'make.tcl + libfetch' - G-139). + Declarations (per-package per-kit, with superseded-version + removal and clean-slate same-name 'replace') live in + src/runtime/vendorlib_vfs.toml. Also runs automatically as a phase of 'make.tcl bake' (and therefore of 'make.tcl bakehouse'); this standalone narrowing serves quick iteration on the declarations." @@ -2672,7 +2685,12 @@ if {[info exists ::env(PUNKBOOT_PLAIN)] && [string is true -strict $::env(PUNKBO (never an interactive prompt - unattended runs stay unattended). A file:// origin is supported for local mirrors/fixtures. Transport for http(s): Tcl http+tls when loadable, else curl, - else PowerShell (windows)." + else PowerShell (windows). + Isolation seams (env-only): PUNK_LIBFETCH_CONFIG points at an + alternate declarations file and PUNK_LIBFETCH_PACKAGES at an + alternate tier root - fixture/test runs leave the real + declarations and bin/packages untouched. Neither bypasses the + -trust-server consent gate." bin " Install executables from src/bin to /bin, then check vfs @@ -5273,6 +5291,20 @@ if {$::punkboot::command eq "libfetch"} { } set libfetch_config $sourcefolder/runtime/libpackages.toml + set libfetch_packagesroot $projectroot/bin/packages + #Isolation seams (env-only, the PUNK_RUNTIME_PLATFORM idiom): an alternate + #declarations file and an alternate tier root, so fixture-driven runs (the + #shell/testsuites/punkexe/maketcllibfetch.test characterization suite, + #local-mirror experiments) never read the real declarations or write the + #real bin/packages tier. The server-trust gate below is deliberately NOT + #seam-bypassable - fixtures consent with -trust-server like any other + #non-canonical origin. + if {[info exists ::env(PUNK_LIBFETCH_CONFIG)] && $::env(PUNK_LIBFETCH_CONFIG) ne ""} { + set libfetch_config [file normalize $::env(PUNK_LIBFETCH_CONFIG)] + } + if {[info exists ::env(PUNK_LIBFETCH_PACKAGES)] && $::env(PUNK_LIBFETCH_PACKAGES) ne ""} { + set libfetch_packagesroot [file normalize $::env(PUNK_LIBFETCH_PACKAGES)] + } #Canonical origin: the punkbin raw-file base (the punk-runtime.cmd #convention; lib tier addressed as /lib//...). #Server-trust consent (G-139, the G-123 posture): the canonical origin @@ -5355,7 +5387,7 @@ if {$::punkboot::command eq "libfetch"} { puts stderr "$A(BAD)LIBFETCH: artifact.$aname name '$artifact' does not match -tcl-r.zip$A(RST)" exit 3 } - set tierdir $projectroot/bin/packages/$target + set tierdir $libfetch_packagesroot/$target file mkdir $tierdir #server truth per target: lib//sha1sums.txt (fetched once per #run per target; the local copy in the tier mirrors the punk-runtime @@ -5492,7 +5524,7 @@ if {$::punkboot::command eq "libfetch"} { puts stderr "$A(BAD)LIBFETCH: FAILED - one or more declared artifacts could not be fetched/verified/materialized (see above)$A(RST)" exit 3 } - puts stdout "LIBFETCH: done ([llength $libfetch_actions] action(s)) -> $projectroot/bin/packages" + puts stdout "LIBFETCH: done ([llength $libfetch_actions] action(s)) -> $libfetch_packagesroot" } flush stdout ::exit 0