diff --git a/freebsd-arm64/sha1sums.txt b/freebsd-arm64/sha1sums.txt new file mode 100644 index 0000000..fa86c7d --- /dev/null +++ b/freebsd-arm64/sha1sums.txt @@ -0,0 +1 @@ +a08dd02077733a7c0efa733dcfc4990a2e989122 *tclkit-851-freebsd7-x86_64 diff --git a/freebsd-arm64/tclkit-851-freebsd7-x86_64 b/freebsd-arm64/tclkit-851-freebsd7-x86_64 new file mode 100644 index 0000000..b522259 Binary files /dev/null and b/freebsd-arm64/tclkit-851-freebsd7-x86_64 differ diff --git a/linux-x86_64/sha1sums.txt b/linux-x86_64/sha1sums.txt index cc6f427..35154b8 100644 --- a/linux-x86_64/sha1sums.txt +++ b/linux-x86_64/sha1sums.txt @@ -1 +1,2 @@ 41c81c8cf4020ea67a4e0238c96f9550bdadd8c3 *tclkit-902-Linux64-intel-dyn +a0c299db0429e799833eb77d7962f410c9a2bfb1 *tclkit-902-Linux64-intel-dyn_basic diff --git a/linux-x86_64/tclkit-902-Linux64-intel-dyn_basic b/linux-x86_64/tclkit-902-Linux64-intel-dyn_basic new file mode 100644 index 0000000..dfd2890 Binary files /dev/null and b/linux-x86_64/tclkit-902-Linux64-intel-dyn_basic differ diff --git a/src/build_sha1sums.tcl b/src/build_sha1sums.tcl new file mode 100644 index 0000000..c3c1596 --- /dev/null +++ b/src/build_sha1sums.tcl @@ -0,0 +1,114 @@ +package require sha1 +set srcdir [file dirname [file normalize [info script]]] +set basedir [file dirname $srcdir] +puts stdout "processing using base folder $basedir" + +set rootfolders [glob -dir $basedir -types {d} -tail *] +set os_list [list linux macosx win32 freebsd netbsd dragonflybsd] +set known_skip_tails [list src test] +set skip_extensions [list .md .txt] +set original_cwd [pwd] +set R "\x1b\[31m" ;#Red +set G "\x1b\[32m" ;#Green +set Y "\x1b\[33m" ;#Yellow +set C "\x1b\[36m" ;#Cyan +set RST "\x1b\[m" ;#reset + +proc do_sha1_in_folder {binaryfolder level} { + global R G Y C RST skip_extensions + set indent [string repeat " " $level] + puts stdout "${indent}${C}[string repeat - 50]$RST" + if {$level == 0} { + puts stdout "${indent}Processing runtime folder $binaryfolder" + } else { + puts stdout "${indent}Processing sub folder $binaryfolder" + } + + #temp + if {$level > 0} { + #return + } + + set shafile [file join $binaryfolder sha1sums.txt] + set existing_sha_dict [dict create] + if {[file exists $shafile]} { + puts stdout "${indent}Existing sha1sums.txt found" + set fd [open $shafile r] + set existing_sha_data [read $fd] + close $fd + foreach ln [split $existing_sha_data \n] { + set trimln [string trim $ln] + if {$trimln eq ""} {continue} + set first_sp [string first " " $trimln] + set h [string range $trimln 0 $first_sp-1] + set tag [string range $trimln $first_sp+1 end] + # e.g *tclkit where * indicates binary was used + # or possibly a space instead of * (same output as unix 'sha1sum -b ') + dict set existing_sha_dict [string range $tag 1 end] $h + } + + } else { + puts stdout "${indent}No current sha1sums.txt file" + } + + set candidate_file_tails [glob -nocomplain -dir $binaryfolder -type f -tail *] + cd $binaryfolder + set git_files [exec git ls-files --exclude-standard ":(glob)*"] + set new_sha_dict [dict create] + foreach ftail $candidate_file_tails { + if {[string tolower [file extension $ftail]] in $skip_extensions} {continue} + if {$ftail in $git_files} { + set hash [sha1::sha1 -hex -filename [file join $binaryfolder $ftail]] + dict set new_sha_dict $hash $ftail + } else { + puts stdout "${indent}${R}Skipping $ftail$RST (not in result of 'git ls-files --exclude-standard :(glob)*')" + } + } + set changes 0 + dict for {h f} $new_sha_dict { + if {[dict exists $existing_sha_dict $f]} { + if {$h ne [dict get $existing_sha_dict $f]} { + puts -nonewline stdout "${indent}${Y}*UPD*$RST $h $f\n" + incr changes + } else { + puts -nonewline stdout "${indent}SAME $h *$f$RST\n" + } + } else { + puts -nonewline stdout "${indent}${G}*NEW*$RST $h *$f\n" + incr changes + } + } + if {[dict size $existing_sha_dict] != [dict size $new_sha_dict] || $changes > 0} { + puts stderr "${indent}rewriting sha file at $shafile" + set fd [open $shafile w] + dict for {h f} $new_sha_dict { + puts -nonewline $fd "$h *$f\n" + } + close $fd + } else { + puts stderr "${indent}No changes or additions detected" + } + set subfolder_tails [glob -nocomplain -dir $binaryfolder -type d -tail *] + foreach sftail $subfolder_tails { + if {[string match .* $sftail]} { + continue + } + do_sha1_in_folder [file join $binaryfolder $sftail] [expr {$level + 1}] + } +} + + +set level 0 +foreach dirtail $rootfolders { + set level 0 + set indent "" + if {$dirtail in $known_skip_tails} {continue} + set firstword [lindex [split $dirtail -] 0] + if {$firstword ni $os_list} { + puts stderr "skipping unrecognised folder: $f" + continue + } + set runtimefolder [file join $basedir $dirtail] + do_sha1_in_folder $runtimefolder 0 +} +cd $original_cwd