]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
When constructing the auto-reconfigure commands, only quote args which look like...
authorstephan <stephan@noemail.net>
Wed, 6 Nov 2024 07:20:20 +0000 (07:20 +0000)
committerstephan <stephan@noemail.net>
Wed, 6 Nov 2024 07:20:20 +0000 (07:20 +0000)
FossilOrigin-Name: d4fbd34f7a4b0e6179cb06114d148fbc5d30b8dc8db0b764f4347dd50ff591ba

auto.def
autosetup/README.md
manifest
manifest.uuid

index 0f33f5b2252670e4370d335115753cca13e87050..88c08bef0986c181dcfbe5ad99761cf1726dae1c 100644 (file)
--- a/auto.def
+++ b/auto.def
@@ -1,4 +1,4 @@
-#/usr/bin/tclsh
+#/do/not/tclsh
 # ^^^ help out editors which guess this file's content type.
 #
 # This is the main autosetup-compatible configure script for the
@@ -227,15 +227,25 @@ msg-result "Source dir = $srcdir"
 msg-result "Build dir  = $::autosetup(builddir)"
 msg-result "Configuring SQLite version $PACKAGE_VERSION"
 
-#
-# SQLITE_AUTORECONFIG contains make target rules for re-running the
-# configure script with the same arguments it was initially invoked
-# with. This can be used to automatically reconfigure
-#
-define-append SQLITE_AUTORECONFIG cd '$::autosetup(builddir)' && '$srcdir/configure'
-#{*}$::autosetup(argv) breaks with --flag='val with spaces', so...
-foreach arg $::autosetup(argv) {
-  define-append SQLITE_AUTORECONFIG '$arg'
+if {1} {
+  #
+  # SQLITE_AUTORECONFIG contains make target rules for re-running the
+  # configure script with the same arguments it was initially invoked
+  # with. This can be used to automatically reconfigure
+  #
+  proc squote {arg} {
+    # Wrap $arg in single-quotes if it looks like it might need that
+    # to avoid mis-handling as a shell argument. We assume that $arg
+    # will never contain any single-quote characters.
+    if {[string match {*[ &;$*"]*} $arg]} { return '$arg' }
+    return $arg
+  }
+  define-append SQLITE_AUTORECONFIG cd [squote $::autosetup(builddir)] && [squote $srcdir/configure]
+  #{*}$::autosetup(argv) breaks with --flag='val with spaces', so...
+  foreach arg $::autosetup(argv) {
+    define-append SQLITE_AUTORECONFIG [squote $arg]
+  }
+  rename squote ""
 }
 
 # Are we cross-compiling?
index 32e90080e59ec8ff119b970b6761cb097c13cb12..b9453574febca79cf47c90be5a28a68cc2c89559 100644 (file)
@@ -161,7 +161,7 @@ e.g. `CFLAGS` and `y` is the specific instance of that category,
 e.g. `CFLAGS.readline`.
 
 When the configure script exports flags for consumption by filtered
-files, e.g. [`Makefile.in`](/file/Makefile.in) and the generated
+files, e.g. [Makefile.in][] and the generated
 `sqlite_cfg.h`, it does so in the more conventional `X_Y` form because
 those flags get exported as as C `#define`s to `sqlite_cfg.h`, where
 dots are not permitted.
@@ -169,9 +169,8 @@ dots are not permitted.
 The `X.y` convention is used in the makefiles primarily because the
 person who did the initial port finds that considerably easier on the
 eyes and fingers. In practice, the `X_Y` form of such exports is used
-exactly once in `Makefile.in`, where it's translated into into `X.y`
-form for consumption by `Makefile.in` and
-[`main.mk`](/file/main.mk). For example:
+exactly once in [Makefile.in][], where it's translated into into `X.y`
+form for consumption by [Makefile.in][] and [main.mk][]. For example:
 
 >
 ```
@@ -185,37 +184,40 @@ Do Not Update Global Shared State
 ------------------------------------------------------------------------
 
 In both the legacy Autotools-driven build and in common Autosetup
-usage, feature tests performed by the configure script may ammend
-values to global flags such as `CFLAGS`, `LDFLAGS`, and `LIBS`.
-That's appropriate for a makefile which builds a single deliverable,
-but less so for makefiles which produce multiple deliverables, as it's
-unlikely that every single deliverable will require the same core set
-of those flags.  In addition, that approach can make it difficult to
-determine the origin of any given change to those flags because those
-changes are hidden behind voodoo performed outside the immediate
-visibility of the configure script's maintainer. It can also force the
-maintainers of the configure script to place tests in a specific order
-so that the resulting flags get applied at the correct time.
-
-> A real-life example of the latter point: before the approach
-  described below was taken to collecting build-time flags, the test
-  for `-rpath` had to come _after_ the test for zlib because the
-  results of the `-rpath` test implicitly modified the `CFLAGS`,
-  breaking the zlib feature test. Because the feature tests no longer
-  (intentionally) modify global state, that is not an issue.
-
-Cases where feature tests modify global state in such a way that it
-may impact later feature tests are either (A) very intentionally
-defined to do so (e.g. the `--with-wasi-sdk` flag needs to modify the
-build tool chain) or (B) are oversights (i.e. bugs).
-
-This tree's configure script, utility APIs,
-[`Makefile.in`](/file/Makefile.in), and [`main.mk`](/file/main.mk)
-therefore strive to separate the results of any given feature test
-into its own well-defined variables. For example:
+usage, feature tests performed by the configure script may amend
+global flags such as `CFLAGS`, `LDFLAGS`, and `LIBS`.  That's
+appropriate for a makefile which builds a single deliverable, less
+so for makefiles which produce multiple deliverables. Drawbacks
+of that approach include:
+
+- It's unlikely that every single deliverable will require the same
+  core set of those flags.
+- It can be difficult to determine the origin of any given change to
+  that global state because those changes are hidden behind voodoo performed
+  outside the immediate visibility of the configure script's
+  maintainer.
+- It can force the maintainers of the configure script to place tests
+  in a specific order so that the resulting flags get applied at
+  the correct time.\  
+  (A real-life example: before the approach described below was taken
+  to collecting build-time flags, the test for `-rpath` had to come
+  _after_ the test for zlib because the results of the `-rpath` test
+  implicitly modified the `CFLAGS`, breaking the zlib feature
+  test. Because the feature tests no longer (intentionally) modify
+  global state, that is not an issue.)
+
+In this build, cases where feature tests modify global state in such a
+way that it may impact later feature tests are either (A) very
+intentionally defined to do so (e.g. the `--with-wasi-sdk` has
+invasive side-effects) or (B) are oversights (i.e. bugs).
+
+This tree's [configure script][auto.def], [utility APIs][proj.tcl],
+[Makefile.in][], and [main.mk][] therefore strive to separate the
+results of any given feature test into its own well-defined
+variables. For example:
 
 - The linker flags for zlib are exported from the configure script as
-  `LDFLAGS_ZLIB`, which `Makefile.in` and `main.mk` then expose as
+  `LDFLAGS_ZLIB`, which [Makefile.in][] and [main.mk][] then expose as
   `LDFLAGS.zlib`.
 - `CFLAGS_READLINE` (a.k.a. `CFLAGS.readline`) contains the `CFLAGS`
   needed for including `libreadline`, `libedit`, or `linenoise`, and
@@ -267,4 +269,6 @@ configure process, and check it in.
 [auto.def]: /file/auto.def
 [autosetup-git]: https://github.com/msteveb/autosetup
 [proj.tcl]: /file/autosetup/proj.tcl
+[Makefile.in]: /file/Makefile.in
+[main.mk]: /file/main.mk
 [JimTCL]: https://jim.tcl.tk
index 0602686fefbebdcf3b3681a6cf915609b4b6bbd0..c450b0aa8f41fc99bcf12d423cf83ca4fa77c13d 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Minor\sdoc\stweaks\sand\stypo\sfixes.
-D 2024-11-06T06:44:35.358
+C When\sconstructing\sthe\sauto-reconfigure\scommands,\sonly\squote\sargs\swhich\slook\slike\sthey\sneed\sit.\sMinor\sdoc\supdates.
+D 2024-11-06T07:20:20.567
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md c5b4009dca54d127d2d6033c22fd9cc34f53bedb6ef12c7cbaa468381c74ab28
@@ -13,7 +13,7 @@ F art/icon-80x90.gif 65509ce3e5f86a9cd64fe7fca2d23954199f31fe44c1e09e208c80fb83d
 F art/sqlite370.eps aa97a671332b432a54e1d74ff5e8775be34200c2
 F art/sqlite370.ico af56c1d00fee7cd4753e8631ed60703ed0fc6e90
 F art/sqlite370.jpg d512473dae7e378a67e28ff96a34da7cb331def2
-F auto.def 062b05538bc09779962a5265125aa289152f6abbb1ebaded9b22e8969b151d75
+F auto.def 05eedbf203a070fc84d9d26071f7ddf2a30f2118ab0204db46e91dbfec8a50b8
 F autoconf/INSTALL 83e4a25da9fd053c7b3665eaaaf7919707915903
 F autoconf/Makefile.am adedc1324b6a87fdd1265ddd336d2fb7d4f36a0e77b86ea553ae7cc4ea239347
 F autoconf/Makefile.fallback 22fe523eb36dfce31e0f6349f782eb084e86a5620b2b0b4f84a2d6133f53f5ac
@@ -37,7 +37,7 @@ F autoconf/tea/win/rules.vc 94a18c3e453535459b4a643983acca52fb8756e79055bd2ad4b0
 F autoconf/tea/win/targets.vc 96a25a1fa6e9e9cfb348fd3760a5395b4ce8acafc8ed10f0412937ec200d5dbd
 F autosetup/LICENSE 41a26aebdd2cd185d1e2b210f71b7ce234496979f6b35aef2cbf6b80cbed4ce4
 F autosetup/README.autosetup a78ff8c4a3d2636a4268736672a74bf14a82f42687fcf0631a70c516075c031e
-F autosetup/README.md bec9faf93df0451c7fc98f2af21770886841640565d027dd07f2f96c60651a7b
+F autosetup/README.md e6a686c3959fc565f9310f10f0d038440b1715591b6a90fc594160e8c361a5b6
 F autosetup/autosetup 9416ffdcdd6e2dbf7f6d1e5c890078518930f8af7722a950eacc28c7f151d2d6 x
 F autosetup/autosetup-config.guess dfa101c5e8220e864d5e9c72a85e87110df60260d36cb951ad0a85d6d9eaa463 x
 F autosetup/autosetup-config.sub a38fb074d0dece01cf919e9fb534a26011608aa8fa606490864295328526cd73 x
@@ -2200,8 +2200,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 bf42b93cc7a4f8de2308fa4e5a798a62797bc95d95e4b0bd06035c74413fa828
-R 17278f4a0cd6af5e62ab09d724fcee60
+P 406d9122b75990722ab79fdf42d4528d670645d8f778ca0b5a2a35fa1dc106c4
+R d119d74839c372da88adc458ca3c56bf
 U stephan
-Z de533e530a0ec603057ff86b4723ff1a
+Z 3e647edf4dd8fa5473ff129830ab4868
 # Remove this line to create a well-formed Fossil manifest.
index 2cb155ff2d4ce20c5ca53c40e06c8e454e9415d1..20a2e646081f6f7c30cd667b589f39e77efe22b3 100644 (file)
@@ -1 +1 @@
-406d9122b75990722ab79fdf42d4528d670645d8f778ca0b5a2a35fa1dc106c4
+d4fbd34f7a4b0e6179cb06114d148fbc5d30b8dc8db0b764f4347dd50ff591ba