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 e3266dee..7fe7ebb8 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 @@ -775,6 +775,29 @@ proc ::punkboot::lib::mapvfs_parse {mapfile rtbase sourcefolder default_target} return [mapvfs_parse_config $mapfile $rtbase $sourcefolder $default_target] } +# Memoized front door: locate + parse once per distinct (mapfile, rtbase, +# sourcefolder, target) tuple within a make.tcl invocation (2026-08-02 +# consolidation) - the define-time kitname choices and every handler consume +# the SAME model. mapvfs_parse is pure (no output/exits), so cached and fresh +# models are interchangeable; config edits during a single run are outside the +# contract. A THROWING locate/parse is deliberately not cached: each caller's +# attempt diagnoses fresh (identical text for a persistent problem), and the +# choices computation catches its attempt while the handlers report theirs. +# The mapfile is part of the key, so a PUNK_MAPVFS_CONFIG override keys +# distinctly from the tree's own config. +namespace eval ::punkboot::lib { + variable mapvfs_model_cache [dict create] +} +proc ::punkboot::lib::mapvfs_model {rt_sourcefolder rtbase sourcefolder default_target} { + variable mapvfs_model_cache + set mapfile [mapvfs_locate $rt_sourcefolder] + set key [list $mapfile $rtbase $sourcefolder $default_target] + if {![dict exists $mapvfs_model_cache $key]} { + dict set mapvfs_model_cache $key [mapvfs_parse $mapfile $rtbase $sourcefolder $default_target] + } + return [dict get $mapvfs_model_cache $key] +} + # G-024 canonical reader: mapvfs.toml. Strict per-entry validation - a malformed # or unresolvable declaration lands in configerrors naming its table (the bake # path aborts on configerrors; missing-on-disk runtime/vfs items land in @@ -3391,27 +3414,34 @@ if {[info exists ::env(PUNKBOOT_PLAIN)] && [string is true -strict $::env(PUNKBO already verifies against the server sha1sums." } #bake and bakelist take optional trailing kit names (G-121 selective bake). - #Discoverability nicety: the configured kit names are offered as choices when - #the mapping parses at definition time - informational only (-choicerestricted - #0), so the handlers' own validation (which lists the configured names, and - #still works when the mapping cannot be parsed here) stays authoritative. + #The configured kit names + @group selectors become RESTRICTED choices when + #the mapping parses at definition time (-choicerestricted 1, 2026-08-02 - + #declaration-authoritative per the G-143 arc): dispatch rejects an unknown + #kit with the punk::args choice error (the same configured-names + #information the handler error carries), unambiguous prefixes resolve to + #canonical names, and the dry-run help mirrors the verdict. The read is + #the same memoized model the handlers consume (mapvfs_model - one parse + #per invocation). When the mapping cannot be parsed here the choices + #clause is omitted entirely (no gate) and the handlers' own validation + #remains the backstop - as it also is in PUNKBOOT_PLAIN degraded mode, + #where these definitions don't exist. #KITNAME_CHOICEPART persists as a namespace variable because the kitname #records below interpolate it at definition RESOLVE time (lazy - first #parse/usage/get_spec of the bake/bakelist ids). variable KITNAME_CHOICES [list] catch { - set _mapmodel [punkboot::lib::mapvfs_parse [punkboot::lib::mapvfs_locate [file join $::punkboot::scriptfolder runtime]] "" $::punkboot::scriptfolder $::punkboot::target_platform] - foreach _rec [punkboot::lib::mapvfs_kit_outputs $_mapmodel "" $::punkboot::scriptfolder] { + set _mapmodel [punkboot::lib::mapvfs_model [file join $::punkboot::scriptfolder runtime] [file dirname $::punkboot::scriptfolder]/bin/runtime $::punkboot::scriptfolder $::punkboot::target_platform] + foreach _rec [punkboot::lib::mapvfs_kit_outputs $_mapmodel [file dirname $::punkboot::scriptfolder]/bin/runtime $::punkboot::scriptfolder] { lappend KITNAME_CHOICES [dict get $_rec kitname] } - #G-024 group selectors join the informational choices (@) + #G-024 group selectors join the choices (@) foreach _g [dict keys [dict get $_mapmodel groups]] { lappend KITNAME_CHOICES @$_g } } variable KITNAME_CHOICEPART "" if {[llength $KITNAME_CHOICES]} { - set KITNAME_CHOICEPART " -choices [list $KITNAME_CHOICES] -choicerestricted 0" + set KITNAME_CHOICEPART " -choices [list $KITNAME_CHOICES] -choicerestricted 1" } #per-subcommand definitions: braced file-style blocks with -& record #continuations (G-045). -summary values and -help bodies are pulled from @@ -4147,7 +4177,7 @@ set ::punkboot::bake_selected_vfs [list] ;#vfs folder tails the selected set ::punkboot::bake_selected_runtimes [list] ;#unsuffixed runtime names the selected kits wrap if {$::punkboot::command eq "bake" && [llength $::punkboot::opt_kitnames]} { set _rtbase $binfolder/runtime - set _mapmodel [punkboot::lib::mapvfs_parse [punkboot::lib::mapvfs_locate $sourcefolder/runtime] $_rtbase $sourcefolder $::punkboot::target_platform] + set _mapmodel [punkboot::lib::mapvfs_model $sourcefolder/runtime $_rtbase $sourcefolder $::punkboot::target_platform] if {[llength [dict get $_mapmodel configerrors]]} { foreach _errline [dict get $_mapmodel configerrors] { puts stderr $_errline @@ -4715,7 +4745,7 @@ if {$::punkboot::command eq "check"} { } set _smoke_declared [list] if {[file exists [punkboot::lib::mapvfs_locate $sourcefolder/runtime]]} { - set _smokemodel [punkboot::lib::mapvfs_parse [punkboot::lib::mapvfs_locate $sourcefolder/runtime] [file dirname $sourcefolder]/bin/runtime $sourcefolder $::punkboot::target_platform] + set _smokemodel [punkboot::lib::mapvfs_model $sourcefolder/runtime [file dirname $sourcefolder]/bin/runtime $sourcefolder $::punkboot::target_platform] foreach _rec [punkboot::lib::mapvfs_kit_outputs $_smokemodel [file dirname $sourcefolder]/bin/runtime $sourcefolder] { if {[llength [dict get $_rec smokerequire]]} { lappend _smoke_declared "[dict get $_rec kitname] ([join [dict get $_rec smokerequire] {, }])" @@ -4932,7 +4962,7 @@ if {$::punkboot::command eq "bakelist"} { set rtfolder $rtbase/$rt_os_arch set buildfolder $sourcefolder/_build set mapfile [punkboot::lib::mapvfs_locate $sourcefolder/runtime] - set mapmodel [punkboot::lib::mapvfs_parse $mapfile $rtbase $sourcefolder $rt_default_target] + set mapmodel [punkboot::lib::mapvfs_model $sourcefolder/runtime $rtbase $sourcefolder $rt_default_target] foreach errline [dict get $mapmodel configerrors] { puts stderr $errline } @@ -6542,7 +6572,7 @@ if {$::punkboot::command in {bakehouse bake vfslibs}} { #only its own target's payload. set vfspayload_kit_targets [dict create] if {[llength $payload_files]} { - set _pmapmodel [punkboot::lib::mapvfs_parse [punkboot::lib::mapvfs_locate $sourcefolder/runtime] $binfolder/runtime $sourcefolder $::punkboot::target_platform] + set _pmapmodel [punkboot::lib::mapvfs_model $sourcefolder/runtime $binfolder/runtime $sourcefolder $::punkboot::target_platform] if {[llength [dict get $_pmapmodel configerrors]]} { puts stderr "WARNING: VFSPAYLOAD: kit-mapping config errors - per-platform (%platform%) payload derivation unavailable this run (the mapping's own gates report the errors)" } else { @@ -7139,7 +7169,7 @@ proc ::punkboot::runtime_materialization_warning {rtfolder runtime_fullname} { #store tiers this bake must look in - an entry declaring a target platform other #than the host default addresses its own bin/runtime/. set mapfile [punkboot::lib::mapvfs_locate $rt_sourcefolder] -set mapmodel [punkboot::lib::mapvfs_parse $mapfile $rtbase $sourcefolder $rt_default_target] +set mapmodel [punkboot::lib::mapvfs_model $rt_sourcefolder $rtbase $sourcefolder $rt_default_target] foreach warnline [dict get $mapmodel warnings] { puts stderr $warnline } diff --git a/src/project_layouts/vendor/punk/basic/src/make.tcl b/src/project_layouts/vendor/punk/basic/src/make.tcl index e3266dee..7fe7ebb8 100644 --- a/src/project_layouts/vendor/punk/basic/src/make.tcl +++ b/src/project_layouts/vendor/punk/basic/src/make.tcl @@ -775,6 +775,29 @@ proc ::punkboot::lib::mapvfs_parse {mapfile rtbase sourcefolder default_target} return [mapvfs_parse_config $mapfile $rtbase $sourcefolder $default_target] } +# Memoized front door: locate + parse once per distinct (mapfile, rtbase, +# sourcefolder, target) tuple within a make.tcl invocation (2026-08-02 +# consolidation) - the define-time kitname choices and every handler consume +# the SAME model. mapvfs_parse is pure (no output/exits), so cached and fresh +# models are interchangeable; config edits during a single run are outside the +# contract. A THROWING locate/parse is deliberately not cached: each caller's +# attempt diagnoses fresh (identical text for a persistent problem), and the +# choices computation catches its attempt while the handlers report theirs. +# The mapfile is part of the key, so a PUNK_MAPVFS_CONFIG override keys +# distinctly from the tree's own config. +namespace eval ::punkboot::lib { + variable mapvfs_model_cache [dict create] +} +proc ::punkboot::lib::mapvfs_model {rt_sourcefolder rtbase sourcefolder default_target} { + variable mapvfs_model_cache + set mapfile [mapvfs_locate $rt_sourcefolder] + set key [list $mapfile $rtbase $sourcefolder $default_target] + if {![dict exists $mapvfs_model_cache $key]} { + dict set mapvfs_model_cache $key [mapvfs_parse $mapfile $rtbase $sourcefolder $default_target] + } + return [dict get $mapvfs_model_cache $key] +} + # G-024 canonical reader: mapvfs.toml. Strict per-entry validation - a malformed # or unresolvable declaration lands in configerrors naming its table (the bake # path aborts on configerrors; missing-on-disk runtime/vfs items land in @@ -3391,27 +3414,34 @@ if {[info exists ::env(PUNKBOOT_PLAIN)] && [string is true -strict $::env(PUNKBO already verifies against the server sha1sums." } #bake and bakelist take optional trailing kit names (G-121 selective bake). - #Discoverability nicety: the configured kit names are offered as choices when - #the mapping parses at definition time - informational only (-choicerestricted - #0), so the handlers' own validation (which lists the configured names, and - #still works when the mapping cannot be parsed here) stays authoritative. + #The configured kit names + @group selectors become RESTRICTED choices when + #the mapping parses at definition time (-choicerestricted 1, 2026-08-02 - + #declaration-authoritative per the G-143 arc): dispatch rejects an unknown + #kit with the punk::args choice error (the same configured-names + #information the handler error carries), unambiguous prefixes resolve to + #canonical names, and the dry-run help mirrors the verdict. The read is + #the same memoized model the handlers consume (mapvfs_model - one parse + #per invocation). When the mapping cannot be parsed here the choices + #clause is omitted entirely (no gate) and the handlers' own validation + #remains the backstop - as it also is in PUNKBOOT_PLAIN degraded mode, + #where these definitions don't exist. #KITNAME_CHOICEPART persists as a namespace variable because the kitname #records below interpolate it at definition RESOLVE time (lazy - first #parse/usage/get_spec of the bake/bakelist ids). variable KITNAME_CHOICES [list] catch { - set _mapmodel [punkboot::lib::mapvfs_parse [punkboot::lib::mapvfs_locate [file join $::punkboot::scriptfolder runtime]] "" $::punkboot::scriptfolder $::punkboot::target_platform] - foreach _rec [punkboot::lib::mapvfs_kit_outputs $_mapmodel "" $::punkboot::scriptfolder] { + set _mapmodel [punkboot::lib::mapvfs_model [file join $::punkboot::scriptfolder runtime] [file dirname $::punkboot::scriptfolder]/bin/runtime $::punkboot::scriptfolder $::punkboot::target_platform] + foreach _rec [punkboot::lib::mapvfs_kit_outputs $_mapmodel [file dirname $::punkboot::scriptfolder]/bin/runtime $::punkboot::scriptfolder] { lappend KITNAME_CHOICES [dict get $_rec kitname] } - #G-024 group selectors join the informational choices (@) + #G-024 group selectors join the choices (@) foreach _g [dict keys [dict get $_mapmodel groups]] { lappend KITNAME_CHOICES @$_g } } variable KITNAME_CHOICEPART "" if {[llength $KITNAME_CHOICES]} { - set KITNAME_CHOICEPART " -choices [list $KITNAME_CHOICES] -choicerestricted 0" + set KITNAME_CHOICEPART " -choices [list $KITNAME_CHOICES] -choicerestricted 1" } #per-subcommand definitions: braced file-style blocks with -& record #continuations (G-045). -summary values and -help bodies are pulled from @@ -4147,7 +4177,7 @@ set ::punkboot::bake_selected_vfs [list] ;#vfs folder tails the selected set ::punkboot::bake_selected_runtimes [list] ;#unsuffixed runtime names the selected kits wrap if {$::punkboot::command eq "bake" && [llength $::punkboot::opt_kitnames]} { set _rtbase $binfolder/runtime - set _mapmodel [punkboot::lib::mapvfs_parse [punkboot::lib::mapvfs_locate $sourcefolder/runtime] $_rtbase $sourcefolder $::punkboot::target_platform] + set _mapmodel [punkboot::lib::mapvfs_model $sourcefolder/runtime $_rtbase $sourcefolder $::punkboot::target_platform] if {[llength [dict get $_mapmodel configerrors]]} { foreach _errline [dict get $_mapmodel configerrors] { puts stderr $_errline @@ -4715,7 +4745,7 @@ if {$::punkboot::command eq "check"} { } set _smoke_declared [list] if {[file exists [punkboot::lib::mapvfs_locate $sourcefolder/runtime]]} { - set _smokemodel [punkboot::lib::mapvfs_parse [punkboot::lib::mapvfs_locate $sourcefolder/runtime] [file dirname $sourcefolder]/bin/runtime $sourcefolder $::punkboot::target_platform] + set _smokemodel [punkboot::lib::mapvfs_model $sourcefolder/runtime [file dirname $sourcefolder]/bin/runtime $sourcefolder $::punkboot::target_platform] foreach _rec [punkboot::lib::mapvfs_kit_outputs $_smokemodel [file dirname $sourcefolder]/bin/runtime $sourcefolder] { if {[llength [dict get $_rec smokerequire]]} { lappend _smoke_declared "[dict get $_rec kitname] ([join [dict get $_rec smokerequire] {, }])" @@ -4932,7 +4962,7 @@ if {$::punkboot::command eq "bakelist"} { set rtfolder $rtbase/$rt_os_arch set buildfolder $sourcefolder/_build set mapfile [punkboot::lib::mapvfs_locate $sourcefolder/runtime] - set mapmodel [punkboot::lib::mapvfs_parse $mapfile $rtbase $sourcefolder $rt_default_target] + set mapmodel [punkboot::lib::mapvfs_model $sourcefolder/runtime $rtbase $sourcefolder $rt_default_target] foreach errline [dict get $mapmodel configerrors] { puts stderr $errline } @@ -6542,7 +6572,7 @@ if {$::punkboot::command in {bakehouse bake vfslibs}} { #only its own target's payload. set vfspayload_kit_targets [dict create] if {[llength $payload_files]} { - set _pmapmodel [punkboot::lib::mapvfs_parse [punkboot::lib::mapvfs_locate $sourcefolder/runtime] $binfolder/runtime $sourcefolder $::punkboot::target_platform] + set _pmapmodel [punkboot::lib::mapvfs_model $sourcefolder/runtime $binfolder/runtime $sourcefolder $::punkboot::target_platform] if {[llength [dict get $_pmapmodel configerrors]]} { puts stderr "WARNING: VFSPAYLOAD: kit-mapping config errors - per-platform (%platform%) payload derivation unavailable this run (the mapping's own gates report the errors)" } else { @@ -7139,7 +7169,7 @@ proc ::punkboot::runtime_materialization_warning {rtfolder runtime_fullname} { #store tiers this bake must look in - an entry declaring a target platform other #than the host default addresses its own bin/runtime/. set mapfile [punkboot::lib::mapvfs_locate $rt_sourcefolder] -set mapmodel [punkboot::lib::mapvfs_parse $mapfile $rtbase $sourcefolder $rt_default_target] +set mapmodel [punkboot::lib::mapvfs_model $rt_sourcefolder $rtbase $sourcefolder $rt_default_target] foreach warnline [dict get $mapmodel warnings] { puts stderr $warnline } 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 e3266dee..7fe7ebb8 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 @@ -775,6 +775,29 @@ proc ::punkboot::lib::mapvfs_parse {mapfile rtbase sourcefolder default_target} return [mapvfs_parse_config $mapfile $rtbase $sourcefolder $default_target] } +# Memoized front door: locate + parse once per distinct (mapfile, rtbase, +# sourcefolder, target) tuple within a make.tcl invocation (2026-08-02 +# consolidation) - the define-time kitname choices and every handler consume +# the SAME model. mapvfs_parse is pure (no output/exits), so cached and fresh +# models are interchangeable; config edits during a single run are outside the +# contract. A THROWING locate/parse is deliberately not cached: each caller's +# attempt diagnoses fresh (identical text for a persistent problem), and the +# choices computation catches its attempt while the handlers report theirs. +# The mapfile is part of the key, so a PUNK_MAPVFS_CONFIG override keys +# distinctly from the tree's own config. +namespace eval ::punkboot::lib { + variable mapvfs_model_cache [dict create] +} +proc ::punkboot::lib::mapvfs_model {rt_sourcefolder rtbase sourcefolder default_target} { + variable mapvfs_model_cache + set mapfile [mapvfs_locate $rt_sourcefolder] + set key [list $mapfile $rtbase $sourcefolder $default_target] + if {![dict exists $mapvfs_model_cache $key]} { + dict set mapvfs_model_cache $key [mapvfs_parse $mapfile $rtbase $sourcefolder $default_target] + } + return [dict get $mapvfs_model_cache $key] +} + # G-024 canonical reader: mapvfs.toml. Strict per-entry validation - a malformed # or unresolvable declaration lands in configerrors naming its table (the bake # path aborts on configerrors; missing-on-disk runtime/vfs items land in @@ -3391,27 +3414,34 @@ if {[info exists ::env(PUNKBOOT_PLAIN)] && [string is true -strict $::env(PUNKBO already verifies against the server sha1sums." } #bake and bakelist take optional trailing kit names (G-121 selective bake). - #Discoverability nicety: the configured kit names are offered as choices when - #the mapping parses at definition time - informational only (-choicerestricted - #0), so the handlers' own validation (which lists the configured names, and - #still works when the mapping cannot be parsed here) stays authoritative. + #The configured kit names + @group selectors become RESTRICTED choices when + #the mapping parses at definition time (-choicerestricted 1, 2026-08-02 - + #declaration-authoritative per the G-143 arc): dispatch rejects an unknown + #kit with the punk::args choice error (the same configured-names + #information the handler error carries), unambiguous prefixes resolve to + #canonical names, and the dry-run help mirrors the verdict. The read is + #the same memoized model the handlers consume (mapvfs_model - one parse + #per invocation). When the mapping cannot be parsed here the choices + #clause is omitted entirely (no gate) and the handlers' own validation + #remains the backstop - as it also is in PUNKBOOT_PLAIN degraded mode, + #where these definitions don't exist. #KITNAME_CHOICEPART persists as a namespace variable because the kitname #records below interpolate it at definition RESOLVE time (lazy - first #parse/usage/get_spec of the bake/bakelist ids). variable KITNAME_CHOICES [list] catch { - set _mapmodel [punkboot::lib::mapvfs_parse [punkboot::lib::mapvfs_locate [file join $::punkboot::scriptfolder runtime]] "" $::punkboot::scriptfolder $::punkboot::target_platform] - foreach _rec [punkboot::lib::mapvfs_kit_outputs $_mapmodel "" $::punkboot::scriptfolder] { + set _mapmodel [punkboot::lib::mapvfs_model [file join $::punkboot::scriptfolder runtime] [file dirname $::punkboot::scriptfolder]/bin/runtime $::punkboot::scriptfolder $::punkboot::target_platform] + foreach _rec [punkboot::lib::mapvfs_kit_outputs $_mapmodel [file dirname $::punkboot::scriptfolder]/bin/runtime $::punkboot::scriptfolder] { lappend KITNAME_CHOICES [dict get $_rec kitname] } - #G-024 group selectors join the informational choices (@) + #G-024 group selectors join the choices (@) foreach _g [dict keys [dict get $_mapmodel groups]] { lappend KITNAME_CHOICES @$_g } } variable KITNAME_CHOICEPART "" if {[llength $KITNAME_CHOICES]} { - set KITNAME_CHOICEPART " -choices [list $KITNAME_CHOICES] -choicerestricted 0" + set KITNAME_CHOICEPART " -choices [list $KITNAME_CHOICES] -choicerestricted 1" } #per-subcommand definitions: braced file-style blocks with -& record #continuations (G-045). -summary values and -help bodies are pulled from @@ -4147,7 +4177,7 @@ set ::punkboot::bake_selected_vfs [list] ;#vfs folder tails the selected set ::punkboot::bake_selected_runtimes [list] ;#unsuffixed runtime names the selected kits wrap if {$::punkboot::command eq "bake" && [llength $::punkboot::opt_kitnames]} { set _rtbase $binfolder/runtime - set _mapmodel [punkboot::lib::mapvfs_parse [punkboot::lib::mapvfs_locate $sourcefolder/runtime] $_rtbase $sourcefolder $::punkboot::target_platform] + set _mapmodel [punkboot::lib::mapvfs_model $sourcefolder/runtime $_rtbase $sourcefolder $::punkboot::target_platform] if {[llength [dict get $_mapmodel configerrors]]} { foreach _errline [dict get $_mapmodel configerrors] { puts stderr $_errline @@ -4715,7 +4745,7 @@ if {$::punkboot::command eq "check"} { } set _smoke_declared [list] if {[file exists [punkboot::lib::mapvfs_locate $sourcefolder/runtime]]} { - set _smokemodel [punkboot::lib::mapvfs_parse [punkboot::lib::mapvfs_locate $sourcefolder/runtime] [file dirname $sourcefolder]/bin/runtime $sourcefolder $::punkboot::target_platform] + set _smokemodel [punkboot::lib::mapvfs_model $sourcefolder/runtime [file dirname $sourcefolder]/bin/runtime $sourcefolder $::punkboot::target_platform] foreach _rec [punkboot::lib::mapvfs_kit_outputs $_smokemodel [file dirname $sourcefolder]/bin/runtime $sourcefolder] { if {[llength [dict get $_rec smokerequire]]} { lappend _smoke_declared "[dict get $_rec kitname] ([join [dict get $_rec smokerequire] {, }])" @@ -4932,7 +4962,7 @@ if {$::punkboot::command eq "bakelist"} { set rtfolder $rtbase/$rt_os_arch set buildfolder $sourcefolder/_build set mapfile [punkboot::lib::mapvfs_locate $sourcefolder/runtime] - set mapmodel [punkboot::lib::mapvfs_parse $mapfile $rtbase $sourcefolder $rt_default_target] + set mapmodel [punkboot::lib::mapvfs_model $sourcefolder/runtime $rtbase $sourcefolder $rt_default_target] foreach errline [dict get $mapmodel configerrors] { puts stderr $errline } @@ -6542,7 +6572,7 @@ if {$::punkboot::command in {bakehouse bake vfslibs}} { #only its own target's payload. set vfspayload_kit_targets [dict create] if {[llength $payload_files]} { - set _pmapmodel [punkboot::lib::mapvfs_parse [punkboot::lib::mapvfs_locate $sourcefolder/runtime] $binfolder/runtime $sourcefolder $::punkboot::target_platform] + set _pmapmodel [punkboot::lib::mapvfs_model $sourcefolder/runtime $binfolder/runtime $sourcefolder $::punkboot::target_platform] if {[llength [dict get $_pmapmodel configerrors]]} { puts stderr "WARNING: VFSPAYLOAD: kit-mapping config errors - per-platform (%platform%) payload derivation unavailable this run (the mapping's own gates report the errors)" } else { @@ -7139,7 +7169,7 @@ proc ::punkboot::runtime_materialization_warning {rtfolder runtime_fullname} { #store tiers this bake must look in - an entry declaring a target platform other #than the host default addresses its own bin/runtime/. set mapfile [punkboot::lib::mapvfs_locate $rt_sourcefolder] -set mapmodel [punkboot::lib::mapvfs_parse $mapfile $rtbase $sourcefolder $rt_default_target] +set mapmodel [punkboot::lib::mapvfs_model $rt_sourcefolder $rtbase $sourcefolder $rt_default_target] foreach warnline [dict get $mapmodel warnings] { puts stderr $warnline }