diff options
author | drh <> | 2025-01-04 15:52:40 +0000 |
---|---|---|
committer | drh <> | 2025-01-04 15:52:40 +0000 |
commit | 4bf468e69dce23c009f94ab4266e05adfb7831d3 (patch) | |
tree | eb465f38064799ea3672dad671791b65f43bf1bc | |
parent | ded37f337b7b2e916657a83732aaec40eb146282 (diff) | |
parent | 8272128211e195e46eb3470156d50cf6f1e7dca8 (diff) | |
download | sqlite-4bf468e69dce23c009f94ab4266e05adfb7831d3.tar.gz sqlite-4bf468e69dce23c009f94ab4266e05adfb7831d3.zip |
Add the document describing test procedures for the TCL extension build
process. Update the Windows makefile so that it builds the TCL extensions
successfully with a default installation of Tcl8.6.
FossilOrigin-Name: 3263db9249444203b7a9a9f2b0be309c74944315dde7ed192366b709fff93f1b
-rw-r--r-- | Makefile.msc | 8 | ||||
-rw-r--r-- | doc/tcl-extension-testing.md | 157 | ||||
-rw-r--r-- | manifest | 14 | ||||
-rw-r--r-- | manifest.uuid | 2 |
4 files changed, 172 insertions, 9 deletions
diff --git a/Makefile.msc b/Makefile.msc index 942f759ee..7ebfcc8a3 100644 --- a/Makefile.msc +++ b/Makefile.msc @@ -984,10 +984,14 @@ TCLLIBS = !ENDIF !IFNDEF LIBTCLSTUB -!IF EXISTS("$(TCLLIBDIR)\tclstub$(TCLSUFFIX).lib") +!IF EXISTS("$(TCLLIBDIR)\tclstub$(TCLVERSION)$(TCLSUFFIX).lib") +LIBTCLSTUB = tclstub$(TCLVERSION)$(TCLSUFFIX).lib +!ELSEIF EXISTS("$(TCLLIBDIR)\tclstub$(TCLSUFFIX).lib") LIBTCLSTUB = tclstub$(TCLSUFFIX).lib +!ELSEIF EXISTS("$(TCLLIBDIR)\tclstub$(TCLVERSION).lib") +LIBTCLSTUB = tclstub$(TCLVERSION).lib !ELSE -LIBTCLSTUB = tclstub$(TCLVERSION)$(TCLSUFFIX).lib +LIBTCLSTUB = tclstub.lib !ENDIF !ENDIF diff --git a/doc/tcl-extension-testing.md b/doc/tcl-extension-testing.md new file mode 100644 index 000000000..0b81b922c --- /dev/null +++ b/doc/tcl-extension-testing.md @@ -0,0 +1,157 @@ +# Test Procedures For The SQLite TCL Extension + + +## 1.0 Testing On Unix-like Systems (Including Mac) + +### 1.1 Setup + +<ol type="1"> +<li value="1"> + [Fossil](https://fossil-scm.org/) installed. +<li> + A Fossil check-out of the TCL source tree. Let the directory + of this check-out be called **$TCLCO** (mnemonic: "TCL Check-Out"). +<li> + A Fossil check-out of the SQLite source tree. Let the directory + of this check-out be called **$SRCCO** (mnemonic: "SouRCe Check-Out"). +<li> + Let **$TCLTD** (mnemonic: "TCL Test Directory") be the name of a directory + that does not exist at the start of the test, and which will be + deleted at the end of the test, that will contain the test builds + of the TCL libraries and the SQLite TCL Extensions. +</ol> + +### 1.2 Building the TCL libraries and tclsh executables + +<ol type="1"> +<li value="5"> `mkdir $TCLTD $TCLTD/tcl86 $TCLTD/tcl90` +<li> `cd $TCLCO/unix` +<li> `fossil up core-8-6-16` <br> + ↑ Or some other version of Tcl8.6. +<li> `fossil clean -x` +<li> `./configure --prefix=$TCLTD/tcl86` +<li> `make install` +<li> `fossil up core-9-0-0` <br> + ↑ Or some other version of Tcl9 +<li> `fossil clean -x` +<li> `./configure --prefix=$TCLTD/tcl90` +<li> `make install` +</ol> + +### 1.3 Building the SQLite TCL extension + +<ol type="1"> +<li value="15"> `cd $SRCCO` +<li> `fossil clean -x` +<li> `./configure --with-tclsh=$TCLTD/tcl86/bin/tclsh8.6` +<li> `make tclextension-install` <br> + ↑ Verify extension installed at $TCLTD/tcl86/lib/tcl8.6/sqlite3.* +<li> `fossil clean -x` +<li> `./configure --with-tclsh=$TCLTD/tcl90/bin/tclsh9.0` +<li> `make tclextension-install` <br> + ↑ Verify extension installed at $TCLTD/tcl90/lib/sqlite3.* +</ol> + +### 1.4 Testing the extension + +<ol type="1"> +<li value="22"> + `$TCLTD/tcl86/bin/tclsh8.6 test/testrunner.tcl release --explain` <br> + ↑ Verify thousands of lines of output with no errors +<li> `$TCLTD/tcl90/bin/tclsh9.0 test/testrunner.tcl release --explain` <br> + ↑ Verify thousands of lines of output with no errors +</ol> + +### 1.5 Cleanup + +<ol type="1"> +<li value="24"> `rm -rf $TCLTD` +</ol> + +## 2.0 Testing On Windows + +### 2.1 Setup for Windows + +<ol type="1"> +<li value="1"> + [Fossil](https://fossil-scm.org/) installed. +<li> + A Fossil check-out of the TCL source tree. Let the directory + of this check-out be called **%TCLCO%** (mnemonic: "TCL Check-Out"). +<li> + A Fossil check-out of the SQLite source tree. Let the directory + of this check-out be called **%SRCCO%** (mnemonic: "SouRCe Check-Out"). +<li> + Let **%TCLTD%** (mnemonic: "TCL Test Directory") be the name of a directory + that does not exist at the start of the test, and which will be + deleted at the end of the test, that will contain the test builds + of the TCL libraries and the SQLite TCL Extensions. +<li> + Unix-like command-line tools installed. Example: + [unxutils](https://unxutils.sourceforge.net/) +<li> [Visual Studio](https://visualstudio.microsoft.com/vs/community/) + installed. VS2015 or later required. +<li> `set ORIGINALPATH=%PATH%` <br> + ↑ remember the original %PATH% value +</ol> + +### 2.2 Building the TCL libraries and tclsh.exe executables on Windows + +<ol type="1"> +<li value="8"> `mkdir %TCLTD% %TCLTD%\tcl86 %TCLTD%\tcl90` +<li> `cd %TCLCO%\win` +<li> `fossil up core-8-6-16` <br> + ↑ Or some other version of Tcl8.6. +<li> `fossil clean -x` +<li> `set INSTALLDIR=%TCLTD%\tcl86` +<li> `nmake /f makefile.vc release` <br> + ⇅ You *must* invoke the "release" and "install" targets + using separate invocations of "nmake" or tclsh86t.exe won't be + installed. +<li> `nmake /f makefile.vc install` +<li> `fossil up core-9-0-0` <br> + ↑ Or some other version of Tcl9 +<li> `fossil clean -x` +<li> `set INSTALLDIR=%TCLTD%\tcl90` +<li> `nmake /f makefile.vc release` <br> + ⇅ You *must* invoke the "release" and "install" targets + using separate invocations of "nmake" or tclsh90.exe won't be + installed. +<li> `nmake /f makefile.vc install` +</ol> + +### 2.3 Building the SQLite TCL extension on Windows + +<ol type="1"> +<li value="20"> `cd %SRCCO%` +<li> `fossil clean -x` +<li> `set TCLDIR=%TCLTD%\tcl86` +<li> `set PATH=%TCLTD%\tcl86\bin;%ORIGINALPATH%` +<li> `set TCLSH_CMD=%TCLTD%\tcl86\bin\tclsh86t.exe` +<li> `nmake /f Makefile.msc tclextension-install` <br> + ↑ Verify extension installed at %TCLTD%\\tcl86\\lib\\tcl8.6\\sqlite3.* +<li> `fossil clean -x` +<li> `set TCLDIR=%TCLTD%\tcl90` +<li> `set PATH=%TCLTD%\tcl90\bin;%ORIGINALPATH%` +<li> `set TCLSH_CMD=%TCLTD%\tcl90\bin\tclsh90.exe` +<li> `nmake /f Makefile.msc tclextension-install` <br> + ↑ Verify extension installed at %TCLTD%\\tcl90\\lib\\sqlite3.* +</ol> + +### 2.4 Testing on Windows + +<ol type="1"> +<li value="31"> + `set PATH=%TCLTD%\tcl86\bin;%ORIGINALPATH%` +<li>`tclsh86t test/testrunner.tcl release --explain` <br> + ↑ Verify thousands of lines of output with no errors +<li> `set PATH=%TCLTD%\tcl90\bin;%ORIGINALPATH%` +<li> `tclsh90 test/testrunner.tcl release --explain` <br> + ↑ Verify thousands of lines of output with no errors +</ol> + +### 2.5 Cleanup + +<ol type="1"> +<li value="35"> `rm -rf %TCLTD%` +</ol> @@ -1,11 +1,11 @@ -C Add\scomment\sto\sthe\scolumnIsGoodIndexCandidate()\sroutine\sto\srecord\sthe\sresults\nof\sa\sfailed\sexperiment.\s\sNo\schanges\sto\scode. -D 2025-01-03T11:51:50.103 +C Add\sthe\sdocument\sdescribing\stest\sprocedures\sfor\sthe\sTCL\sextension\sbuild\nprocess.\s\sUpdate\sthe\sWindows\smakefile\sso\sthat\sit\sbuilds\sthe\sTCL\sextensions\nsuccessfully\swith\sa\sdefault\sinstallation\sof\sTcl8.6. +D 2025-01-04T15:52:40.069 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md e108e1e69ae8e8a59e93c455654b8ac9356a11720d3345df2a4743e9590fb20d F Makefile.in ad349acf91b3569033439fe498fa197aa530cafaa01362eb7daad2f84e43d265 F Makefile.linux-generic bd3e3cacd369821a6241d4ea1967395c962dfe3057e38cb0a435cee0e8b789d0 -F Makefile.msc eed0c40c365d100f3329e8fb7d0e18bad09a6f0c026aa1e4dc7f88270378929d +F Makefile.msc a62f84e521a23168c61018420c6844a9fbb424950010dc6a3e084ffd8618312e F README.md c3c0f19532ce28f6297a71870f3c7b424729f0e6d9ab889616d3587dd2332159 F VERSION 8dc0c3df15fd5ff0622f88fc483533fce990b1cbb2f5fb9fdfb4dbd71eef2889 F art/icon-243x273.gif 9750b734f82fdb3dc43127753d5e6fbf3b62c9f4e136c2fbf573b2f57ea87af5 @@ -61,6 +61,7 @@ F doc/json-enhancements.md e356fc834781f1f1aa22ee300027a270b2c960122468499bf347b F doc/jsonb.md 5fab4b8613aa9153fbeb6259297bd4697988af8b3d23900deba588fa7841456b F doc/lemon.html 8b266ff711d2ec7f867c3dca37634963f48a630329908cc282beebfa8c708706 F doc/pager-invariants.txt 27fed9a70ddad2088750c4a2b493b63853da2710 +F doc/tcl-extension-testing.md 1c7225115cede8dadd8fb173d5a1ada31d0ac566d53dcbec2013bbf97464933d F doc/testrunner.md 15583cf8c7d8a1c3378fd5d4319ca769a14c4d950a5df9b015d01d5be290dc69 F doc/trusted-schema.md 33625008620e879c7bcfbbfa079587612c434fa094d338b08242288d358c3e8a F doc/vdbesort-memory.md 4da2639c14cd24a31e0af694b1a8dd37eaf277aff3867e9a8cc14046bc49df56 @@ -2204,8 +2205,9 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350 F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7 F tool/warnings.sh 49a486c5069de041aedcbde4de178293e0463ae9918ecad7539eedf0ec77a139 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P 1291b013a8c93e7001fe25783bc98d12f5f7c341d1f728e6852632e18a38af58 -R 0507e66ed59bfa5a55bc14583a9d765f +P 9ee57a30a49d9813bf2669a5d8346f7e018e3fbf1792739951311a8d3a249d45 0c2cdc632f26d6acac2d508def4ecfcc97462ebcddc20c84f8847e02e42b3a1d +R c39856b8b1c55486d94efa9f4d6e65f7 +T +closed 0c2cdc632f26d6acac2d508def4ecfcc97462ebcddc20c84f8847e02e42b3a1d U drh -Z 3304d535a779543ccf066c65753e6b08 +Z 0b107a7817bd289dd55ee148db24c6d9 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index d506d57c1..f286bc29e 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -9ee57a30a49d9813bf2669a5d8346f7e018e3fbf1792739951311a8d3a249d45 +3263db9249444203b7a9a9f2b0be309c74944315dde7ed192366b709fff93f1b |