mirror of
https://github.com/sqlite/sqlite.git
synced 2025-08-01 06:27:03 +03:00
Rework the tool/omittest.tcl script so that it works with the
configure-generated Makefile, and requires no arguments. Update the configure-generated Makefile with a new "tidy" target which is like "clean" except that is preserves test logs. Use "make tidy" to force everything to be recompiled from scratch without destroying logs. FossilOrigin-Name: 99491df19d68df1f0515bd5ec9240ef3dd6e0fa38a6c837a38a16a873f8e2cbb
This commit is contained in:
27
Makefile.in
27
Makefile.in
@ -1606,15 +1606,21 @@ tclextension-uninstall:
|
|||||||
tclextension-list:
|
tclextension-list:
|
||||||
$(TCLSH_CMD) $(TOP)/tool/buildtclext.tcl --info
|
$(TCLSH_CMD) $(TOP)/tool/buildtclext.tcl --info
|
||||||
|
|
||||||
clean:
|
|
||||||
rm -f *.lo *.la *.o *.c *.h *.da *.bb *.bbg gmon.* *.rws sqlite3$(TEXE)
|
# Remove build products sufficient so that subsequent makes will recompile
|
||||||
rm -rf .libs .deps tsrc libtool .target_source testrunner_*
|
# everything from scratch. Do not remove:
|
||||||
|
#
|
||||||
|
# * test results and test logs
|
||||||
|
# * output from ./configure
|
||||||
|
#
|
||||||
|
tidy:
|
||||||
|
rm -f *.lo *.la *.o *.c *.da *.bb *.bbg gmon.* *.rws sqlite3$(TEXE)
|
||||||
|
rm -f fts5.h keywordhash.h opcodes.h sqlite3.h sqlite3ext.h sqlite3session.h
|
||||||
|
rm -rf .libs .deps tsrc .target_source
|
||||||
rm -f lemon$(BEXE) sqlite*.tar.gz
|
rm -f lemon$(BEXE) sqlite*.tar.gz
|
||||||
rm -f mkkeywordhash$(BEXE) mksourceid$(BEXE)
|
rm -f mkkeywordhash$(BEXE) mksourceid$(BEXE)
|
||||||
rm -f parse.* fts5parse.*
|
rm -f parse.* fts5parse.*
|
||||||
rm -rf tsrc .target_source testrunner_bld_* testdir*
|
rm -f tclsqlite3$(TEXE) $(TESTPROGS)
|
||||||
rm -f tclsqlite3$(TEXE)
|
|
||||||
rm -f $(TESTPROGS) testrunner.*
|
|
||||||
rm -f LogEst$(TEXE) fts3view$(TEXE) rollback-test$(TEXE) showdb$(TEXE)
|
rm -f LogEst$(TEXE) fts3view$(TEXE) rollback-test$(TEXE) showdb$(TEXE)
|
||||||
rm -f showjournal$(TEXE) showstat4$(TEXE) showwal$(TEXE) speedtest1$(TEXE)
|
rm -f showjournal$(TEXE) showstat4$(TEXE) showwal$(TEXE) speedtest1$(TEXE)
|
||||||
rm -f wordcount$(TEXE) changeset$(TEXE) version-info$(TEXE)
|
rm -f wordcount$(TEXE) changeset$(TEXE) version-info$(TEXE)
|
||||||
@ -1625,8 +1631,15 @@ clean:
|
|||||||
rm -f threadtest5$(TEXE)
|
rm -f threadtest5$(TEXE)
|
||||||
rm -f src-verify has_tclsh*
|
rm -f src-verify has_tclsh*
|
||||||
|
|
||||||
|
# Removes build products and test logs. Retains ./configure outputs.
|
||||||
|
#
|
||||||
|
clean: tidy
|
||||||
|
rm -rf omittest* testrunner* testdir*
|
||||||
|
|
||||||
|
# Clean up everything. No exceptions.
|
||||||
|
#
|
||||||
distclean: clean
|
distclean: clean
|
||||||
rm -f config.log config.status Makefile
|
rm -f sqlite_cfg.h config.log config.status Makefile $(LIBTOOL)
|
||||||
|
|
||||||
#
|
#
|
||||||
# Windows section
|
# Windows section
|
||||||
|
14
manifest
14
manifest
@ -1,9 +1,9 @@
|
|||||||
C Improvements\sto\s"make\sclean"\son\sunix.
|
C Rework\sthe\stool/omittest.tcl\sscript\sso\sthat\sit\sworks\swith\sthe\nconfigure-generated\sMakefile,\sand\srequires\sno\sarguments.\nUpdate\sthe\sconfigure-generated\sMakefile\swith\sa\snew\s"tidy"\starget\swhich\nis\slike\s"clean"\sexcept\sthat\sis\spreserves\stest\slogs.\s\sUse\s"make\stidy"\sto\nforce\severything\sto\sbe\srecompiled\sfrom\sscratch\swithout\sdestroying\slogs.
|
||||||
D 2024-08-30T12:10:28.233
|
D 2024-08-30T16:24:49.358
|
||||||
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
||||||
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
||||||
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
|
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
|
||||||
F Makefile.in 294ce2b8b2736787ba138e22bee38f189b4543d8fdf0e9ac20227663a9b761ba
|
F Makefile.in 77627cbeeffe23606da5663458c0f8bbb86d28e2aca270a5d9b0db8e39a54bb2
|
||||||
F Makefile.linux-gcc f3842a0b1efbfbb74ac0ef60e56b301836d05b4d867d014f714fa750048f1ab6
|
F Makefile.linux-gcc f3842a0b1efbfbb74ac0ef60e56b301836d05b4d867d014f714fa750048f1ab6
|
||||||
F Makefile.msc 47dfd26a401c5a33e237ecfe126c996977f34ac44e44a1a1ebf2204abb89d483
|
F Makefile.msc 47dfd26a401c5a33e237ecfe126c996977f34ac44e44a1a1ebf2204abb89d483
|
||||||
F README.md 5b678e264236788390d11991f2c0052bd73f19790173883fc56d638bcb849154
|
F README.md 5b678e264236788390d11991f2c0052bd73f19790173883fc56d638bcb849154
|
||||||
@ -2149,7 +2149,7 @@ F tool/mktoolzip.tcl c7a9b685f5131d755e7d941cec50cee7f34178b9e34c9a89811eeb08617
|
|||||||
F tool/mkvsix.tcl 67b40996a50f985a573278eea32fc5a5eb6110bdf14d33f1d8086e48c69e540a
|
F tool/mkvsix.tcl 67b40996a50f985a573278eea32fc5a5eb6110bdf14d33f1d8086e48c69e540a
|
||||||
F tool/offsets.c 8ed2b344d33f06e71366a9b93ccedaa38c096cc1dbd4c3c26ad08c6115285845
|
F tool/offsets.c 8ed2b344d33f06e71366a9b93ccedaa38c096cc1dbd4c3c26ad08c6115285845
|
||||||
F tool/omittest-msvc.tcl d6b8f501ac1d7798c4126065030f89812379012cad98a1735d6d7221492abc08
|
F tool/omittest-msvc.tcl d6b8f501ac1d7798c4126065030f89812379012cad98a1735d6d7221492abc08
|
||||||
F tool/omittest.tcl e99c9fecc3f7a8ca2fa75d8ec8bdbb5acce33dc69f0c280aae53064693387f65
|
F tool/omittest.tcl b8e9aae836d1659bf399f87d79f25c1b95b5db6f95338e94a0ff6ef73be6196e
|
||||||
F tool/opcodesum.tcl 740ed206ba8c5040018988129abbf3089a0ccf4a
|
F tool/opcodesum.tcl 740ed206ba8c5040018988129abbf3089a0ccf4a
|
||||||
F tool/pagesig.c ff0ca355fd3c2398e933da5e22439bbff89b803b
|
F tool/pagesig.c ff0ca355fd3c2398e933da5e22439bbff89b803b
|
||||||
F tool/replace.tcl 511c61acfe563dfb58675efb4628bb158a13d48ff8322123ac447e9d25a82d9a
|
F tool/replace.tcl 511c61acfe563dfb58675efb4628bb158a13d48ff8322123ac447e9d25a82d9a
|
||||||
@ -2211,8 +2211,8 @@ F vsixtest/vsixtest.tcl 6195aba1f12a5e10efc2b8c0009532167be5e301abe5b31385638080
|
|||||||
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
|
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
|
||||||
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
|
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
|
||||||
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
|
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
|
||||||
P 90bc616d20e8c247691c45de2a28d41c1632b21152dc34253eefc179a90ab31f
|
P a1d775f07528192b09566ff1546b067ffbee0db5812e424e6b7f3cc33a67dc83
|
||||||
R b70feb67084d54fbfa3c1f525e26b680
|
R 2b82ff2fb12af001c7426b76114f4b10
|
||||||
U drh
|
U drh
|
||||||
Z 53c8e68720f3dc2301be75bf174b1201
|
Z 20d7de6f9c6ec3afe4ba157bc5616eaa
|
||||||
# Remove this line to create a well-formed Fossil manifest.
|
# Remove this line to create a well-formed Fossil manifest.
|
||||||
|
@ -1 +1 @@
|
|||||||
a1d775f07528192b09566ff1546b067ffbee0db5812e424e6b7f3cc33a67dc83
|
99491df19d68df1f0515bd5ec9240ef3dd6e0fa38a6c837a38a16a873f8e2cbb
|
||||||
|
@ -1,370 +1,203 @@
|
|||||||
# Documentation for this script. This may be output to stderr
|
#!/usr/bin/tclsh
|
||||||
|
#
|
||||||
|
# Documentation for this script. This may be output to
|
||||||
# if the script is invoked incorrectly.
|
# if the script is invoked incorrectly.
|
||||||
|
#
|
||||||
set ::USAGE_MESSAGE {
|
set ::USAGE_MESSAGE {
|
||||||
This Tcl script is used to test the various compile time options
|
This Tcl script is used to test the various compile time options
|
||||||
available for omitting code (the SQLITE_OMIT_xxx options). It
|
available for building SQLite, especially options taht omit
|
||||||
should be invoked as follows:
|
features (the SQLITE_OMIT_xxx options). It should be invoked as follows:
|
||||||
|
|
||||||
<script> ?test-symbol? ?-makefile PATH-TO-MAKEFILE? ?-skip_run?
|
./configure CFLAGS=-O0
|
||||||
|
tclsh test/omittest.tcl
|
||||||
|
|
||||||
The default value for ::MAKEFILE is "../Makefile.linux.gcc".
|
|
||||||
|
|
||||||
If -skip_run option is given then only the compile part is attempted.
|
|
||||||
|
|
||||||
This script builds the testfixture program and runs the SQLite test suite
|
|
||||||
once with each SQLITE_OMIT_ option defined and then once with all options
|
|
||||||
defined together. Each run is performed in a seperate directory created
|
|
||||||
as a sub-directory of the current directory by the script. The output
|
|
||||||
of the build is saved in <sub-directory>/build.log. The output of the
|
|
||||||
test-suite is saved in <sub-directory>/test.log.
|
|
||||||
|
|
||||||
Almost any SQLite makefile (except those generated by configure - see below)
|
|
||||||
should work. The following properties are required:
|
|
||||||
|
|
||||||
* The makefile should support the "testfixture" target.
|
|
||||||
* The makefile should support the "test" target.
|
|
||||||
* The makefile should support the variable "OPTS" as a way to pass
|
|
||||||
options from the make command line to lemon and the C compiler.
|
|
||||||
|
|
||||||
More precisely, the following two invocations must be supported:
|
|
||||||
|
|
||||||
$::MAKEBIN -f $::MAKEFILE testfixture OPTS="-DSQLITE_OMIT_ALTERTABLE=1"
|
|
||||||
$::MAKEBIN -f $::MAKEFILE test
|
|
||||||
|
|
||||||
Makefiles generated by the sqlite configure program cannot be used as
|
|
||||||
they do not respect the OPTS variable.
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# List of all options to be tested.
|
||||||
# Build a testfixture executable and run quick.test using it. The first
|
|
||||||
# parameter is the name of the directory to create and use to run the
|
|
||||||
# test in. The second parameter is a list of OMIT symbols to define
|
|
||||||
# when doing so. For example:
|
|
||||||
#
|
#
|
||||||
# run_quick_test /tmp/testdir {SQLITE_OMIT_TRIGGER SQLITE_OMIT_VIEW}
|
set CompileOptionsToTest {
|
||||||
#
|
SQLITE_OMIT_ALTERTABLE
|
||||||
#
|
SQLITE_OMIT_ANALYZE
|
||||||
proc run_quick_test {dir omit_symbol_list} {
|
SQLITE_OMIT_ATTACH
|
||||||
# Compile the value of the OPTS Makefile variable.
|
SQLITE_OMIT_AUTHORIZATION
|
||||||
set opts ""
|
SQLITE_OMIT_AUTOINCREMENT
|
||||||
if {$::tcl_platform(platform)=="windows"} {
|
SQLITE_OMIT_AUTOINIT
|
||||||
append opts "OPTS += -DSQLITE_OS_WIN=1\n"
|
SQLITE_OMIT_AUTOMATIC_INDEX
|
||||||
set target "testfixture.exe"
|
SQLITE_OMIT_AUTORESET
|
||||||
} else {
|
SQLITE_OMIT_AUTOVACUUM
|
||||||
append opts "OPTS += -DSQLITE_OS_UNIX=1\n"
|
SQLITE_OMIT_AUXILIARY_SAFETY_CHECKS
|
||||||
}
|
SQLITE_OMIT_BETWEEN_OPTIMIZATION
|
||||||
foreach sym $omit_symbol_list {
|
SQLITE_OMIT_BLOB_LITERAL
|
||||||
append opts "OPTS += -D${sym}=1\n"
|
SQLITE_OMIT_CASE_SENSITIVE_LIKE_PRAGMA
|
||||||
}
|
SQLITE_OMIT_CAST
|
||||||
|
SQLITE_OMIT_CHECK
|
||||||
|
SQLITE_OMIT_COMPILEOPTION_DIAGS
|
||||||
|
SQLITE_OMIT_COMPLETE
|
||||||
|
SQLITE_OMIT_COMPOUND_SELECT
|
||||||
|
SQLITE_OMIT_CONFLICT_CLAUSE
|
||||||
|
SQLITE_OMIT_CTE
|
||||||
|
SQLITE_OMIT_DATETIME_FUNCS
|
||||||
|
SQLITE_OMIT_DECLTYPE
|
||||||
|
SQLITE_OMIT_DEPRECATED
|
||||||
|
SQLITE_OMIT_DESERIALIZE
|
||||||
|
SQLITE_OMIT_DISKIO
|
||||||
|
SQLITE_OMIT_EXPLAIN
|
||||||
|
SQLITE_OMIT_FLAG_PRAGMAS
|
||||||
|
SQLITE_OMIT_FLOATING_POINT
|
||||||
|
SQLITE_OMIT_FOREIGN_KEY
|
||||||
|
SQLITE_OMIT_GENERATED_COLUMNS
|
||||||
|
SQLITE_OMIT_GET_TABLE
|
||||||
|
SQLITE_OMIT_HEX_INTEGER
|
||||||
|
SQLITE_OMIT_INCRBLOB
|
||||||
|
SQLITE_OMIT_INTEGRITY_CHECK
|
||||||
|
SQLITE_OMIT_INTROSPECTION_PRAGMAS
|
||||||
|
SQLITE_OMIT_JSON
|
||||||
|
SQLITE_OMIT_LIKE_OPTIMIZATION
|
||||||
|
SQLITE_OMIT_LOAD_EXTENSION
|
||||||
|
SQLITE_OMIT_LOCALTIME
|
||||||
|
SQLITE_OMIT_LOOKASIDE
|
||||||
|
SQLITE_OMIT_MEMORYDB
|
||||||
|
SQLITE_OMIT_OR_OPTIMIZATION
|
||||||
|
SQLITE_OMIT_PAGER_PRAGMAS
|
||||||
|
SQLITE_OMIT_PARSER_TRACE
|
||||||
|
SQLITE_OMIT_POPEN
|
||||||
|
SQLITE_OMIT_PRAGMA
|
||||||
|
SQLITE_OMIT_PROGRESS_CALLBACK
|
||||||
|
SQLITE_OMIT_QUICKBALANCE
|
||||||
|
SQLITE_OMIT_RANDOMNESS
|
||||||
|
SQLITE_OMIT_REINDEX
|
||||||
|
SQLITE_OMIT_SCHEMA_PRAGMAS
|
||||||
|
SQLITE_OMIT_SCHEMA_VERSION_PRAGMAS
|
||||||
|
SQLITE_OMIT_SHARED_CACHE
|
||||||
|
SQLITE_OMIT_SHUTDOWN_DIRECTORIES
|
||||||
|
SQLITE_OMIT_SUBQUERY
|
||||||
|
SQLITE_OMIT_TCL_VARIABLE
|
||||||
|
SQLITE_OMIT_TEMPDB
|
||||||
|
SQLITE_OMIT_TEST_CONTROL
|
||||||
|
SQLITE_OMIT_TRACE
|
||||||
|
SQLITE_OMIT_TRIGGER
|
||||||
|
SQLITE_OMIT_TRUNCATE_OPTIMIZATION
|
||||||
|
SQLITE_OMIT_TWOSIZE_LOOKASIDE
|
||||||
|
SQLITE_OMIT_UPSERT
|
||||||
|
SQLITE_OMIT_UTF
|
||||||
|
SQLITE_OMIT_VACUUM
|
||||||
|
SQLITE_OMIT_VIEW
|
||||||
|
SQLITE_OMIT_VIRTUALTABLE
|
||||||
|
SQLITE_OMIT_WAL
|
||||||
|
SQLITE_OMIT_WINDOWFUNC
|
||||||
|
SQLITE_OMIT_WSD
|
||||||
|
SQLITE_OMIT_XFER_OPT
|
||||||
|
SQLITE_ALLOW_ROWID_IN_VIEW
|
||||||
|
SQLITE_DISABLE_DIRSYNC
|
||||||
|
SQLITE_DISABLE_FTS
|
||||||
|
SQLITE_DISABLE_INTRINSIC
|
||||||
|
SQLITE_DISABLE_LFS
|
||||||
|
SQLITE_DISABLE_PAGECACHE_OVERFLOW_STATS
|
||||||
|
SQLITE_DISABLE_SKIPAHEAD_DISTINCT
|
||||||
|
SQLITE_ENABLE_API_ARMOR
|
||||||
|
SQLITE_ENABLE_ATOMIC_WRITE
|
||||||
|
SQLITE_ENABLE_BATCH_ATOMIC_WRITE
|
||||||
|
SQLITE_ENABLE_BYTECODE_VTAB
|
||||||
|
SQLITE_ENABLE_CEROD
|
||||||
|
SQLITE_ENABLE_COLUMN_METADATA
|
||||||
|
SQLITE_ENABLE_COLUMN_USED_MASK
|
||||||
|
SQLITE_ENABLE_COMMENTS
|
||||||
|
SQLITE_ENABLE_CORRUPT_PGNO
|
||||||
|
SQLITE_ENABLE_COSTMULT
|
||||||
|
SQLITE_ENABLE_CURSOR_HINTS
|
||||||
|
SQLITE_ENABLE_DBPAGE_VTAB
|
||||||
|
SQLITE_ENABLE_DBSTAT_VTAB
|
||||||
|
SQLITE_ENABLE_EXPENSIVE_ASSERT
|
||||||
|
SQLITE_ENABLE_EXPLAIN_COMMENTS
|
||||||
|
SQLITE_ENABLE_FTS
|
||||||
|
SQLITE_ENABLE_GEOPOLY
|
||||||
|
SQLITE_ENABLE_HIDDEN_COLUMNS
|
||||||
|
SQLITE_ENABLE_ICU
|
||||||
|
SQLITE_ENABLE_ICU_COLLATIONS
|
||||||
|
SQLITE_ENABLE_INTERNAL_FUNCTIONS
|
||||||
|
SQLITE_ENABLE_IOTRACE
|
||||||
|
SQLITE_ENABLE_LOAD_EXTENSION
|
||||||
|
SQLITE_ENABLE_LOCKING_STYLE
|
||||||
|
SQLITE_ENABLE_MATH_FUNCTIONS
|
||||||
|
SQLITE_ENABLE_MEMORY_MANAGEMENT
|
||||||
|
SQLITE_ENABLE_MEMSYS
|
||||||
|
SQLITE_ENABLE_MODULE_COMMENTS
|
||||||
|
SQLITE_ENABLE_MULTIPLEX
|
||||||
|
SQLITE_ENABLE_MULTITHREADED_CHECKS
|
||||||
|
SQLITE_ENABLE_NORMALIZE
|
||||||
|
SQLITE_ENABLE_NULL_TRIM
|
||||||
|
SQLITE_ENABLE_OFFSET_SQL_FUNC
|
||||||
|
SQLITE_ENABLE_OVERSIZE_CELL_CHECK
|
||||||
|
SQLITE_ENABLE_PREUPDATE_HOOK
|
||||||
|
SQLITE_ENABLE_QPSG
|
||||||
|
SQLITE_ENABLE_RBU
|
||||||
|
SQLITE_ENABLE_RTREE
|
||||||
|
SQLITE_ENABLE_SELECTTRACE
|
||||||
|
SQLITE_ENABLE_SESSION
|
||||||
|
SQLITE_ENABLE_SETLK_TIMEOUT
|
||||||
|
SQLITE_ENABLE_SNAPSHOT
|
||||||
|
SQLITE_ENABLE_SORTER_MMAP
|
||||||
|
SQLITE_ENABLE_SORTER_REFERENCE
|
||||||
|
SQLITE_ENABLE_SORTER_REFERENCES
|
||||||
|
SQLITE_ENABLE_SQLLOG
|
||||||
|
SQLITE_ENABLE_STAT
|
||||||
|
SQLITE_ENABLE_STMT_SCANSTATUS
|
||||||
|
SQLITE_ENABLE_STMTVTAB
|
||||||
|
SQLITE_ENABLE_TREETRACE
|
||||||
|
SQLITE_ENABLE_UNKNOWN_FUNCTION
|
||||||
|
SQLITE_ENABLE_UNKNOWN_SQL_FUNCTION
|
||||||
|
SQLITE_ENABLE_UNLOCK_NOTIFY
|
||||||
|
SQLITE_ENABLE_UPDATE_DELETE_LIMIT
|
||||||
|
SQLITE_ENABLE_URI_00_ERROR
|
||||||
|
SQLITE_ENABLE_VFSTRACE
|
||||||
|
SQLITE_ENABLE_WHERETRACE
|
||||||
|
SQLITE_ENABLE_ZIPVFS
|
||||||
|
}
|
||||||
|
|
||||||
# Create the directory and do the build. If an error occurs return
|
# Parse command-line options.
|
||||||
# early without attempting to run the test suite.
|
#
|
||||||
file mkdir $dir
|
for {set i 0} {$i<[llength $argv]} {incr i} {
|
||||||
puts -nonewline "Building $dir..."
|
set arg [lindex $argv $i]
|
||||||
flush stdout
|
switch -- $arg {
|
||||||
catch {
|
-start -
|
||||||
file copy -force ./config.h $dir
|
--start {
|
||||||
file copy -force ./libtool $dir
|
incr i
|
||||||
}
|
set startat [lindex $argv $i]
|
||||||
set fd [open $::MAKEFILE]
|
}
|
||||||
set mkfile [read $fd]
|
|
||||||
close $fd
|
|
||||||
regsub {\ninclude} $mkfile "\n$opts\ninclude" mkfile
|
|
||||||
set fd [open $dir/makefile w]
|
|
||||||
puts $fd $mkfile
|
|
||||||
close $fd
|
|
||||||
|
|
||||||
set rc [catch {
|
|
||||||
exec $::MAKEBIN -C $dir -f makefile clean $::TARGET >& $dir/build.log
|
|
||||||
}]
|
|
||||||
if {$rc} {
|
|
||||||
puts "No good. See $dir/build.log."
|
|
||||||
return
|
|
||||||
} else {
|
|
||||||
puts "Ok"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Create an empty file "$dir/sqlite3". This is to trick the makefile out
|
|
||||||
# of trying to build the sqlite shell. The sqlite shell won't build
|
|
||||||
# with some of the OMIT options (i.e OMIT_COMPLETE).
|
|
||||||
set sqlite3_dummy $dir/sqlite3
|
|
||||||
if {$::tcl_platform(platform)=="windows"} {
|
|
||||||
append sqlite3_dummy ".exe"
|
|
||||||
}
|
|
||||||
if {![file exists $sqlite3_dummy]} {
|
|
||||||
set wr [open $sqlite3_dummy w]
|
|
||||||
puts $wr "dummy"
|
|
||||||
close $wr
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if {$::SKIP_RUN} {
|
# Additional options required for some settings.
|
||||||
# puts "Skip testing $dir."
|
#
|
||||||
} else {
|
set More(SQLITE_OMIT_DISKIO) {-DSQLITE_OMIT_WAL}
|
||||||
# Run the test suite.
|
|
||||||
puts -nonewline "Testing $dir..."
|
# Compile-time options for Mac only
|
||||||
flush stdout
|
#
|
||||||
set rc [catch {
|
set MacOnly(SQLITE_ENABLE_LOCKING_STYLE) 1
|
||||||
exec $::MAKEBIN -C $dir -f makefile test >& $dir/test.log
|
|
||||||
}]
|
file mkdir omittest
|
||||||
if {$rc} {
|
foreach sym $CompileOptionsToTest {
|
||||||
puts "No good. See $dir/test.log."
|
if {[info exists startat]} {
|
||||||
|
if {$startat==$sym} {
|
||||||
|
unset startat
|
||||||
} else {
|
} else {
|
||||||
puts "Ok"
|
continue
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
if {[info exists MacOnly($sym)] && $tcl_platform(os)!="Darwin"} {
|
||||||
|
continue
|
||||||
|
}
|
||||||
# This proc processes the command line options passed to this script.
|
set logfile "omittest/$sym.log"
|
||||||
# Currently the only option supported is "-makefile", default
|
if {[info exists More($sym)]} {
|
||||||
# "../Makefile.linux-gcc". Set the ::MAKEFILE variable to the value of this
|
append opts "OPT_FEATURE_FLAGS=-D$sym $More($sym)"
|
||||||
# option.
|
|
||||||
#
|
|
||||||
proc process_options {argv} {
|
|
||||||
set ::MAKEBIN make ;# Default value
|
|
||||||
if {$::tcl_platform(platform)=="windows"} {
|
|
||||||
set ::MAKEFILE ./Makefile ;# Default value on Windows
|
|
||||||
} else {
|
} else {
|
||||||
set ::MAKEFILE ./Makefile.linux-gcc ;# Default value
|
set opts OPT_FEATURE_FLAGS=-D$sym
|
||||||
}
|
}
|
||||||
set ::SKIP_RUN 1 ;# Default to attempt test
|
puts "make tidy sqlite3.lo $opts"
|
||||||
set ::TARGET testfixture ;# Default thing to build
|
if {[catch {exec make tidy sqlite3.lo $opts >& $logfile}]} {
|
||||||
|
puts "BUILD FAILED: see $logfile for details"
|
||||||
for {set i 0} {$i < [llength $argv]} {incr i} {
|
puts "Note: After fixes, continue the test using:\n"
|
||||||
switch -regexp -- [lindex $argv $i] {
|
puts " [info nameofexe] $argv0 --start $sym\n"
|
||||||
-{1,2}makefile {
|
exit 1
|
||||||
incr i
|
|
||||||
set ::MAKEFILE [lindex $argv $i]
|
|
||||||
}
|
|
||||||
|
|
||||||
-{1,2}nmake {
|
|
||||||
set ::MAKEBIN nmake
|
|
||||||
set ::MAKEFILE ./Makefile.msc
|
|
||||||
}
|
|
||||||
|
|
||||||
-{1,2}target {
|
|
||||||
incr i
|
|
||||||
set ::TARGET [lindex $argv $i]
|
|
||||||
}
|
|
||||||
|
|
||||||
-{1,2}skip_run {
|
|
||||||
set ::SKIP_RUN 1
|
|
||||||
}
|
|
||||||
-{1,2}run {
|
|
||||||
set ::SKIP_RUN 0
|
|
||||||
}
|
|
||||||
|
|
||||||
-{1,2}help {
|
|
||||||
puts $::USAGE_MESSAGE
|
|
||||||
exit
|
|
||||||
}
|
|
||||||
|
|
||||||
-.* {
|
|
||||||
puts stderr "Unknown option: [lindex $argv i]"
|
|
||||||
puts stderr $::USAGE_MESSAGE
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
default {
|
|
||||||
if {[info exists ::SYMBOL]} {
|
|
||||||
puts stderr [string trim $::USAGE_MESSAGE]
|
|
||||||
exit -1
|
|
||||||
}
|
|
||||||
set ::SYMBOL [lindex $argv $i]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
set ::MAKEFILE [file normalize $::MAKEFILE]
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# Main routine.
|
|
||||||
#
|
|
||||||
|
|
||||||
proc main {argv} {
|
|
||||||
# List of SQLITE_OMIT_XXX symbols supported by SQLite.
|
|
||||||
set ::OMIT_SYMBOLS [list \
|
|
||||||
SQLITE_OMIT_ALTERTABLE \
|
|
||||||
SQLITE_OMIT_ANALYZE \
|
|
||||||
SQLITE_OMIT_ATTACH \
|
|
||||||
SQLITE_OMIT_AUTHORIZATION \
|
|
||||||
SQLITE_OMIT_AUTOINCREMENT \
|
|
||||||
SQLITE_OMIT_AUTOINIT \
|
|
||||||
SQLITE_OMIT_AUTOMATIC_INDEX \
|
|
||||||
SQLITE_OMIT_AUTORESET \
|
|
||||||
SQLITE_OMIT_AUTOVACUUM \
|
|
||||||
SQLITE_OMIT_AUXILIARY_SAFETY_CHECKS \
|
|
||||||
SQLITE_OMIT_BETWEEN_OPTIMIZATION \
|
|
||||||
SQLITE_OMIT_BLOB_LITERAL \
|
|
||||||
SQLITE_OMIT_CASE_SENSITIVE_LIKE_PRAGMA \
|
|
||||||
SQLITE_OMIT_CAST \
|
|
||||||
SQLITE_OMIT_CHECK \
|
|
||||||
SQLITE_OMIT_COMPILEOPTION_DIAGS \
|
|
||||||
SQLITE_OMIT_COMPLETE \
|
|
||||||
SQLITE_OMIT_COMPOUND_SELECT \
|
|
||||||
SQLITE_OMIT_CONFLICT_CLAUSE \
|
|
||||||
SQLITE_OMIT_CTE \
|
|
||||||
SQLITE_OMIT_DATETIME_FUNCS \
|
|
||||||
SQLITE_OMIT_DECLTYPE \
|
|
||||||
SQLITE_OMIT_DEPRECATED \
|
|
||||||
SQLITE_OMIT_DESERIALIZE \
|
|
||||||
SQLITE_OMIT_DISKIO \
|
|
||||||
SQLITE_OMIT_EXPLAIN \
|
|
||||||
SQLITE_OMIT_FLAG_PRAGMAS \
|
|
||||||
SQLITE_OMIT_FLOATING_POINT \
|
|
||||||
SQLITE_OMIT_FOREIGN_KEY \
|
|
||||||
SQLITE_OMIT_GENERATED_COLUMNS \
|
|
||||||
SQLITE_OMIT_GET_TABLE \
|
|
||||||
SQLITE_OMIT_HEX_INTEGER \
|
|
||||||
SQLITE_OMIT_INCRBLOB \
|
|
||||||
SQLITE_OMIT_INTEGRITY_CHECK \
|
|
||||||
SQLITE_OMIT_INTROSPECTION_PRAGMAS \
|
|
||||||
SQLITE_OMIT_JSON \
|
|
||||||
SQLITE_OMIT_LIKE_OPTIMIZATION \
|
|
||||||
SQLITE_OMIT_LOAD_EXTENSION \
|
|
||||||
SQLITE_OMIT_LOCALTIME \
|
|
||||||
SQLITE_OMIT_LOOKASIDE \
|
|
||||||
SQLITE_OMIT_MEMORYDB \
|
|
||||||
SQLITE_OMIT_OR_OPTIMIZATION \
|
|
||||||
SQLITE_OMIT_PAGER_PRAGMAS \
|
|
||||||
SQLITE_OMIT_PARSER_TRACE \
|
|
||||||
SQLITE_OMIT_POPEN \
|
|
||||||
SQLITE_OMIT_PRAGMA \
|
|
||||||
SQLITE_OMIT_PROGRESS_CALLBACK \
|
|
||||||
SQLITE_OMIT_QUICKBALANCE \
|
|
||||||
SQLITE_OMIT_RANDOMNESS \
|
|
||||||
SQLITE_OMIT_REINDEX \
|
|
||||||
SQLITE_OMIT_SCHEMA_PRAGMAS \
|
|
||||||
SQLITE_OMIT_SCHEMA_VERSION_PRAGMAS \
|
|
||||||
SQLITE_OMIT_SHARED_CACHE \
|
|
||||||
SQLITE_OMIT_SHUTDOWN_DIRECTORIES \
|
|
||||||
SQLITE_OMIT_SUBQUERY \
|
|
||||||
SQLITE_OMIT_TCL_VARIABLE \
|
|
||||||
SQLITE_OMIT_TEMPDB \
|
|
||||||
SQLITE_OMIT_TEST_CONTROL \
|
|
||||||
SQLITE_OMIT_TRACE \
|
|
||||||
SQLITE_OMIT_TRIGGER \
|
|
||||||
SQLITE_OMIT_TRUNCATE_OPTIMIZATION \
|
|
||||||
SQLITE_OMIT_TWOSIZE_LOOKASIDE \
|
|
||||||
SQLITE_OMIT_UPSERT \
|
|
||||||
SQLITE_OMIT_UTF \
|
|
||||||
SQLITE_OMIT_VACUUM \
|
|
||||||
SQLITE_OMIT_VIEW \
|
|
||||||
SQLITE_OMIT_VIRTUALTABLE \
|
|
||||||
SQLITE_OMIT_WAL \
|
|
||||||
SQLITE_OMIT_WINDOWFUNC \
|
|
||||||
SQLITE_OMIT_WSD \
|
|
||||||
SQLITE_OMIT_XFER_OPT \
|
|
||||||
]
|
|
||||||
|
|
||||||
set ::ENABLE_SYMBOLS [list \
|
|
||||||
SQLITE_ALLOW_ROWID_IN_VIEW \
|
|
||||||
SQLITE_DISABLE_DIRSYNC \
|
|
||||||
SQLITE_DISABLE_FTS \
|
|
||||||
SQLITE_DISABLE_INTRINSIC \
|
|
||||||
SQLITE_DISABLE_LFS \
|
|
||||||
SQLITE_DISABLE_PAGECACHE_OVERFLOW_STATS \
|
|
||||||
SQLITE_DISABLE_SKIPAHEAD_DISTINCT \
|
|
||||||
SQLITE_ENABLE_API_ARMOR \
|
|
||||||
SQLITE_ENABLE_ATOMIC_WRITE \
|
|
||||||
SQLITE_ENABLE_BATCH_ATOMIC_WRITE \
|
|
||||||
SQLITE_ENABLE_BYTECODE_VTAB \
|
|
||||||
SQLITE_ENABLE_CEROD \
|
|
||||||
SQLITE_ENABLE_COLUMN_METADATA \
|
|
||||||
SQLITE_ENABLE_COLUMN_USED_MASK \
|
|
||||||
SQLITE_ENABLE_COMMENTS \
|
|
||||||
SQLITE_ENABLE_CORRUPT_PGNO \
|
|
||||||
SQLITE_ENABLE_COSTMULT \
|
|
||||||
SQLITE_ENABLE_CURSOR_HINTS \
|
|
||||||
SQLITE_ENABLE_DBPAGE_VTAB \
|
|
||||||
SQLITE_ENABLE_DBSTAT_VTAB \
|
|
||||||
SQLITE_ENABLE_EXPENSIVE_ASSERT \
|
|
||||||
SQLITE_ENABLE_EXPLAIN_COMMENTS \
|
|
||||||
SQLITE_ENABLE_FTS \
|
|
||||||
SQLITE_ENABLE_GEOPOLY \
|
|
||||||
SQLITE_ENABLE_HIDDEN_COLUMNS \
|
|
||||||
SQLITE_ENABLE_ICU \
|
|
||||||
SQLITE_ENABLE_ICU_COLLATIONS \
|
|
||||||
SQLITE_ENABLE_INTERNAL_FUNCTIONS \
|
|
||||||
SQLITE_ENABLE_IOTRACE \
|
|
||||||
SQLITE_ENABLE_LOAD_EXTENSION \
|
|
||||||
SQLITE_ENABLE_LOCKING_STYLE \
|
|
||||||
SQLITE_ENABLE_MATH_FUNCTIONS \
|
|
||||||
SQLITE_ENABLE_MEMORY_MANAGEMENT \
|
|
||||||
SQLITE_ENABLE_MEMSYS \
|
|
||||||
SQLITE_ENABLE_MODULE_COMMENTS \
|
|
||||||
SQLITE_ENABLE_MULTIPLEX \
|
|
||||||
SQLITE_ENABLE_MULTITHREADED_CHECKS \
|
|
||||||
SQLITE_ENABLE_NORMALIZE \
|
|
||||||
SQLITE_ENABLE_NULL_TRIM \
|
|
||||||
SQLITE_ENABLE_OFFSET_SQL_FUNC \
|
|
||||||
SQLITE_ENABLE_OVERSIZE_CELL_CHECK \
|
|
||||||
SQLITE_ENABLE_PREUPDATE_HOOK \
|
|
||||||
SQLITE_ENABLE_QPSG \
|
|
||||||
SQLITE_ENABLE_RBU \
|
|
||||||
SQLITE_ENABLE_RTREE \
|
|
||||||
SQLITE_ENABLE_SELECTTRACE \
|
|
||||||
SQLITE_ENABLE_SESSION \
|
|
||||||
SQLITE_ENABLE_SETLK_TIMEOUT \
|
|
||||||
SQLITE_ENABLE_SNAPSHOT \
|
|
||||||
SQLITE_ENABLE_SORTER_MMAP\
|
|
||||||
SQLITE_ENABLE_SORTER_REFERENCE \
|
|
||||||
SQLITE_ENABLE_SORTER_REFERENCES \
|
|
||||||
SQLITE_ENABLE_SQLLOG\
|
|
||||||
SQLITE_ENABLE_STAT \
|
|
||||||
SQLITE_ENABLE_STMT_SCANSTATUS \
|
|
||||||
SQLITE_ENABLE_STMTVTAB \
|
|
||||||
SQLITE_ENABLE_TREETRACE \
|
|
||||||
SQLITE_ENABLE_UNKNOWN_FUNCTION \
|
|
||||||
SQLITE_ENABLE_UNKNOWN_SQL_FUNCTION \
|
|
||||||
SQLITE_ENABLE_UNLOCK_NOTIFY \
|
|
||||||
SQLITE_ENABLE_UPDATE_DELETE_LIMIT \
|
|
||||||
SQLITE_ENABLE_URI_00_ERROR \
|
|
||||||
SQLITE_ENABLE_VFSTRACE \
|
|
||||||
SQLITE_ENABLE_WHERETRACE \
|
|
||||||
SQLITE_ENABLE_ZIPVFS \
|
|
||||||
]
|
|
||||||
|
|
||||||
# Process any command line options.
|
|
||||||
process_options $argv
|
|
||||||
|
|
||||||
if {[info exists ::SYMBOL] } {
|
|
||||||
set sym $::SYMBOL
|
|
||||||
|
|
||||||
if {[lsearch $::OMIT_SYMBOLS $sym]<0 && [lsearch $::ENABLE_SYMBOLS $sym]<0} {
|
|
||||||
puts stderr "No such symbol: $sym"
|
|
||||||
exit -1
|
|
||||||
}
|
|
||||||
|
|
||||||
set dirname "test_[regsub -nocase {^x*SQLITE_} $sym {}]"
|
|
||||||
run_quick_test $dirname $sym
|
|
||||||
} else {
|
|
||||||
# First try a test with all OMIT symbols except SQLITE_OMIT_FLOATING_POINT
|
|
||||||
# and SQLITE_OMIT_PRAGMA defined. The former doesn't work (causes segfaults)
|
|
||||||
# and the latter is currently incompatible with the test suite (this should
|
|
||||||
# be fixed, but it will be a lot of work).
|
|
||||||
set allsyms [list]
|
|
||||||
foreach s $::OMIT_SYMBOLS {
|
|
||||||
if {$s!="SQLITE_OMIT_FLOATING_POINT" && $s!="SQLITE_OMIT_PRAGMA"} {
|
|
||||||
lappend allsyms $s
|
|
||||||
}
|
|
||||||
}
|
|
||||||
run_quick_test test_OMIT_EVERYTHING $allsyms
|
|
||||||
|
|
||||||
# Now try one quick.test with each of the OMIT symbols defined. Included
|
|
||||||
# are the OMIT_FLOATING_POINT and OMIT_PRAGMA symbols, even though we
|
|
||||||
# know they will fail. It's good to be reminded of this from time to time.
|
|
||||||
foreach sym $::OMIT_SYMBOLS {
|
|
||||||
set dirname "test_[regsub -nocase {^x*SQLITE_} $sym {}]"
|
|
||||||
run_quick_test $dirname $sym
|
|
||||||
}
|
|
||||||
|
|
||||||
# Try the ENABLE/DISABLE symbols one at a time.
|
|
||||||
# We don't do them all at once since some are conflicting.
|
|
||||||
foreach sym $::ENABLE_SYMBOLS {
|
|
||||||
set dirname "test_[regsub -nocase {^x*SQLITE_} $sym {}]"
|
|
||||||
run_quick_test $dirname $sym
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
main $argv
|
|
||||||
|
Reference in New Issue
Block a user