diff --git a/src/modules/punk/mix/base-0.1.2.tm b/src/modules/punk/mix/base-999999.0a1.0.tm similarity index 100% rename from src/modules/punk/mix/base-0.1.2.tm rename to src/modules/punk/mix/base-999999.0a1.0.tm diff --git a/src/modules/punk/mix/cli-999999.0a1.0.tm b/src/modules/punk/mix/cli-999999.0a1.0.tm index dbc509ba..d33e8eb7 100644 --- a/src/modules/punk/mix/cli-999999.0a1.0.tm +++ b/src/modules/punk/mix/cli-999999.0a1.0.tm @@ -951,8 +951,20 @@ namespace eval punk::mix::cli { set wd [pwd] cd $buildfolder puts "zipfs mkzip $zipfile #modpod-$basename-$module_build_version" - zipfs mkzip $zipfile #modpod-$basename-$module_build_version + set mkzip_failed [catch {zipfs mkzip $zipfile #modpod-$basename-$module_build_version} errMkzip] cd $wd + if {$mkzip_failed} { + #Known core defect: Tcl 8.7 builds predating core fix c971e6c7c4 error + #'non-unique path name' on dot-prefixed entries on Windows (core tkt + #7d5f1c13089d463e7796 'zipfs mkzip broken on Windows dotfiles') - hit by + #layout .fossil-custom/.fossil-settings payloads in the templates modpod. + #Fall back to punk::zip::mkzip, the established path for zipfs-less + #interps (stores unix-style permissions and folder entries - an accepted + #archive variant; modpod stubs read both shapes). + puts stderr "zipfs mkzip failed under Tcl [info patchlevel] ($errMkzip) - falling back to punk::zip::mkzip (known pre-c971e6c7c4 Tcl 8.7 zipfs dotfile defect - core tkt 7d5f1c13089d463e7796)" + catch {file delete -- $zipfile} ;#a failed zipfs mkzip can leave a partial target zip - punk::zip::mkzip refuses to overwrite + punk::zip::mkzip -base $buildfolder -directory $buildfolder/#modpod-$basename-$module_build_version -- $zipfile * + } } else { #use -base $buildfolder so that -directory is included in the archive - the modpod stub relies on this - and extraction would be potentially messy otherwise diff --git a/src/modules/punk/mix/cli-buildversion.txt b/src/modules/punk/mix/cli-buildversion.txt index a37677da..2d88d947 100644 --- a/src/modules/punk/mix/cli-buildversion.txt +++ b/src/modules/punk/mix/cli-buildversion.txt @@ -1,6 +1,7 @@ -0.5.1 +0.5.2 #First line must be a semantic version number #all other lines are ignored. +#0.5.2 - modpod zip build: zipfs mkzip failure now falls back to punk::zip::mkzip (the established zipfs-less path) with a stderr note naming the interp and upstream ticket. Motivation: Tcl 8.7 builds predating core fix c971e6c7c4 (tkt 7d5f1c13089d463e7796 'zipfs mkzip broken on Windows dotfiles') die with 'non-unique path name' on dot-prefixed entries - hit by the templates modpod's layout .fossil-custom payloads (present since G-087 stage 3) when built under 8.7a6 #0.5.1 - comment-only: removed commented-out legacy punkcheck proc-pipeline call sites (installfile_begin/started/finished/skipped, start_installer_event) alongside their live OO equivalents - the legacy procs are retired to error shims in punkcheck 0.5.0 (G-094); no behaviour change #0.5.0 - added lib::prune_superseded_target_modules and lib::prune_sourcevanished_targets; build_modules_from_source_to_base now prunes punkcheck-recorded superseded module versions from target dirs (recorded as punkcheck DELETE events) and records virtual module_name/module_version sources on installs (punkcheck 0.3.0 targetset_addsource_virtual); requires punk::mix::util explicitly #0.4.0 - updated -max_depth to -max-depth at punkcheck::install call sites — call-site flag change warrants minor bump