|
|
|
@ -361,47 +361,55 @@ if {[catch {exec sdx help} errM]} {
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if {[llength $runtimes] > 1} { |
|
|
|
|
puts stderr "Found multiple runtimes in $rtfolder ($runtimes) - unable to proceed - currently limited to one." |
|
|
|
|
exit 3 |
|
|
|
|
} |
|
|
|
|
#if {[llength $runtimes] > 1} { |
|
|
|
|
# puts stderr "Found multiple runtimes in $rtfolder ($runtimes) - unable to proceed - currently limited to one." |
|
|
|
|
# exit 3 |
|
|
|
|
#} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
set vfs_folder_changes [dict create] ;#cache whether each .vfs folder has changes so we don't re-run tests if building from same .vfs with multiple runtime executables |
|
|
|
|
|
|
|
|
|
set installername "make.tcl" |
|
|
|
|
# -- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- |
|
|
|
|
set runtimefile [lindex $runtimes 0] |
|
|
|
|
#sdx *may* be pointed to use the runtime we use to build the kit, or the user may manually use this runtime if they don't have tclsh |
|
|
|
|
#sdx will complain if the same runtime is used for the shell as is used in the -runtime argument - so we make a copy (REVIEW) |
|
|
|
|
#if {![file exists $buildfolder/buildruntime.exe]} { |
|
|
|
|
# file copy $rtfolder/$runtimefile $buildfolder/buildruntime.exe |
|
|
|
|
#} |
|
|
|
|
#set runtimefile [lindex $runtimes 0] |
|
|
|
|
foreach runtimefile $runtimes { |
|
|
|
|
#runtimefile e.g tclkit86bi.exe |
|
|
|
|
|
|
|
|
|
#sdx *may* be pointed to use the runtime we use to build the kit, or the user may manually use this runtime if they don't have tclsh |
|
|
|
|
#sdx will complain if the same runtime is used for the shell as is used in the -runtime argument - so we make a copy (REVIEW) |
|
|
|
|
#if {![file exists $buildfolder/buildruntime.exe]} { |
|
|
|
|
# file copy $rtfolder/$runtimefile $buildfolder/buildruntime.exe |
|
|
|
|
#} |
|
|
|
|
|
|
|
|
|
set basedir $buildfolder |
|
|
|
|
set config [dict create\ |
|
|
|
|
-make-step copy_runtime\ |
|
|
|
|
] |
|
|
|
|
lassign [punkcheck::start_installer_event $basedir/.punkcheck $installername $rtfolder $buildfolder $config] _eventid punkcheck_eventid _recordset record_list |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
set basedir $buildfolder |
|
|
|
|
set config [dict create\ |
|
|
|
|
-make-step copy_runtime\ |
|
|
|
|
] |
|
|
|
|
lassign [punkcheck::start_installer_event $basedir/.punkcheck $installername $rtfolder $buildfolder $config] _eventid punkcheck_eventid _recordset record_list |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
set target_relpath [punkcheck::lib::path_relative $basedir $buildfolder/buildruntime.exe] |
|
|
|
|
set file_record [punkcheck::installfile_begin $basedir $target_relpath $installername -eventid $punkcheck_eventid] |
|
|
|
|
# -- --- --- --- --- --- |
|
|
|
|
set source_relpath [punkcheck::lib::path_relative $basedir $rtfolder/$runtimefile] |
|
|
|
|
set file_record [punkcheck::installfile_add_source_and_fetch_metadata $basedir $source_relpath $file_record] |
|
|
|
|
# -- --- --- --- --- --- |
|
|
|
|
set changed_unchanged [punkcheck::recordlist::file_install_record_source_changes [lindex [dict get $file_record body] end]] |
|
|
|
|
if {[llength [dict get $changed_unchanged changed]]} { |
|
|
|
|
set file_record [punkcheck::installfile_started_install $basedir $file_record] |
|
|
|
|
set target_relpath [punkcheck::lib::path_relative $basedir $buildfolder/build_$runtimefile] |
|
|
|
|
set file_record [punkcheck::installfile_begin $basedir $target_relpath $installername -eventid $punkcheck_eventid] |
|
|
|
|
# -- --- --- --- --- --- |
|
|
|
|
puts stdout "Copying runtime from $rtfolder/$runtimefile to $buildfolder/buildruntime.exe" |
|
|
|
|
file copy -force $rtfolder/$runtimefile $buildfolder/buildruntime.exe |
|
|
|
|
set source_relpath [punkcheck::lib::path_relative $basedir $rtfolder/$runtimefile] |
|
|
|
|
set file_record [punkcheck::installfile_add_source_and_fetch_metadata $basedir $source_relpath $file_record] |
|
|
|
|
# -- --- --- --- --- --- |
|
|
|
|
set file_record [punkcheck::installfile_finished_install $basedir $file_record] |
|
|
|
|
} else { |
|
|
|
|
puts stderr "." |
|
|
|
|
set file_record [punkcheck::installfile_skipped_install $basedir $file_record] |
|
|
|
|
set changed_unchanged [punkcheck::recordlist::file_install_record_source_changes [lindex [dict get $file_record body] end]] |
|
|
|
|
if {[llength [dict get $changed_unchanged changed]]} { |
|
|
|
|
set file_record [punkcheck::installfile_started_install $basedir $file_record] |
|
|
|
|
# -- --- --- --- --- --- |
|
|
|
|
puts stdout "Copying runtime from $rtfolder/$runtimefile to $buildfolder/build_$runtimefile" |
|
|
|
|
file copy -force $rtfolder/$runtimefile $buildfolder/build_$runtimefile |
|
|
|
|
# -- --- --- --- --- --- |
|
|
|
|
set file_record [punkcheck::installfile_finished_install $basedir $file_record] |
|
|
|
|
} else { |
|
|
|
|
puts stderr "." |
|
|
|
|
set file_record [punkcheck::installfile_skipped_install $basedir $file_record] |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
# -- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- |
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -413,7 +421,7 @@ cd [file dirname $buildfolder]
|
|
|
|
|
#Simply rebuilding all the time may be close the speed of detecting change anyway - and almost certainly much faster when there is a change. |
|
|
|
|
#Using first mtime encountered that is later than target is another option - but likely to be highly variable in speed. Last file in the tree could happen to be the latest, and this mechanism doesn't handle build on reversion to older source. |
|
|
|
|
foreach vfs $vfs_folders { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
set vfsname [file rootname $vfs] |
|
|
|
|
puts stdout " Processing vfs $sourcefolder/$vfs" |
|
|
|
|
puts stdout " ------------------------------------" |
|
|
|
@ -540,7 +548,7 @@ foreach vfs $vfs_folders {
|
|
|
|
|
if {[file exists $buildfolder/$targetexe]} { |
|
|
|
|
puts stderr "deleting existing $buildfolder/$targetexe" |
|
|
|
|
if {[catch { |
|
|
|
|
file delete $sourcefolder/_build/$targetexe |
|
|
|
|
file delete $buildfolder/$targetexe |
|
|
|
|
} msg]} { |
|
|
|
|
puts stderr "Failed to delete $buildfolder/$targetexe" |
|
|
|
|
exit 4 |
|
|
|
@ -548,7 +556,7 @@ foreach vfs $vfs_folders {
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if {$::tcl_platform(platform) eq "windows"} { |
|
|
|
|
file rename $buildfolder/$vfsname $sourcefolder/_build/${vfsname}.exe |
|
|
|
|
file rename $buildfolder/$vfsname $buildfolder/${vfsname}.exe |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
after 200 |
|
|
|
|