Release Checklist for SQLite 3.49.0
- Review "test/testrunner.tcl" and "test/testrunner_data.tcl" for completeness and accuracy.
- Review "multitest.tcl" and "alignment*.rc" scripts in TH3 for completeness.
- Review this checklist for completeness and accuracy.
- Review dev-ops procedures and make any needed updates and corrections.
- No stray changes.
- All significant changes are mentioned in the "changes" log of the documentation.
- New code complies with style guidelines.
- New code complies with design rules.
- Comments have been updated to reflect code changes.
- Verify that the azProhibitedFunctions list in the safeModeAuth() function of the CLI is complete and up-to-date.
- Variables and functions have been renamed to reflect changes in their use.
- Check all calls to sqlite3OsRead() and sqlite3OsWrite() to ensure that offset computations are 64-bit clean.
- Check all calls to memory allocation routines to ensure that size computations are 64-bit clean. Suggested regular expression for search: /(Re|M)alloc[FORZa-z]*(/
- Verify that source code contains no tabs characters.
- Verify that the list of APIs exposed via the extension header is up-to-date (sqlite3ext.h).
- Significant compile-time options are recognized by the sqlite3_compileoption_used() interface.
- Compare sqlite3.c and sqlite3.h against the previous release.
- Latest release on the "index.html" page.
- Release announcement in "changes.in".
- Release accouncement in "news.html".
- No unresolved hyperlinks in the documentation build.
- The compile-time options are all up-to-date (compile.html).
- Database footprint is up-to-date (features.html).
- Test metrics are up-to-date (testing.html).
- Check new/changed documentation for spelling and gramatical mistakes.
- Linux GCC -Wall -Wextra (the "tool/warnings.sh" script)
- Mac OS X GCC -Wall -Wextra (the "tool/warnings.sh" script)
- CFLAGS='-O0' ./configure --enable-debug --enable-all && scan-build make sqlite3
- Recent compile-time options have been added to the omittest.tcl and omittest-msvc.tcl scripts and checked in.
- tclsh tool/omittest.tcl ← on Linux
- tclsh tool/omittest-msvc.tcl ← on Windows
- ./configure && make verify-source releasetest
- sh tool/symbols.sh - no incorrect exports or dependencies
- ./configure --enable-debug --enable-all && make parse.c && CC=clang CFLAGS='-fsanitize=address,undefined' make -e test
- Test the reuse-schema branch with ./configure --enable-all && make "OPTS=-DSQLITE_ENABLE_SHARED_SCHEMA" sdevtest
- CC=clang CFLAGS='-fsanitize=thread' ./configure && make threadtest5 && ./threadtest5
- Run auxiliary test script in the /usr subdirectory of the TH3 repository
- Verify that the SQLITE_HAVE_SQLITE3R is needed when building the CLI using sqlite3r.c: ./configure --enable-all && make sqlite3r.c shell.c && gcc -DSQLITE_ENABLE_DBPAGE_VTAB -DSQLITE_HAVE_SQLITE3R sqlite3r.c shell.c -ldl -lpthread && ./a.out '' .recover
- From a read-only source tree: $SRC/configure && make devtest
- In sibling th3 checkout: make releasetest
- In sibling th3 checkout: tclsh multitest.tcl --scenario coverage
- In sibling th3 checkout: tclsh multitest.tcl --scenario failures - all failures detected
- ./configure && make verify-source devtest
- In sibling TH3 checkout: make devtest
- ./configure && make verify-source releasetest
- In sibling TH3 checkout: make devtest
- In sibling TH3 checkout: tclsh multitest.tcl --scenario failures - all failures detected
- ./configure && make verify-source releasetest. Optionally add --enable-test-status to configure
- In sibling TH3 checkout: make releasetest
- .selftest checks (see below)
- Build sqlite3_rsync. Use it to sync a Fossil repo from a little-endian machine then verify that the synced repo is correct. This demonstrates that databases are x-platform between big- and little-ending systems.
- Recompile and test Fossil.
-
Review the "32-bit Builds" section of doc/compile-for-windows.md for accuracy and completeness. Ensure that your build environment is set up correctly. You probably want:
- set TCLDIR=c:\tcl32
- set PATH=c:\tcl32\bin;%PATH%
- In sibling TH3 checkout: nmake devtest
- In sibling TH3 checkout: tclsh multitest.tcl --msvc --scenario failures - verify failures detected
- nmake /f Makefile.msc verify-source releasetest
- Verify that EXEs and DLLs generated using MSVC contain the correct version number, product name, description, and copyright as resources.
- Review the first part of doc/compile-for-windows.md for correctness. Ensure that the local build environment is correct, especially the TCLDIR variable.
- In sibling TH3 checkout: nmake releasetest
- In sibling TH3 checkout: tclsh multitest.tcl --msvc --scenario failures - verify failures detected
- nmake /f Makefile.msc verify-source releasetest
- Verify that EXEs and DLLs generated using MSVC contain the correct version number, product name, description, and copyright as resources.
- After updating Fossil to use the latest SQLite, verify that it compiles without warnings and that it works
- ./configure && make devtest
- In sibling TH3 directory: make devtest
- Build and install Fiddle according to website maintenance instructions at https://sqlite.org/devops/doc/trunk/build/website-build.md. Run simple tests.
- (On Linux) ./configure --enable-all && cd ext/wasm && make
- Run "althttpd --enable-sab --popup --max-age 1" then visit the HOST:PORT/index.html in a web-browser.
- Click on the test links - confirm correct results.
- Tested on Linux
- Tested on Mac
- Tested on Windows
- Create a new temporary directory. Call it $tempdir.
- fossil clean -x && ./configure && make install DESTDIR=$tempdir
- Verify correct installation using tree $tempdir
- begin-concurrent (from trunk)
- wal2 (from trunk)
- bedrock (from wal2)
- reuse-schema (from trunk)
- see (in the see-base repository)
- client-see (in the see-base repository)
- reuse-schema-see (in the see-base repository)
- Develop a new CORPUS database by running dbsqlfuzz for 10 billion iterations
- Check-in CORPUS as an unversioned file in the dbsqlfuzz repository
- Linux: FUZZDB=$CORPUS make run-fuzzcheck
- Mac: FUZZDB=$CORPUS make run-fuzzcheck
- Windows: fuzzcheck $CORPUS -spinner
- Checked in latest SQLite amalgamation.
- No SQLite compiler warnings.
- tclsh run-all.tcl
- No SQLite compiler warnings.
- Used on active websites with no issues.
- fossil all test-integrity -d
- fossil all sync --all
- fossil all repack
- Do the above on Linux
- Do the above on Mac
- Do the above on RaspberryPi
- Do the above on Windows
- Used for this checklist - verify on the CGI-environment page
- https://sqlite.org/src/ext/logview
- https://sqlite.org/src/ext/officeipaddr
- Linux: make clean see-test
- Mac: make clean see-test
- Windows: nmake clean see-test
- Verify that the configure script version number agrees with the SQLite version number
- testfixture test/testrunner.tcl --zipvfs <ZIPVFS-source-directory> zipvfs
- Linux: tclsh multitest.tcl --scenario zipvfs --extra --valgrind --omit 'quick[23]'
- Mac: tclsh multitest.tcl --scenario zipvfs
- Windows: tclsh multitest.tcl --scenario zipvfs
- Merge all trunk enhancements into the reuse-schema branch and use that branch to update the devkit.
- Test using: tclsh th3make debug.rc nds_devkit.rc -v ← Note that the -v option is needed in order to see the NDS DevKit version number in the output.
- Verify the "NDS DevKit" version number shown at the end of the test
- Builds (using "make amalgamation-tarball" and/or "make snapshot-tarball").
- Works on Linux.
- Works on Mac OS X.
- Works on Windows MSVC
- Linux
- Mac
- Windows
- rm -f wc.db && ./wordcount wc.db $BIGTEXT --all
- rm -f wc.db && ./wordcount wc.db $BIGTEXT --all --cachesize 5 --nosync
- Linux
- Mac
- Windows
- Build the CLI ("sqlite3" or "sqlite3.exe")
- Have ready a check-out of the https://sqlite.org/test-dbs Fossil repository containing the test databases in sibling directory "../dbs".
- Start the CLI.
- .cd ../dbs
- .read selftest.txt
- iBook PPC
- Linux x64
- Linux ARM
- Mac x64
- Mac ARM
- Windows 32-bit
- Windows 64-bit
- Linux (x64)
- Linux (ARM)
- Mac (x64)
- Mac (PPC)
- Mac (ARM)
- Windows using NMAKE.
- Linux
- Mac
- Windows
- Linux
- Mac
- Windows
- Linux
- Mac
- Windows
- Compile-time options for build products have been updated as necessary
- All build products work on their target platforms