aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorstephan <stephan@noemail.net>2025-03-25 01:32:16 +0000
committerstephan <stephan@noemail.net>2025-03-25 01:32:16 +0000
commit6de1c9d55985dc1540deb4ccd4aa8e3a94f129c1 (patch)
tree88e2c663c90d3f50c6815b90a24e26e9ca54d716
parentb0c3118cad42832cf08b3b6fdc2f9b736d73d6ec (diff)
downloadsqlite-6de1c9d55985dc1540deb4ccd4aa8e3a94f129c1.tar.gz
sqlite-6de1c9d55985dc1540deb4ccd4aa8e3a94f129c1.zip
Configure script internal cleanups. Factor out the superfluous proj-lshift_ and use lassign instead. Add -ro flag to proj-file-write.
FossilOrigin-Name: 1f98fc07fdf06d699ffbf1521b0b5e937a582017e4325bd994b488e06becbecc
-rw-r--r--autosetup/proj.tcl63
-rw-r--r--manifest14
-rw-r--r--manifest.uuid2
3 files changed, 41 insertions, 38 deletions
diff --git a/autosetup/proj.tcl b/autosetup/proj.tcl
index ae61ee3a9..fdd5d5e34 100644
--- a/autosetup/proj.tcl
+++ b/autosetup/proj.tcl
@@ -64,6 +64,7 @@ proc proj-warn {msg} {
show-notices
puts stderr "WARNING: $msg"
}
+
########################################################################
# @proj-error msg
#
@@ -111,6 +112,7 @@ proc proj-bold {str} {
# @proj-indented-notice ?-error? ?-notice? msg
#
# Takes a multi-line message and emits it with consistent indentation.
+# It does not perform any line-wrapping of its own.
#
# If the -notice flag it used then it emits using [user-notice], which
# means its rendering will (A) go to stderr and (B) be delayed until
@@ -163,26 +165,6 @@ proc proj-is-cross-compiling {} {
}
########################################################################
-# proj-lshift_ shifts $count elements from the list named $listVar
-# and returns them as a new list. On empty input, returns "".
-#
-# Modified slightly from: https://wiki.tcl-lang.org/page/lshift
-proc proj-lshift_ {listVar {count 1}} {
- upvar 1 $listVar l
- if {![info exists l]} {
- # make the error message show the real variable name
- error "can't read \"$listVar\": no such variable"
- }
- if {![llength $l]} {
- # error Empty
- return ""
- }
- set r [lrange $l 0 [incr count -1]]
- set l [lreplace $l [set l 0] $count]
- return $r
-}
-
-########################################################################
# @proj-strip-hash-comments value
#
# Expects to receive string input, which it splits on newlines, strips
@@ -479,16 +461,16 @@ proc proj-opt-define-bool {args} {
set invert 0
if {[lindex $args 0] eq "-v"} {
set invert 1
- set args [lrange $args 1 end]
+ lassign $args - optName defName descr
+ } else {
+ lassign $args optName defName descr
}
- set optName [proj-lshift_ args]
- set defName [proj-lshift_ args]
- set descr [proj-lshift_ args]
if {"" eq $descr} {
set descr $defName
}
+ puts "optName=$optName defName=$defName descr=$descr"
set rc 0
- msg-checking "$descr ... "
+ msg-checking "[join $descr] ... "
if {[proj-opt-truthy $optName]} {
if {0 eq $invert} {
set rc 1
@@ -617,14 +599,28 @@ proc proj-file-content-list {fname} {
}
########################################################################
-# @proj-file-write fname content
+# @proj-file-write ?-ro? fname content
#
# Works like autosetup's [writefile] but explicitly uses binary mode
-# to avoid EOL translation on Windows.
-proc proj-file-write {fname content} {
+# to avoid EOL translation on Windows. If $fname already exists, it is
+# overwritten, even if it's flagged as read-only.
+proc proj-file-write {args} {
+ if {"-ro" eq [lindex $args 0]} {
+ lassign $args ro fname content
+ } else {
+ set ro ""
+ lassign $args fname content
+ }
+ file delete -force -- $fname; # in case it's read-only
set f [open $fname wb]
puts -nonewline $f $content
close $f
+ if {"" ne $ro} {
+ catch {
+ exec chmod -w $fname
+ #file attributes -w $fname; #jimtcl has no 'attributes'
+ }
+ }
}
########################################################################
@@ -693,12 +689,17 @@ proc proj-make-from-dot-in {args} {
}
foreach f $filename {
set f [string trim $f]
- catch { exec chmod u+w $f }
+ if {[file exists $f]} {
+ catch { exec chmod u+w $f }
+ }
make-template $f.in $f
if {$touch} {
proj-touch $f
}
- catch { exec chmod -w $f }
+ catch {
+ exec chmod -w $f
+ #file attributes -w $f; #jimtcl has no 'attributes'
+ }
}
}
@@ -1407,6 +1408,8 @@ proc proj-tclConfig-sh-to-autosetup {tclConfigSh} {
TCL_PREFIX
TCL_VERSION
}
+ # Build a small shell script which proxies the $tclVars from
+ # $tclConfigSh into autosetup code...
lappend shBody "if test x = \"x${tclConfigSh}\"; then"
foreach v $tclVars {
lappend shBody "$v= ;"
diff --git a/manifest b/manifest
index dbe512c36..fd16d584a 100644
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Clarify\sand\sreduce\sredundancy\sin\san\sassert()\sin\swalChecksumBytes().
-D 2025-03-24T23:08:40.014
+C Configure\sscript\sinternal\scleanups.\sFactor\sout\sthe\ssuperfluous\sproj-lshift_\sand\suse\slassign\sinstead.\sAdd\s-ro\sflag\sto\sproj-file-write.
+D 2025-03-25T01:32:16.183
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
F LICENSE.md e108e1e69ae8e8a59e93c455654b8ac9356a11720d3345df2a4743e9590fb20d
@@ -50,7 +50,7 @@ F autosetup/cc.tcl c0fcc50ca91deff8741e449ddad05bcd08268bc31177e613a6343bbd1fd3e
F autosetup/find_tclconfig.tcl e64886ffe3b982d4df42cd28ed91fe0b5940c2c5785e126c1821baf61bc86a7e
F autosetup/jimsh0.c a57c16e65dcffc9c76e496757cb3f7fb47e01ecbd1631a0a5e01751fc856f049
F autosetup/pkg-config.tcl 4e635bf39022ff65e0d5434339dd41503ea48fc53822c9c5bde88b02d3d952ba
-F autosetup/proj.tcl 4706741184076b3056356324727b7691e3b6877c84224fa05bbf7d804e895e55
+F autosetup/proj.tcl 8bf99398c20a440d197182f85aaa60a41f07248af779fea68c41df30e6da8546
F autosetup/sqlite-config.tcl 85490e59fb374cf091765308eae96bb96cc85169af46d78e034f3766bdbd0523
F autosetup/system.tcl 51d4be76cd9a9074704b584e5c9cbba616202c8468cf9ba8a4f8294a7ab1dba9
F configure 9a00b21dfd13757bbfb8d89b30660a89ec1f8f3a79402b8f9f9b6fc475c3303a x
@@ -2215,8 +2215,8 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350
F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7
F tool/warnings.sh 49a486c5069de041aedcbde4de178293e0463ae9918ecad7539eedf0ec77a139
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P 1dadea3a79c3edd110b0b32b07287744300958fed31f2da11901a42b16f86669
-R c08c05d83169d801717107adbed59c20
-U drh
-Z 6fb51dc820f4b9af99017fdaa2038941
+P 3c53abf5e6df446d569040042363265737aa10fc8aaa20b31c587100c557c5e7
+R 1bbb3c025ec1b46650981e453b29c862
+U stephan
+Z c139b7624e642b2a32a6648b4ac4392b
# Remove this line to create a well-formed Fossil manifest.
diff --git a/manifest.uuid b/manifest.uuid
index 36359607d..ce13eb13e 100644
--- a/manifest.uuid
+++ b/manifest.uuid
@@ -1 +1 @@
-3c53abf5e6df446d569040042363265737aa10fc8aaa20b31c587100c557c5e7
+1f98fc07fdf06d699ffbf1521b0b5e937a582017e4325bd994b488e06becbecc