@ -153,7 +153,7 @@ namespace eval ::punkboot {
variable foldername [ file tail $scriptfolder ]
variable pkg_requirements [ list ] ; variable pkg_missing [ list ] ; variable pkg_loaded [ list ]
variable help_flags [ list - help - - help / ? - h]
variable known_commands [ list project modules libs packages vfs vfslibs bin info check shell vendorupdate bootsupport vfscommonupdate projectversion workflow]
variable known_commands [ list bakehouse packages modules libs bake vfslibs bin info check shell vendorupdate bootsupport vfscommonupdate projectversion workflow project vfs ]
}
@ -1519,10 +1519,14 @@ proc ::punkboot::punkboot_gethelp {args} {
append h " " \ n
append h " $ s c r i p t n a m e - h e l p o r $ s c r i p t n a m e - - h e l p o r $ s c r i p t n a m e / ? o r j u s t $ s c r i p t n a m e " \ n
append h " - T h i s h e l p . " \ n \ n
append h " $ s c r i p t n a m e p r o j e c t ? - k ? " \ n
append h " - t h i s i s t h e l i t e r a l w o r d p r o j e c t - a n d c o n f i r m s y o u w a n t t o r u n t h e p r o j e c t b u i l d - w h i c h i n c l u d e s s r c / v f s / * c h e c k s a n d b u i l d s " \ n
append h " $ s c r i p t n a m e b a k e h o u s e ? - k ? ? - d i r t y - a b o r t 1 | 0 ? " \ n
append h " - c o n s u m e r b u i l d f r o m a c l e a n c h e c k o u t : r u n s t h e p a c k a g e s s t a g e ( m o d u l e s + l i b s ) t h e n b a k e s k i t / z i p k i t e x e c u t a b l e s t o < p r o j e c t d i r > / b i n " \ n
append h " - r e f u s e s u n c o m m i t t e d s r c b y d e f a u l t ( - d i r t y - a b o r t d e f a u l t s O N : t h e b a k e h o u s e b a k e s f r o m t h e c o m m i t t e d r e c i p e ; p a s s - d i r t y - a b o r t 0 t o o v e r r i d e ) " \ n
append h " - t h e o p t i o n a l - k f l a g w i l l t e r m i n a t e r u n n i n g p r o c e s s e s m a t c h i n g t h e e x e c u t a b l e b e i n g b u i l t ( i f a p p l i c a b l e ) " \ n
append h " - b u i l d s / c o p i e s . t m m o d u l e s f r o m s r c t o < p r o j e c t d i r > / m o d u l e s e t c a n d p k g I n d e x . t c l b a s e d l i b r a r i e s f r o m s r c t o < p r o j e c t d i r > / l i b e t c . " \ n \ n
append h " - d o e s N O T r u n t h e p r o m o t i o n g a t e s ( b o o t s u p p o r t , v f s c o m m o n u p d a t e ) - o n a c l e a n c h e c k o u t t h e y a r e a l r e a d y s a t i s f i e d b y t h e c o m m i t t e d t r e e " \ n \ n
append h " $ s c r i p t n a m e b a k e ? - k ? " \ n
append h " - a s s e m b l e k i t / z i p k i t e x e c u t a b l e s f r o m t h e p r o m o t e d p a y l o a d ( s r c / v f s ) a n d s r c / r u n t i m e r u n t i m e s i n t o < p r o j e c t d i r > / b i n " \ n
append h " - i n c l u d e s t h e v f s l i b s p h a s e ; d o e s n o t r e b u i l d m o d u l e s / l i b s a n d d o e s n o t r u n t h e p r o m o t i o n g a t e s " \ n \ n
append h " $ s c r i p t n a m e m o d u l e s " \ n
append h " - b u i l d ( o r c o p y i f b u i l d n o t r e q u i r e d ) . t m m o d u l e s f r o m s r c / m o d u l e s s r c / v e n d o r m o d u l e s e t c t o t h e i r c o r r e s p o n d i n g l o c a t i o n s u n d e r < p r o j e c t d i r > " \ n
append h " T h i s d o e s n o t s c a n s r c / r u n t i m e a n d s r c / v f s f o l d e r s t o b u i l d k i t / z i p k i t / c o o k f s e x e c u t a b l e s " \ n \ n
@ -1544,10 +1548,10 @@ proc ::punkboot::punkboot_gethelp {args} {
append h " $ s c r i p t n a m e v f s l i b s " \ n
append h " - p r o p a g a t e d e c l a r e d v e n d o r e d p l a t f o r m - l i b r a r y p a c k a g e s i n t o k i t v f s l i b _ t c l < N > t r e e s " \ n
append h " - d e c l a r a t i o n s ( p e r - p a c k a g e p e r - k i t , w i t h s u p e r s e d e d - v e r s i o n r e m o v a l ) l i v e i n s r c / r u n t i m e / v e n d o r l i b _ v f s . t o m l " \ n
append h " - a l s o r u n s a u t o m a t i c a l l y a s p a r t o f ' $ s c r i p t n a m e p r o j e c t ' " \ n \ n
append h " - a l s o r u n s a u t o m a t i c a l l y a s a p h a s e o f ' $ s c r i p t n a m e b a k e ' ( a n d t h e r e f o r e o f ' $ s c r i p t n a m e b a k e h o u s e ' ) " \ n \ n
append h " $ s c r i p t n a m e v f s c o m m o n u p d a t e " \ n
append h " - u p d a t e t h e s r c / v f s / _ v f s c o m m o n . v f s f r o m c o m p i l e d s r c / m o d u l e s a n d s r c / l i b e t c " \ n
append h " - b e f o r e c a l l i n g t h i s ( f o l l o w e d b y m a k e p r o j e c t ) - y o u c a n t e s t u s i n g ' < b u i l t e x e > ( . e x e ) d e v ' " \ n
append h " - p r o m o t i o n g a t e : up d a t e t h e s r c / v f s / _ v f s c o m m o n . v f s f r o m c o m p i l e d s r c / m o d u l e s a n d s r c / l i b e t c " \ n
append h " - b e f o r e c a l l i n g t h i s ( f o l l o w e d b y ' $ s c r i p t n a m e b a k e ' ) - y o u c a n t e s t u s i n g ' < b u i l t e x e > ( . e x e ) d e v ' " \ n
append h " t h i s w i l l l o a d m o d u l e s f r o m y o u r < p r o j e c t d i r > / m o d u l e < p r o j e c t d i r > / l i b p a t h s i n s t e a d o f f r o m t h e k i t / z i p k i t " \ n \ n
append h " $ s c r i p t n a m e i n f o " \ n
append h " - s h o w t h e n a m e a n d b a s e f o l d e r o f t h e p r o j e c t t o b e b u i l t " \ n \ n
@ -1561,14 +1565,18 @@ proc ::punkboot::punkboot_gethelp {args} {
append h " - p r i n t a n A S C I I d a t a - f l o w o v e r v i e w o f t h e b u i l d / r e l e a s e w o r k f l o w ( e d i t - > p a c k a g e s - > b o o t s u p p o r t - > k i t s ) " \ n \ n
append h " $ s c r i p t n a m e h e l p ? s u b c o m m a n d ? " \ n
append h " - s h o w u s a g e f o r $ s c r i p t n a m e o r o n e o f i t s s u b c o m m a n d s ( e q u i v a l e n t : $ s c r i p t n a m e < s u b c o m m a n d > - h e l p ) " \ n \ n
append h " D e p r e c a t e d a l i a s e s ( t r a n s i t i o n w i n d o w ) : " \ n
append h " $ s c r i p t n a m e p r o j e c t - > r u n s b a k e h o u s e ( w i t h a o n e - l i n e n o t i c e ) " \ n
append h " $ s c r i p t n a m e v f s - > r u n s b a k e ( w i t h a o n e - l i n e n o t i c e ) " \ n \ n
append h " F l a g s : " \ n
append h " - c o n f i r m 0 | 1 " \ n
append h " - i n t e r a c t i v e y / n c o n f i r m a t i o n p o l i c y ( d e f a u l t 1 : p r o m p t w h e n s t d i n i s a t e r m i n a l , a b o r t f a s t w h e n i t i s n o t ) . " \ n
append h " U s e - c o n f i r m 0 f o r u n a t t e n d e d r u n s : t h e b o o t s u p p o r t m i n o r - s t a l e n e s s g a t e a n d t h e v f s c o m m o n u p d a t e R E P L A C E " \ n
append h " c o n f i r m a t i o n p r o c e e d w i t h o u t p r o m p t i n g ; k i t s w i t h a s o u r c e / t a r g e t k i t - t y p e m i s m a t c h a r e s k i p p e d . " \ n
append h " - d i r t y - a b o r t " \ n
append h " - a b o r t b u i l d / p r o m o t i o n c o m m a n d s ( p r o j e c t p a c k a g e s m o d u l e s l i b s v f s v f s l i b s b i n b o o t s u p p o r t v f s c o m m o n u p d a t e ) w h e n s r c / h a s " \ n
append h " u n c o m m i t t e d V C S c h a n g e s . D e f a u l t i s w a r n - o n l y : a r t i f a c t s b u i l t f r o m d i r t y s r c h a v e n o c o m m i t t e d p r o v e n a n c e . " \ n
append h " - a b o r t b u i l d / p r o m o t i o n c o m m a n d s ( b a k e h o u s e p a c k a g e s m o d u l e s l i b s b a k e v f s l i b s b i n b o o t s u p p o r t v f s c o m m o n u p d a t e ) w h e n s r c / h a s " \ n
append h " u n c o m m i t t e d V C S c h a n g e s . D e f a u l t i s w a r n - o n l y E X C E P T b a k e h o u s e ( d e f a u l t s O N t h e r e ; - d i r t y - a b o r t 0 o v e r r i d e s ) : " \ n
append h " a r t i f a c t s b u i l t f r o m d i r t y s r c h a v e n o c o m m i t t e d p r o v e n a n c e . " \ n
append h " W a r n i n g s c a r r y a p l a i n P R O V E N A N C E - W A R N I N G : p r e f i x ( g r e p p a b l e i n r e d i r e c t e d o u t p u t ) a n d a r e r e c a p p e d a t t h e e n d o f t h e r u n . " \ n
append h " U s e ' $ s c r i p t n a m e c h e c k ' t o s e e t h e c u r r e n t p r o v e n a n c e s t a t u s . T o e v a l u a t e u n c o m m i t t e d s o u r c e w i t h o u t b u i l d i n g , " \ n
append h " u s e ' < b u i l t e x e > s r c ' o r ' < b u i l t e x e > s r c s h e l l ' . " \ n \ n
@ -1592,7 +1600,20 @@ All commands run from the projectroot with a native tclsh, e.g:
tclsh src/ make.tcl < subcommand> - confirm 0 ( see [ K6 ] )
RELEASE SEQUENCE ( the order that satisfies the staleness + provenance gates)
TWO PERSONAS ( stage-true subcommand model - one build stage, two promotion
gates , one bake)
----------------------------------------------------------------------------
CONSUMER ( clean checkout, wants baked kits) :
tclsh src/ make.tcl bakehouse - confirm 0
= packages + bake in one uninterrupted run. The promotion gates are already
satisfied by the committed tree. bakehouse REFUSES uncommitted src by
default ( -dirty-abort defaults ON: the bakehouse bakes from the committed
recipe ; -dirty-abort 0 overrides) .
DEVELOPER ( changing payload) : pass the gates explicitly - the commit is the
publishing act, not a build step. That is the RELEASE SEQUENCE below.
Deprecated aliases ( transition window) : ' project' - > bakehouse, ' vfs' - > bake.
RELEASE SEQUENCE ( the developer order that satisfies the staleness + provenance gates)
----------------------------------------------------------------------------
( 1 ) edit src/ modules/ foo-999999.0a1.0.tm code change [ K1 ]
@ -1603,7 +1624,7 @@ RELEASE SEQUENCE (the order that satisfies the staleness + provenance gates)
( 5 ) build tclsh src/ make.tcl modules - confirm 0 ( or ' packages' = modules + libs)
( 6 ) build tclsh src/ make.tcl bootsupport - confirm 0 run twice: 2 nd pass must copy 0 files [ K4 ]
( 7 ) build tclsh src/ make.tcl vfscommonupdate - confirm 0
( 8 ) build tclsh src/ make.tcl project - confirm 0 kits; close running kit shells first [ K5 ]
( 8 ) build tclsh src/ make.tcl bake - confirm 0 kits; close running kit shells first [ K5 ]
( 9 ) commit tracked build outputs src/ bootsupport, thin-layout script/
manifest copies ( src / project_layouts +
templates modpod payload) ,
@ -1634,13 +1655,13 @@ DIAGRAM 1 - DATA FLOW: SOURCE -> BUILT PACKAGES -> PROPAGATION TARGETS
( the module set make.tcl itself src/ vfs/ _vfscommon.vfs/ modules/ + libs
boots from; staleness-gated. ( VCS-tracked kit payload source)
Project layouts store NO module |
snapshots - ' dev project.new' | make.tcl project ( or : make.tcl vfs)
injects bootsupport into generated v
snapshots - ' dev project.new' | make.tcl bake ( kit-assembly stage;
injects bootsupport into generated v consumer umbrella: bakehouse)
projects from the generating src/ _build/ < kit> .exe - - deploy--> bin/ < kit> .exe
shell at generation time - G-087) ( see DIAGRAM 2 ) [ K5 ]
DIAGRAM 1 b - THIN-LAYOUT SYNC ( part of modules/ libs/ packages/ project runs)
DIAGRAM 1 b - THIN-LAYOUT SYNC ( part of modules/ libs/ packages/ bakehouse runs)
----------------------------------------------------------------------------
src / make.tcl src/ build.tcl src/ bootsupport/ modules* / include_modules.config
@ -1656,7 +1677,7 @@ DIAGRAM 1b - THIN-LAYOUT SYNC (part of modules/libs/packages/project runs)
kit outside any project can list and generate the punk.project layout)
DIAGRAM 2 - KIT ASSEMBLY DETAIL ( inside ' make.tcl project' / ' make.tcl vfs' )
DIAGRAM 2 - KIT ASSEMBLY DETAIL ( the ' make.tcl bake' stage; incl. vfslibs phase)
----------------------------------------------------------------------------
src / runtime/ mapvfs.config which vfs folder pairs with which runtime - > kit name
@ -1707,7 +1728,7 @@ KEY / NOTES
a pass copies 0 files ( a converged second pass also proves prune tooling ran) .
[ K5 ] The deploy step cannot replace a kit exe that is currently executing. Close
running kit shells before step 8 , or rerun ' make.tcl vfs - confirm 0 '
running kit shells before step 8 , or rerun ' make.tcl bake - confirm 0 '
afterwards - the freshly built kits wait in src/ _build. punkcheck records
mean the rerun only redoes the failed deploys.
@ -1719,7 +1740,7 @@ KEY / NOTES
- src/ tests/ runtests.tcl exercises the src/ trees directly ( dev modules) .
- ' < builtkit> .exe dev' ( or ' < builtkit> src' ) runs a built shell against the
project dev modules - useful for testing built packages before they are
baked into kits via vfscommonupdate + project .
baked into kits via vfscommonupdate + bake .
[ K8 ] What is VCS-tracked where ( checkin targets after a build) :
tracked : src/ ** ( sources , src/ bootsupport, src/ project_layouts copies,
@ -1821,22 +1842,24 @@ if {[info exists ::env(PUNKBOOT_PLAIN)] && [string is true -strict $::env(PUNKBO
# s i n g l e s o u r c e f o r t h e s u b c o m m a n d o n e - l i n e s u m m a r i e s : e a c h s u b c o m m a n d d e f i n i t i o n ' s
# @ c m d - s u m m a r y a n d t h e t o p - l e v e l s u b c o m m a n d - c h o i c e l a b e l s a r e b o t h b u i l t f r o m t h i s .
variable SUMMARIES {
project " F u l l p r o j e c t b u i l d - p a c k a g e s p l u s k i t / z i p k i t e x e c u t a b l e s f r o m s r c / v f s a n d s r c / r u n t i m e "
bakehouse " C o n s u m e r b u i l d f r o m a c l e a n c h e c k o u t : p a c k a g e s t h e n b a k e - r e f u s e s u n c o m m i t t e d s r c b y d e f a u l t "
packages " B u i l d . t m m o d u l e s a n d p k g I n d e x . t c l l i b r a r i e s f r o m s r c i n t o < p r o j e c t d i r > ( n o k i t e x e c u t a b l e s ) "
modules " B u i l d . t m m o d u l e s f r o m s r c / m o d u l e s , s r c / v e n d o r m o d u l e s e t c i n t o < p r o j e c t d i r > / m o d u l e s e t c "
libs " B u i l d p k g I n d e x . t c l l i b r a r i e s f r o m s r c / l i b , s r c / v e n d o r l i b e t c i n t o < p r o j e c t d i r > / l i b e t c "
vfs " B u i l d k i t / z i p k i t e x e c u t a b l e s f r o m s r c / v f s a n d s r c / r u n t i m e i n t o < p r o j e c t d i r > / b i n "
bake " A s s e m b l e k i t / z i p k i t e x e c u t a b l e s f r o m p r o m o t e d p a y l o a d ( s r c / v f s ) a n d ru n t i m e s i n t o < p r o j e c t d i r > / b i n "
vfslibs " P r o p a g a t e d e c l a r e d v e n d o r e d p l a t f o r m - l i b r a r y p a c k a g e s i n t o k i t v f s l i b _ t c l < N > t r e e s "
bin " I n s t a l l e x e c u t a b l e s f r o m s r c / b i n i n t o < p r o j e c t d i r > / b i n , t h e n b u i l d k i t s a s f o r v f s "
bin " I n s t a l l e x e c u t a b l e s f r o m s r c / b i n i n t o < p r o j e c t d i r > / b i n , t h e n b u i l d k i t s a s f o r b a k e "
vendorupdate " U p d a t e s r c / v e n d o r m o d u l e s b a s e d o n s r c / v e n d o r m o d u l e s / i n c l u d e _ m o d u l e s . c o n f i g "
bootsupport " U p d a t e s r c / b o o t s u p p o r t m o d u l e s f r o m b u i l t p r o j e c t m o d u l e s "
vfscommonupdate " R e p l a c e s r c / v f s / _ v f s c o m m o n . v f s m o d u l e s a n d l i b s w i t h t h e p r o j e c t ' s b u i l t m o d u l e s a n d l i b s "
bootsupport " P r o m o t i o n g a t e : u p d a t e s r c / b o o t s u p p o r t m o d u l e s f r o m b u i l t p r o j e c t m o d u l e s "
vfscommonupdate " P r o m o t i o n g a t e : r e p l a c e s r c / v f s / _ v f s c o m m o n . v f s m o d u l e s a n d l i b s w i t h t h e p r o j e c t ' s b u i l t s e t "
info " S h o w t h e n a m e a n d b a s e f o l d e r o f t h e p r o j e c t t o b e b u i l t "
check " S h o w m o d u l e / l i b r a r y p a t h s a n d a n y p o t e n t i a l l y p r o b l e m a t i c p a c k a g e s f o r r u n n i n g t h i s s c r i p t "
projectversion " A d v i s o r y c h e c k : C H A N G E L O G . m d v s p u n k p r o j e c t . t o m l a n d s r c / c h a n g e s s i n c e l a s t v e r s i o n b u m p "
workflow " P r i n t a n A S C I I d a t a - f l o w o v e r v i e w o f t h e b u i l d / r e l e a s e w o r k f l o w ( e d i t - > p a c k a g e s - > b o o t s u p p o r t - > k i t s ) "
workflow " P r i n t a n A S C I I d a t a - f l o w o v e r v i e w o f t h e b u i l d / r e l e a s e w o r k f l o w ( e d i t - > p a c k a g e s - > g a t e s - > b a k e ) "
shell " R u n t h e p u n k s h e l l u s i n g b o o t s u p p o r t l i b r a r i e s "
help " S h o w u s a g e f o r m a k e . t c l o r o n e o f i t s s u b c o m m a n d s "
project " D E P R E C A T E D a l i a s f o r b a k e h o u s e ( o n e - l i n e n o t i c e , t h e n r u n s b a k e h o u s e ) "
vfs " D E P R E C A T E D a l i a s f o r b a k e ( o n e - l i n e n o t i c e , t h e n r u n s b a k e ) "
}
# @ c m d - h e l p b o d i e s f o r t h e c o n s t r u c t e d d e f i n i t i o n s b e l o w . A u t h o r e d B L O C K - F O R M
# ( f i r s t v a l u e l i n e w h i t e s p a c e - o n l y ) s o t h e @ n o r m a l i z e d i r e c t i v e i n e a c h
@ -1845,14 +1868,20 @@ if {[info exists ::env(PUNKBOOT_PLAIN)] && [string is true -strict $::env(PUNKBO
# n o r m a l i z a t i o n ( h e a d - f o r m v a l u e s h e r e w o u l d l e a k t h i s f i l e ' s i n d e n t a t i o n i n t o
# t h e r e n d e r e d D e s c r i p t i o n c o l u m n ) .
variable HELPTEXTS {
project
bakehouse
"
Run the full project build - includes src/ vfs/ * checks and builds.
Builds / copies .tm modules and pkgIndex.tcl based libraries from src to
< projectdir > / modules, < projectdir> / lib etc, propagates declared vendored
platform - libraries into kit vfs trees ( as for vfslibs) , then scans
src / runtime and src/ vfs folders to build kit/ zipkit executables and
installs them to < projectdir> / bin."
Consumer umbrella: run the packages stage ( modules + libs) then bake
the kit/ zipkit executables - the full path from a CLEAN checkout to
installed kits in < projectdir> / bin.
The bakehouse bakes from the committed recipe: by default it refuses
to run when src/ has uncommitted changes ( -dirty-abort defaults ON) ,
pointing at the granular developer flow ( packages - > test - >
bootsupport / vfscommonupdate - > commit - > bake) . Pass - dirty-abort 0
to build anyway with PROVENANCE-WARNINGs.
Deliberately does NOT run the promotion gates ( bootsupport ,
vfscommonupdate ) : payload promotion is a confirm-gated, committed
act - on a clean checkout the gates are already satisfied by the
committed tree."
packages
"
Build ( or copy if build not required) both .tm and pkgIndex.tcl based
@ -1872,23 +1901,32 @@ if {[info exists ::env(PUNKBOOT_PLAIN)] && [string is true -strict $::env(PUNKBO
< projectdir > .
This does not scan src/ runtime and src/ vfs folders to build kit/ zipkit
executables. "
vfs
bake
"
Scan src/ vfs and src/ runtime folders and build kit/ zipkit executables
into < projectdir> / bin.
Does not first rebuild modules/ libs - use ' make.tcl project' for the
full pipeline."
Assemble kit/ zipkit executables: scan src/ vfs and src/ runtime folders,
build each configured kit from the promoted payload
( src / vfs/ _vfscommon.vfs + custom vfs folders) and its runtime, and
install to < projectdir> / bin.
Includes the vfslibs phase ( declared vendored platform-library
propagation into kit vfs lib_tcl< N> trees) so a bake cannot ship
stale binary libs.
Does not rebuild modules/ libs and does not run the promotion gates -
built modules reach the kit payload only via ' make.tcl
vfscommonupdate ' ( committed for provenance) . Consumer full path from
a clean checkout: ' make.tcl bakehouse' ."
vfslibs
"
Propagate declared vendored platform-library packages into kit vfs
lib_tcl < N> trees.
Declarations ( per-package per-kit, with superseded-version removal)
live in src/ runtime/ vendorlib_vfs.toml.
Also runs automatically as part of ' make.tcl project' ."
Also runs automatically as a phase of ' make.tcl bake' ( and therefore
of ' make.tcl bakehouse' ) ; this standalone narrowing serves quick
iteration on the declarations."
bin
"
Install executables from src/ bin to < projectdir> / bin, then check vfs
folders and build kit/ zipkit executables as for the vfs subcommand."
folders and build kit/ zipkit executables as for the bake subcommand."
vendorupdate
"
Update the src/ vendormodules based on src/ vendormodules/ include_modules.config.
@ -1907,7 +1945,7 @@ if {[info exists ::env(PUNKBOOT_PLAIN)] && [string is true -strict $::env(PUNKBO
vfscommonupdate
"
Update the src/ vfs/ _vfscommon.vfs from compiled src/ modules and src/ lib etc.
Before calling this ( followed by ' make.tcl project ' ) - you can test using
Before calling this ( followed by ' make.tcl bake ' ) - you can test using
' < builtexe > ( .exe ) dev' - this will load modules from your < projectdir> / modules,
< projectdir > / lib paths instead of from the kit/ zipkit.
Replacing the _vfscommon.vfs contents requires confirmation - see - confirm."
@ -1933,6 +1971,16 @@ if {[info exists ::env(PUNKBOOT_PLAIN)] && [string is true -strict $::env(PUNKBO
The text is embedded in make.tcl ( : : punkboot : : workflow_text) so it is
available wherever make.tcl runs; its MAINTENANCE key states the
update contract for keeping it in step with build behaviour."
project
"
DEPRECATED alias for ' bakehouse' ( G-112 stage-true rename) - prints a
one-line notice and runs bakehouse ( packages + bake, - dirty-abort
default ON) . Retained for a transition window."
vfs
"
DEPRECATED alias for ' bake' ( G-112 stage-true rename) - prints a
one-line notice and runs bake ( kit assembly including the vfslibs
phase ) . Retained for a transition window."
}
# s h a r e d o p t i o n f r a g m e n t s c o m p o s e d i n t o t h e p e r - s u b c o m m a n d d e f i n i t i o n s b e l o w
variable OPT_CONFIRM {
@ -1966,15 +2014,26 @@ if {[info exists ::env(PUNKBOOT_PLAIN)] && [string is true -strict $::env(PUNKBO
" T e r m i n a t e r u n n i n g p r o c e s s e s m a t c h i n g t h e e x e c u t a b l e b e i n g b u i l t
( if applicable) so the build can install over it."
}
# b a k e h o u s e ( a n d i t s d e p r e c a t e d a l i a s p r o j e c t ) d e f a u l t s t h e d i r t y g a t e O N :
# t h e b a k e h o u s e b a k e s f r o m t h e c o m m i t t e d r e c i p e ( G - 1 1 2 t w o - p e r s o n a m o d e l ) .
variable OPT_DIRTYABORT_ON {
-dirty-abort - type boolean - default 1 - help\
" A b o r t w h e n s r c / h a s u n c o m m i t t e d V C S c h a n g e s - D E F A U L T O N f o r t h i s
subcommand : the bakehouse bakes from the committed recipe. A
consumer build on a clean checkout runs uninterrupted; uncommitted
developer changes get a refusal naming the granular flow
( packages - > test - > bootsupport/ vfscommonupdate - > commit - > bake) .
Pass - dirty-abort 0 to build anyway with PROVENANCE-WARNINGs."
}
# w h i c h s h a r e d o p t i o n f r a g m e n t s e a c h s u b c o m m a n d d e c l a r e s
# ( s h e l l a n d h e l p h a v e b e s p o k e d e f i n i t i o n s b e l o w : s h e l l p a s s e s t r a i l i n g a r g s
# t h r o u g h t o t h e r e p l u n t o u c h e d , h e l p t a k e s a s u b j e c t v a l u e )
variable SUBOPTS {
project { OPT_FORCEKILL OPT_DIRTYABORT OPT_CONFIRM}
bakehouse { OPT_FORCEKILL OPT_DIRTYABORT_ON OPT_CONFIRM}
packages { OPT_DIRTYABORT OPT_CONFIRM}
modules { OPT_DIRTYABORT OPT_CONFIRM}
libs { OPT_DIRTYABORT OPT_CONFIRM}
vfs { OPT_FORCEKILL OPT_DIRTYABORT OPT_CONFIRM}
bake { OPT_FORCEKILL OPT_DIRTYABORT OPT_CONFIRM}
vfslibs { OPT_DIRTYABORT OPT_CONFIRM}
bin { OPT_FORCEKILL OPT_DIRTYABORT OPT_CONFIRM}
vendorupdate { OPT_CONFIRM }
@ -1984,14 +2043,17 @@ if {[info exists ::env(PUNKBOOT_PLAIN)] && [string is true -strict $::env(PUNKBO
check { }
projectversion { }
workflow { }
project { OPT_FORCEKILL OPT_DIRTYABORT_ON OPT_CONFIRM}
vfs { OPT_FORCEKILL OPT_DIRTYABORT OPT_CONFIRM}
}
# s y n o p s i s f r a g m e n t s m a t c h i n g t h e s h a r e d o p t i o n f r a g m e n t s ( e x p l i c i t @ f o r m - s y n o p s i s
# s o u s a g e s h o w s t h e r e a l i n v o c a t i o n ' m a k e . t c l < s u b c o m m a n d > . . . ' r a t h e r t h a n t h e
# i n t e r n a l d e f i n i t i o n i d )
variable OPT_SYNOPSES {
OPT_FORCEKILL " ? - k ? "
OPT_DIRTYABORT " ? - d i r t y - a b o r t ? "
OPT_CONFIRM " ? - c o n f i r m 0 | 1 ? "
OPT_FORCEKILL " ? - k ? "
OPT_DIRTYABORT " ? - d i r t y - a b o r t ? "
OPT_DIRTYABORT_ON " ? - d i r t y - a b o r t 1 | 0 ? "
OPT_CONFIRM " ? - c o n f i r m 0 | 1 ? "
}
foreach { sub optvars} $SUBOPTS {
set synparts [ list " m a k e . t c l $ s u b " ]
@ -2034,10 +2096,12 @@ if {[info exists ::env(PUNKBOOT_PLAIN)] && [string is true -strict $::env(PUNKBO
" s u b j e c t - t y p e s t r i n g - o p t i o n a l 0 - c h o i c e s [ l i s t [ d i c t k e y s $ S U M M A R I E S ] ] - h e l p { S u b c o m m a n d t o s h o w u s a g e f o r . } "
# t o p - l e v e l d e f i n i t i o n : t h e s u b c o m m a n d t a b l e r e n d e r e d b y ' m a k e . t c l ' / ' m a k e . t c l - h e l p '
variable SUBGROUPS {
" b u i l d & p r o m o t i o n " { project packages modules libs vfs vfslibs bin}
" s o u r c e m a i n t e n a n c e " { vendorupdate bootsupport vfscommonupdate}
" b u i l d & b a k e " { bakehouse packages modules libs bake vfslibs bin}
" p r o m o t i o n g a t e s " { bootsupport vfscommonupdate}
" s o u r c e m a i n t e n a n c e " { vendorupdate }
" i n f o r m a t i o n a l " { info check projectversion workflow help}
" i n t e r a c t i v e " { shell }
" d e p r e c a t e d a l i a s e s " { project vfs}
}
punk : : args::define\
" @ i d - i d ( s c r i p t ) : : p u n k b o o t " \
@ -2062,7 +2126,7 @@ if {[info exists ::env(PUNKBOOT_PLAIN)] && [string is true -strict $::env(PUNKBO
# r e s o l v e a m e c h a n i s m u s e d h e r e ( e . g p r e - @ n o r m a l i z e s n a p s h o t s ) d e g r a d e s t o t h e
# p l a i n f a l l b a c k i m m e d i a t e l y i n s t e a d o f e r r o r i n g a t f i r s t p a r s e / u s a g e .
punk : : args::get_spec ( script ) : : punkboot
punk : : args::get_spec ( script ) : : punkboot::project
punk : : args::get_spec ( script ) : : punkboot::bakehouse
punk : : args::get_spec ( script ) : : punkboot::help
punk : : args::get_spec ( script ) : : punkboot::shell
unset - nocomplain sub optvars defparts ov
@ -2219,6 +2283,30 @@ if {$do_help} {
exit $help_exitcode
}
# G - 1 1 2 d e p r e c a t e d a l i a s e s - o n e - l i n e m a p p i n g b e f o r e a n y d i s p a t c h :
# p r o j e c t - > b a k e h o u s e ( p a c k a g e s + b a k e , - d i r t y - a b o r t d e f a u l t O N )
# v f s - > b a k e ( k i t a s s e m b l y i n c l u d i n g t h e v f s l i b s p h a s e )
# K e p t f o r a t r a n s i t i o n w i n d o w ( u n t i l t h e 8 . 6 a r c c o m p l e t e s - s e e t h e G - 1 1 2
# d i s p o s i t i o n s ) . T h e a l i a s d e f i n i t i o n s a b o v e m i r r o r t h e i r t a r g e t s ' o p t i o n s s o
# f l a g s p a r s e i d e n t i c a l l y ; o n l y t h e c o m m a n d w o r d m a p s h e r e .
if { [ info exists : : punkboot::command] } {
switch - - $::punkboot::command {
project {
puts stderr " m a k e . t c l : ' p r o j e c t ' i s D E P R E C A T E D - u s e ' b a k e h o u s e ' ( p a c k a g e s + b a k e ; r e f u s e s u n c o m m i t t e d s r c b y d e f a u l t ) . R u n n i n g b a k e h o u s e . "
set : : punkboot::command bakehouse
}
vfs {
puts stderr " m a k e . t c l : ' v f s ' i s D E P R E C A T E D - u s e ' b a k e ' ( k i t a s s e m b l y i n c l . t h e v f s l i b s p h a s e ) . R u n n i n g b a k e . "
set : : punkboot::command bake
}
}
if { ! $::punkboot::punkargs_ok && $::punkboot::command eq " b a k e h o u s e " } {
# d e g r a d e d f a l l b a c k s c a n h a s f l a g - o n l y - d i r t y - a b o r t ( n o w a y t o p a s s 0 ) :
# b a k e h o u s e ' s d o c u m e n t e d d e f a u l t i s O N , s o f o r c e i t h e r e .
set : : punkboot::opt_dirty_abort 1
}
}
set forcekill $::punkboot::opt_forcekill
# p u t s s t d o u t " : : a r g v $ : : a r g v "
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -2383,7 +2471,7 @@ if {![llength [info commands ::punkboot::exit_original]]} {
}
}
if { $::punkboot::command in { project packages modules libs vfs vfslibs bin bootsupport vfscommonupdate} } {
if { $::punkboot::command in { bakehouse packages modules libs bake vfslibs bin bootsupport vfscommonupdate} } {
set dirty_abort $::punkboot::opt_dirty_abort
lassign [ : : punkboot : : get_src_provenance_warnings $projectroot " m a k e . t c l $ : : p u n k b o o t : : c o m m a n d " ] have_scoped_dirty_check dirty_warnings
if { $have_scoped_dirty_check } {
@ -2392,7 +2480,16 @@ if {$::punkboot::command in {project packages modules libs vfs vfslibs bin boots
puts stderr " T o e v a l u a t e u n c o m m i t t e d s o u r c e w i t h o u t b u i l d i n g , u s e ' < b u i l t e x e > s r c ' o r ' < b u i l t e x e > s r c s h e l l ' . "
if { $dirty_abort } {
set : : punkboot::provenance_warnings_pending [ list ] ; # n o r e c a p n e e d e d - a b o r t i n g a d j a c e n t t o t h e w a r n i n g
puts stderr " - a b o r t e d - ( - d i r t y - a b o r t g i v e n a n d s r c h a s u n c o m m i t t e d c h a n g e s - c o m m i t f i r s t , o r r e r u n w i t h o u t - d i r t y - a b o r t t o b u i l d w i t h a w a r n i n g ) "
if { $::punkboot::command eq " b a k e h o u s e " } {
puts stderr " - a b o r t e d - b a k e h o u s e r e f u s e s t o b a k e f r o m u n c o m m i t t e d s r c ( t h e b a k e h o u s e b a k e s f r o m t h e c o m m i t t e d r e c i p e ) . "
puts stderr " D e v e l o p e r f l o w f o r u n c o m m i t t e d c h a n g e s : "
puts stderr " m a k e . t c l p a c k a g e s - > t e s t ( ' < b u i l t e x e > s r c ' , s r c / t e s t s / r u n t e s t s . t c l ) "
puts stderr " m a k e . t c l b o o t s u p p o r t + m a k e . t c l v f s c o m m o n u p d a t e ( p r o m o t i o n g a t e s ) "
puts stderr " c o m m i t - > m a k e . t c l b a k e "
puts stderr " T o b u i l d a n y w a y w i t h o u t c o m m i t t e d p r o v e n a n c e : m a k e . t c l b a k e h o u s e - d i r t y - a b o r t 0 "
} else {
puts stderr " - a b o r t e d - ( - d i r t y - a b o r t g i v e n a n d s r c h a s u n c o m m i t t e d c h a n g e s - c o m m i t f i r s t , o r r e r u n w i t h o u t - d i r t y - a b o r t t o b u i l d w i t h a w a r n i n g ) "
}
exit 1
}
# G r a c e p e r i o d f o r a n a t t e n t i v e h u m a n t o c t r l - c - o n l y w h e n s t d i n i s a t e r m i n a l
@ -3175,7 +3272,7 @@ if {$::punkboot::command eq "bootsupport"} {
# P r o j e c t l a y o u t s s t o r e n o b o o t s u p p o r t m o d u l e s n a p s h o t s - ' d e v p r o j e c t . n e w ' i n j e c t s b o o t s u p p o r t
# i n t o g e n e r a t e d p r o j e c t s f r o m t h e g e n e r a t i n g s h e l l a t g e n e r a t i o n t i m e . L a y o u t - c a r r i e d s c r i p t s
# a n d b o o t s u p p o r t m a n i f e s t s a r e k e p t c u r r e n t b y t h e t h i n - l a y o u t s y n c s t e p ( s e e D I A G R A M 1 b i n
# : : p u n k b o o t : : w o r k f l o w _ t e x t ) , w h i c h r u n s d u r i n g m o d u l e s / l i b s / p a c k a g e s / p r o j e c t b u i l d s .
# : : p u n k b o o t : : w o r k f l o w _ t e x t ) , w h i c h r u n s d u r i n g m o d u l e s / l i b s / p a c k a g e s / b a k e h o u s e b u i l d s .
puts stdout " b o o t s u p p o r t d o n e "
flush stderr
@ -3187,7 +3284,7 @@ if {$::punkboot::command eq "bootsupport"} {
if { $::punkboot::command ni { project modules libs packages vfs vfslibs bin} } {
if { $::punkboot::command ni { bakehouse packages modules libs bake vfslibs bin} } {
puts stderr " C o m m a n d $ : : p u n k b o o t : : c o m m a n d n o t i m p l e m e n t e d - a b o r t i n g . "
flush stderr
after 100
@ -3200,7 +3297,7 @@ if {$::punkboot::command ni {project modules libs packages vfs vfslibs bin}} {
# i n s t a l l s r c v e n d o r c o n t e n t s ( f r o m v e r s i o n c o n t r o l l e d s r c f o l d e r ) t o b a s e o f p r o j e c t ( s a m e t a r g e t f o l d e r s a s o u r o w n s r c / m o d u l e s e t c i e t o p a t h s t h a t g o o n t h e a u t o _ p a t h a n d i n t c l : : t m : : l i s t )
if { $::punkboot::command in { project packages modules} } {
if { $::punkboot::command in { bakehouse packages modules} } {
set vendormodulefolders [ glob - nocomplain - dir $sourcefolder - type d - tails vendormodules vendormodules_tcl* ]
foreach vf $vendormodulefolders {
lassign [ split $vf _] _vm tclx
@ -3240,7 +3337,7 @@ if {$::punkboot::command in {project packages modules}} {
}
}
if { $::punkboot::command in { project packages libs} } {
if { $::punkboot::command in { bakehouse packages libs} } {
# e x c l u d e R E A D M E . m d f r o m s o u r c e f o l d e r - b u t o n l y t h e r o o t o n e
# - e x c l u d e - p a t h s t a k e s r e l a t i v e p a t t e r n s e . g
# * / t e s t . t x t w i l l o n l y m a t c h t e s t . t x t e x a c t l y o n e l e v e l d e e p .
@ -3309,7 +3406,7 @@ if {$::punkboot::command in {project packages libs}} {
}
}
if { $::punkboot::command in { project vfslibs} } {
if { $::punkboot::command in { bakehouse bake vfslibs} } {
# G - 0 3 7 : p r o p a g a t e d e c l a r e d v e n d o r e d p l a t f o r m - l i b r a r y p a c k a g e s i n t o k i t v f s l i b _ t c l < N > t r e e s .
# P a r t i c i p a t i o n i s p e r - p a c k a g e p e r - k i t ( k i t v f s p a c k a g e s e t s i n t e n t i o n a l l y d i f f e r - e . g . t w a p i
# v e r s i o n s v a r y p e r k i t ) - d e c l a r e d i n s r c / r u n t i m e / v e n d o r l i b _ v f s . t o m l , n e v e r b l a n k e t - c o p i e d .
@ -3400,7 +3497,7 @@ if {$::punkboot::command in {project vfslibs}} {
}
}
if { $::punkboot::command in { project packages libs} } {
if { $::punkboot::command in { bakehouse packages libs} } {
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
lappend projectlibfolders lib
# e x c l u d e R E A D M E . m d f r o m s o u r c e f o l d e r - b u t o n l y t h e r o o t o n e
@ -3473,7 +3570,7 @@ if {$::punkboot::command in {project packages libs}} {
}
if { $::punkboot::command in { project packages modules libs} } {
if { $::punkboot::command in { bakehouse packages modules libs} } {
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# t e m p l a t e s - t h i n - l a y o u t s y n c ( G - 0 8 7 s t a g e 3 ; s e e D I A G R A M 1 b i n : : p u n k b o o t : : w o r k f l o w _ t e x t )
# s y n c b o o t s c r i p t s ( b u i l d . t c l , m a k e . t c l ) a n d b o o t s u p p o r t i n c l u d e _ m o d u l e s . c o n f i g m a n i f e s t s i n t o t h e
@ -3584,7 +3681,7 @@ if {$::punkboot::command in {project packages modules libs}} {
}
}
if { $::punkboot::command in { project packages modules} } {
if { $::punkboot::command in { bakehouse packages modules} } {
# c o n s o l i d a t e d / m o d u l e s / m o d u l e s _ t c l X f o l d e r u s e d f o r t a r g e t w h e r e X i s t c l m a j o r v e r s i o n
# t h e m a k e p r o c e s s w i l l p r o c e s s f o r a n y _ t c l X n o t j u s t t h e m a j o r v e r s i o n o f t h e c u r r e n t i n t e r p r e t e r
@ -3623,7 +3720,7 @@ if {$::punkboot::command in {project packages modules}} {
}
}
if { $::punkboot::command in { project packages modules libs} } {
if { $::punkboot::command in { bakehouse packages modules libs} } {
set installername " m a k e . t c l "
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
if { [ punk : : repo::is_fossil_root $projectroot ] } {
@ -3671,14 +3768,15 @@ if {$::punkboot::command in {project packages modules libs}} {
# r e v i e w
set installername " m a k e . t c l "
if { $::punkboot::command ni { project vfs bin} } {
# c o m m a n d = m o d u l e s
if { $::punkboot::command ni { bakehouse bake bin} } {
# c o m m a n d = p a c k a g e s / m o d u l e s / l i b s / v f s l i b s - s t o p s b e f o r e k i t a s s e m b l y
puts stdout " v f s f o l d e r s n o t c h e c k e d "
puts stdout " - u s e ' m a k e . t c l v f s c o m m o n u p d a t e ' t o c o p y b u i l t m o d u l e s i n t o b a s e v f s f o l d e r "
puts stdout " - u s e ' m a k e . t c l p r o j e c t ' t o b u i l d e x e c u t a b l e k i t s / z i p k i t s f r o m v f s f o l d e r s a s w e l l i f y o u h a v e r u n t i m e s i n s t a l l e d "
puts stdout " N o t e t h a t w i t h o u t t h e v f s c o m m o n u p d a t e s t e p , ' m a k e . t c l p r o j e c t ' w i l l i n c l u d e a n y m a n u a l c h a n g e s i n t h e * c u s t o m * v f s f o l d e r s b u t "
puts stdout " w i t h o u t t h e l a t e s t b u i l t m o d u l e s . "
puts stdout " c a l l i n g ' b u i l t e x e n a m e ( . e x e ) d e v ' w i l l a l l o w t e s t i n g o f b u i l t m o d u l e s b e f o r e t h e y a r e p u t i n t o t h e k i t s / z i p k i t s v i a ' v f s c o m m o n u p d a t e ' t h e n ' p r o j e c t ' "
puts stdout " - u s e ' m a k e . t c l v f s c o m m o n u p d a t e ' t o p r o m o t e b u i l t m o d u l e s i n t o t h e b a s e v f s f o l d e r ( p r o m o t i o n g a t e - c o m m i t f o r p r o v e n a n c e ) "
puts stdout " - u s e ' m a k e . t c l b a k e ' t o b u i l d e x e c u t a b l e k i t s / z i p k i t s f r o m t h e v f s f o l d e r s i f y o u h a v e r u n t i m e s i n s t a l l e d "
puts stdout " N o t e t h a t w i t h o u t t h e v f s c o m m o n u p d a t e s t e p , ' m a k e . t c l b a k e ' w i l l i n c l u d e a n y m a n u a l c h a n g e s i n t h e * c u s t o m * v f s f o l d e r s b u t "
puts stdout " w i t h o u t t h e l a t e s t b u i l t m o d u l e s . "
puts stdout " c a l l i n g ' b u i l t e x e n a m e ( . e x e ) d e v ' w i l l a l l o w t e s t i n g o f b u i l t m o d u l e s b e f o r e t h e y a r e b a k e d i n t o t h e k i t s / z i p k i t s v i a ' v f s c o m m o n u p d a t e ' t h e n ' b a k e ' "
puts stdout " - c o n s u m e r f u l l p a t h f r o m a c l e a n c h e c k o u t : ' m a k e . t c l b a k e h o u s e ' "
puts stdout " - d o n e - "
exit 0
}
@ -5123,11 +5221,11 @@ if {[llength $failed_kits]} {
set had_kits [ expr { [ llength $installed_kits ] || [ llength $failed_kits ] || [ llength $skipped_kits ] } ]
if { $had_kits } {
puts stdout " m o d u l e b u i l d s a n d k i t / z i p k i t b u i l d s p r o c e s s e d ( v f s c o n f i g : s r c / r u n t i m e / m a p v f s . c o n f i g ) "
puts stdout " - u s e ' m a k e . t c l m o d u l e s ' t o b u i l d m o d u l e s w i t h o u t s c a n n i n g / b u i l d i n g t h e v f s f o l d e r s i n t o e x e c u t a b l e k i t s / z i p k i t s "
puts stdout " - u s e ' m a k e . t c l v f s c o m m o n u p d a t e ' t o c o p y b u i l t m o d u l e s i n t o t h e b a s e v f s f o l d e r < p r o j e c t d i r > / s r c / v f s / _ v f s c o m m o n . v f s "
puts stdout " - N o t e t h a t w i t h o u t t h e v f s c o m m o n u p d a t e s t e p , ' m a k e t c l v f s ' ( i n c l u d e d i n ' m a k e t c l p r o j e c t ' ) w i l l b u i l d v f s b a s e d e x e c u t a b l e s "
puts stdout " t h a t i n c l u d e y o u r c u r r e n t c u s t o m v f s f o l d e r s i n s r c / v f s , b u t w i t h a _ v f s c o m m o n . v f s t h a t d o e s n ' t h a v e t h e l a t e s t b u i l t m o d u l e s "
puts stdout " c a l l i n g ' b u i l t e x e n a m e ( . e x e ) d e v ' w i l l a l l o w t e s t i n g o f b u i l t m o d u l e s b e f o r e t h e y a r e p u t i n t o t h e k i t s / z i p k i t s v i a ' v f s c o m m o n u p d a t e ' t h e n ' p r o j e c t ' "
puts stdout " - u s e ' m a k e . t c l m o d u l e s ' t o b u i l d m o d u l e s w i t h o u t b a k i n g t h e v f s f o l d e r s i n t o e x e c u t a b l e k i t s / z i p k i t s "
puts stdout " - u s e ' m a k e . t c l v f s c o m m o n u p d a t e ' t o p r o m o t e b u i l t m o d u l e s i n t o t h e b a s e v f s f o l d e r < p r o j e c t d i r > / s r c / v f s / _ v f s c o m m o n . v f s ( p r o m o t i o n g a t e ) "
puts stdout " - N o t e t h a t w i t h o u t t h e v f s c o m m o n u p d a t e s t e p , ' m a k e . t c l b a k e ' ( t h e k i t - a s s e m b l y s t a g e o f ' m a k e . t c l b a k e h o u s e ' ) w i l l b u i l d v f s b a s e d e x e c u t a b l e s "
puts stdout " t h a t i n c l u d e y o u r c u r r e n t c u s t o m v f s f o l d e r s i n s r c / v f s , b u t w i t h a _ v f s c o m m o n . v f s t h a t d o e s n ' t h a v e t h e l a t e s t b u i l t m o d u l e s "
puts stdout " c a l l i n g ' b u i l t e x e n a m e ( . e x e ) d e v ' w i l l a l l o w t e s t i n g o f b u i l t m o d u l e s b e f o r e t h e y a r e b a k e d i n t o t h e k i t s / z i p k i t s v i a ' v f s c o m m o n u p d a t e ' t h e n ' b a k e ' "
} else {
puts stdout " m o d u l e b u i l d s p r o c e s s e d "
puts stdout " "