From d2f7dc6f0e4464646e11769a24a13364f15f82d4 Mon Sep 17 00:00:00 2001 From: Julian Noble Date: Mon, 27 Jul 2026 13:56:58 +1000 Subject: [PATCH] make.tcl-generated outputs: punkboot::utils 0.5.0 propagation (bootsupport + _vfscommon) + layout make.tcl sync Batched punkcheck-managed build outputs from make.tcl modules/bootsupport/ vfscommonupdate for the G-133 change-set: bootsupport and _vfscommon.vfs gain utils-0.5.0.tm (0.4.0 pruned), thin-layout make.tcl copies and the modpod templates payload re-synced. Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com --- .../modules/punk/mix/templates-0.2.0.tm | Bin 298985 -> 306405 bytes .../modules/punkboot/utils-0.4.0.tm | 352 -------- .../modules/punkboot/utils-0.5.0.tm | 753 ++++++++++++++++++ .../vendor/punk/project-0.1/src/make.tcl | 229 +++++- .../vendor/punk/basic/src/make.tcl | 229 +++++- .../vendor/punk/project-0.1/src/make.tcl | 229 +++++- .../modules/punk/mix/templates-0.2.0.tm | Bin 298985 -> 306405 bytes .../modules/punkboot/utils-0.4.0.tm | 352 -------- .../modules/punkboot/utils-0.5.0.tm | 753 ++++++++++++++++++ 9 files changed, 2145 insertions(+), 752 deletions(-) delete mode 100644 src/bootsupport/modules/punkboot/utils-0.4.0.tm create mode 100644 src/bootsupport/modules/punkboot/utils-0.5.0.tm delete mode 100644 src/vfs/_vfscommon.vfs/modules/punkboot/utils-0.4.0.tm create mode 100644 src/vfs/_vfscommon.vfs/modules/punkboot/utils-0.5.0.tm diff --git a/src/bootsupport/modules/punk/mix/templates-0.2.0.tm b/src/bootsupport/modules/punk/mix/templates-0.2.0.tm index 839bb06d5e239bfd7db6ce4525f6749d225ff203..96b4ab8f0e7b3d065db83c0368291fad39b81149 100644 GIT binary patch delta 126104 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°{avQmc($l$Y8Jt3H3C9kvNSgY0w{xV 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

* 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.txt -# -# Please consider using a BSD or MIT style license for greatest compatibility with the Tcl ecosystem. -# Code using preferred Tcl licenses can be eligible for inclusion in Tcllib, Tklib and the punk package repository. -# ++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ -# (C) 2023 -# -# @@ Meta Begin -# Application punkboot::utils 0.4.0 -# Meta platform tcl -# Meta license BSD -# @@ Meta End - - - -# ++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ -## Requirements -##e.g package require frobz -package require Tcl 8.6- - - -# ++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ -namespace eval punkboot::utils { - variable version 0.1.0 - namespace export parse_punkproject_version read_punkproject_version read_changelog_latest_version vcs_dirty_warnings vfs_boot_library_report - - - namespace eval argdoc { - lappend PUNKARGS [list { - @id -id ::punkboot::utils::parse_punkproject_version - @cmd -name "::punkboot::utils::parse_punkproject_version"\ - -summary\ - "Parse the [project] version from TOML content string"\ - -help\ - "Scans TOML content for the [project] section and returns - the value of the version key as a string. Returns an empty - string if the section or key is not found." - @leaders - content -type string -optional 0 -help\ - "TOML content string to parse" - }] - } - proc parse_punkproject_version {content} { - set in_project 0 - foreach line [split $content \n] { - set trimmed [string trim $line] - if {[string index $trimmed 0] eq {[} && [string index $trimmed end] eq {]}} { - set in_project [expr {$trimmed eq "\[project\]"}] - continue - } - if {$in_project && [regexp {^version\s*=\s*"([^"]+)"} $trimmed _ v]} { - return $v - } - } - return "" - } - - - namespace eval argdoc { - lappend PUNKARGS [list { - @id -id ::punkboot::utils::read_punkproject_version - @cmd -name "::punkboot::utils::read_punkproject_version"\ - -summary\ - "Read the [project] version from a TOML file"\ - -help\ - "Reads the file at tomlfile and returns the [project] - version value as a string. Returns an empty string if the - file does not exist or the version is not found." - @leaders - tomlfile -type string -optional 0 -help\ - "Path to the TOML file to read" - }] - } - proc read_punkproject_version {tomlfile} { - if {![file exists $tomlfile]} {return ""} - set fh [open $tomlfile r] - try { - set content [read $fh] - } finally { - close $fh - } - return [::punkboot::utils::parse_punkproject_version $content] - } - - - namespace eval argdoc { - lappend PUNKARGS [list { - @id -id ::punkboot::utils::read_changelog_latest_version - @cmd -name "::punkboot::utils::read_changelog_latest_version"\ - -summary\ - "Read the latest ## [X.Y.Z] version header from a changelog file"\ - -help\ - "Scans the changelog file from the top and returns the - version string from the first '## [X.Y.Z]' header line. - Returns an empty string if the file does not exist or no - matching header is found." - @leaders - changelogfile -type string -optional 0 -help\ - "Path to the changelog file to read" - }] - } - proc read_changelog_latest_version {changelogfile} { - if {![file exists $changelogfile]} {return ""} - set fh [open $changelogfile r] - try { - set content [read $fh] - } finally { - close $fh - } - foreach line [split $content \n] { - if {[regexp {^##\s*\[([0-9][^\]]*)\]} $line _ v]} { - return $v - } - } - return "" - } - - - namespace eval argdoc { - lappend PUNKARGS [list { - @id -id ::punkboot::utils::vcs_dirty_warnings - @cmd -name "::punkboot::utils::vcs_dirty_warnings"\ - -summary\ - "Warning lines for uncommitted VCS changes above a path"\ - -help\ - "Walks up from path to the nearest fossil and/or git root and - returns warning lines describing uncommitted changes. - Artifacts built from a dirty source tree have no committed - provenance - callers such as make.tcl vendorupdate use this - to flag source projects that should be committed first. - - checkedrootsvar names a dict variable in the caller's scope - used to report each VCS root at most once across calls. - label, if supplied, is prefixed into each warning to name - the calling operation (e.g. 'vendorupdate'). - scope, if supplied, is a subpath relative to path; only - uncommitted changes under that subpath are counted (e.g. - scope 'src' warns about dirty src/ while ignoring dirt - elsewhere in the checkout). - - Returns an empty list if the path is clean, unversioned, - missing, already reported, or state cannot be determined." - @leaders - path -type string -optional 0 -help\ - "Path to check; the nearest enclosing fossil/git root is examined" - checkedrootsvar -type string -optional 0 -help\ - "Name of a dict variable in the caller's scope for dedupe across calls" - label -type string -optional 1 -default "" -help\ - "Operation name prefixed into warnings" - scope -type string -optional 1 -default "" -help\ - "Subpath relative to path limiting which changes count; empty = whole checkout" - }] - } - proc vcs_dirty_warnings {path checkedrootsvar {label ""} {scope ""}} { - upvar 1 $checkedrootsvar checkedroots - if {![info exists checkedroots]} {set checkedroots [dict create]} - if {$label ne ""} {set label "$label "} - set warnings [list] - set dir [file normalize $path] - if {![file isdirectory $dir]} { - return $warnings ;#missing path - not this proc's business to report - } - set scopeabs "" - set scopedesc "" ;#included in warning text when scoped - if {$scope ne ""} { - set scopeabs [file normalize [file join $dir $scope]] - set scopedesc " under [string trimright $scope /]/" - } - set fossilroot "" - set gitroot "" - while {1} { - if {$fossilroot eq "" && ([file exists [file join $dir .fslckout]] || [file exists [file join $dir _FOSSIL_]])} { - set fossilroot $dir - } - if {$gitroot eq "" && [file exists [file join $dir .git]]} { - set gitroot $dir - } - if {$fossilroot ne "" || $gitroot ne ""} { - break ;#report at the nearest VCS root(s); a dual git+fossil root is caught in one pass - } - set parent [file dirname $dir] - if {$parent eq $dir} { break } - set dir $parent - } - if {$fossilroot ne "" && ![dict exists $checkedroots fossil,$fossilroot,$scope] && [llength [auto_execok fossil]]} { - dict set checkedroots fossil,$fossilroot,$scope 1 - #fossil changes must run from within the checkout - set original_cwd [pwd] - if {[catch { - cd $fossilroot - set fchanges [string trim [exec {*}[auto_execok fossil] changes]] - } errM]} { - lappend warnings "WARNING: ${label}could not determine fossil state of source project at $fossilroot ($errM)" - } else { - set flines [list] - foreach line [split $fchanges \n] { - set line [string trim $line] - if {$line eq ""} {continue} - if {$scopeabs ne ""} { - #fossil changes lines are ' ' - if {![regexp {^\S+\s+(.*)$} $line _ relfile]} {continue} - set normfile [file normalize [file join $fossilroot $relfile]] - if {$normfile ne $scopeabs && ![string match "${scopeabs}/*" $normfile]} {continue} - } - lappend flines $line - } - if {[llength $flines]} { - lappend warnings "WARNING: ${label}source project at $fossilroot has uncommitted fossil changes${scopedesc} ([llength $flines] file(s)) - artifacts built from a dirty tree have no committed provenance" - } - } - cd $original_cwd - } - if {$gitroot ne "" && ![dict exists $checkedroots git,$gitroot,$scope] && [llength [auto_execok git]]} { - dict set checkedroots git,$gitroot,$scope 1 - set gitpathargs [list] - if {$scopeabs ne ""} { - set gitpathargs [list -- $scopeabs] - } - if {[catch { - set gchanges [string trim [exec {*}[auto_execok git] -C $gitroot status --porcelain {*}$gitpathargs]] - } errM]} { - lappend warnings "WARNING: ${label}could not determine git state of source project at $gitroot ($errM)" - } elseif {$gchanges ne ""} { - lappend warnings "WARNING: ${label}source project at $gitroot has uncommitted git changes${scopedesc} ([llength [split $gchanges \n]] file(s)) - artifacts built from a dirty tree have no committed provenance" - } - } - return $warnings - } - - - #Companion files of a real Tcl library directory. init.tcl sources these, so a - #directory holding init.tcl with none of them beside it is a package's own init - #script (lib/BWidget1.10.1/init.tcl and friends), not a tcl library. - variable boot_library_companions {tm.tcl package.tcl auto.tcl clock.tcl history.tcl word.tcl} - - namespace eval argdoc { - lappend PUNKARGS [list { - @id -id ::punkboot::utils::vfs_boot_library_report - @cmd -name "::punkboot::utils::vfs_boot_library_report"\ - -summary\ - "Report whether an assembled vfs tree can supply a bootable tcl library"\ - -help\ - "Structural check of a merged .vfs tree for the precondition a kit - needs to initialise at all: a Tcl library the runtime can find. Reads - the directory only - nothing is executed, decompressed or launched, so - a caller such as make.tcl can run it for every kit on every bake and - for a cross-target kit it could never run itself. - - Three conventions are recognised, all observed in real runtimes: - tcl_library/ zipfs-attached kits (tclZipfs looks for - /tcl_library/init.tcl) - lib/tcl./ starkit/tclkit-style kits (lib/tcl8.6, - lib/tcl9.0) - tcl./ runtimes whose archive mounts at the - executable's own path rather than at - //zipfs:/app, so [info library] is - /tcl8.6 - the androwish/undroidwish - zipfs backport for Tcl 8.6 does this - - A candidate directory qualifies only when it holds init.tcl AND at - least one companion file a real Tcl library carries beside it - (tm.tcl, package.tcl, auto.tcl, clock.tcl, history.tcl, word.tcl) or - an encoding/ subdirectory. Without that second test a package's own - init script - lib/BWidget1.10.1/init.tcl, present in every punkshell - kit - would answer for a tcl library it cannot provide. - - Returned dict keys: - ok 1 when at least one qualifying library was found - locations qualifying directories, relative to vfsfolder - rejected candidate directories that held init.tcl but no - companion, relative to vfsfolder - the near-misses - worth naming when a gate fires unexpectedly - checked the location patterns examined, relative to vfsfolder - reason why ok is 0; empty string when ok is 1" - @leaders - vfsfolder -type string -optional 0 -help\ - "Path of the assembled vfs tree to inspect" - }] - } - proc vfs_boot_library_report {vfsfolder} { - variable boot_library_companions - set checked [list tcl_library lib/tcl. tcl.] - set report [dict create ok 0 locations {} rejected {} checked $checked reason ""] - if {![file isdirectory $vfsfolder]} { - dict set report reason "no such directory: $vfsfolder" - return $report - } - #candidates are the three conventions only - a full tree walk would find every - #package's init.tcl and cost more than the check is worth. - #The tcl[0-9]* globs deliberately also match module trees named tcl8/ or tcl9/ - #(both exist in this project's kits); they carry no init.tcl, so the qualification - #test below rejects them without needing a narrower pattern. - set candidates [list [file join $vfsfolder tcl_library]] - foreach dir [lsort [glob -nocomplain -type d -directory [file join $vfsfolder lib] -- {tcl[0-9]*}]] { - lappend candidates $dir - } - foreach dir [lsort [glob -nocomplain -type d -directory $vfsfolder -- {tcl[0-9]*}]] { - lappend candidates $dir - } - set locations [list] - set rejected [list] - foreach dir $candidates { - if {![file isfile [file join $dir init.tcl]]} { - continue - } - set qualifies 0 - foreach companion $boot_library_companions { - if {[file isfile [file join $dir $companion]]} { - set qualifies 1 - break - } - } - if {!$qualifies && [file isdirectory [file join $dir encoding]]} { - set qualifies 1 - } - set rel [string range $dir [expr {[string length $vfsfolder] + 1}] end] - if {$qualifies} { - lappend locations $rel - } else { - lappend rejected $rel - } - } - if {[llength $locations]} { - dict set report ok 1 - dict set report locations $locations - dict set report rejected $rejected - return $report - } - dict set report rejected $rejected - if {[llength $rejected]} { - dict set report reason "no tcl library in [file tail $vfsfolder]: [join $rejected {, }] hold init.tcl but none of the companion files a tcl library carries beside it ([join $boot_library_companions {, }]) nor an encoding/ directory" - } else { - dict set report reason "no tcl library in [file tail $vfsfolder]: none of tcl_library/init.tcl, lib/tcl./init.tcl or tcl./init.tcl is present" - } - return $report - } -} - -namespace eval ::punk::args::register { - #use fully qualified so 8.6 doesn't find existing var in global namespace - lappend ::punk::args::register::NAMESPACES ::punkboot::utils ::punkboot::utils::argdoc -} - -## Ready -package provide punkboot::utils [tcl::namespace::eval punkboot::utils { - variable version - #- this version number, exactly 0.4.0, is a literal used in src module folders - #- we refer to this sometimes as the magic version number - set version 0.4.0 -}] -return diff --git a/src/bootsupport/modules/punkboot/utils-0.5.0.tm b/src/bootsupport/modules/punkboot/utils-0.5.0.tm new file mode 100644 index 00000000..1cd5324c --- /dev/null +++ b/src/bootsupport/modules/punkboot/utils-0.5.0.tm @@ -0,0 +1,753 @@ +# -*- tcl -*- +# Maintenance Instruction: leave the 999999.xxx.x as is and use 'pmix make' or src/make.tcl to update from -buildversion.txt +# +# Please consider using a BSD or MIT style license for greatest compatibility with the Tcl ecosystem. +# Code using preferred Tcl licenses can be eligible for inclusion in Tcllib, Tklib and the punk package repository. +# ++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +# (C) 2023 +# +# @@ Meta Begin +# Application punkboot::utils 0.5.0 +# Meta platform tcl +# Meta license BSD +# @@ Meta End + + + +# ++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +## Requirements +##e.g package require frobz +package require Tcl 8.6- + + +# ++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +namespace eval punkboot::utils { + variable version 0.1.0 + namespace export binary_arch_classify parse_punkproject_version read_punkproject_version read_changelog_latest_version vcs_dirty_warnings vfs_binary_arch_report vfs_boot_library_report + + + namespace eval argdoc { + lappend PUNKARGS [list { + @id -id ::punkboot::utils::parse_punkproject_version + @cmd -name "::punkboot::utils::parse_punkproject_version"\ + -summary\ + "Parse the [project] version from TOML content string"\ + -help\ + "Scans TOML content for the [project] section and returns + the value of the version key as a string. Returns an empty + string if the section or key is not found." + @leaders + content -type string -optional 0 -help\ + "TOML content string to parse" + }] + } + proc parse_punkproject_version {content} { + set in_project 0 + foreach line [split $content \n] { + set trimmed [string trim $line] + if {[string index $trimmed 0] eq {[} && [string index $trimmed end] eq {]}} { + set in_project [expr {$trimmed eq "\[project\]"}] + continue + } + if {$in_project && [regexp {^version\s*=\s*"([^"]+)"} $trimmed _ v]} { + return $v + } + } + return "" + } + + + namespace eval argdoc { + lappend PUNKARGS [list { + @id -id ::punkboot::utils::read_punkproject_version + @cmd -name "::punkboot::utils::read_punkproject_version"\ + -summary\ + "Read the [project] version from a TOML file"\ + -help\ + "Reads the file at tomlfile and returns the [project] + version value as a string. Returns an empty string if the + file does not exist or the version is not found." + @leaders + tomlfile -type string -optional 0 -help\ + "Path to the TOML file to read" + }] + } + proc read_punkproject_version {tomlfile} { + if {![file exists $tomlfile]} {return ""} + set fh [open $tomlfile r] + try { + set content [read $fh] + } finally { + close $fh + } + return [::punkboot::utils::parse_punkproject_version $content] + } + + + namespace eval argdoc { + lappend PUNKARGS [list { + @id -id ::punkboot::utils::read_changelog_latest_version + @cmd -name "::punkboot::utils::read_changelog_latest_version"\ + -summary\ + "Read the latest ## [X.Y.Z] version header from a changelog file"\ + -help\ + "Scans the changelog file from the top and returns the + version string from the first '## [X.Y.Z]' header line. + Returns an empty string if the file does not exist or no + matching header is found." + @leaders + changelogfile -type string -optional 0 -help\ + "Path to the changelog file to read" + }] + } + proc read_changelog_latest_version {changelogfile} { + if {![file exists $changelogfile]} {return ""} + set fh [open $changelogfile r] + try { + set content [read $fh] + } finally { + close $fh + } + foreach line [split $content \n] { + if {[regexp {^##\s*\[([0-9][^\]]*)\]} $line _ v]} { + return $v + } + } + return "" + } + + + namespace eval argdoc { + lappend PUNKARGS [list { + @id -id ::punkboot::utils::vcs_dirty_warnings + @cmd -name "::punkboot::utils::vcs_dirty_warnings"\ + -summary\ + "Warning lines for uncommitted VCS changes above a path"\ + -help\ + "Walks up from path to the nearest fossil and/or git root and + returns warning lines describing uncommitted changes. + Artifacts built from a dirty source tree have no committed + provenance - callers such as make.tcl vendorupdate use this + to flag source projects that should be committed first. + + checkedrootsvar names a dict variable in the caller's scope + used to report each VCS root at most once across calls. + label, if supplied, is prefixed into each warning to name + the calling operation (e.g. 'vendorupdate'). + scope, if supplied, is a subpath relative to path; only + uncommitted changes under that subpath are counted (e.g. + scope 'src' warns about dirty src/ while ignoring dirt + elsewhere in the checkout). + + Returns an empty list if the path is clean, unversioned, + missing, already reported, or state cannot be determined." + @leaders + path -type string -optional 0 -help\ + "Path to check; the nearest enclosing fossil/git root is examined" + checkedrootsvar -type string -optional 0 -help\ + "Name of a dict variable in the caller's scope for dedupe across calls" + label -type string -optional 1 -default "" -help\ + "Operation name prefixed into warnings" + scope -type string -optional 1 -default "" -help\ + "Subpath relative to path limiting which changes count; empty = whole checkout" + }] + } + proc vcs_dirty_warnings {path checkedrootsvar {label ""} {scope ""}} { + upvar 1 $checkedrootsvar checkedroots + if {![info exists checkedroots]} {set checkedroots [dict create]} + if {$label ne ""} {set label "$label "} + set warnings [list] + set dir [file normalize $path] + if {![file isdirectory $dir]} { + return $warnings ;#missing path - not this proc's business to report + } + set scopeabs "" + set scopedesc "" ;#included in warning text when scoped + if {$scope ne ""} { + set scopeabs [file normalize [file join $dir $scope]] + set scopedesc " under [string trimright $scope /]/" + } + set fossilroot "" + set gitroot "" + while {1} { + if {$fossilroot eq "" && ([file exists [file join $dir .fslckout]] || [file exists [file join $dir _FOSSIL_]])} { + set fossilroot $dir + } + if {$gitroot eq "" && [file exists [file join $dir .git]]} { + set gitroot $dir + } + if {$fossilroot ne "" || $gitroot ne ""} { + break ;#report at the nearest VCS root(s); a dual git+fossil root is caught in one pass + } + set parent [file dirname $dir] + if {$parent eq $dir} { break } + set dir $parent + } + if {$fossilroot ne "" && ![dict exists $checkedroots fossil,$fossilroot,$scope] && [llength [auto_execok fossil]]} { + dict set checkedroots fossil,$fossilroot,$scope 1 + #fossil changes must run from within the checkout + set original_cwd [pwd] + if {[catch { + cd $fossilroot + set fchanges [string trim [exec {*}[auto_execok fossil] changes]] + } errM]} { + lappend warnings "WARNING: ${label}could not determine fossil state of source project at $fossilroot ($errM)" + } else { + set flines [list] + foreach line [split $fchanges \n] { + set line [string trim $line] + if {$line eq ""} {continue} + if {$scopeabs ne ""} { + #fossil changes lines are ' ' + if {![regexp {^\S+\s+(.*)$} $line _ relfile]} {continue} + set normfile [file normalize [file join $fossilroot $relfile]] + if {$normfile ne $scopeabs && ![string match "${scopeabs}/*" $normfile]} {continue} + } + lappend flines $line + } + if {[llength $flines]} { + lappend warnings "WARNING: ${label}source project at $fossilroot has uncommitted fossil changes${scopedesc} ([llength $flines] file(s)) - artifacts built from a dirty tree have no committed provenance" + } + } + cd $original_cwd + } + if {$gitroot ne "" && ![dict exists $checkedroots git,$gitroot,$scope] && [llength [auto_execok git]]} { + dict set checkedroots git,$gitroot,$scope 1 + set gitpathargs [list] + if {$scopeabs ne ""} { + set gitpathargs [list -- $scopeabs] + } + if {[catch { + set gchanges [string trim [exec {*}[auto_execok git] -C $gitroot status --porcelain {*}$gitpathargs]] + } errM]} { + lappend warnings "WARNING: ${label}could not determine git state of source project at $gitroot ($errM)" + } elseif {$gchanges ne ""} { + lappend warnings "WARNING: ${label}source project at $gitroot has uncommitted git changes${scopedesc} ([llength [split $gchanges \n]] file(s)) - artifacts built from a dirty tree have no committed provenance" + } + } + return $warnings + } + + + #Companion files of a real Tcl library directory. init.tcl sources these, so a + #directory holding init.tcl with none of them beside it is a package's own init + #script (lib/BWidget1.10.1/init.tcl and friends), not a tcl library. + variable boot_library_companions {tm.tcl package.tcl auto.tcl clock.tcl history.tcl word.tcl} + + namespace eval argdoc { + lappend PUNKARGS [list { + @id -id ::punkboot::utils::vfs_boot_library_report + @cmd -name "::punkboot::utils::vfs_boot_library_report"\ + -summary\ + "Report whether an assembled vfs tree can supply a bootable tcl library"\ + -help\ + "Structural check of a merged .vfs tree for the precondition a kit + needs to initialise at all: a Tcl library the runtime can find. Reads + the directory only - nothing is executed, decompressed or launched, so + a caller such as make.tcl can run it for every kit on every bake and + for a cross-target kit it could never run itself. + + Three conventions are recognised, all observed in real runtimes: + tcl_library/ zipfs-attached kits (tclZipfs looks for + /tcl_library/init.tcl) + lib/tcl./ starkit/tclkit-style kits (lib/tcl8.6, + lib/tcl9.0) + tcl./ runtimes whose archive mounts at the + executable's own path rather than at + //zipfs:/app, so [info library] is + /tcl8.6 - the androwish/undroidwish + zipfs backport for Tcl 8.6 does this + + A candidate directory qualifies only when it holds init.tcl AND at + least one companion file a real Tcl library carries beside it + (tm.tcl, package.tcl, auto.tcl, clock.tcl, history.tcl, word.tcl) or + an encoding/ subdirectory. Without that second test a package's own + init script - lib/BWidget1.10.1/init.tcl, present in every punkshell + kit - would answer for a tcl library it cannot provide. + + Returned dict keys: + ok 1 when at least one qualifying library was found + locations qualifying directories, relative to vfsfolder + rejected candidate directories that held init.tcl but no + companion, relative to vfsfolder - the near-misses + worth naming when a gate fires unexpectedly + checked the location patterns examined, relative to vfsfolder + reason why ok is 0; empty string when ok is 1" + @leaders + vfsfolder -type string -optional 0 -help\ + "Path of the assembled vfs tree to inspect" + }] + } + proc vfs_boot_library_report {vfsfolder} { + variable boot_library_companions + set checked [list tcl_library lib/tcl. tcl.] + set report [dict create ok 0 locations {} rejected {} checked $checked reason ""] + if {![file isdirectory $vfsfolder]} { + dict set report reason "no such directory: $vfsfolder" + return $report + } + #candidates are the three conventions only - a full tree walk would find every + #package's init.tcl and cost more than the check is worth. + #The tcl[0-9]* globs deliberately also match module trees named tcl8/ or tcl9/ + #(both exist in this project's kits); they carry no init.tcl, so the qualification + #test below rejects them without needing a narrower pattern. + set candidates [list [file join $vfsfolder tcl_library]] + foreach dir [lsort [glob -nocomplain -type d -directory [file join $vfsfolder lib] -- {tcl[0-9]*}]] { + lappend candidates $dir + } + foreach dir [lsort [glob -nocomplain -type d -directory $vfsfolder -- {tcl[0-9]*}]] { + lappend candidates $dir + } + set locations [list] + set rejected [list] + foreach dir $candidates { + if {![file isfile [file join $dir init.tcl]]} { + continue + } + set qualifies 0 + foreach companion $boot_library_companions { + if {[file isfile [file join $dir $companion]]} { + set qualifies 1 + break + } + } + if {!$qualifies && [file isdirectory [file join $dir encoding]]} { + set qualifies 1 + } + set rel [string range $dir [expr {[string length $vfsfolder] + 1}] end] + if {$qualifies} { + lappend locations $rel + } else { + lappend rejected $rel + } + } + if {[llength $locations]} { + dict set report ok 1 + dict set report locations $locations + dict set report rejected $rejected + return $report + } + dict set report rejected $rejected + if {[llength $rejected]} { + dict set report reason "no tcl library in [file tail $vfsfolder]: [join $rejected {, }] hold init.tcl but none of the companion files a tcl library carries beside it ([join $boot_library_companions {, }]) nor an encoding/ directory" + } else { + dict set report reason "no tcl library in [file tail $vfsfolder]: none of tcl_library/init.tcl, lib/tcl./init.tcl or tcl./init.tcl is present" + } + return $report + } + + #G-133 binary-arch scan support. Recognition data is deliberately plain namespace + #variables so extending it (a new vendor spelling, a new cpu token) is a visible + #one-line edit rather than a code change. + # + #PE Machine field values (IMAGE_FILE_HEADER.Machine, 2 bytes LE at e_lfanew+4) + variable pe_machine_map { + 014c i386 + 8664 x86_64 + aa64 arm64 + 01c0 arm + 01c4 arm + 0200 ia64 + 0166 mips + 01f0 ppc + 5032 riscv32 + 5064 riscv64 + } + #ELF e_machine values (2 bytes at offset 18, endianness per EI_DATA) + variable elf_machine_map { + 3 i386 + 62 x86_64 + 183 arm64 + 40 arm + 8 mips + 20 ppc + 21 ppc64 + 22 s390x + 2 sparc + 43 sparc64 + 243 riscv + } + #Mach-O cputype base values (CPU_ARCH_ABI64 flag 0x01000000 selects the 64-bit variant) + variable macho_cputype_map { + 7 {i386 x86_64} + 12 {arm arm64} + 18 {ppc ppc64} + } + #os / cpu tokens accepted in a CANONICAL platform-dir segment (-). The os and + #cpu lists follow the punk::platform canon plus common alias tokens, so a platform- + #discriminated subdir is recognised whichever spelling a package author normalised to. + variable platform_segment_os { + win32 windows linux macosx freebsd netbsd openbsd dragonfly solaris sunos + aix hpux irix qnx haiku android msys cygwin + } + variable platform_segment_cpu { + x86_64 amd64 x64 ix86 i386 i486 i586 i686 x86 + arm64 aarch64 arm armv6 armv7 armv6l armv7l + ppc ppc64 ppc64le powerpc mips mipsel mips64 + riscv32 riscv64 s390 s390x sparc sparc64 universal + } + #Recognised VENDOR spellings observed (or near-certain) as platform-discriminating + #directory names that do not parse as -. blend2d, + #extrafont and tclMuPDF ship win-x64 today. + variable platform_segment_vendor { + win-x64 win-x86 win-arm64 win-arm win32 win64 + linux-x64 linux-arm64 macos-x64 macos-arm64 osx-x64 osx-arm64 + } + #File tails treated as binary libraries by vfs_binary_arch_report + variable binary_library_globs {*.dll *.so *.so.[0-9]* *.dylib} + + namespace eval argdoc { + lappend PUNKARGS [list { + @id -id ::punkboot::utils::binary_arch_classify + @cmd -name "::punkboot::utils::binary_arch_classify"\ + -summary\ + "Classify a binary library file's executable format and cpu architecture"\ + -help\ + "Reads only the file's header bytes (a couple of small reads - nothing + is executed or loaded) and classifies the executable format and cpu + architecture: + PE Machine field (2 bytes at e_lfanew+4): i386, x86_64, arm64... + ELF e_machine honouring EI_DATA endianness + Mach-O thin (cputype) and fat/universal (per-member cputypes) + Unrecognised content is reported honestly as format 'unknown' rather + than guessed. + + Returned dict keys: + format pe | elf | macho | unknown + arch i386 | x86_64 | arm64 | ... | universal | unknown | + unknown-0x (a real header whose machine value is not + in the recognition map - definite, just unmapped) + archs member architectures (macho universal only; absent otherwise) + detail short human-readable classification" + @leaders + libfile -type string -optional 0 -help\ + "Path of the binary library file to classify" + }] + } + proc binary_arch_classify {libfile} { + variable pe_machine_map + variable elf_machine_map + variable macho_cputype_map + if {[catch { + set fd [open $libfile r] + chan configure $fd -translation binary + set head [read $fd 64] + } errM]} { + catch {close $fd} + return [dict create format unknown arch unknown detail "unreadable: $errM"] + } + set result [dict create format unknown arch unknown detail "not a recognised binary library format"] + try { + if {[string length $head] < 8} { + dict set result detail "too short to carry an executable header ([string length $head] bytes)" + return $result + } + set magic4 [string range $head 0 3] + if {[string range $head 0 1] eq "MZ"} { + #PE: e_lfanew at 0x3c points at "PE\0\0" + IMAGE_FILE_HEADER + if {[binary scan $head @60iu e_lfanew] != 1} { + dict set result detail "MZ header too short for e_lfanew" + return $result + } + seek $fd $e_lfanew + set pehdr [read $fd 6] + if {[string length $pehdr] < 6 || [string range $pehdr 0 3] ne "PE\x00\x00"} { + dict set result detail "MZ header without PE signature (DOS executable?)" + return $result + } + binary scan $pehdr @4su machine + set hexmachine [format %04x $machine] + if {[dict exists $pe_machine_map $hexmachine]} { + set arch [dict get $pe_machine_map $hexmachine] + set result [dict create format pe arch $arch detail "PE $arch"] + } else { + set result [dict create format pe arch unknown-0x$hexmachine detail "PE machine 0x$hexmachine (not in recognition map)"] + } + } elseif {$magic4 eq "\x7fELF"} { + binary scan $head @4cu elfclass + binary scan $head @5cu elfdata + if {$elfdata == 2} { + binary scan $head @18Su e_machine ;#big-endian + } else { + binary scan $head @18su e_machine ;#little-endian (and honest-enough default) + } + if {[dict exists $elf_machine_map $e_machine]} { + set arch [dict get $elf_machine_map $e_machine] + if {$arch eq "riscv"} { + set arch [expr {$elfclass == 2 ? "riscv64" : "riscv32"}] + } + set result [dict create format elf arch $arch detail "ELF $arch"] + } else { + set result [dict create format elf arch unknown-$e_machine detail "ELF e_machine $e_machine (not in recognition map)"] + } + } else { + binary scan $head Iu be32 + switch -- [format %08x $be32] { + feedface - feedfacf - cefaedfe - cffaedfe { + #thin Mach-O; cputype follows the magic in the file's own byte order + if {[string index $head 0] eq "\xfe"} { + binary scan $head @4Iu cputype ;#big-endian file + } else { + binary scan $head @4iu cputype + } + set is64 [expr {($cputype & 0x01000000) != 0}] + set base [expr {$cputype & 0x00ffffff}] + if {[dict exists $macho_cputype_map $base]} { + set arch [lindex [dict get $macho_cputype_map $base] $is64] + set result [dict create format macho arch $arch detail "Mach-O $arch"] + } else { + set result [dict create format macho arch unknown-cputype-$base detail "Mach-O cputype $base (not in recognition map)"] + } + } + cafebabe - cafebabf { + #fat/universal (big-endian header). A Java class file shares the + #magic - its version field where nfat_arch sits is >= 45, far above + #any credible member count, so an implausible count stays unknown. + binary scan $head @4Iu nfat + if {$nfat == 0 || $nfat > 30} { + dict set result detail "cafebabe magic with implausible member count $nfat (java class file?)" + return $result + } + set entrysize [expr {$be32 == 0xcafebabf ? 32 : 20}] + seek $fd 8 + set fatdata [read $fd [expr {$nfat * $entrysize}]] + set archs [list] + for {set i 0} {$i < $nfat} {incr i} { + if {[binary scan $fatdata @[expr {$i * $entrysize}]Iu cputype] != 1} { + break + } + set is64 [expr {($cputype & 0x01000000) != 0}] + set base [expr {$cputype & 0x00ffffff}] + if {[dict exists $macho_cputype_map $base]} { + lappend archs [lindex [dict get $macho_cputype_map $base] $is64] + } else { + lappend archs unknown-cputype-$base + } + } + set result [dict create format macho arch universal archs $archs detail "Mach-O universal ([join $archs {, }])"] + } + } + } + return $result + } finally { + catch {close $fd} + } + } + + namespace eval argdoc { + lappend PUNKARGS [list { + @id -id ::punkboot::utils::platform_expected_binary + @cmd -name "::punkboot::utils::platform_expected_binary"\ + -summary\ + "Expected binary format/arch for a canonical target platform name"\ + -help\ + "Maps a canonical punkshell platform name (-, e.g + win32-ix86) to the executable format and classifier arch token a + native binary library for that platform carries. Returns a dict + {format F arch A}, or an empty dict when the os or cpu token has + no recognised mapping (callers treat that as scan-not-applicable + rather than guessing)." + @leaders + targetplatform -type string -optional 0 -help\ + "Canonical platform name, e.g win32-x86_64, linux-x86_64, macosx-arm64" + }] + } + proc platform_expected_binary {targetplatform} { + set idx [string first - $targetplatform] + if {$idx <= 0} { + return [dict create] + } + set os [string range $targetplatform 0 [expr {$idx - 1}]] + set cpu [string range $targetplatform [expr {$idx + 1}] end] + switch -- $os { + win32 - windows {set format pe} + linux - freebsd - netbsd - openbsd - dragonfly - solaris - sunos {set format elf} + macosx - darwin - macos {set format macho} + default {return [dict create]} + } + switch -- $cpu { + ix86 - i386 - i486 - i586 - i686 - x86 {set arch i386} + x86_64 - amd64 - x64 {set arch x86_64} + arm64 - aarch64 {set arch arm64} + arm - armv6 - armv7 {set arch arm} + ppc - ppc64 - riscv64 - mips - s390x - sparc - sparc64 {set arch $cpu} + default {return [dict create]} + } + return [dict create format $format arch $arch] + } + + namespace eval argdoc { + lappend PUNKARGS [list { + @id -id ::punkboot::utils::platform_discriminated_segment + @cmd -name "::punkboot::utils::platform_discriminated_segment"\ + -summary\ + "Whether a directory name is a recognised platform-discriminating segment"\ + -help\ + "True when the segment is a canonical - platform-dir name + (os and cpu each from the recognised token lists), the bare + universal 'macosx' folder, or one of the recognised vendor + spellings (blend2d-style win-x64 etc). Binary libraries under such + a directory are selected per-platform by their package's own index + logic, so a multi-arch payload is legitimate there." + @leaders + segment -type string -optional 0 -help\ + "One directory name (a single path segment, not a path)" + }] + } + proc platform_discriminated_segment {segment} { + variable platform_segment_os + variable platform_segment_cpu + variable platform_segment_vendor + set segment [string tolower $segment] + if {$segment eq "macosx"} { + return 1 ;#the universal store-dir convention + } + if {$segment in $platform_segment_vendor} { + return 1 + } + set idx [string first - $segment] + if {$idx > 0} { + set os [string range $segment 0 [expr {$idx - 1}]] + set cpu [string range $segment [expr {$idx + 1}] end] + if {$os in $platform_segment_os && $cpu in $platform_segment_cpu} { + return 1 + } + } + return 0 + } + + namespace eval argdoc { + lappend PUNKARGS [list { + @id -id ::punkboot::utils::vfs_binary_arch_report + @cmd -name "::punkboot::utils::vfs_binary_arch_report"\ + -summary\ + "Advisory scan of an assembled vfs tree for binary libraries that mismatch the kit's target"\ + -help\ + "Walks a merged .vfs tree, classifies each binary library file + (*.dll, *.so, *.so., *.dylib) by header (binary_arch_classify) + and compares it against the kit's declared target platform. A + library under a platform-discriminated subdirectory (canonical + - names, the universal macosx folder, or a recognised + vendor spelling such as win-x64) is EXEMPT - multi-arch payloads + are legitimate when a platform segment lets the package's own + index logic pick per platform. Purely structural: header bytes are + read, nothing is executed or loaded, so the scan also covers + cross-target kits the build host could never run. + + A mismatch is reported only when the classification is DEFINITE + (a real PE/ELF/Mach-O header whose format or architecture differs + from the target's); unclassifiable files are counted as unknown, + never warned about. What this cannot see: statically linked + packages, pure-tcl packages whose binary dependency is elsewhere, + and package resolution order (a wrong-arch copy shadowing a + working one by version) - only an in-artifact 'package require' + smoke probe observes those. + + Returned dict keys: + ok 1 when no mismatches were found (advisory) + target the target platform as supplied + expected {format F arch A} for the target ({} if unmapped) + scanned binary library files classified + matched files matching the expected format/arch + exempt files under platform-discriminated subdirs (not read) + unknown files whose classification was indefinite + mismatches list of {file format F arch A detail D} + reason why the scan did not apply; empty when it ran" + @leaders + vfsfolder -type string -optional 0 -help\ + "Path of the assembled vfs tree to scan" + targetplatform -type string -optional 0 -help\ + "Canonical target platform of the kit, e.g win32-ix86" + }] + } + proc vfs_binary_arch_report {vfsfolder targetplatform} { + variable binary_library_globs + set report [dict create ok 1 target $targetplatform expected {} scanned 0 matched 0 exempt 0 unknown 0 mismatches {} reason ""] + if {![file isdirectory $vfsfolder]} { + dict set report ok 0 + dict set report reason "no such directory: $vfsfolder" + return $report + } + set expected [platform_expected_binary $targetplatform] + dict set report expected $expected + if {![dict size $expected]} { + dict set report reason "target platform '$targetplatform' has no recognised binary format/arch mapping - scan not applicable" + return $report + } + set expected_format [dict get $expected format] + set expected_arch [dict get $expected arch] + set scanned 0 + set matched 0 + set exempt 0 + set unknown 0 + set mismatches [list] + set rootlen [string length $vfsfolder] + #iterative walk - plain Tcl 8.6, no deps. Exemption is decided per DIRECTORY + #(one platform_discriminated_segment test as each dir is queued), so files + #under an exempt subtree are counted without being read. + set pending [list [list $vfsfolder 0]] + while {[llength $pending]} { + set entry [lindex $pending end] + set pending [lrange $pending 0 end-1] + lassign $entry dir dir_exempt + foreach sub [glob -nocomplain -types d -directory $dir *] { + set sub_exempt $dir_exempt + if {!$sub_exempt && [platform_discriminated_segment [file tail $sub]]} { + set sub_exempt 1 + } + lappend pending [list $sub $sub_exempt] + } + foreach libfile [glob -nocomplain -types f -directory $dir -- {*}$binary_library_globs] { + if {$dir_exempt} { + incr exempt + continue + } + incr scanned + set class [binary_arch_classify $libfile] + set cformat [dict get $class format] + set carch [dict get $class arch] + if {$cformat eq "unknown"} { + incr unknown + continue + } + set rel [string map {\\ /} [string range $libfile [expr {$rootlen + 1}] end]] + if {$cformat ne $expected_format} { + lappend mismatches [dict create file $rel format $cformat arch $carch detail [dict get $class detail]] + continue + } + if {$carch eq $expected_arch} { + incr matched + continue + } + if {$carch eq "universal" && [dict exists $class archs] && $expected_arch in [dict get $class archs]} { + incr matched + continue + } + #definite finding either way: a differing mapped arch, or a real header + #whose unmapped machine value is provably not the expected architecture + lappend mismatches [dict create file $rel format $cformat arch $carch detail [dict get $class detail]] + } + } + dict set report scanned $scanned + dict set report matched $matched + dict set report exempt $exempt + dict set report unknown $unknown + dict set report mismatches $mismatches + dict set report ok [expr {[llength $mismatches] == 0}] + return $report + } +} + +namespace eval ::punk::args::register { + #use fully qualified so 8.6 doesn't find existing var in global namespace + lappend ::punk::args::register::NAMESPACES ::punkboot::utils ::punkboot::utils::argdoc +} + +## Ready +package provide punkboot::utils [tcl::namespace::eval punkboot::utils { + variable version + #- this version number, exactly 0.5.0, is a literal used in src module folders + #- we refer to this sometimes as the magic version number + set version 0.5.0 +}] +return 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 67f7d37c..b3263dba 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 @@ -641,9 +641,10 @@ proc ::punkboot::lib::bootsupport_prompt_yesno {prompt} { # mapfile path as supplied # default_target target platform for entries that declare none # runtime_vfs_map runtime -> raw vfs_specs as listed (appname/type/target may be "") -# vfs_runtime_map vfstail -> list of {runtime appname type target} (defaults -# applied; only vfs folders that exist on disk - matching the -# historical inline parse the kit loop was built around) +# vfs_runtime_map vfstail -> list of {runtime appname type target smokerequires} +# (defaults applied; only vfs folders that exist on disk - matching +# the historical inline parse the kit loop was built around; +# smokerequires is the G-133 smoke-require package list, may be "") # runtime_target runtime -> resolved target platform (all runtimes, mapped order) # missing names of referenced-but-absent runtimes/vfs folders # warnings warning lines in encounter order, ready to print verbatim @@ -732,8 +733,10 @@ proc ::punkboot::lib::mapvfs_parse {mapfile rtbase sourcefolder default_target} } foreach vfsconfig $vfs_specs { switch -- [llength $vfsconfig] { - 1 - 2 - 3 - 4 { - lassign $vfsconfig vfstail appname target_kit_type + 1 - 2 - 3 - 4 - 5 { + #5th element (G-133): smoke-require package list for the built kit - + #interim line format; the schema's eventual home is the G-024 toml conversion + lassign $vfsconfig vfstail appname target_kit_type - smokerequires if {![file isdirectory [file join $sourcefolder vfs $vfstail]]} { lappend warnings "WARNING: Missing vfs folder [file join $sourcefolder vfs $vfstail] specified in mapvfs.config for runtime $runtime" lappend missing $vfstail @@ -741,11 +744,11 @@ proc ::punkboot::lib::mapvfs_parse {mapfile rtbase sourcefolder default_target} if {$appname eq ""} { set appname [file rootname $vfstail] } - dict lappend vfs_runtime_map $vfstail [list $runtime $appname $target_kit_type $line_target] + dict lappend vfs_runtime_map $vfstail [list $runtime $appname $target_kit_type $line_target $smokerequires] } } default { - set badline "bad entry in mapvfs.config - expected each entry after the runtime name to be a list of 1 to 4 elements {vfsfolder ?kitname? ?kittype? ?targetplatform?}. got: $vfsconfig ([llength $vfsconfig])" + set badline "bad entry in mapvfs.config - expected each entry after the runtime name to be a list of 1 to 5 elements {vfsfolder ?kitname? ?kittype? ?targetplatform? ?smokerequires?}. got: $vfsconfig ([llength $vfsconfig])" lappend warnings $badline lappend badentries $badline } @@ -791,6 +794,7 @@ proc ::punkboot::lib::mapvfs_parse {mapfile rtbase sourcefolder default_target} # store_tier bin/runtime tier folder name for the target # vfs vfs folder tail (e.g punk9wintk903.vfs) # vfs_present 1|0 +# smokerequire G-133 smoke-require package list as configured ("" when undeclared) proc ::punkboot::lib::mapvfs_kit_outputs {model rtbase sourcefolder} { set runtime_vfs_map [dict get $model runtime_vfs_map] set vfs_runtime_map [dict get $model vfs_runtime_map] @@ -804,7 +808,7 @@ proc ::punkboot::lib::mapvfs_kit_outputs {model rtbase sourcefolder} { } set records [list] set exe_names_seen [list] - set record_pair {{rtname vfstail appname target_kit_type} { + set record_pair {{rtname vfstail appname target_kit_type smokerequires} { upvar 1 records records exe_names_seen exe_names_seen rtbase rtbase sourcefolder sourcefolder\ runtime_target runtime_target default_target default_target if {$appname eq ""} { @@ -850,6 +854,7 @@ proc ::punkboot::lib::mapvfs_kit_outputs {model rtbase sourcefolder} { store_tier $store_tier\ vfs $vfstail\ vfs_present [file isdirectory [file join $sourcefolder vfs $vfstail]]\ + smokerequire $smokerequires\ ] }} foreach vfstail $vfs_tails { @@ -862,25 +867,25 @@ proc ::punkboot::lib::mapvfs_kit_outputs {model rtbase sourcefolder} { continue } foreach vfs_app [dict get $runtime_vfs_map $rtname] { - lassign $vfs_app configured_vfs appname target_kit_type + lassign $vfs_app configured_vfs appname target_kit_type - smokerequires if {$configured_vfs ne $vfstail} { continue } - apply $record_pair $rtname $vfstail $appname $target_kit_type + apply $record_pair $rtname $vfstail $appname $target_kit_type $smokerequires } } } #entries whose vfs folder is missing (excluded from vfs_runtime_map by the parse) dict for {rtname vfs_specs} $runtime_vfs_map { foreach vfsconfig $vfs_specs { - if {[llength $vfsconfig] < 1 || [llength $vfsconfig] > 4} { + if {[llength $vfsconfig] < 1 || [llength $vfsconfig] > 5} { continue } - lassign $vfsconfig vfstail appname target_kit_type + lassign $vfsconfig vfstail appname target_kit_type - smokerequires if {[dict exists $vfs_runtime_map $vfstail]} { continue ;#already enumerated above } - apply $record_pair $rtname $vfstail $appname $target_kit_type + apply $record_pair $rtname $vfstail $appname $target_kit_type $smokerequires } } return $records @@ -2282,6 +2287,8 @@ DIAGRAM 2 - KIT ASSEMBLY DETAIL (the 'make.tcl bake' stage; incl. vfslibs phase) v src/_build/.exe.vfs | + | advisory payload/target binary-arch scan of the merged + | tree (wrong-arch libraries -> recapped BUILD-WARNING) [K11] | boot-precondition gate: merged vfs must supply a tcl | library (tcl_library/, lib/tcl./, tcl./) [K10] v @@ -2294,6 +2301,8 @@ DIAGRAM 2 - KIT ASSEMBLY DETAIL (the 'make.tcl bake' stage; incl. vfslibs phase) v src/_build/.exe | + | smoke-require probe (host-runnable kits with declared + | packages): plain 'package require' inside the artifact [K11] | deploy step: delete old bin/.exe, copy new one in v bin/.exe <-- FAILS (kit listed under FAILED KITS) if a @@ -2377,6 +2386,22 @@ KEY / NOTES own payload could not be extracted - see the BUILD-WARNING naming what was tried. 'make.tcl check' reports whether the gate is ACTIVE. +[K11] PAYLOAD/TARGET consistency checks (G-133), both ADVISORY - warnings recap at + end of run, the kit still builds and deploys. (a) Binary-arch scan at the same + seam as [K10]: each binary library (*.dll/*.so/*.dylib) in the merged tree is + classified by header (PE/ELF/Mach-O - structural, nothing executed, so + cross-target kits are covered) against the kit's target platform; wrong-arch + libraries outside platform-discriminated subdirs (win32-ix86/, win-x64/ etc - + multi-arch payloads are legitimate there) earn recapped BUILD-WARNINGs. + (b) Smoke-require probe: a kit declaring packages (mapvfs.config 5th entry + element) has each one plain-'package require'd INSIDE the freshly built + artifact via its tclsh subcommand - the only check that sees resolution-order + defects (a wrong-arch higher-versioned package shadowing a working copy); + cross-target kits skip with a stated reason, undeclared kits run nothing new. + What neither check guarantees: statically linked packages, pure-tcl packages + with binary dependencies, and version-preference outcomes are visible only to + the smoke probe - and only for declared packages. 'make.tcl check' reports both. + MAINTENANCE (agents take note) ---------------------------------------------------------------------------- This text is embedded in make.tcl (::punkboot::workflow_text). When the build @@ -3356,6 +3381,95 @@ proc ::punkboot::get_vfs_boot_library_report {vfsfolder} { } return [list 1 [::punkboot::utils::vfs_boot_library_report $vfsfolder]] } +#Availability probe + advisory payload/target binary-arch scan of an assembled kit vfs +#(G-133), shared by the bake loop and the 'check' command report. Same guarded-require +#treatment as the boot-precondition check above: a stale bootsupport snapshot degrades +#the scan to a NOTE. Returns {available report}. +proc ::punkboot::get_vfs_binary_arch_report {vfsfolder targetplatform} { + set available [expr {\ + ![catch {package require punkboot::utils}]\ + && [llength [info commands ::punkboot::utils::vfs_binary_arch_report]]\ + }] + if {!$available} { + return [list 0 [dict create]] + } + return [list 1 [::punkboot::utils::vfs_binary_arch_report $vfsfolder $targetplatform]] +} +#G-133 smoke-require probe: execute a freshly built kit artifact via its 'tclsh' +#subcommand and plain-'package require' each declared package inside it. This is the +#only check that observes actual package RESOLUTION in the artifact - the punkluck86 +#incident class (a higher-versioned wrong-arch Thread shadowing the runtime's working +#copy on plain require) is invisible to every structural check because the working +#file exists. The tclsh subcommand is used deliberately: it exits cleanly even on +#runtimes whose full repl teardown is fragile, and a script argument with drained +#stdin cannot reach any console-reopen path. ADVISORY: failures become recapped +#BUILD-WARNINGs naming kit, package and the actual error - the kit still deploys. +#Returns 1 when every declared package resolved, else 0. +proc ::punkboot::kit_smoke_require_probe {kitpath targetkit packages} { + set probescript [file rootname $kitpath]_smokerequire.tcl + if {[catch { + set fd [open $probescript w] + chan configure $fd -translation lf + puts $fd "#generated by make.tcl bake (G-133) - smoke-require probe for $targetkit" + puts $fd "set packages [list $packages]" + puts $fd {foreach pkg $packages { + if {[catch {package require $pkg} v]} { + puts stdout [list SMOKE-REQUIRE $pkg FAIL $v] + } else { + puts stdout [list SMOKE-REQUIRE $pkg OK $v] + } +} +exit 0} + close $fd + } errM]} { + catch {close $fd} + ::punkboot::print_build_warnings [list "smoke-require for kit $targetkit could not write its probe script ($probescript): $errM"] + return 0 + } + if {[catch { + lassign [punk::lib::invoke [list [file nativename $kitpath] tclsh [file nativename $probescript] << ""]] p_stdout p_stderr p_exitcode + } errM]} { + ::punkboot::print_build_warnings [list "smoke-require FAILED for kit $targetkit: could not execute freshly built artifact via its tclsh subcommand ($errM)"] + return 0 + } + set seen [dict create] + foreach line [split $p_stdout \n] { + set line [string trim $line] + if {![string match "SMOKE-REQUIRE *" $line]} { + continue + } + #each line is a well-formed tcl list: SMOKE-REQUIRE OK|FAIL + if {[catch {lassign $line - r_pkg r_status r_detail}]} { + continue + } + dict set seen $r_pkg [list $r_status $r_detail] + } + set allok 1 + set warnings [list] + foreach pkg $packages { + if {![dict exists $seen $pkg]} { + set allok 0 + set tail [string trim [join [lrange [split [string trim $p_stderr] \n] end-2 end] " | "]] + lappend warnings "smoke-require FAILED for kit $targetkit: no result for package '$pkg' (artifact exited $p_exitcode before reporting[expr {$tail ne "" ? "; stderr tail: $tail" : ""}])" + continue + } + lassign [dict get $seen $pkg] r_status r_detail + if {$r_status eq "OK"} { + puts stdout " smoke-require OK for kit $targetkit: package require $pkg -> $r_detail" + } else { + set allok 0 + lappend warnings "smoke-require FAILED for kit $targetkit: package require $pkg -> $r_detail" + } + } + if {$p_exitcode != 0} { + set allok 0 + lappend warnings "smoke-require for kit $targetkit: artifact exited with code $p_exitcode via its tclsh subcommand (expected 0)" + } + if {[llength $warnings]} { + ::punkboot::print_build_warnings $warnings + } + return $allok +} #Wrap ::exit so accumulated provenance warnings are recapped at the very end of output no matter #which of make.tcl's many exit points a command takes. if {![llength [info commands ::punkboot::exit_original]]} { @@ -3612,6 +3726,40 @@ if {$::punkboot::command eq "check"} { puts stdout "boot-precondition gate (G-125): UNAVAILABLE (punkboot::utils vfs_boot_library_report not loadable from bootsupport)" puts stdout " bake will proceed with a NOTE and cannot refuse an unbootable kit - run 'make.tcl modules' then 'make.tcl bootsupport'." } + # Payload/target consistency checks (G-133) - advisory arch scan + smoke-require probe + puts stdout $sep + #availability probe only - the path deliberately does not exist + lassign [::punkboot::get_vfs_binary_arch_report [file join $projectroot __punkboot_archscan_probe__] $::punkboot::target_platform] _arch_available _arch_report + if {$_arch_available} { + puts stdout "payload/target arch scan (G-133): ACTIVE (advisory)" + puts stdout " bake classifies each merged kit's binary libraries (*.dll/*.so/*.dylib header bytes - structural," + puts stdout " nothing executed, cross-target kits included) against the kit's target platform and emits" + puts stdout " recapped BUILD-WARNINGs for wrong-arch libraries outside platform-discriminated subdirs" + puts stdout " (canonical - names and recognised vendor spellings such as win-x64 are exempt)." + } else { + puts stdout "payload/target arch scan (G-133): UNAVAILABLE (punkboot::utils vfs_binary_arch_report not loadable from bootsupport)" + puts stdout " bake will proceed with a NOTE and cannot flag wrong-arch payload libraries - run 'make.tcl modules' then 'make.tcl bootsupport'." + } + set _smoke_declared [list] + if {[file exists $sourcefolder/runtime/mapvfs.config]} { + set _smokemodel [punkboot::lib::mapvfs_parse $sourcefolder/runtime/mapvfs.config [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] {, }])" + } + } + unset -nocomplain _smokemodel _rec + } + puts stdout "smoke-require probe (G-133, advisory): freshly built host-runnable kits declaring packages" + puts stdout " (mapvfs.config 5th entry element) have each one plain-'package require'd inside the built" + puts stdout " artifact via its tclsh subcommand - the only check that sees resolution-order defects such as" + puts stdout " a wrong-arch higher-versioned package shadowing a working copy. Failures are recapped" + puts stdout " BUILD-WARNINGs; cross-target kits skip with a stated reason; undeclared kits run nothing new." + if {[llength $_smoke_declared]} { + puts stdout " declared: [join $_smoke_declared {; }]" + } else { + puts stdout " declared: (none)" + } puts stdout $sep exit 0 } @@ -5840,7 +5988,8 @@ foreach vfstail $vfs_tails { if {[dict exists $runtime_vfs_map $rtname]} { set applist [dict get $runtime_vfs_map $rtname] foreach vfs_app $applist { - lassign $vfs_app configured_vfs appname target_kit_type + #5th element = G-133 smoke-require package list ("" when undeclared) + lassign $vfs_app configured_vfs appname target_kit_type - kit_smokerequires if {$configured_vfs ne $vfstail} { continue } @@ -5862,7 +6011,7 @@ foreach vfstail $vfs_tails { } } lappend exe_names_seen $targetkit - lappend targetkits [list $targetkit $target_kit_type] + lappend targetkits [list $targetkit $target_kit_type $kit_smokerequires] } } puts stdout " vfs: $vfstail runtime: $rtname targetkits: $targetkits" @@ -5871,7 +6020,7 @@ foreach vfstail $vfs_tails { continue ;#G-121 selective bake - not a requested kit output } puts stdout " processing targetkit: $targetkit_info" - lassign $targetkit_info targetkit target_kit_type + lassign $targetkit_info targetkit target_kit_type kit_smokerequires #Self-build guard: never process the kit whose deployed executable is running this #build - the process sweep below would kill this very process, and the deploy step #cannot replace a running image anyway. Informational/update subcommands are @@ -6240,6 +6389,37 @@ foreach vfstail $vfs_tails { set sourcevfs [file join $sourcefolder vfs $vfstail] merge_over $sourcevfs $targetvfs + #G-133 advisory payload/target binary-arch scan, at the same post-merge + #seam as the G-125 gate below. Structural (header bytes only, nothing + #executed), so it runs for every kit including cross-target ones. A + #binary library under a platform-discriminated subdir (win32-ix86/, + #win-x64/ etc) is exempt - multi-arch payloads are legitimate there. + #ADVISORY by design: vendor layouts make false certainty unavoidable, + #so mismatches warn (recapped) and the kit still builds - the G-125 + #gate below stays the only refusal at this seam. + lassign [::punkboot::get_vfs_binary_arch_report $targetvfs $rt_target] archscan_available archscan + if {!$archscan_available} { + puts stderr "NOTE: kit payload binary-arch scan unavailable (punkboot::utils vfs_binary_arch_report not loadable from bootsupport) - continuing without it" + } elseif {[dict get $archscan reason] ne ""} { + puts stdout " payload binary-arch scan not applicable for kit $targetkit: [dict get $archscan reason]" + } elseif {[llength [dict get $archscan mismatches]]} { + set archscan_mismatches [dict get $archscan mismatches] + set archwarnings [list] + set shown 0 + foreach m $archscan_mismatches { + if {$shown >= 8} {break} + incr shown + lappend archwarnings "payload/target arch mismatch in kit $targetkit (target $rt_target): [dict get $m file] is [dict get $m detail] outside any platform-discriminated subdir - a $rt_target runtime cannot load it" + } + if {[llength $archscan_mismatches] > $shown} { + lappend archwarnings "payload/target arch mismatch in kit $targetkit (target $rt_target): [expr {[llength $archscan_mismatches] - $shown}] further mismatching binary libraries not listed above ([llength $archscan_mismatches] mismatches total, [dict get $archscan scanned] binary libraries scanned)" + } + ::punkboot::print_build_warnings $archwarnings + unset archwarnings archscan_mismatches shown + } else { + puts stdout " payload binary-arch scan for kit $targetkit (target $rt_target): OK - [dict get $archscan scanned] binary libraries scanned ([dict get $archscan matched] match target, [dict get $archscan exempt] exempt under platform subdirs, [dict get $archscan unknown] unclassifiable)" + } + #G-125 boot-precondition gate. A kit with no tcl library cannot initialise #at all - 'Cannot find a usable init.tcl' - so refuse it HERE: before any #build product is written, and long before the deploy step deletes the @@ -6588,6 +6768,23 @@ foreach vfstail $vfs_tails { # -- --- --- --- --- --- $vfs_event targetset_end OK + #G-133 post-build smoke-require probe. Only an actual 'package require' + #inside the built artifact observes package RESOLUTION - the wrong-arch + #version-shadowing class is invisible to every structural check because + #the working file exists too. Runs only for kits that declare + #smoke-require packages (mapvfs.config 5th entry element) and only when + #this host can execute the artifact; undeclared kits run nothing new. + if {[llength $kit_smokerequires]} { + if {$rtname eq "-"} { + puts stdout " smoke-require skipped for kit $targetkit: a runtimeless .kit artifact is not directly executable" + } elseif {[punkboot::lib::platform_process_family $rt_target] ne [punkboot::lib::platform_process_family $::punkboot::host_platform]} { + puts stdout " smoke-require skipped for kit $targetkit: cross-target ($rt_target) - the artifact is not executable on this $::punkboot::host_platform host" + } else { + puts stdout " smoke-require probe for kit $targetkit (packages: $kit_smokerequires) - executing freshly built artifact via its tclsh subcommand" + ::punkboot::kit_smoke_require_probe $buildfolder/$targetkit $targetkit $kit_smokerequires + } + } + } else { set skipped_vfs_build 1 puts stderr "." diff --git a/src/project_layouts/vendor/punk/basic/src/make.tcl b/src/project_layouts/vendor/punk/basic/src/make.tcl index 67f7d37c..b3263dba 100644 --- a/src/project_layouts/vendor/punk/basic/src/make.tcl +++ b/src/project_layouts/vendor/punk/basic/src/make.tcl @@ -641,9 +641,10 @@ proc ::punkboot::lib::bootsupport_prompt_yesno {prompt} { # mapfile path as supplied # default_target target platform for entries that declare none # runtime_vfs_map runtime -> raw vfs_specs as listed (appname/type/target may be "") -# vfs_runtime_map vfstail -> list of {runtime appname type target} (defaults -# applied; only vfs folders that exist on disk - matching the -# historical inline parse the kit loop was built around) +# vfs_runtime_map vfstail -> list of {runtime appname type target smokerequires} +# (defaults applied; only vfs folders that exist on disk - matching +# the historical inline parse the kit loop was built around; +# smokerequires is the G-133 smoke-require package list, may be "") # runtime_target runtime -> resolved target platform (all runtimes, mapped order) # missing names of referenced-but-absent runtimes/vfs folders # warnings warning lines in encounter order, ready to print verbatim @@ -732,8 +733,10 @@ proc ::punkboot::lib::mapvfs_parse {mapfile rtbase sourcefolder default_target} } foreach vfsconfig $vfs_specs { switch -- [llength $vfsconfig] { - 1 - 2 - 3 - 4 { - lassign $vfsconfig vfstail appname target_kit_type + 1 - 2 - 3 - 4 - 5 { + #5th element (G-133): smoke-require package list for the built kit - + #interim line format; the schema's eventual home is the G-024 toml conversion + lassign $vfsconfig vfstail appname target_kit_type - smokerequires if {![file isdirectory [file join $sourcefolder vfs $vfstail]]} { lappend warnings "WARNING: Missing vfs folder [file join $sourcefolder vfs $vfstail] specified in mapvfs.config for runtime $runtime" lappend missing $vfstail @@ -741,11 +744,11 @@ proc ::punkboot::lib::mapvfs_parse {mapfile rtbase sourcefolder default_target} if {$appname eq ""} { set appname [file rootname $vfstail] } - dict lappend vfs_runtime_map $vfstail [list $runtime $appname $target_kit_type $line_target] + dict lappend vfs_runtime_map $vfstail [list $runtime $appname $target_kit_type $line_target $smokerequires] } } default { - set badline "bad entry in mapvfs.config - expected each entry after the runtime name to be a list of 1 to 4 elements {vfsfolder ?kitname? ?kittype? ?targetplatform?}. got: $vfsconfig ([llength $vfsconfig])" + set badline "bad entry in mapvfs.config - expected each entry after the runtime name to be a list of 1 to 5 elements {vfsfolder ?kitname? ?kittype? ?targetplatform? ?smokerequires?}. got: $vfsconfig ([llength $vfsconfig])" lappend warnings $badline lappend badentries $badline } @@ -791,6 +794,7 @@ proc ::punkboot::lib::mapvfs_parse {mapfile rtbase sourcefolder default_target} # store_tier bin/runtime tier folder name for the target # vfs vfs folder tail (e.g punk9wintk903.vfs) # vfs_present 1|0 +# smokerequire G-133 smoke-require package list as configured ("" when undeclared) proc ::punkboot::lib::mapvfs_kit_outputs {model rtbase sourcefolder} { set runtime_vfs_map [dict get $model runtime_vfs_map] set vfs_runtime_map [dict get $model vfs_runtime_map] @@ -804,7 +808,7 @@ proc ::punkboot::lib::mapvfs_kit_outputs {model rtbase sourcefolder} { } set records [list] set exe_names_seen [list] - set record_pair {{rtname vfstail appname target_kit_type} { + set record_pair {{rtname vfstail appname target_kit_type smokerequires} { upvar 1 records records exe_names_seen exe_names_seen rtbase rtbase sourcefolder sourcefolder\ runtime_target runtime_target default_target default_target if {$appname eq ""} { @@ -850,6 +854,7 @@ proc ::punkboot::lib::mapvfs_kit_outputs {model rtbase sourcefolder} { store_tier $store_tier\ vfs $vfstail\ vfs_present [file isdirectory [file join $sourcefolder vfs $vfstail]]\ + smokerequire $smokerequires\ ] }} foreach vfstail $vfs_tails { @@ -862,25 +867,25 @@ proc ::punkboot::lib::mapvfs_kit_outputs {model rtbase sourcefolder} { continue } foreach vfs_app [dict get $runtime_vfs_map $rtname] { - lassign $vfs_app configured_vfs appname target_kit_type + lassign $vfs_app configured_vfs appname target_kit_type - smokerequires if {$configured_vfs ne $vfstail} { continue } - apply $record_pair $rtname $vfstail $appname $target_kit_type + apply $record_pair $rtname $vfstail $appname $target_kit_type $smokerequires } } } #entries whose vfs folder is missing (excluded from vfs_runtime_map by the parse) dict for {rtname vfs_specs} $runtime_vfs_map { foreach vfsconfig $vfs_specs { - if {[llength $vfsconfig] < 1 || [llength $vfsconfig] > 4} { + if {[llength $vfsconfig] < 1 || [llength $vfsconfig] > 5} { continue } - lassign $vfsconfig vfstail appname target_kit_type + lassign $vfsconfig vfstail appname target_kit_type - smokerequires if {[dict exists $vfs_runtime_map $vfstail]} { continue ;#already enumerated above } - apply $record_pair $rtname $vfstail $appname $target_kit_type + apply $record_pair $rtname $vfstail $appname $target_kit_type $smokerequires } } return $records @@ -2282,6 +2287,8 @@ DIAGRAM 2 - KIT ASSEMBLY DETAIL (the 'make.tcl bake' stage; incl. vfslibs phase) v src/_build/.exe.vfs | + | advisory payload/target binary-arch scan of the merged + | tree (wrong-arch libraries -> recapped BUILD-WARNING) [K11] | boot-precondition gate: merged vfs must supply a tcl | library (tcl_library/, lib/tcl./, tcl./) [K10] v @@ -2294,6 +2301,8 @@ DIAGRAM 2 - KIT ASSEMBLY DETAIL (the 'make.tcl bake' stage; incl. vfslibs phase) v src/_build/.exe | + | smoke-require probe (host-runnable kits with declared + | packages): plain 'package require' inside the artifact [K11] | deploy step: delete old bin/.exe, copy new one in v bin/.exe <-- FAILS (kit listed under FAILED KITS) if a @@ -2377,6 +2386,22 @@ KEY / NOTES own payload could not be extracted - see the BUILD-WARNING naming what was tried. 'make.tcl check' reports whether the gate is ACTIVE. +[K11] PAYLOAD/TARGET consistency checks (G-133), both ADVISORY - warnings recap at + end of run, the kit still builds and deploys. (a) Binary-arch scan at the same + seam as [K10]: each binary library (*.dll/*.so/*.dylib) in the merged tree is + classified by header (PE/ELF/Mach-O - structural, nothing executed, so + cross-target kits are covered) against the kit's target platform; wrong-arch + libraries outside platform-discriminated subdirs (win32-ix86/, win-x64/ etc - + multi-arch payloads are legitimate there) earn recapped BUILD-WARNINGs. + (b) Smoke-require probe: a kit declaring packages (mapvfs.config 5th entry + element) has each one plain-'package require'd INSIDE the freshly built + artifact via its tclsh subcommand - the only check that sees resolution-order + defects (a wrong-arch higher-versioned package shadowing a working copy); + cross-target kits skip with a stated reason, undeclared kits run nothing new. + What neither check guarantees: statically linked packages, pure-tcl packages + with binary dependencies, and version-preference outcomes are visible only to + the smoke probe - and only for declared packages. 'make.tcl check' reports both. + MAINTENANCE (agents take note) ---------------------------------------------------------------------------- This text is embedded in make.tcl (::punkboot::workflow_text). When the build @@ -3356,6 +3381,95 @@ proc ::punkboot::get_vfs_boot_library_report {vfsfolder} { } return [list 1 [::punkboot::utils::vfs_boot_library_report $vfsfolder]] } +#Availability probe + advisory payload/target binary-arch scan of an assembled kit vfs +#(G-133), shared by the bake loop and the 'check' command report. Same guarded-require +#treatment as the boot-precondition check above: a stale bootsupport snapshot degrades +#the scan to a NOTE. Returns {available report}. +proc ::punkboot::get_vfs_binary_arch_report {vfsfolder targetplatform} { + set available [expr {\ + ![catch {package require punkboot::utils}]\ + && [llength [info commands ::punkboot::utils::vfs_binary_arch_report]]\ + }] + if {!$available} { + return [list 0 [dict create]] + } + return [list 1 [::punkboot::utils::vfs_binary_arch_report $vfsfolder $targetplatform]] +} +#G-133 smoke-require probe: execute a freshly built kit artifact via its 'tclsh' +#subcommand and plain-'package require' each declared package inside it. This is the +#only check that observes actual package RESOLUTION in the artifact - the punkluck86 +#incident class (a higher-versioned wrong-arch Thread shadowing the runtime's working +#copy on plain require) is invisible to every structural check because the working +#file exists. The tclsh subcommand is used deliberately: it exits cleanly even on +#runtimes whose full repl teardown is fragile, and a script argument with drained +#stdin cannot reach any console-reopen path. ADVISORY: failures become recapped +#BUILD-WARNINGs naming kit, package and the actual error - the kit still deploys. +#Returns 1 when every declared package resolved, else 0. +proc ::punkboot::kit_smoke_require_probe {kitpath targetkit packages} { + set probescript [file rootname $kitpath]_smokerequire.tcl + if {[catch { + set fd [open $probescript w] + chan configure $fd -translation lf + puts $fd "#generated by make.tcl bake (G-133) - smoke-require probe for $targetkit" + puts $fd "set packages [list $packages]" + puts $fd {foreach pkg $packages { + if {[catch {package require $pkg} v]} { + puts stdout [list SMOKE-REQUIRE $pkg FAIL $v] + } else { + puts stdout [list SMOKE-REQUIRE $pkg OK $v] + } +} +exit 0} + close $fd + } errM]} { + catch {close $fd} + ::punkboot::print_build_warnings [list "smoke-require for kit $targetkit could not write its probe script ($probescript): $errM"] + return 0 + } + if {[catch { + lassign [punk::lib::invoke [list [file nativename $kitpath] tclsh [file nativename $probescript] << ""]] p_stdout p_stderr p_exitcode + } errM]} { + ::punkboot::print_build_warnings [list "smoke-require FAILED for kit $targetkit: could not execute freshly built artifact via its tclsh subcommand ($errM)"] + return 0 + } + set seen [dict create] + foreach line [split $p_stdout \n] { + set line [string trim $line] + if {![string match "SMOKE-REQUIRE *" $line]} { + continue + } + #each line is a well-formed tcl list: SMOKE-REQUIRE OK|FAIL + if {[catch {lassign $line - r_pkg r_status r_detail}]} { + continue + } + dict set seen $r_pkg [list $r_status $r_detail] + } + set allok 1 + set warnings [list] + foreach pkg $packages { + if {![dict exists $seen $pkg]} { + set allok 0 + set tail [string trim [join [lrange [split [string trim $p_stderr] \n] end-2 end] " | "]] + lappend warnings "smoke-require FAILED for kit $targetkit: no result for package '$pkg' (artifact exited $p_exitcode before reporting[expr {$tail ne "" ? "; stderr tail: $tail" : ""}])" + continue + } + lassign [dict get $seen $pkg] r_status r_detail + if {$r_status eq "OK"} { + puts stdout " smoke-require OK for kit $targetkit: package require $pkg -> $r_detail" + } else { + set allok 0 + lappend warnings "smoke-require FAILED for kit $targetkit: package require $pkg -> $r_detail" + } + } + if {$p_exitcode != 0} { + set allok 0 + lappend warnings "smoke-require for kit $targetkit: artifact exited with code $p_exitcode via its tclsh subcommand (expected 0)" + } + if {[llength $warnings]} { + ::punkboot::print_build_warnings $warnings + } + return $allok +} #Wrap ::exit so accumulated provenance warnings are recapped at the very end of output no matter #which of make.tcl's many exit points a command takes. if {![llength [info commands ::punkboot::exit_original]]} { @@ -3612,6 +3726,40 @@ if {$::punkboot::command eq "check"} { puts stdout "boot-precondition gate (G-125): UNAVAILABLE (punkboot::utils vfs_boot_library_report not loadable from bootsupport)" puts stdout " bake will proceed with a NOTE and cannot refuse an unbootable kit - run 'make.tcl modules' then 'make.tcl bootsupport'." } + # Payload/target consistency checks (G-133) - advisory arch scan + smoke-require probe + puts stdout $sep + #availability probe only - the path deliberately does not exist + lassign [::punkboot::get_vfs_binary_arch_report [file join $projectroot __punkboot_archscan_probe__] $::punkboot::target_platform] _arch_available _arch_report + if {$_arch_available} { + puts stdout "payload/target arch scan (G-133): ACTIVE (advisory)" + puts stdout " bake classifies each merged kit's binary libraries (*.dll/*.so/*.dylib header bytes - structural," + puts stdout " nothing executed, cross-target kits included) against the kit's target platform and emits" + puts stdout " recapped BUILD-WARNINGs for wrong-arch libraries outside platform-discriminated subdirs" + puts stdout " (canonical - names and recognised vendor spellings such as win-x64 are exempt)." + } else { + puts stdout "payload/target arch scan (G-133): UNAVAILABLE (punkboot::utils vfs_binary_arch_report not loadable from bootsupport)" + puts stdout " bake will proceed with a NOTE and cannot flag wrong-arch payload libraries - run 'make.tcl modules' then 'make.tcl bootsupport'." + } + set _smoke_declared [list] + if {[file exists $sourcefolder/runtime/mapvfs.config]} { + set _smokemodel [punkboot::lib::mapvfs_parse $sourcefolder/runtime/mapvfs.config [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] {, }])" + } + } + unset -nocomplain _smokemodel _rec + } + puts stdout "smoke-require probe (G-133, advisory): freshly built host-runnable kits declaring packages" + puts stdout " (mapvfs.config 5th entry element) have each one plain-'package require'd inside the built" + puts stdout " artifact via its tclsh subcommand - the only check that sees resolution-order defects such as" + puts stdout " a wrong-arch higher-versioned package shadowing a working copy. Failures are recapped" + puts stdout " BUILD-WARNINGs; cross-target kits skip with a stated reason; undeclared kits run nothing new." + if {[llength $_smoke_declared]} { + puts stdout " declared: [join $_smoke_declared {; }]" + } else { + puts stdout " declared: (none)" + } puts stdout $sep exit 0 } @@ -5840,7 +5988,8 @@ foreach vfstail $vfs_tails { if {[dict exists $runtime_vfs_map $rtname]} { set applist [dict get $runtime_vfs_map $rtname] foreach vfs_app $applist { - lassign $vfs_app configured_vfs appname target_kit_type + #5th element = G-133 smoke-require package list ("" when undeclared) + lassign $vfs_app configured_vfs appname target_kit_type - kit_smokerequires if {$configured_vfs ne $vfstail} { continue } @@ -5862,7 +6011,7 @@ foreach vfstail $vfs_tails { } } lappend exe_names_seen $targetkit - lappend targetkits [list $targetkit $target_kit_type] + lappend targetkits [list $targetkit $target_kit_type $kit_smokerequires] } } puts stdout " vfs: $vfstail runtime: $rtname targetkits: $targetkits" @@ -5871,7 +6020,7 @@ foreach vfstail $vfs_tails { continue ;#G-121 selective bake - not a requested kit output } puts stdout " processing targetkit: $targetkit_info" - lassign $targetkit_info targetkit target_kit_type + lassign $targetkit_info targetkit target_kit_type kit_smokerequires #Self-build guard: never process the kit whose deployed executable is running this #build - the process sweep below would kill this very process, and the deploy step #cannot replace a running image anyway. Informational/update subcommands are @@ -6240,6 +6389,37 @@ foreach vfstail $vfs_tails { set sourcevfs [file join $sourcefolder vfs $vfstail] merge_over $sourcevfs $targetvfs + #G-133 advisory payload/target binary-arch scan, at the same post-merge + #seam as the G-125 gate below. Structural (header bytes only, nothing + #executed), so it runs for every kit including cross-target ones. A + #binary library under a platform-discriminated subdir (win32-ix86/, + #win-x64/ etc) is exempt - multi-arch payloads are legitimate there. + #ADVISORY by design: vendor layouts make false certainty unavoidable, + #so mismatches warn (recapped) and the kit still builds - the G-125 + #gate below stays the only refusal at this seam. + lassign [::punkboot::get_vfs_binary_arch_report $targetvfs $rt_target] archscan_available archscan + if {!$archscan_available} { + puts stderr "NOTE: kit payload binary-arch scan unavailable (punkboot::utils vfs_binary_arch_report not loadable from bootsupport) - continuing without it" + } elseif {[dict get $archscan reason] ne ""} { + puts stdout " payload binary-arch scan not applicable for kit $targetkit: [dict get $archscan reason]" + } elseif {[llength [dict get $archscan mismatches]]} { + set archscan_mismatches [dict get $archscan mismatches] + set archwarnings [list] + set shown 0 + foreach m $archscan_mismatches { + if {$shown >= 8} {break} + incr shown + lappend archwarnings "payload/target arch mismatch in kit $targetkit (target $rt_target): [dict get $m file] is [dict get $m detail] outside any platform-discriminated subdir - a $rt_target runtime cannot load it" + } + if {[llength $archscan_mismatches] > $shown} { + lappend archwarnings "payload/target arch mismatch in kit $targetkit (target $rt_target): [expr {[llength $archscan_mismatches] - $shown}] further mismatching binary libraries not listed above ([llength $archscan_mismatches] mismatches total, [dict get $archscan scanned] binary libraries scanned)" + } + ::punkboot::print_build_warnings $archwarnings + unset archwarnings archscan_mismatches shown + } else { + puts stdout " payload binary-arch scan for kit $targetkit (target $rt_target): OK - [dict get $archscan scanned] binary libraries scanned ([dict get $archscan matched] match target, [dict get $archscan exempt] exempt under platform subdirs, [dict get $archscan unknown] unclassifiable)" + } + #G-125 boot-precondition gate. A kit with no tcl library cannot initialise #at all - 'Cannot find a usable init.tcl' - so refuse it HERE: before any #build product is written, and long before the deploy step deletes the @@ -6588,6 +6768,23 @@ foreach vfstail $vfs_tails { # -- --- --- --- --- --- $vfs_event targetset_end OK + #G-133 post-build smoke-require probe. Only an actual 'package require' + #inside the built artifact observes package RESOLUTION - the wrong-arch + #version-shadowing class is invisible to every structural check because + #the working file exists too. Runs only for kits that declare + #smoke-require packages (mapvfs.config 5th entry element) and only when + #this host can execute the artifact; undeclared kits run nothing new. + if {[llength $kit_smokerequires]} { + if {$rtname eq "-"} { + puts stdout " smoke-require skipped for kit $targetkit: a runtimeless .kit artifact is not directly executable" + } elseif {[punkboot::lib::platform_process_family $rt_target] ne [punkboot::lib::platform_process_family $::punkboot::host_platform]} { + puts stdout " smoke-require skipped for kit $targetkit: cross-target ($rt_target) - the artifact is not executable on this $::punkboot::host_platform host" + } else { + puts stdout " smoke-require probe for kit $targetkit (packages: $kit_smokerequires) - executing freshly built artifact via its tclsh subcommand" + ::punkboot::kit_smoke_require_probe $buildfolder/$targetkit $targetkit $kit_smokerequires + } + } + } else { set skipped_vfs_build 1 puts stderr "." 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 67f7d37c..b3263dba 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 @@ -641,9 +641,10 @@ proc ::punkboot::lib::bootsupport_prompt_yesno {prompt} { # mapfile path as supplied # default_target target platform for entries that declare none # runtime_vfs_map runtime -> raw vfs_specs as listed (appname/type/target may be "") -# vfs_runtime_map vfstail -> list of {runtime appname type target} (defaults -# applied; only vfs folders that exist on disk - matching the -# historical inline parse the kit loop was built around) +# vfs_runtime_map vfstail -> list of {runtime appname type target smokerequires} +# (defaults applied; only vfs folders that exist on disk - matching +# the historical inline parse the kit loop was built around; +# smokerequires is the G-133 smoke-require package list, may be "") # runtime_target runtime -> resolved target platform (all runtimes, mapped order) # missing names of referenced-but-absent runtimes/vfs folders # warnings warning lines in encounter order, ready to print verbatim @@ -732,8 +733,10 @@ proc ::punkboot::lib::mapvfs_parse {mapfile rtbase sourcefolder default_target} } foreach vfsconfig $vfs_specs { switch -- [llength $vfsconfig] { - 1 - 2 - 3 - 4 { - lassign $vfsconfig vfstail appname target_kit_type + 1 - 2 - 3 - 4 - 5 { + #5th element (G-133): smoke-require package list for the built kit - + #interim line format; the schema's eventual home is the G-024 toml conversion + lassign $vfsconfig vfstail appname target_kit_type - smokerequires if {![file isdirectory [file join $sourcefolder vfs $vfstail]]} { lappend warnings "WARNING: Missing vfs folder [file join $sourcefolder vfs $vfstail] specified in mapvfs.config for runtime $runtime" lappend missing $vfstail @@ -741,11 +744,11 @@ proc ::punkboot::lib::mapvfs_parse {mapfile rtbase sourcefolder default_target} if {$appname eq ""} { set appname [file rootname $vfstail] } - dict lappend vfs_runtime_map $vfstail [list $runtime $appname $target_kit_type $line_target] + dict lappend vfs_runtime_map $vfstail [list $runtime $appname $target_kit_type $line_target $smokerequires] } } default { - set badline "bad entry in mapvfs.config - expected each entry after the runtime name to be a list of 1 to 4 elements {vfsfolder ?kitname? ?kittype? ?targetplatform?}. got: $vfsconfig ([llength $vfsconfig])" + set badline "bad entry in mapvfs.config - expected each entry after the runtime name to be a list of 1 to 5 elements {vfsfolder ?kitname? ?kittype? ?targetplatform? ?smokerequires?}. got: $vfsconfig ([llength $vfsconfig])" lappend warnings $badline lappend badentries $badline } @@ -791,6 +794,7 @@ proc ::punkboot::lib::mapvfs_parse {mapfile rtbase sourcefolder default_target} # store_tier bin/runtime tier folder name for the target # vfs vfs folder tail (e.g punk9wintk903.vfs) # vfs_present 1|0 +# smokerequire G-133 smoke-require package list as configured ("" when undeclared) proc ::punkboot::lib::mapvfs_kit_outputs {model rtbase sourcefolder} { set runtime_vfs_map [dict get $model runtime_vfs_map] set vfs_runtime_map [dict get $model vfs_runtime_map] @@ -804,7 +808,7 @@ proc ::punkboot::lib::mapvfs_kit_outputs {model rtbase sourcefolder} { } set records [list] set exe_names_seen [list] - set record_pair {{rtname vfstail appname target_kit_type} { + set record_pair {{rtname vfstail appname target_kit_type smokerequires} { upvar 1 records records exe_names_seen exe_names_seen rtbase rtbase sourcefolder sourcefolder\ runtime_target runtime_target default_target default_target if {$appname eq ""} { @@ -850,6 +854,7 @@ proc ::punkboot::lib::mapvfs_kit_outputs {model rtbase sourcefolder} { store_tier $store_tier\ vfs $vfstail\ vfs_present [file isdirectory [file join $sourcefolder vfs $vfstail]]\ + smokerequire $smokerequires\ ] }} foreach vfstail $vfs_tails { @@ -862,25 +867,25 @@ proc ::punkboot::lib::mapvfs_kit_outputs {model rtbase sourcefolder} { continue } foreach vfs_app [dict get $runtime_vfs_map $rtname] { - lassign $vfs_app configured_vfs appname target_kit_type + lassign $vfs_app configured_vfs appname target_kit_type - smokerequires if {$configured_vfs ne $vfstail} { continue } - apply $record_pair $rtname $vfstail $appname $target_kit_type + apply $record_pair $rtname $vfstail $appname $target_kit_type $smokerequires } } } #entries whose vfs folder is missing (excluded from vfs_runtime_map by the parse) dict for {rtname vfs_specs} $runtime_vfs_map { foreach vfsconfig $vfs_specs { - if {[llength $vfsconfig] < 1 || [llength $vfsconfig] > 4} { + if {[llength $vfsconfig] < 1 || [llength $vfsconfig] > 5} { continue } - lassign $vfsconfig vfstail appname target_kit_type + lassign $vfsconfig vfstail appname target_kit_type - smokerequires if {[dict exists $vfs_runtime_map $vfstail]} { continue ;#already enumerated above } - apply $record_pair $rtname $vfstail $appname $target_kit_type + apply $record_pair $rtname $vfstail $appname $target_kit_type $smokerequires } } return $records @@ -2282,6 +2287,8 @@ DIAGRAM 2 - KIT ASSEMBLY DETAIL (the 'make.tcl bake' stage; incl. vfslibs phase) v src/_build/.exe.vfs | + | advisory payload/target binary-arch scan of the merged + | tree (wrong-arch libraries -> recapped BUILD-WARNING) [K11] | boot-precondition gate: merged vfs must supply a tcl | library (tcl_library/, lib/tcl./, tcl./) [K10] v @@ -2294,6 +2301,8 @@ DIAGRAM 2 - KIT ASSEMBLY DETAIL (the 'make.tcl bake' stage; incl. vfslibs phase) v src/_build/.exe | + | smoke-require probe (host-runnable kits with declared + | packages): plain 'package require' inside the artifact [K11] | deploy step: delete old bin/.exe, copy new one in v bin/.exe <-- FAILS (kit listed under FAILED KITS) if a @@ -2377,6 +2386,22 @@ KEY / NOTES own payload could not be extracted - see the BUILD-WARNING naming what was tried. 'make.tcl check' reports whether the gate is ACTIVE. +[K11] PAYLOAD/TARGET consistency checks (G-133), both ADVISORY - warnings recap at + end of run, the kit still builds and deploys. (a) Binary-arch scan at the same + seam as [K10]: each binary library (*.dll/*.so/*.dylib) in the merged tree is + classified by header (PE/ELF/Mach-O - structural, nothing executed, so + cross-target kits are covered) against the kit's target platform; wrong-arch + libraries outside platform-discriminated subdirs (win32-ix86/, win-x64/ etc - + multi-arch payloads are legitimate there) earn recapped BUILD-WARNINGs. + (b) Smoke-require probe: a kit declaring packages (mapvfs.config 5th entry + element) has each one plain-'package require'd INSIDE the freshly built + artifact via its tclsh subcommand - the only check that sees resolution-order + defects (a wrong-arch higher-versioned package shadowing a working copy); + cross-target kits skip with a stated reason, undeclared kits run nothing new. + What neither check guarantees: statically linked packages, pure-tcl packages + with binary dependencies, and version-preference outcomes are visible only to + the smoke probe - and only for declared packages. 'make.tcl check' reports both. + MAINTENANCE (agents take note) ---------------------------------------------------------------------------- This text is embedded in make.tcl (::punkboot::workflow_text). When the build @@ -3356,6 +3381,95 @@ proc ::punkboot::get_vfs_boot_library_report {vfsfolder} { } return [list 1 [::punkboot::utils::vfs_boot_library_report $vfsfolder]] } +#Availability probe + advisory payload/target binary-arch scan of an assembled kit vfs +#(G-133), shared by the bake loop and the 'check' command report. Same guarded-require +#treatment as the boot-precondition check above: a stale bootsupport snapshot degrades +#the scan to a NOTE. Returns {available report}. +proc ::punkboot::get_vfs_binary_arch_report {vfsfolder targetplatform} { + set available [expr {\ + ![catch {package require punkboot::utils}]\ + && [llength [info commands ::punkboot::utils::vfs_binary_arch_report]]\ + }] + if {!$available} { + return [list 0 [dict create]] + } + return [list 1 [::punkboot::utils::vfs_binary_arch_report $vfsfolder $targetplatform]] +} +#G-133 smoke-require probe: execute a freshly built kit artifact via its 'tclsh' +#subcommand and plain-'package require' each declared package inside it. This is the +#only check that observes actual package RESOLUTION in the artifact - the punkluck86 +#incident class (a higher-versioned wrong-arch Thread shadowing the runtime's working +#copy on plain require) is invisible to every structural check because the working +#file exists. The tclsh subcommand is used deliberately: it exits cleanly even on +#runtimes whose full repl teardown is fragile, and a script argument with drained +#stdin cannot reach any console-reopen path. ADVISORY: failures become recapped +#BUILD-WARNINGs naming kit, package and the actual error - the kit still deploys. +#Returns 1 when every declared package resolved, else 0. +proc ::punkboot::kit_smoke_require_probe {kitpath targetkit packages} { + set probescript [file rootname $kitpath]_smokerequire.tcl + if {[catch { + set fd [open $probescript w] + chan configure $fd -translation lf + puts $fd "#generated by make.tcl bake (G-133) - smoke-require probe for $targetkit" + puts $fd "set packages [list $packages]" + puts $fd {foreach pkg $packages { + if {[catch {package require $pkg} v]} { + puts stdout [list SMOKE-REQUIRE $pkg FAIL $v] + } else { + puts stdout [list SMOKE-REQUIRE $pkg OK $v] + } +} +exit 0} + close $fd + } errM]} { + catch {close $fd} + ::punkboot::print_build_warnings [list "smoke-require for kit $targetkit could not write its probe script ($probescript): $errM"] + return 0 + } + if {[catch { + lassign [punk::lib::invoke [list [file nativename $kitpath] tclsh [file nativename $probescript] << ""]] p_stdout p_stderr p_exitcode + } errM]} { + ::punkboot::print_build_warnings [list "smoke-require FAILED for kit $targetkit: could not execute freshly built artifact via its tclsh subcommand ($errM)"] + return 0 + } + set seen [dict create] + foreach line [split $p_stdout \n] { + set line [string trim $line] + if {![string match "SMOKE-REQUIRE *" $line]} { + continue + } + #each line is a well-formed tcl list: SMOKE-REQUIRE OK|FAIL + if {[catch {lassign $line - r_pkg r_status r_detail}]} { + continue + } + dict set seen $r_pkg [list $r_status $r_detail] + } + set allok 1 + set warnings [list] + foreach pkg $packages { + if {![dict exists $seen $pkg]} { + set allok 0 + set tail [string trim [join [lrange [split [string trim $p_stderr] \n] end-2 end] " | "]] + lappend warnings "smoke-require FAILED for kit $targetkit: no result for package '$pkg' (artifact exited $p_exitcode before reporting[expr {$tail ne "" ? "; stderr tail: $tail" : ""}])" + continue + } + lassign [dict get $seen $pkg] r_status r_detail + if {$r_status eq "OK"} { + puts stdout " smoke-require OK for kit $targetkit: package require $pkg -> $r_detail" + } else { + set allok 0 + lappend warnings "smoke-require FAILED for kit $targetkit: package require $pkg -> $r_detail" + } + } + if {$p_exitcode != 0} { + set allok 0 + lappend warnings "smoke-require for kit $targetkit: artifact exited with code $p_exitcode via its tclsh subcommand (expected 0)" + } + if {[llength $warnings]} { + ::punkboot::print_build_warnings $warnings + } + return $allok +} #Wrap ::exit so accumulated provenance warnings are recapped at the very end of output no matter #which of make.tcl's many exit points a command takes. if {![llength [info commands ::punkboot::exit_original]]} { @@ -3612,6 +3726,40 @@ if {$::punkboot::command eq "check"} { puts stdout "boot-precondition gate (G-125): UNAVAILABLE (punkboot::utils vfs_boot_library_report not loadable from bootsupport)" puts stdout " bake will proceed with a NOTE and cannot refuse an unbootable kit - run 'make.tcl modules' then 'make.tcl bootsupport'." } + # Payload/target consistency checks (G-133) - advisory arch scan + smoke-require probe + puts stdout $sep + #availability probe only - the path deliberately does not exist + lassign [::punkboot::get_vfs_binary_arch_report [file join $projectroot __punkboot_archscan_probe__] $::punkboot::target_platform] _arch_available _arch_report + if {$_arch_available} { + puts stdout "payload/target arch scan (G-133): ACTIVE (advisory)" + puts stdout " bake classifies each merged kit's binary libraries (*.dll/*.so/*.dylib header bytes - structural," + puts stdout " nothing executed, cross-target kits included) against the kit's target platform and emits" + puts stdout " recapped BUILD-WARNINGs for wrong-arch libraries outside platform-discriminated subdirs" + puts stdout " (canonical - names and recognised vendor spellings such as win-x64 are exempt)." + } else { + puts stdout "payload/target arch scan (G-133): UNAVAILABLE (punkboot::utils vfs_binary_arch_report not loadable from bootsupport)" + puts stdout " bake will proceed with a NOTE and cannot flag wrong-arch payload libraries - run 'make.tcl modules' then 'make.tcl bootsupport'." + } + set _smoke_declared [list] + if {[file exists $sourcefolder/runtime/mapvfs.config]} { + set _smokemodel [punkboot::lib::mapvfs_parse $sourcefolder/runtime/mapvfs.config [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] {, }])" + } + } + unset -nocomplain _smokemodel _rec + } + puts stdout "smoke-require probe (G-133, advisory): freshly built host-runnable kits declaring packages" + puts stdout " (mapvfs.config 5th entry element) have each one plain-'package require'd inside the built" + puts stdout " artifact via its tclsh subcommand - the only check that sees resolution-order defects such as" + puts stdout " a wrong-arch higher-versioned package shadowing a working copy. Failures are recapped" + puts stdout " BUILD-WARNINGs; cross-target kits skip with a stated reason; undeclared kits run nothing new." + if {[llength $_smoke_declared]} { + puts stdout " declared: [join $_smoke_declared {; }]" + } else { + puts stdout " declared: (none)" + } puts stdout $sep exit 0 } @@ -5840,7 +5988,8 @@ foreach vfstail $vfs_tails { if {[dict exists $runtime_vfs_map $rtname]} { set applist [dict get $runtime_vfs_map $rtname] foreach vfs_app $applist { - lassign $vfs_app configured_vfs appname target_kit_type + #5th element = G-133 smoke-require package list ("" when undeclared) + lassign $vfs_app configured_vfs appname target_kit_type - kit_smokerequires if {$configured_vfs ne $vfstail} { continue } @@ -5862,7 +6011,7 @@ foreach vfstail $vfs_tails { } } lappend exe_names_seen $targetkit - lappend targetkits [list $targetkit $target_kit_type] + lappend targetkits [list $targetkit $target_kit_type $kit_smokerequires] } } puts stdout " vfs: $vfstail runtime: $rtname targetkits: $targetkits" @@ -5871,7 +6020,7 @@ foreach vfstail $vfs_tails { continue ;#G-121 selective bake - not a requested kit output } puts stdout " processing targetkit: $targetkit_info" - lassign $targetkit_info targetkit target_kit_type + lassign $targetkit_info targetkit target_kit_type kit_smokerequires #Self-build guard: never process the kit whose deployed executable is running this #build - the process sweep below would kill this very process, and the deploy step #cannot replace a running image anyway. Informational/update subcommands are @@ -6240,6 +6389,37 @@ foreach vfstail $vfs_tails { set sourcevfs [file join $sourcefolder vfs $vfstail] merge_over $sourcevfs $targetvfs + #G-133 advisory payload/target binary-arch scan, at the same post-merge + #seam as the G-125 gate below. Structural (header bytes only, nothing + #executed), so it runs for every kit including cross-target ones. A + #binary library under a platform-discriminated subdir (win32-ix86/, + #win-x64/ etc) is exempt - multi-arch payloads are legitimate there. + #ADVISORY by design: vendor layouts make false certainty unavoidable, + #so mismatches warn (recapped) and the kit still builds - the G-125 + #gate below stays the only refusal at this seam. + lassign [::punkboot::get_vfs_binary_arch_report $targetvfs $rt_target] archscan_available archscan + if {!$archscan_available} { + puts stderr "NOTE: kit payload binary-arch scan unavailable (punkboot::utils vfs_binary_arch_report not loadable from bootsupport) - continuing without it" + } elseif {[dict get $archscan reason] ne ""} { + puts stdout " payload binary-arch scan not applicable for kit $targetkit: [dict get $archscan reason]" + } elseif {[llength [dict get $archscan mismatches]]} { + set archscan_mismatches [dict get $archscan mismatches] + set archwarnings [list] + set shown 0 + foreach m $archscan_mismatches { + if {$shown >= 8} {break} + incr shown + lappend archwarnings "payload/target arch mismatch in kit $targetkit (target $rt_target): [dict get $m file] is [dict get $m detail] outside any platform-discriminated subdir - a $rt_target runtime cannot load it" + } + if {[llength $archscan_mismatches] > $shown} { + lappend archwarnings "payload/target arch mismatch in kit $targetkit (target $rt_target): [expr {[llength $archscan_mismatches] - $shown}] further mismatching binary libraries not listed above ([llength $archscan_mismatches] mismatches total, [dict get $archscan scanned] binary libraries scanned)" + } + ::punkboot::print_build_warnings $archwarnings + unset archwarnings archscan_mismatches shown + } else { + puts stdout " payload binary-arch scan for kit $targetkit (target $rt_target): OK - [dict get $archscan scanned] binary libraries scanned ([dict get $archscan matched] match target, [dict get $archscan exempt] exempt under platform subdirs, [dict get $archscan unknown] unclassifiable)" + } + #G-125 boot-precondition gate. A kit with no tcl library cannot initialise #at all - 'Cannot find a usable init.tcl' - so refuse it HERE: before any #build product is written, and long before the deploy step deletes the @@ -6588,6 +6768,23 @@ foreach vfstail $vfs_tails { # -- --- --- --- --- --- $vfs_event targetset_end OK + #G-133 post-build smoke-require probe. Only an actual 'package require' + #inside the built artifact observes package RESOLUTION - the wrong-arch + #version-shadowing class is invisible to every structural check because + #the working file exists too. Runs only for kits that declare + #smoke-require packages (mapvfs.config 5th entry element) and only when + #this host can execute the artifact; undeclared kits run nothing new. + if {[llength $kit_smokerequires]} { + if {$rtname eq "-"} { + puts stdout " smoke-require skipped for kit $targetkit: a runtimeless .kit artifact is not directly executable" + } elseif {[punkboot::lib::platform_process_family $rt_target] ne [punkboot::lib::platform_process_family $::punkboot::host_platform]} { + puts stdout " smoke-require skipped for kit $targetkit: cross-target ($rt_target) - the artifact is not executable on this $::punkboot::host_platform host" + } else { + puts stdout " smoke-require probe for kit $targetkit (packages: $kit_smokerequires) - executing freshly built artifact via its tclsh subcommand" + ::punkboot::kit_smoke_require_probe $buildfolder/$targetkit $targetkit $kit_smokerequires + } + } + } else { set skipped_vfs_build 1 puts stderr "." diff --git a/src/vfs/_vfscommon.vfs/modules/punk/mix/templates-0.2.0.tm b/src/vfs/_vfscommon.vfs/modules/punk/mix/templates-0.2.0.tm index 839bb06d5e239bfd7db6ce4525f6749d225ff203..96b4ab8f0e7b3d065db83c0368291fad39b81149 100644 GIT binary patch delta 126104 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°{avQmc($l$Y8Jt3H3C9kvNSgY0w{xV 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

* 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.txt -# -# Please consider using a BSD or MIT style license for greatest compatibility with the Tcl ecosystem. -# Code using preferred Tcl licenses can be eligible for inclusion in Tcllib, Tklib and the punk package repository. -# ++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ -# (C) 2023 -# -# @@ Meta Begin -# Application punkboot::utils 0.4.0 -# Meta platform tcl -# Meta license BSD -# @@ Meta End - - - -# ++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ -## Requirements -##e.g package require frobz -package require Tcl 8.6- - - -# ++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ -namespace eval punkboot::utils { - variable version 0.1.0 - namespace export parse_punkproject_version read_punkproject_version read_changelog_latest_version vcs_dirty_warnings vfs_boot_library_report - - - namespace eval argdoc { - lappend PUNKARGS [list { - @id -id ::punkboot::utils::parse_punkproject_version - @cmd -name "::punkboot::utils::parse_punkproject_version"\ - -summary\ - "Parse the [project] version from TOML content string"\ - -help\ - "Scans TOML content for the [project] section and returns - the value of the version key as a string. Returns an empty - string if the section or key is not found." - @leaders - content -type string -optional 0 -help\ - "TOML content string to parse" - }] - } - proc parse_punkproject_version {content} { - set in_project 0 - foreach line [split $content \n] { - set trimmed [string trim $line] - if {[string index $trimmed 0] eq {[} && [string index $trimmed end] eq {]}} { - set in_project [expr {$trimmed eq "\[project\]"}] - continue - } - if {$in_project && [regexp {^version\s*=\s*"([^"]+)"} $trimmed _ v]} { - return $v - } - } - return "" - } - - - namespace eval argdoc { - lappend PUNKARGS [list { - @id -id ::punkboot::utils::read_punkproject_version - @cmd -name "::punkboot::utils::read_punkproject_version"\ - -summary\ - "Read the [project] version from a TOML file"\ - -help\ - "Reads the file at tomlfile and returns the [project] - version value as a string. Returns an empty string if the - file does not exist or the version is not found." - @leaders - tomlfile -type string -optional 0 -help\ - "Path to the TOML file to read" - }] - } - proc read_punkproject_version {tomlfile} { - if {![file exists $tomlfile]} {return ""} - set fh [open $tomlfile r] - try { - set content [read $fh] - } finally { - close $fh - } - return [::punkboot::utils::parse_punkproject_version $content] - } - - - namespace eval argdoc { - lappend PUNKARGS [list { - @id -id ::punkboot::utils::read_changelog_latest_version - @cmd -name "::punkboot::utils::read_changelog_latest_version"\ - -summary\ - "Read the latest ## [X.Y.Z] version header from a changelog file"\ - -help\ - "Scans the changelog file from the top and returns the - version string from the first '## [X.Y.Z]' header line. - Returns an empty string if the file does not exist or no - matching header is found." - @leaders - changelogfile -type string -optional 0 -help\ - "Path to the changelog file to read" - }] - } - proc read_changelog_latest_version {changelogfile} { - if {![file exists $changelogfile]} {return ""} - set fh [open $changelogfile r] - try { - set content [read $fh] - } finally { - close $fh - } - foreach line [split $content \n] { - if {[regexp {^##\s*\[([0-9][^\]]*)\]} $line _ v]} { - return $v - } - } - return "" - } - - - namespace eval argdoc { - lappend PUNKARGS [list { - @id -id ::punkboot::utils::vcs_dirty_warnings - @cmd -name "::punkboot::utils::vcs_dirty_warnings"\ - -summary\ - "Warning lines for uncommitted VCS changes above a path"\ - -help\ - "Walks up from path to the nearest fossil and/or git root and - returns warning lines describing uncommitted changes. - Artifacts built from a dirty source tree have no committed - provenance - callers such as make.tcl vendorupdate use this - to flag source projects that should be committed first. - - checkedrootsvar names a dict variable in the caller's scope - used to report each VCS root at most once across calls. - label, if supplied, is prefixed into each warning to name - the calling operation (e.g. 'vendorupdate'). - scope, if supplied, is a subpath relative to path; only - uncommitted changes under that subpath are counted (e.g. - scope 'src' warns about dirty src/ while ignoring dirt - elsewhere in the checkout). - - Returns an empty list if the path is clean, unversioned, - missing, already reported, or state cannot be determined." - @leaders - path -type string -optional 0 -help\ - "Path to check; the nearest enclosing fossil/git root is examined" - checkedrootsvar -type string -optional 0 -help\ - "Name of a dict variable in the caller's scope for dedupe across calls" - label -type string -optional 1 -default "" -help\ - "Operation name prefixed into warnings" - scope -type string -optional 1 -default "" -help\ - "Subpath relative to path limiting which changes count; empty = whole checkout" - }] - } - proc vcs_dirty_warnings {path checkedrootsvar {label ""} {scope ""}} { - upvar 1 $checkedrootsvar checkedroots - if {![info exists checkedroots]} {set checkedroots [dict create]} - if {$label ne ""} {set label "$label "} - set warnings [list] - set dir [file normalize $path] - if {![file isdirectory $dir]} { - return $warnings ;#missing path - not this proc's business to report - } - set scopeabs "" - set scopedesc "" ;#included in warning text when scoped - if {$scope ne ""} { - set scopeabs [file normalize [file join $dir $scope]] - set scopedesc " under [string trimright $scope /]/" - } - set fossilroot "" - set gitroot "" - while {1} { - if {$fossilroot eq "" && ([file exists [file join $dir .fslckout]] || [file exists [file join $dir _FOSSIL_]])} { - set fossilroot $dir - } - if {$gitroot eq "" && [file exists [file join $dir .git]]} { - set gitroot $dir - } - if {$fossilroot ne "" || $gitroot ne ""} { - break ;#report at the nearest VCS root(s); a dual git+fossil root is caught in one pass - } - set parent [file dirname $dir] - if {$parent eq $dir} { break } - set dir $parent - } - if {$fossilroot ne "" && ![dict exists $checkedroots fossil,$fossilroot,$scope] && [llength [auto_execok fossil]]} { - dict set checkedroots fossil,$fossilroot,$scope 1 - #fossil changes must run from within the checkout - set original_cwd [pwd] - if {[catch { - cd $fossilroot - set fchanges [string trim [exec {*}[auto_execok fossil] changes]] - } errM]} { - lappend warnings "WARNING: ${label}could not determine fossil state of source project at $fossilroot ($errM)" - } else { - set flines [list] - foreach line [split $fchanges \n] { - set line [string trim $line] - if {$line eq ""} {continue} - if {$scopeabs ne ""} { - #fossil changes lines are ' ' - if {![regexp {^\S+\s+(.*)$} $line _ relfile]} {continue} - set normfile [file normalize [file join $fossilroot $relfile]] - if {$normfile ne $scopeabs && ![string match "${scopeabs}/*" $normfile]} {continue} - } - lappend flines $line - } - if {[llength $flines]} { - lappend warnings "WARNING: ${label}source project at $fossilroot has uncommitted fossil changes${scopedesc} ([llength $flines] file(s)) - artifacts built from a dirty tree have no committed provenance" - } - } - cd $original_cwd - } - if {$gitroot ne "" && ![dict exists $checkedroots git,$gitroot,$scope] && [llength [auto_execok git]]} { - dict set checkedroots git,$gitroot,$scope 1 - set gitpathargs [list] - if {$scopeabs ne ""} { - set gitpathargs [list -- $scopeabs] - } - if {[catch { - set gchanges [string trim [exec {*}[auto_execok git] -C $gitroot status --porcelain {*}$gitpathargs]] - } errM]} { - lappend warnings "WARNING: ${label}could not determine git state of source project at $gitroot ($errM)" - } elseif {$gchanges ne ""} { - lappend warnings "WARNING: ${label}source project at $gitroot has uncommitted git changes${scopedesc} ([llength [split $gchanges \n]] file(s)) - artifacts built from a dirty tree have no committed provenance" - } - } - return $warnings - } - - - #Companion files of a real Tcl library directory. init.tcl sources these, so a - #directory holding init.tcl with none of them beside it is a package's own init - #script (lib/BWidget1.10.1/init.tcl and friends), not a tcl library. - variable boot_library_companions {tm.tcl package.tcl auto.tcl clock.tcl history.tcl word.tcl} - - namespace eval argdoc { - lappend PUNKARGS [list { - @id -id ::punkboot::utils::vfs_boot_library_report - @cmd -name "::punkboot::utils::vfs_boot_library_report"\ - -summary\ - "Report whether an assembled vfs tree can supply a bootable tcl library"\ - -help\ - "Structural check of a merged .vfs tree for the precondition a kit - needs to initialise at all: a Tcl library the runtime can find. Reads - the directory only - nothing is executed, decompressed or launched, so - a caller such as make.tcl can run it for every kit on every bake and - for a cross-target kit it could never run itself. - - Three conventions are recognised, all observed in real runtimes: - tcl_library/ zipfs-attached kits (tclZipfs looks for - /tcl_library/init.tcl) - lib/tcl./ starkit/tclkit-style kits (lib/tcl8.6, - lib/tcl9.0) - tcl./ runtimes whose archive mounts at the - executable's own path rather than at - //zipfs:/app, so [info library] is - /tcl8.6 - the androwish/undroidwish - zipfs backport for Tcl 8.6 does this - - A candidate directory qualifies only when it holds init.tcl AND at - least one companion file a real Tcl library carries beside it - (tm.tcl, package.tcl, auto.tcl, clock.tcl, history.tcl, word.tcl) or - an encoding/ subdirectory. Without that second test a package's own - init script - lib/BWidget1.10.1/init.tcl, present in every punkshell - kit - would answer for a tcl library it cannot provide. - - Returned dict keys: - ok 1 when at least one qualifying library was found - locations qualifying directories, relative to vfsfolder - rejected candidate directories that held init.tcl but no - companion, relative to vfsfolder - the near-misses - worth naming when a gate fires unexpectedly - checked the location patterns examined, relative to vfsfolder - reason why ok is 0; empty string when ok is 1" - @leaders - vfsfolder -type string -optional 0 -help\ - "Path of the assembled vfs tree to inspect" - }] - } - proc vfs_boot_library_report {vfsfolder} { - variable boot_library_companions - set checked [list tcl_library lib/tcl. tcl.] - set report [dict create ok 0 locations {} rejected {} checked $checked reason ""] - if {![file isdirectory $vfsfolder]} { - dict set report reason "no such directory: $vfsfolder" - return $report - } - #candidates are the three conventions only - a full tree walk would find every - #package's init.tcl and cost more than the check is worth. - #The tcl[0-9]* globs deliberately also match module trees named tcl8/ or tcl9/ - #(both exist in this project's kits); they carry no init.tcl, so the qualification - #test below rejects them without needing a narrower pattern. - set candidates [list [file join $vfsfolder tcl_library]] - foreach dir [lsort [glob -nocomplain -type d -directory [file join $vfsfolder lib] -- {tcl[0-9]*}]] { - lappend candidates $dir - } - foreach dir [lsort [glob -nocomplain -type d -directory $vfsfolder -- {tcl[0-9]*}]] { - lappend candidates $dir - } - set locations [list] - set rejected [list] - foreach dir $candidates { - if {![file isfile [file join $dir init.tcl]]} { - continue - } - set qualifies 0 - foreach companion $boot_library_companions { - if {[file isfile [file join $dir $companion]]} { - set qualifies 1 - break - } - } - if {!$qualifies && [file isdirectory [file join $dir encoding]]} { - set qualifies 1 - } - set rel [string range $dir [expr {[string length $vfsfolder] + 1}] end] - if {$qualifies} { - lappend locations $rel - } else { - lappend rejected $rel - } - } - if {[llength $locations]} { - dict set report ok 1 - dict set report locations $locations - dict set report rejected $rejected - return $report - } - dict set report rejected $rejected - if {[llength $rejected]} { - dict set report reason "no tcl library in [file tail $vfsfolder]: [join $rejected {, }] hold init.tcl but none of the companion files a tcl library carries beside it ([join $boot_library_companions {, }]) nor an encoding/ directory" - } else { - dict set report reason "no tcl library in [file tail $vfsfolder]: none of tcl_library/init.tcl, lib/tcl./init.tcl or tcl./init.tcl is present" - } - return $report - } -} - -namespace eval ::punk::args::register { - #use fully qualified so 8.6 doesn't find existing var in global namespace - lappend ::punk::args::register::NAMESPACES ::punkboot::utils ::punkboot::utils::argdoc -} - -## Ready -package provide punkboot::utils [tcl::namespace::eval punkboot::utils { - variable version - #- this version number, exactly 0.4.0, is a literal used in src module folders - #- we refer to this sometimes as the magic version number - set version 0.4.0 -}] -return diff --git a/src/vfs/_vfscommon.vfs/modules/punkboot/utils-0.5.0.tm b/src/vfs/_vfscommon.vfs/modules/punkboot/utils-0.5.0.tm new file mode 100644 index 00000000..1cd5324c --- /dev/null +++ b/src/vfs/_vfscommon.vfs/modules/punkboot/utils-0.5.0.tm @@ -0,0 +1,753 @@ +# -*- tcl -*- +# Maintenance Instruction: leave the 999999.xxx.x as is and use 'pmix make' or src/make.tcl to update from -buildversion.txt +# +# Please consider using a BSD or MIT style license for greatest compatibility with the Tcl ecosystem. +# Code using preferred Tcl licenses can be eligible for inclusion in Tcllib, Tklib and the punk package repository. +# ++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +# (C) 2023 +# +# @@ Meta Begin +# Application punkboot::utils 0.5.0 +# Meta platform tcl +# Meta license BSD +# @@ Meta End + + + +# ++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +## Requirements +##e.g package require frobz +package require Tcl 8.6- + + +# ++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +namespace eval punkboot::utils { + variable version 0.1.0 + namespace export binary_arch_classify parse_punkproject_version read_punkproject_version read_changelog_latest_version vcs_dirty_warnings vfs_binary_arch_report vfs_boot_library_report + + + namespace eval argdoc { + lappend PUNKARGS [list { + @id -id ::punkboot::utils::parse_punkproject_version + @cmd -name "::punkboot::utils::parse_punkproject_version"\ + -summary\ + "Parse the [project] version from TOML content string"\ + -help\ + "Scans TOML content for the [project] section and returns + the value of the version key as a string. Returns an empty + string if the section or key is not found." + @leaders + content -type string -optional 0 -help\ + "TOML content string to parse" + }] + } + proc parse_punkproject_version {content} { + set in_project 0 + foreach line [split $content \n] { + set trimmed [string trim $line] + if {[string index $trimmed 0] eq {[} && [string index $trimmed end] eq {]}} { + set in_project [expr {$trimmed eq "\[project\]"}] + continue + } + if {$in_project && [regexp {^version\s*=\s*"([^"]+)"} $trimmed _ v]} { + return $v + } + } + return "" + } + + + namespace eval argdoc { + lappend PUNKARGS [list { + @id -id ::punkboot::utils::read_punkproject_version + @cmd -name "::punkboot::utils::read_punkproject_version"\ + -summary\ + "Read the [project] version from a TOML file"\ + -help\ + "Reads the file at tomlfile and returns the [project] + version value as a string. Returns an empty string if the + file does not exist or the version is not found." + @leaders + tomlfile -type string -optional 0 -help\ + "Path to the TOML file to read" + }] + } + proc read_punkproject_version {tomlfile} { + if {![file exists $tomlfile]} {return ""} + set fh [open $tomlfile r] + try { + set content [read $fh] + } finally { + close $fh + } + return [::punkboot::utils::parse_punkproject_version $content] + } + + + namespace eval argdoc { + lappend PUNKARGS [list { + @id -id ::punkboot::utils::read_changelog_latest_version + @cmd -name "::punkboot::utils::read_changelog_latest_version"\ + -summary\ + "Read the latest ## [X.Y.Z] version header from a changelog file"\ + -help\ + "Scans the changelog file from the top and returns the + version string from the first '## [X.Y.Z]' header line. + Returns an empty string if the file does not exist or no + matching header is found." + @leaders + changelogfile -type string -optional 0 -help\ + "Path to the changelog file to read" + }] + } + proc read_changelog_latest_version {changelogfile} { + if {![file exists $changelogfile]} {return ""} + set fh [open $changelogfile r] + try { + set content [read $fh] + } finally { + close $fh + } + foreach line [split $content \n] { + if {[regexp {^##\s*\[([0-9][^\]]*)\]} $line _ v]} { + return $v + } + } + return "" + } + + + namespace eval argdoc { + lappend PUNKARGS [list { + @id -id ::punkboot::utils::vcs_dirty_warnings + @cmd -name "::punkboot::utils::vcs_dirty_warnings"\ + -summary\ + "Warning lines for uncommitted VCS changes above a path"\ + -help\ + "Walks up from path to the nearest fossil and/or git root and + returns warning lines describing uncommitted changes. + Artifacts built from a dirty source tree have no committed + provenance - callers such as make.tcl vendorupdate use this + to flag source projects that should be committed first. + + checkedrootsvar names a dict variable in the caller's scope + used to report each VCS root at most once across calls. + label, if supplied, is prefixed into each warning to name + the calling operation (e.g. 'vendorupdate'). + scope, if supplied, is a subpath relative to path; only + uncommitted changes under that subpath are counted (e.g. + scope 'src' warns about dirty src/ while ignoring dirt + elsewhere in the checkout). + + Returns an empty list if the path is clean, unversioned, + missing, already reported, or state cannot be determined." + @leaders + path -type string -optional 0 -help\ + "Path to check; the nearest enclosing fossil/git root is examined" + checkedrootsvar -type string -optional 0 -help\ + "Name of a dict variable in the caller's scope for dedupe across calls" + label -type string -optional 1 -default "" -help\ + "Operation name prefixed into warnings" + scope -type string -optional 1 -default "" -help\ + "Subpath relative to path limiting which changes count; empty = whole checkout" + }] + } + proc vcs_dirty_warnings {path checkedrootsvar {label ""} {scope ""}} { + upvar 1 $checkedrootsvar checkedroots + if {![info exists checkedroots]} {set checkedroots [dict create]} + if {$label ne ""} {set label "$label "} + set warnings [list] + set dir [file normalize $path] + if {![file isdirectory $dir]} { + return $warnings ;#missing path - not this proc's business to report + } + set scopeabs "" + set scopedesc "" ;#included in warning text when scoped + if {$scope ne ""} { + set scopeabs [file normalize [file join $dir $scope]] + set scopedesc " under [string trimright $scope /]/" + } + set fossilroot "" + set gitroot "" + while {1} { + if {$fossilroot eq "" && ([file exists [file join $dir .fslckout]] || [file exists [file join $dir _FOSSIL_]])} { + set fossilroot $dir + } + if {$gitroot eq "" && [file exists [file join $dir .git]]} { + set gitroot $dir + } + if {$fossilroot ne "" || $gitroot ne ""} { + break ;#report at the nearest VCS root(s); a dual git+fossil root is caught in one pass + } + set parent [file dirname $dir] + if {$parent eq $dir} { break } + set dir $parent + } + if {$fossilroot ne "" && ![dict exists $checkedroots fossil,$fossilroot,$scope] && [llength [auto_execok fossil]]} { + dict set checkedroots fossil,$fossilroot,$scope 1 + #fossil changes must run from within the checkout + set original_cwd [pwd] + if {[catch { + cd $fossilroot + set fchanges [string trim [exec {*}[auto_execok fossil] changes]] + } errM]} { + lappend warnings "WARNING: ${label}could not determine fossil state of source project at $fossilroot ($errM)" + } else { + set flines [list] + foreach line [split $fchanges \n] { + set line [string trim $line] + if {$line eq ""} {continue} + if {$scopeabs ne ""} { + #fossil changes lines are ' ' + if {![regexp {^\S+\s+(.*)$} $line _ relfile]} {continue} + set normfile [file normalize [file join $fossilroot $relfile]] + if {$normfile ne $scopeabs && ![string match "${scopeabs}/*" $normfile]} {continue} + } + lappend flines $line + } + if {[llength $flines]} { + lappend warnings "WARNING: ${label}source project at $fossilroot has uncommitted fossil changes${scopedesc} ([llength $flines] file(s)) - artifacts built from a dirty tree have no committed provenance" + } + } + cd $original_cwd + } + if {$gitroot ne "" && ![dict exists $checkedroots git,$gitroot,$scope] && [llength [auto_execok git]]} { + dict set checkedroots git,$gitroot,$scope 1 + set gitpathargs [list] + if {$scopeabs ne ""} { + set gitpathargs [list -- $scopeabs] + } + if {[catch { + set gchanges [string trim [exec {*}[auto_execok git] -C $gitroot status --porcelain {*}$gitpathargs]] + } errM]} { + lappend warnings "WARNING: ${label}could not determine git state of source project at $gitroot ($errM)" + } elseif {$gchanges ne ""} { + lappend warnings "WARNING: ${label}source project at $gitroot has uncommitted git changes${scopedesc} ([llength [split $gchanges \n]] file(s)) - artifacts built from a dirty tree have no committed provenance" + } + } + return $warnings + } + + + #Companion files of a real Tcl library directory. init.tcl sources these, so a + #directory holding init.tcl with none of them beside it is a package's own init + #script (lib/BWidget1.10.1/init.tcl and friends), not a tcl library. + variable boot_library_companions {tm.tcl package.tcl auto.tcl clock.tcl history.tcl word.tcl} + + namespace eval argdoc { + lappend PUNKARGS [list { + @id -id ::punkboot::utils::vfs_boot_library_report + @cmd -name "::punkboot::utils::vfs_boot_library_report"\ + -summary\ + "Report whether an assembled vfs tree can supply a bootable tcl library"\ + -help\ + "Structural check of a merged .vfs tree for the precondition a kit + needs to initialise at all: a Tcl library the runtime can find. Reads + the directory only - nothing is executed, decompressed or launched, so + a caller such as make.tcl can run it for every kit on every bake and + for a cross-target kit it could never run itself. + + Three conventions are recognised, all observed in real runtimes: + tcl_library/ zipfs-attached kits (tclZipfs looks for + /tcl_library/init.tcl) + lib/tcl./ starkit/tclkit-style kits (lib/tcl8.6, + lib/tcl9.0) + tcl./ runtimes whose archive mounts at the + executable's own path rather than at + //zipfs:/app, so [info library] is + /tcl8.6 - the androwish/undroidwish + zipfs backport for Tcl 8.6 does this + + A candidate directory qualifies only when it holds init.tcl AND at + least one companion file a real Tcl library carries beside it + (tm.tcl, package.tcl, auto.tcl, clock.tcl, history.tcl, word.tcl) or + an encoding/ subdirectory. Without that second test a package's own + init script - lib/BWidget1.10.1/init.tcl, present in every punkshell + kit - would answer for a tcl library it cannot provide. + + Returned dict keys: + ok 1 when at least one qualifying library was found + locations qualifying directories, relative to vfsfolder + rejected candidate directories that held init.tcl but no + companion, relative to vfsfolder - the near-misses + worth naming when a gate fires unexpectedly + checked the location patterns examined, relative to vfsfolder + reason why ok is 0; empty string when ok is 1" + @leaders + vfsfolder -type string -optional 0 -help\ + "Path of the assembled vfs tree to inspect" + }] + } + proc vfs_boot_library_report {vfsfolder} { + variable boot_library_companions + set checked [list tcl_library lib/tcl. tcl.] + set report [dict create ok 0 locations {} rejected {} checked $checked reason ""] + if {![file isdirectory $vfsfolder]} { + dict set report reason "no such directory: $vfsfolder" + return $report + } + #candidates are the three conventions only - a full tree walk would find every + #package's init.tcl and cost more than the check is worth. + #The tcl[0-9]* globs deliberately also match module trees named tcl8/ or tcl9/ + #(both exist in this project's kits); they carry no init.tcl, so the qualification + #test below rejects them without needing a narrower pattern. + set candidates [list [file join $vfsfolder tcl_library]] + foreach dir [lsort [glob -nocomplain -type d -directory [file join $vfsfolder lib] -- {tcl[0-9]*}]] { + lappend candidates $dir + } + foreach dir [lsort [glob -nocomplain -type d -directory $vfsfolder -- {tcl[0-9]*}]] { + lappend candidates $dir + } + set locations [list] + set rejected [list] + foreach dir $candidates { + if {![file isfile [file join $dir init.tcl]]} { + continue + } + set qualifies 0 + foreach companion $boot_library_companions { + if {[file isfile [file join $dir $companion]]} { + set qualifies 1 + break + } + } + if {!$qualifies && [file isdirectory [file join $dir encoding]]} { + set qualifies 1 + } + set rel [string range $dir [expr {[string length $vfsfolder] + 1}] end] + if {$qualifies} { + lappend locations $rel + } else { + lappend rejected $rel + } + } + if {[llength $locations]} { + dict set report ok 1 + dict set report locations $locations + dict set report rejected $rejected + return $report + } + dict set report rejected $rejected + if {[llength $rejected]} { + dict set report reason "no tcl library in [file tail $vfsfolder]: [join $rejected {, }] hold init.tcl but none of the companion files a tcl library carries beside it ([join $boot_library_companions {, }]) nor an encoding/ directory" + } else { + dict set report reason "no tcl library in [file tail $vfsfolder]: none of tcl_library/init.tcl, lib/tcl./init.tcl or tcl./init.tcl is present" + } + return $report + } + + #G-133 binary-arch scan support. Recognition data is deliberately plain namespace + #variables so extending it (a new vendor spelling, a new cpu token) is a visible + #one-line edit rather than a code change. + # + #PE Machine field values (IMAGE_FILE_HEADER.Machine, 2 bytes LE at e_lfanew+4) + variable pe_machine_map { + 014c i386 + 8664 x86_64 + aa64 arm64 + 01c0 arm + 01c4 arm + 0200 ia64 + 0166 mips + 01f0 ppc + 5032 riscv32 + 5064 riscv64 + } + #ELF e_machine values (2 bytes at offset 18, endianness per EI_DATA) + variable elf_machine_map { + 3 i386 + 62 x86_64 + 183 arm64 + 40 arm + 8 mips + 20 ppc + 21 ppc64 + 22 s390x + 2 sparc + 43 sparc64 + 243 riscv + } + #Mach-O cputype base values (CPU_ARCH_ABI64 flag 0x01000000 selects the 64-bit variant) + variable macho_cputype_map { + 7 {i386 x86_64} + 12 {arm arm64} + 18 {ppc ppc64} + } + #os / cpu tokens accepted in a CANONICAL platform-dir segment (-). The os and + #cpu lists follow the punk::platform canon plus common alias tokens, so a platform- + #discriminated subdir is recognised whichever spelling a package author normalised to. + variable platform_segment_os { + win32 windows linux macosx freebsd netbsd openbsd dragonfly solaris sunos + aix hpux irix qnx haiku android msys cygwin + } + variable platform_segment_cpu { + x86_64 amd64 x64 ix86 i386 i486 i586 i686 x86 + arm64 aarch64 arm armv6 armv7 armv6l armv7l + ppc ppc64 ppc64le powerpc mips mipsel mips64 + riscv32 riscv64 s390 s390x sparc sparc64 universal + } + #Recognised VENDOR spellings observed (or near-certain) as platform-discriminating + #directory names that do not parse as -. blend2d, + #extrafont and tclMuPDF ship win-x64 today. + variable platform_segment_vendor { + win-x64 win-x86 win-arm64 win-arm win32 win64 + linux-x64 linux-arm64 macos-x64 macos-arm64 osx-x64 osx-arm64 + } + #File tails treated as binary libraries by vfs_binary_arch_report + variable binary_library_globs {*.dll *.so *.so.[0-9]* *.dylib} + + namespace eval argdoc { + lappend PUNKARGS [list { + @id -id ::punkboot::utils::binary_arch_classify + @cmd -name "::punkboot::utils::binary_arch_classify"\ + -summary\ + "Classify a binary library file's executable format and cpu architecture"\ + -help\ + "Reads only the file's header bytes (a couple of small reads - nothing + is executed or loaded) and classifies the executable format and cpu + architecture: + PE Machine field (2 bytes at e_lfanew+4): i386, x86_64, arm64... + ELF e_machine honouring EI_DATA endianness + Mach-O thin (cputype) and fat/universal (per-member cputypes) + Unrecognised content is reported honestly as format 'unknown' rather + than guessed. + + Returned dict keys: + format pe | elf | macho | unknown + arch i386 | x86_64 | arm64 | ... | universal | unknown | + unknown-0x (a real header whose machine value is not + in the recognition map - definite, just unmapped) + archs member architectures (macho universal only; absent otherwise) + detail short human-readable classification" + @leaders + libfile -type string -optional 0 -help\ + "Path of the binary library file to classify" + }] + } + proc binary_arch_classify {libfile} { + variable pe_machine_map + variable elf_machine_map + variable macho_cputype_map + if {[catch { + set fd [open $libfile r] + chan configure $fd -translation binary + set head [read $fd 64] + } errM]} { + catch {close $fd} + return [dict create format unknown arch unknown detail "unreadable: $errM"] + } + set result [dict create format unknown arch unknown detail "not a recognised binary library format"] + try { + if {[string length $head] < 8} { + dict set result detail "too short to carry an executable header ([string length $head] bytes)" + return $result + } + set magic4 [string range $head 0 3] + if {[string range $head 0 1] eq "MZ"} { + #PE: e_lfanew at 0x3c points at "PE\0\0" + IMAGE_FILE_HEADER + if {[binary scan $head @60iu e_lfanew] != 1} { + dict set result detail "MZ header too short for e_lfanew" + return $result + } + seek $fd $e_lfanew + set pehdr [read $fd 6] + if {[string length $pehdr] < 6 || [string range $pehdr 0 3] ne "PE\x00\x00"} { + dict set result detail "MZ header without PE signature (DOS executable?)" + return $result + } + binary scan $pehdr @4su machine + set hexmachine [format %04x $machine] + if {[dict exists $pe_machine_map $hexmachine]} { + set arch [dict get $pe_machine_map $hexmachine] + set result [dict create format pe arch $arch detail "PE $arch"] + } else { + set result [dict create format pe arch unknown-0x$hexmachine detail "PE machine 0x$hexmachine (not in recognition map)"] + } + } elseif {$magic4 eq "\x7fELF"} { + binary scan $head @4cu elfclass + binary scan $head @5cu elfdata + if {$elfdata == 2} { + binary scan $head @18Su e_machine ;#big-endian + } else { + binary scan $head @18su e_machine ;#little-endian (and honest-enough default) + } + if {[dict exists $elf_machine_map $e_machine]} { + set arch [dict get $elf_machine_map $e_machine] + if {$arch eq "riscv"} { + set arch [expr {$elfclass == 2 ? "riscv64" : "riscv32"}] + } + set result [dict create format elf arch $arch detail "ELF $arch"] + } else { + set result [dict create format elf arch unknown-$e_machine detail "ELF e_machine $e_machine (not in recognition map)"] + } + } else { + binary scan $head Iu be32 + switch -- [format %08x $be32] { + feedface - feedfacf - cefaedfe - cffaedfe { + #thin Mach-O; cputype follows the magic in the file's own byte order + if {[string index $head 0] eq "\xfe"} { + binary scan $head @4Iu cputype ;#big-endian file + } else { + binary scan $head @4iu cputype + } + set is64 [expr {($cputype & 0x01000000) != 0}] + set base [expr {$cputype & 0x00ffffff}] + if {[dict exists $macho_cputype_map $base]} { + set arch [lindex [dict get $macho_cputype_map $base] $is64] + set result [dict create format macho arch $arch detail "Mach-O $arch"] + } else { + set result [dict create format macho arch unknown-cputype-$base detail "Mach-O cputype $base (not in recognition map)"] + } + } + cafebabe - cafebabf { + #fat/universal (big-endian header). A Java class file shares the + #magic - its version field where nfat_arch sits is >= 45, far above + #any credible member count, so an implausible count stays unknown. + binary scan $head @4Iu nfat + if {$nfat == 0 || $nfat > 30} { + dict set result detail "cafebabe magic with implausible member count $nfat (java class file?)" + return $result + } + set entrysize [expr {$be32 == 0xcafebabf ? 32 : 20}] + seek $fd 8 + set fatdata [read $fd [expr {$nfat * $entrysize}]] + set archs [list] + for {set i 0} {$i < $nfat} {incr i} { + if {[binary scan $fatdata @[expr {$i * $entrysize}]Iu cputype] != 1} { + break + } + set is64 [expr {($cputype & 0x01000000) != 0}] + set base [expr {$cputype & 0x00ffffff}] + if {[dict exists $macho_cputype_map $base]} { + lappend archs [lindex [dict get $macho_cputype_map $base] $is64] + } else { + lappend archs unknown-cputype-$base + } + } + set result [dict create format macho arch universal archs $archs detail "Mach-O universal ([join $archs {, }])"] + } + } + } + return $result + } finally { + catch {close $fd} + } + } + + namespace eval argdoc { + lappend PUNKARGS [list { + @id -id ::punkboot::utils::platform_expected_binary + @cmd -name "::punkboot::utils::platform_expected_binary"\ + -summary\ + "Expected binary format/arch for a canonical target platform name"\ + -help\ + "Maps a canonical punkshell platform name (-, e.g + win32-ix86) to the executable format and classifier arch token a + native binary library for that platform carries. Returns a dict + {format F arch A}, or an empty dict when the os or cpu token has + no recognised mapping (callers treat that as scan-not-applicable + rather than guessing)." + @leaders + targetplatform -type string -optional 0 -help\ + "Canonical platform name, e.g win32-x86_64, linux-x86_64, macosx-arm64" + }] + } + proc platform_expected_binary {targetplatform} { + set idx [string first - $targetplatform] + if {$idx <= 0} { + return [dict create] + } + set os [string range $targetplatform 0 [expr {$idx - 1}]] + set cpu [string range $targetplatform [expr {$idx + 1}] end] + switch -- $os { + win32 - windows {set format pe} + linux - freebsd - netbsd - openbsd - dragonfly - solaris - sunos {set format elf} + macosx - darwin - macos {set format macho} + default {return [dict create]} + } + switch -- $cpu { + ix86 - i386 - i486 - i586 - i686 - x86 {set arch i386} + x86_64 - amd64 - x64 {set arch x86_64} + arm64 - aarch64 {set arch arm64} + arm - armv6 - armv7 {set arch arm} + ppc - ppc64 - riscv64 - mips - s390x - sparc - sparc64 {set arch $cpu} + default {return [dict create]} + } + return [dict create format $format arch $arch] + } + + namespace eval argdoc { + lappend PUNKARGS [list { + @id -id ::punkboot::utils::platform_discriminated_segment + @cmd -name "::punkboot::utils::platform_discriminated_segment"\ + -summary\ + "Whether a directory name is a recognised platform-discriminating segment"\ + -help\ + "True when the segment is a canonical - platform-dir name + (os and cpu each from the recognised token lists), the bare + universal 'macosx' folder, or one of the recognised vendor + spellings (blend2d-style win-x64 etc). Binary libraries under such + a directory are selected per-platform by their package's own index + logic, so a multi-arch payload is legitimate there." + @leaders + segment -type string -optional 0 -help\ + "One directory name (a single path segment, not a path)" + }] + } + proc platform_discriminated_segment {segment} { + variable platform_segment_os + variable platform_segment_cpu + variable platform_segment_vendor + set segment [string tolower $segment] + if {$segment eq "macosx"} { + return 1 ;#the universal store-dir convention + } + if {$segment in $platform_segment_vendor} { + return 1 + } + set idx [string first - $segment] + if {$idx > 0} { + set os [string range $segment 0 [expr {$idx - 1}]] + set cpu [string range $segment [expr {$idx + 1}] end] + if {$os in $platform_segment_os && $cpu in $platform_segment_cpu} { + return 1 + } + } + return 0 + } + + namespace eval argdoc { + lappend PUNKARGS [list { + @id -id ::punkboot::utils::vfs_binary_arch_report + @cmd -name "::punkboot::utils::vfs_binary_arch_report"\ + -summary\ + "Advisory scan of an assembled vfs tree for binary libraries that mismatch the kit's target"\ + -help\ + "Walks a merged .vfs tree, classifies each binary library file + (*.dll, *.so, *.so., *.dylib) by header (binary_arch_classify) + and compares it against the kit's declared target platform. A + library under a platform-discriminated subdirectory (canonical + - names, the universal macosx folder, or a recognised + vendor spelling such as win-x64) is EXEMPT - multi-arch payloads + are legitimate when a platform segment lets the package's own + index logic pick per platform. Purely structural: header bytes are + read, nothing is executed or loaded, so the scan also covers + cross-target kits the build host could never run. + + A mismatch is reported only when the classification is DEFINITE + (a real PE/ELF/Mach-O header whose format or architecture differs + from the target's); unclassifiable files are counted as unknown, + never warned about. What this cannot see: statically linked + packages, pure-tcl packages whose binary dependency is elsewhere, + and package resolution order (a wrong-arch copy shadowing a + working one by version) - only an in-artifact 'package require' + smoke probe observes those. + + Returned dict keys: + ok 1 when no mismatches were found (advisory) + target the target platform as supplied + expected {format F arch A} for the target ({} if unmapped) + scanned binary library files classified + matched files matching the expected format/arch + exempt files under platform-discriminated subdirs (not read) + unknown files whose classification was indefinite + mismatches list of {file format F arch A detail D} + reason why the scan did not apply; empty when it ran" + @leaders + vfsfolder -type string -optional 0 -help\ + "Path of the assembled vfs tree to scan" + targetplatform -type string -optional 0 -help\ + "Canonical target platform of the kit, e.g win32-ix86" + }] + } + proc vfs_binary_arch_report {vfsfolder targetplatform} { + variable binary_library_globs + set report [dict create ok 1 target $targetplatform expected {} scanned 0 matched 0 exempt 0 unknown 0 mismatches {} reason ""] + if {![file isdirectory $vfsfolder]} { + dict set report ok 0 + dict set report reason "no such directory: $vfsfolder" + return $report + } + set expected [platform_expected_binary $targetplatform] + dict set report expected $expected + if {![dict size $expected]} { + dict set report reason "target platform '$targetplatform' has no recognised binary format/arch mapping - scan not applicable" + return $report + } + set expected_format [dict get $expected format] + set expected_arch [dict get $expected arch] + set scanned 0 + set matched 0 + set exempt 0 + set unknown 0 + set mismatches [list] + set rootlen [string length $vfsfolder] + #iterative walk - plain Tcl 8.6, no deps. Exemption is decided per DIRECTORY + #(one platform_discriminated_segment test as each dir is queued), so files + #under an exempt subtree are counted without being read. + set pending [list [list $vfsfolder 0]] + while {[llength $pending]} { + set entry [lindex $pending end] + set pending [lrange $pending 0 end-1] + lassign $entry dir dir_exempt + foreach sub [glob -nocomplain -types d -directory $dir *] { + set sub_exempt $dir_exempt + if {!$sub_exempt && [platform_discriminated_segment [file tail $sub]]} { + set sub_exempt 1 + } + lappend pending [list $sub $sub_exempt] + } + foreach libfile [glob -nocomplain -types f -directory $dir -- {*}$binary_library_globs] { + if {$dir_exempt} { + incr exempt + continue + } + incr scanned + set class [binary_arch_classify $libfile] + set cformat [dict get $class format] + set carch [dict get $class arch] + if {$cformat eq "unknown"} { + incr unknown + continue + } + set rel [string map {\\ /} [string range $libfile [expr {$rootlen + 1}] end]] + if {$cformat ne $expected_format} { + lappend mismatches [dict create file $rel format $cformat arch $carch detail [dict get $class detail]] + continue + } + if {$carch eq $expected_arch} { + incr matched + continue + } + if {$carch eq "universal" && [dict exists $class archs] && $expected_arch in [dict get $class archs]} { + incr matched + continue + } + #definite finding either way: a differing mapped arch, or a real header + #whose unmapped machine value is provably not the expected architecture + lappend mismatches [dict create file $rel format $cformat arch $carch detail [dict get $class detail]] + } + } + dict set report scanned $scanned + dict set report matched $matched + dict set report exempt $exempt + dict set report unknown $unknown + dict set report mismatches $mismatches + dict set report ok [expr {[llength $mismatches] == 0}] + return $report + } +} + +namespace eval ::punk::args::register { + #use fully qualified so 8.6 doesn't find existing var in global namespace + lappend ::punk::args::register::NAMESPACES ::punkboot::utils ::punkboot::utils::argdoc +} + +## Ready +package provide punkboot::utils [tcl::namespace::eval punkboot::utils { + variable version + #- this version number, exactly 0.5.0, is a literal used in src module folders + #- we refer to this sometimes as the magic version number + set version 0.5.0 +}] +return