sqlite: upgraded package to upstream
Upgraded dev-db/sqlite to version 3.34.1 on amd64
BUG=b/183840765
TEST=presubmit
RELEASE_NOTE=Upgraded dev-db/sqlite to version 3.34.1
Fixes CVE-2021-20227
Change-Id: I41c5cf595d4e923487561fd6db071f3baf6b832a
Reviewed-on: https://cos-review.googlesource.com/c/third_party/overlays/portage-stable/+/15150
Tested-by: Cusky Presubmit Bot <presubmit@cos-infra-prod.iam.gserviceaccount.com>
Reviewed-by: Robert Kolchmeyer <rkolchmeyer@google.com>
Reviewed-by: Roy Yang <royyang@google.com>
diff --git a/dev-db/sqlite/Manifest b/dev-db/sqlite/Manifest
index fa0381a..b0beb0a 100644
--- a/dev-db/sqlite/Manifest
+++ b/dev-db/sqlite/Manifest
@@ -1,2 +1,2 @@
-DIST sqlite-doc-3320300.zip 9772933 BLAKE2B efd72c18d0398c103e3f9c4cfeb03e7794fd69691b1bcea95b74a0c5d8af22aa13abc84ce8dc5864b5f4cb79be239433933b4daca34d1adfcc6f31ce2cde66bf SHA512 af9dca970b4c03c058d7d1cd55a3d11fa4b112dccac942b8660d82a7e9ba2956963fcb429eedfdc85915637c102e1f904ace98c8e0455c4120422bbd9f2f3cd0
-DIST sqlite-src-3320300.zip 12461750 BLAKE2B 59cce74d284191cfc69ac09b6014701ddd2b7b3d7ebaad5da4ad71cc200e70285b3b201ff174819aa8dde5f610589d7947f547450334f0f17149014078316185 SHA512 7e027c7163a760fb9b6dbfd2e4ccffb39d4972280583fb0d7f8390017101dfed3b12a36653b3130a548ae4d04c6abb11c0a1921b6f09c54c6ae1e72fbdcb2fd4
+DIST sqlite-doc-3340100.zip 10074559 BLAKE2B 66aa999d87b7f3c994c289eda320d6a4e371b0a6a2ab8bcebde540aa955f3bdf4f00b739ca32aa913685cd35a88ee83bebd7fa43a0c148614e9086a1d3f5652a SHA512 20cbb9f05cd329bf7aa2877431781e46192544806042f4104e4eb0e87d84cd2dfc02c7ff226d4bef9bb2c6a69cc612201844d116abe99b0cfed9602adf243a60
+DIST sqlite-src-3340100.zip 12623711 BLAKE2B 08c98d0c56d46fe909f449f322002ae4d69fd952930d2f04514988a939b31744a13aea85935d84bc05db52faca1aad6a70d7c31e7da0e396bb649685a49699bb SHA512 5ed02fe609b3d08c3297cc43b21e6ee3f56fb51a6616ac391a0e50cd1677dbad03c6bf9bf9c8409cf94b83b16fe6b6e4a112640b18c7d4fd95328066da3c3943
diff --git a/dev-db/sqlite/OWNERS b/dev-db/sqlite/OWNERS
deleted file mode 100644
index 89610ec..0000000
--- a/dev-db/sqlite/OWNERS
+++ /dev/null
@@ -1,2 +0,0 @@
-simmonsjosh@google.com
-dats@chromium.org
diff --git a/dev-db/sqlite/files/sqlite-3.25.0-nonfull_archive-build.patch b/dev-db/sqlite/files/sqlite-3.25.0-nonfull_archive-build.patch
deleted file mode 100644
index be0a7e3..0000000
--- a/dev-db/sqlite/files/sqlite-3.25.0-nonfull_archive-build.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-Fix building with dlopen() not available.
-
---- /configure.ac
-+++ /configure.ac
-@@ -102,6 +102,9 @@
- [], [enable_dynamic_extensions=yes])
- if test x"$enable_dynamic_extensions" != "xno"; then
- AC_SEARCH_LIBS(dlopen, dl)
-+ if test "${ac_cv_search_dlopen}" = "no"; then
-+ BUILD_CFLAGS="$BUILD_CFLAGS -DSQLITE_OMIT_LOAD_EXTENSION=1"
-+ fi
- else
- BUILD_CFLAGS="$BUILD_CFLAGS -DSQLITE_OMIT_LOAD_EXTENSION=1"
- fi
diff --git a/dev-db/sqlite/files/sqlite-3.31.0-full_archive-build.patch b/dev-db/sqlite/files/sqlite-3.31.0-full_archive-build.patch
deleted file mode 100644
index 9ff44c0..0000000
--- a/dev-db/sqlite/files/sqlite-3.31.0-full_archive-build.patch
+++ /dev/null
@@ -1,466 +0,0 @@
-Move some code to libsqlite3.so to avoid duplication.
-Link executables against libsqlite3.so.
-Increase timeout for fuzzcheck.
-Fix building with dlopen() not available.
-
---- /Makefile.in
-+++ /Makefile.in
-@@ -311,6 +311,9 @@
- # Source code for extensions
- #
- SRC += \
-+ $(TOP)/ext/expert/sqlite3expert.c \
-+ $(TOP)/ext/expert/sqlite3expert.h
-+SRC += \
- $(TOP)/ext/fts1/fts1.c \
- $(TOP)/ext/fts1/fts1.h \
- $(TOP)/ext/fts1/fts1_hash.c \
-@@ -363,8 +366,12 @@
- $(TOP)/ext/rbu/sqlite3rbu.h \
- $(TOP)/ext/rbu/sqlite3rbu.c
- SRC += \
-+ $(TOP)/ext/misc/appendvfs.c \
-+ $(TOP)/ext/misc/dbdata.c \
- $(TOP)/ext/misc/json1.c \
-- $(TOP)/ext/misc/stmt.c
-+ $(TOP)/ext/misc/sqlar.c \
-+ $(TOP)/ext/misc/stmt.c \
-+ $(TOP)/ext/misc/zipfile.c
-
- # Generated source code files
- #
-@@ -435,7 +442,6 @@
- # Statically linked extensions
- #
- TESTSRC += \
-- $(TOP)/ext/expert/sqlite3expert.c \
- $(TOP)/ext/expert/test_expert.c \
- $(TOP)/ext/misc/amatch.c \
- $(TOP)/ext/misc/carray.c \
-@@ -461,7 +467,6 @@
- $(TOP)/ext/misc/totype.c \
- $(TOP)/ext/misc/unionvtab.c \
- $(TOP)/ext/misc/wholenumber.c \
-- $(TOP)/ext/misc/zipfile.c \
- $(TOP)/ext/userauth/userauth.c
-
- # Source code to the library files needed by the test fixture
-@@ -639,25 +644,25 @@
-
- libtclsqlite3.la: tclsqlite.lo libsqlite3.la
- $(LTLINK) -no-undefined -o $@ tclsqlite.lo \
-- libsqlite3.la @TCL_STUB_LIB_SPEC@ $(TLIBS) \
-+ libsqlite3.la @TCL_STUB_LIB_SPEC@ \
- -rpath "$(TCLLIBDIR)" \
- -version-info "8:6:8" \
- -avoid-version
-
--sqlite3$(TEXE): shell.c sqlite3.c
-- $(LTLINK) $(READLINE_FLAGS) $(SHELL_OPT) -o $@ \
-- shell.c sqlite3.c \
-- $(LIBREADLINE) $(TLIBS) -rpath "$(libdir)"
-+sqlite3$(TEXE): shell.c libsqlite3.la
-+ $(LTLINK) $(READLINE_FLAGS) -o $@ \
-+ shell.c libsqlite3.la \
-+ $(LIBREADLINE)
-
--sqldiff$(TEXE): $(TOP)/tool/sqldiff.c sqlite3.lo sqlite3.h
-- $(LTLINK) -o $@ $(TOP)/tool/sqldiff.c sqlite3.lo $(TLIBS)
-+sqldiff$(TEXE): $(TOP)/tool/sqldiff.c libsqlite3.la
-+ $(LTLINK) -o $@ $(TOP)/tool/sqldiff.c libsqlite3.la
-
--dbhash$(TEXE): $(TOP)/tool/dbhash.c sqlite3.lo sqlite3.h
-- $(LTLINK) -o $@ $(TOP)/tool/dbhash.c sqlite3.lo $(TLIBS)
-+dbhash$(TEXE): $(TOP)/tool/dbhash.c libsqlite3.la
-+ $(LTLINK) -o $@ $(TOP)/tool/dbhash.c libsqlite3.la
-
--scrub$(TEXE): $(TOP)/ext/misc/scrub.c sqlite3.lo
-+scrub$(TEXE): $(TOP)/ext/misc/scrub.c libsqlite3.la
- $(LTLINK) -o $@ -I. -DSCRUB_STANDALONE \
-- $(TOP)/ext/misc/scrub.c sqlite3.lo $(TLIBS)
-+ $(TOP)/ext/misc/scrub.c libsqlite3.la
-
- srcck1$(BEXE): $(TOP)/tool/srcck1.c
- $(BCC) -o srcck1$(BEXE) $(TOP)/tool/srcck1.c
-@@ -767,7 +772,7 @@
- # Rule to build the amalgamation
- #
- sqlite3.lo: sqlite3.c
-- $(LTCOMPILE) $(TEMP_STORE) -c sqlite3.c
-+ $(LTCOMPILE) $(SHELL_OPT) $(TEMP_STORE) -c sqlite3.c
-
- # Rules to build the LEMON compiler generator
- #
-@@ -1064,14 +1069,9 @@
- # Source files that go into making shell.c
- SHELL_SRC = \
- $(TOP)/src/shell.c.in \
-- $(TOP)/ext/misc/appendvfs.c \
- $(TOP)/ext/misc/shathree.c \
- $(TOP)/ext/misc/fileio.c \
- $(TOP)/ext/misc/completion.c \
-- $(TOP)/ext/misc/sqlar.c \
-- $(TOP)/ext/expert/sqlite3expert.c \
-- $(TOP)/ext/expert/sqlite3expert.h \
-- $(TOP)/ext/misc/zipfile.c \
- $(TOP)/ext/misc/memtrace.c \
- $(TOP)/src/test_windirent.c
-
-@@ -1239,11 +1239,11 @@
-
- # Fuzz testing
- fuzztest: fuzzcheck$(TEXE) $(FUZZDATA) sessionfuzz$(TEXE) $(TOP)/test/sessionfuzz-data1.db
-- ./fuzzcheck$(TEXE) $(FUZZDATA)
-+ ./fuzzcheck$(TEXE) --timeout 3600 $(FUZZDATA)
- ./sessionfuzz$(TEXE) run $(TOP)/test/sessionfuzz-data1.db
-
- valgrindfuzz: fuzzcheck$(TEXT) $(FUZZDATA) sessionfuzz$(TEXE) $(TOP)/test/sessionfuzz-data1.db
-- valgrind ./fuzzcheck$(TEXE) --cell-size-check --limit-mem 10M --timeout 600 $(FUZZDATA)
-+ valgrind ./fuzzcheck$(TEXE) --cell-size-check --limit-mem 10M --timeout 3600 $(FUZZDATA)
- valgrind ./sessionfuzz$(TEXE) run $(TOP)/test/sessionfuzz-data1.db
-
- # The veryquick.test TCL tests.
-@@ -1274,24 +1274,23 @@
- smoketest: $(TESTPROGS) fuzzcheck$(TEXE)
- ./testfixture$(TEXE) $(TOP)/test/main.test $(TESTOPTS)
-
--sqlite3_analyzer.c: sqlite3.c $(TOP)/src/tclsqlite.c $(TOP)/tool/spaceanal.tcl $(TOP)/tool/mkccode.tcl $(TOP)/tool/sqlite3_analyzer.c.in
-+sqlite3_analyzer.c: $(TOP)/src/tclsqlite.c $(TOP)/tool/spaceanal.tcl $(TOP)/tool/mkccode.tcl $(TOP)/tool/sqlite3_analyzer.c.in
- $(TCLSH_CMD) $(TOP)/tool/mkccode.tcl $(TOP)/tool/sqlite3_analyzer.c.in >sqlite3_analyzer.c
-
--sqlite3_analyzer$(TEXE): sqlite3_analyzer.c
-- $(LTLINK) sqlite3_analyzer.c -o $@ $(LIBTCL) $(TLIBS)
-+sqlite3_analyzer$(TEXE): sqlite3_analyzer.c libsqlite3.la
-+ $(LTLINK) sqlite3_analyzer.c -o $@ libsqlite3.la $(LIBTCL)
-
--sqltclsh.c: sqlite3.c $(TOP)/src/tclsqlite.c $(TOP)/tool/sqltclsh.tcl $(TOP)/ext/misc/appendvfs.c $(TOP)/tool/mkccode.tcl $(TOP)/tool/sqltclsh.c.in
-+sqltclsh.c: $(TOP)/src/tclsqlite.c $(TOP)/tool/sqltclsh.tcl $(TOP)/tool/mkccode.tcl $(TOP)/tool/sqltclsh.c.in
- $(TCLSH_CMD) $(TOP)/tool/mkccode.tcl $(TOP)/tool/sqltclsh.c.in >sqltclsh.c
-
--sqltclsh$(TEXE): sqltclsh.c
-- $(LTLINK) sqltclsh.c -o $@ $(LIBTCL) $(TLIBS)
-+sqltclsh$(TEXE): sqltclsh.c libsqlite3.la
-+ $(LTLINK) sqltclsh.c -o $@ libsqlite3.la $(LIBTCL)
-
--sqlite3_expert$(TEXE): $(TOP)/ext/expert/sqlite3expert.h $(TOP)/ext/expert/sqlite3expert.c $(TOP)/ext/expert/expert.c sqlite3.c
-- $(LTLINK) $(TOP)/ext/expert/sqlite3expert.h $(TOP)/ext/expert/sqlite3expert.c $(TOP)/ext/expert/expert.c sqlite3.c -o sqlite3_expert $(TLIBS)
-+sqlite3_expert$(TEXE): $(TOP)/ext/expert/sqlite3expert.h $(TOP)/ext/expert/expert.c libsqlite3.la
-+ $(LTLINK) $(TOP)/ext/expert/expert.c -o sqlite3_expert libsqlite3.la
-
- CHECKER_DEPS =\
- $(TOP)/tool/mkccode.tcl \
-- sqlite3.c \
- $(TOP)/src/tclsqlite.c \
- $(TOP)/ext/repair/sqlite3_checker.tcl \
- $(TOP)/ext/repair/checkindex.c \
-@@ -1302,36 +1301,36 @@
- sqlite3_checker.c: $(CHECKER_DEPS)
- $(TCLSH_CMD) $(TOP)/tool/mkccode.tcl $(TOP)/ext/repair/sqlite3_checker.c.in >$@
-
--sqlite3_checker$(TEXE): sqlite3_checker.c
-- $(LTLINK) sqlite3_checker.c -o $@ $(LIBTCL) $(TLIBS)
-+sqlite3_checker$(TEXE): sqlite3_checker.c libsqlite3.la
-+ $(LTLINK) sqlite3_checker.c -o $@ libsqlite3.la $(LIBTCL)
-
--dbdump$(TEXE): $(TOP)/ext/misc/dbdump.c sqlite3.lo
-+dbdump$(TEXE): $(TOP)/ext/misc/dbdump.c libsqlite3.la
- $(LTLINK) -DDBDUMP_STANDALONE -o $@ \
-- $(TOP)/ext/misc/dbdump.c sqlite3.lo $(TLIBS)
-+ $(TOP)/ext/misc/dbdump.c libsqlite3.la
-
--dbtotxt$(TEXE): $(TOP)/tool/dbtotxt.c
-- $(LTLINK)-o $@ $(TOP)/tool/dbtotxt.c
-+dbtotxt$(TEXE): $(TOP)/tool/dbtotxt.c
-+ $(LTLINK) -o $@ $(TOP)/tool/dbtotxt.c
-
--showdb$(TEXE): $(TOP)/tool/showdb.c sqlite3.lo
-- $(LTLINK) -o $@ $(TOP)/tool/showdb.c sqlite3.lo $(TLIBS)
-+showdb$(TEXE): $(TOP)/tool/showdb.c libsqlite3.la
-+ $(LTLINK) -o $@ $(TOP)/tool/showdb.c libsqlite3.la
-
--showstat4$(TEXE): $(TOP)/tool/showstat4.c sqlite3.lo
-- $(LTLINK) -o $@ $(TOP)/tool/showstat4.c sqlite3.lo $(TLIBS)
-+showstat4$(TEXE): $(TOP)/tool/showstat4.c libsqlite3.la
-+ $(LTLINK) -o $@ $(TOP)/tool/showstat4.c libsqlite3.la
-
--showjournal$(TEXE): $(TOP)/tool/showjournal.c sqlite3.lo
-- $(LTLINK) -o $@ $(TOP)/tool/showjournal.c sqlite3.lo $(TLIBS)
-+showjournal$(TEXE): $(TOP)/tool/showjournal.c
-+ $(LTLINK) -o $@ $(TOP)/tool/showjournal.c
-
--showwal$(TEXE): $(TOP)/tool/showwal.c sqlite3.lo
-- $(LTLINK) -o $@ $(TOP)/tool/showwal.c sqlite3.lo $(TLIBS)
-+showwal$(TEXE): $(TOP)/tool/showwal.c
-+ $(LTLINK) -o $@ $(TOP)/tool/showwal.c
-
- showshm$(TEXE): $(TOP)/tool/showshm.c
- $(LTLINK) -o $@ $(TOP)/tool/showshm.c
-
--index_usage$(TEXE): $(TOP)/tool/index_usage.c sqlite3.lo
-- $(LTLINK) $(SHELL_OPT) -o $@ $(TOP)/tool/index_usage.c sqlite3.lo $(TLIBS)
-+index_usage$(TEXE): $(TOP)/tool/index_usage.c libsqlite3.la
-+ $(LTLINK) -o $@ $(TOP)/tool/index_usage.c libsqlite3.la
-
--changeset$(TEXE): $(TOP)/ext/session/changeset.c sqlite3.lo
-- $(LTLINK) -o $@ $(TOP)/ext/session/changeset.c sqlite3.lo $(TLIBS)
-+changeset$(TEXE): $(TOP)/ext/session/changeset.c libsqlite3.la
-+ $(LTLINK) -o $@ $(TOP)/ext/session/changeset.c libsqlite3.la
-
- changesetfuzz$(TEXE): $(TOP)/ext/session/changesetfuzz.c sqlite3.lo
- $(LTLINK) -o $@ $(TOP)/ext/session/changesetfuzz.c sqlite3.lo $(TLIBS)
-@@ -1356,11 +1355,11 @@
- kvtest$(TEXE): $(TOP)/test/kvtest.c sqlite3.c
- $(LTLINK) $(KV_OPT) -o $@ $(TOP)/test/kvtest.c sqlite3.c $(TLIBS)
-
--rbu$(EXE): $(TOP)/ext/rbu/rbu.c $(TOP)/ext/rbu/sqlite3rbu.c sqlite3.lo
-- $(LTLINK) -I. -o $@ $(TOP)/ext/rbu/rbu.c sqlite3.lo $(TLIBS)
-+rbu$(EXE): $(TOP)/ext/rbu/rbu.c libsqlite3.la
-+ $(LTLINK) -I. -o $@ $(TOP)/ext/rbu/rbu.c libsqlite3.la
-
--loadfts$(EXE): $(TOP)/tool/loadfts.c libsqlite3.la
-- $(LTLINK) $(TOP)/tool/loadfts.c libsqlite3.la -o $@ $(TLIBS)
-+loadfts$(EXE): $(TOP)/tool/loadfts.c libsqlite3.la
-+ $(LTLINK) $(TOP)/tool/loadfts.c libsqlite3.la -o $@
-
- # This target will fail if the SQLite amalgamation contains any exported
- # symbols that do not begin with "sqlite3_". It is run as part of the
---- /configure.ac
-+++ /configure.ac
-@@ -587,6 +587,9 @@
- if test "${enable_load_extension}" = "yes" ; then
- OPT_FEATURE_FLAGS=""
- AC_SEARCH_LIBS(dlopen, dl)
-+ if test "${ac_cv_search_dlopen}" = "no" ; then
-+ OPT_FEATURE_FLAGS="-DSQLITE_OMIT_LOAD_EXTENSION=1"
-+ fi
- else
- OPT_FEATURE_FLAGS="-DSQLITE_OMIT_LOAD_EXTENSION=1"
- fi
---- /ext/misc/sqlar.c
-+++ /ext/misc/sqlar.c
-@@ -14,6 +14,8 @@
- ** for working with sqlar archives and used by the shell tool's built-in
- ** sqlar support.
- */
-+#ifdef SQLITE_HAVE_ZLIB
-+
- #include "sqlite3ext.h"
- SQLITE_EXTENSION_INIT1
- #include <zlib.h>
-@@ -121,3 +123,5 @@
- }
- return rc;
- }
-+
-+#endif /* SQLITE_HAVE_ZLIB */
---- /ext/misc/zipfile.c
-+++ /ext/misc/zipfile.c
-@@ -24,6 +24,8 @@
- ** * No support for zip64 extensions
- ** * Only the "inflate/deflate" (zlib) compression method is supported
- */
-+#ifdef SQLITE_HAVE_ZLIB
-+
- #include "sqlite3ext.h"
- SQLITE_EXTENSION_INIT1
- #include <stdio.h>
-@@ -2186,3 +2188,5 @@
- (void)pzErrMsg; /* Unused parameter */
- return zipfileRegister(db);
- }
-+
-+#endif /* SQLITE_HAVE_ZLIB */
---- /ext/repair/sqlite3_checker.c.in
-+++ /ext/repair/sqlite3_checker.c.in
-@@ -2,6 +2,7 @@
- ** Read an SQLite database file and analyze its space utilization. Generate
- ** text on standard output.
- */
-+#define SQLITE_CORE 1
- #define TCLSH_INIT_PROC sqlite3_checker_init_proc
- #define SQLITE_ENABLE_DBPAGE_VTAB 1
- #define SQLITE_ENABLE_JSON1 1
-@@ -14,7 +15,7 @@
- #define SQLITE_OMIT_SHARED_CACHE 1
- #define SQLITE_DEFAULT_MEMSTATUS 0
- #define SQLITE_MAX_EXPR_DEPTH 0
--INCLUDE sqlite3.c
-+#include "sqlite3.h"
- INCLUDE $ROOT/src/tclsqlite.c
- INCLUDE $ROOT/ext/misc/btreeinfo.c
- INCLUDE $ROOT/ext/repair/checkindex.c
---- /src/shell.c.in
-+++ /src/shell.c.in
-@@ -61,6 +61,7 @@
- #include <stdio.h>
- #include <assert.h>
- #include "sqlite3.h"
-+#include "ext/expert/sqlite3expert.h"
- typedef sqlite3_int64 i64;
- typedef sqlite3_uint64 u64;
- typedef unsigned char u8;
-@@ -127,6 +128,10 @@
- # define SHELL_USE_LOCAL_GETLINE 1
- #endif
-
-+#ifdef SQLITE_HAVE_ZLIB
-+#include <zlib.h>
-+#endif
-+
-
- #if defined(_WIN32) || defined(WIN32)
- # include <io.h>
-@@ -939,18 +944,7 @@
- INCLUDE ../ext/misc/shathree.c
- INCLUDE ../ext/misc/fileio.c
- INCLUDE ../ext/misc/completion.c
--INCLUDE ../ext/misc/appendvfs.c
- INCLUDE ../ext/misc/memtrace.c
--#ifdef SQLITE_HAVE_ZLIB
--INCLUDE ../ext/misc/zipfile.c
--INCLUDE ../ext/misc/sqlar.c
--#endif
--INCLUDE ../ext/expert/sqlite3expert.h
--INCLUDE ../ext/expert/sqlite3expert.c
--
--#if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_ENABLE_DBPAGE_VTAB)
--INCLUDE ../ext/misc/dbdata.c
--#endif
-
- #if defined(SQLITE_ENABLE_SESSION)
- /*
-@@ -4173,10 +4167,13 @@
- sqlite3_shathree_init(p->db, 0, 0);
- sqlite3_completion_init(p->db, 0, 0);
- #if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_ENABLE_DBPAGE_VTAB)
-+ extern int sqlite3_dbdata_init(sqlite3 *, char **, const sqlite3_api_routines *);
- sqlite3_dbdata_init(p->db, 0, 0);
- #endif
- #ifdef SQLITE_HAVE_ZLIB
-+ extern int sqlite3_zipfile_init(sqlite3 *, char **, const sqlite3_api_routines *);
- sqlite3_zipfile_init(p->db, 0, 0);
-+ extern int sqlite3_sqlar_init(sqlite3 *, char **, const sqlite3_api_routines *);
- sqlite3_sqlar_init(p->db, 0, 0);
- #endif
- sqlite3_create_function(p->db, "shell_add_schema", 3, SQLITE_UTF8, 0,
-@@ -6176,6 +6173,7 @@
- goto end_ar_command;
- }
- sqlite3_fileio_init(cmd.db, 0, 0);
-+ extern int sqlite3_sqlar_init(sqlite3 *, char **, const sqlite3_api_routines *);
- sqlite3_sqlar_init(cmd.db, 0, 0);
- sqlite3_create_function(cmd.db, "shell_putsnl", 1, SQLITE_UTF8, cmd.p,
- shellPutsFunc, 0, 0);
-@@ -10354,6 +10352,7 @@
- #endif
- }
- data.out = stdout;
-+ extern int sqlite3_appendvfs_init(sqlite3 *, char **, const sqlite3_api_routines *);
- sqlite3_appendvfs_init(0,0,0);
-
- /* Go ahead and open the database file if it already exists. If the
---- /test/sessionfuzz.c
-+++ /test/sessionfuzz.c
-@@ -700,42 +700,6 @@
- #include <assert.h>
- #include "zlib.h"
-
--/*
--** Implementation of the "sqlar_uncompress(X,SZ)" SQL function
--**
--** Parameter SZ is interpreted as an integer. If it is less than or
--** equal to zero, then this function returns a copy of X. Or, if
--** SZ is equal to the size of X when interpreted as a blob, also
--** return a copy of X. Otherwise, decompress blob X using zlib
--** utility function uncompress() and return the results (another
--** blob).
--*/
--static void sqlarUncompressFunc(
-- sqlite3_context *context,
-- int argc,
-- sqlite3_value **argv
--){
-- uLong nData;
-- uLongf sz;
--
-- assert( argc==2 );
-- sz = sqlite3_value_int(argv[1]);
--
-- if( sz<=0 || sz==(nData = sqlite3_value_bytes(argv[0])) ){
-- sqlite3_result_value(context, argv[0]);
-- }else{
-- const Bytef *pData= sqlite3_value_blob(argv[0]);
-- Bytef *pOut = sqlite3_malloc(sz);
-- if( Z_OK!=uncompress(pOut, &sz, pData, nData) ){
-- sqlite3_result_error(context, "error in uncompress()", -1);
-- }else{
-- sqlite3_result_blob(context, pOut, sz, SQLITE_TRANSIENT);
-- }
-- sqlite3_free(pOut);
-- }
--}
--
--
- /* Run a chunk of SQL. If any errors happen, print an error message
- ** and exit.
- */
---- /tool/mksqlite3c.tcl
-+++ /tool/mksqlite3c.tcl
-@@ -117,6 +117,7 @@
- rtree.h
- sqlite3session.h
- sqlite3.h
-+ sqlite3expert.h
- sqlite3ext.h
- sqlite3rbu.h
- sqliteicu.h
-@@ -403,6 +404,11 @@
- sqlite3session.c
- fts5.c
- stmt.c
-+ appendvfs.c
-+ dbdata.c
-+ sqlar.c
-+ sqlite3expert.c
-+ zipfile.c
- } {
- copy_file tsrc/$file
- }
---- /tool/sqlite3_analyzer.c.in
-+++ /tool/sqlite3_analyzer.c.in
-@@ -14,9 +14,6 @@
- #define SQLITE_DEFAULT_MEMSTATUS 0
- #define SQLITE_MAX_EXPR_DEPTH 0
- #define SQLITE_OMIT_LOAD_EXTENSION 1
--#ifndef USE_EXTERNAL_SQLITE
--INCLUDE sqlite3.c
--#endif
- INCLUDE $ROOT/src/tclsqlite.c
-
- const char *sqlite3_analyzer_init_proc(Tcl_Interp *interp){
---- /tool/sqltclsh.c.in
-+++ /tool/sqltclsh.c.in
-@@ -27,19 +27,17 @@
- #define SQLITE_OMIT_SHARED_CACHE 1
- #define SQLITE_DEFAULT_MEMSTATUS 0
- #define SQLITE_MAX_EXPR_DEPTH 0
--INCLUDE sqlite3.c
--INCLUDE $ROOT/ext/misc/appendvfs.c
--#ifdef SQLITE_HAVE_ZLIB
--INCLUDE $ROOT/ext/misc/zipfile.c
--INCLUDE $ROOT/ext/misc/sqlar.c
--#endif
-+#include "sqlite3.h"
- INCLUDE $ROOT/src/tclsqlite.c
-
- const char *sqlite3_tclapp_init_proc(Tcl_Interp *interp){
- (void)interp;
-+ extern int sqlite3_appendvfs_init(sqlite3 *,char **, const sqlite3_api_routines *);
- sqlite3_appendvfs_init(0,0,0);
- #ifdef SQLITE_HAVE_ZLIB
-+ extern int sqlite3_sqlar_init(sqlite3 *, char **, const sqlite3_api_routines *);
- sqlite3_auto_extension((void(*)(void))sqlite3_sqlar_init);
-+ extern int sqlite3_zipfile_init(sqlite3 *, char **, const sqlite3_api_routines *);
- sqlite3_auto_extension((void(*)(void))sqlite3_zipfile_init);
- #endif
-
diff --git a/dev-db/sqlite/files/sqlite-3.31.1-full_archive-architectures.patch b/dev-db/sqlite/files/sqlite-3.31.1-full_archive-architectures.patch
deleted file mode 100644
index a0cf751..0000000
--- a/dev-db/sqlite/files/sqlite-3.31.1-full_archive-architectures.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-https://sqlite.org/cgi/src/info/04885763c4cd00cb
-https://sqlite.org/cgi/src/info/b20503aaf5b6595a
-
---- /ext/fts5/test/fts5matchinfo.test
-+++ /ext/fts5/test/fts5matchinfo.test
-@@ -500,14 +500,18 @@
- INSERT INTO t1 VALUES('c', 'd');
- }
-
-+if {$tcl_platform(byteOrder)=="littleEndian"} {
-+ set res {X'02000000'}
-+} else {
-+ set res {X'00000002'}
-+}
- do_execsql_test 15.1 {
- SELECT quote(matchinfo(t1, 'n')) FROM t1 LIMIT 1;
--} {X'02000000'}
--
-+} $res
- do_execsql_test 15.2 {
- DELETE FROM t1_content WHERE rowid=1;
- SELECT quote(matchinfo(t1, 'n')) FROM t1 LIMIT 1;
--} {X'02000000'}
-+} $res
-
- fts5_aux_test_functions db
- do_execsql_test 15.3 {
-@@ -517,4 +521,3 @@
- }
-
- finish_test
--
---- /src/insert.c
-+++ /src/insert.c
-@@ -2170,12 +2170,14 @@
- x = *sqlite3VdbeGetOp(v, addrConflictCk);
- if( x.opcode!=OP_IdxRowid ){
- int p2; /* New P2 value for copied conflict check opcode */
-+ const char *zP4;
- if( sqlite3OpcodeProperty[x.opcode]&OPFLG_JUMP ){
- p2 = lblRecheckOk;
- }else{
- p2 = x.p2;
- }
-- sqlite3VdbeAddOp4(v, x.opcode, x.p1, p2, x.p3, x.p4.z, x.p4type);
-+ zP4 = x.p4type==P4_INT32 ? SQLITE_INT_TO_PTR(x.p4.i) : x.p4.z;
-+ sqlite3VdbeAddOp4(v, x.opcode, x.p1, p2, x.p3, zP4, x.p4type);
- sqlite3VdbeChangeP5(v, x.p5);
- VdbeCoverageIf(v, p2!=x.p2);
- }
---- /test/fts4aa.test
-+++ /test/fts4aa.test
-@@ -229,13 +229,18 @@
- # 2019-11-18 https://bugs.chromium.org/p/chromium/issues/detail?id=1025467
- db close
- sqlite3 db :memory:
-+if {$tcl_platform(byteOrder)=="littleEndian"} {
-+ set res {X'0200000000000000000000000E0000000E00000001000000010000000100000001000000'}
-+} else {
-+ set res {X'0000000200000000000000000000000E0000000E00000001000000010000000100000001'}
-+}
- do_execsql_test fts4aa-6.10 {
- CREATE VIRTUAL TABLE f USING fts4();
- INSERT INTO f_segdir VALUES (77,91,0,0,'255 77',x'0001308000004d5c4ddddddd4d4d7b4d4d4d614d8019ff4d05000001204d4d2e4d6e4d4d4d4b4d6c4d004d4d4d4d4d4d3d000000004d5d4d4d645d4d004d4d4d4d4d4d4d4d4d454d6910004d05ffff054d646c4d004d5d4d4d4d4d3d000000004d4d4d4d4d4d4d4d4d4d4d69624d4d4d04004d4d4d4d4d604d4ce1404d554d45');
- INSERT INTO f_segdir VALUES (77,108,0,0,'255 77',x'0001310000fa64004d4d4d3c5d4d654d4d4d614d8000ff4d05000001204d4d2e4d6e4d4d4dff4d4d4d4d4d4d00104d4d4d4d000000004d4d4d0400311d4d4d4d4d4d4d4d4d4d684d6910004d05ffff054d4d6c4d004d4d4d4d4d4d3d000000004d4d4d4d644d4d4d4d4d4d69624d4d4d03ed4d4d4d4d4d604d4ce1404d550080');
- INSERT INTO f_stat VALUES (0,x'80808080100000000064004d4d4d3c4d4d654d4d4d614d8000ff4df6ff1a00204d4d2e4d6e4d4d4d104d4d4d4d4d4d00104d4d4d4d4d4d69574d4d4d000031044d4d4d3e4d4d4c4d05004d6910');
- SELECT quote(matchinfo(f,'pnax')) from f where f match '0 1';
--} {X'0200000000000000000000000E0000000E00000001000000010000000100000001000000'}
-+} $res
-
- # 2019-11-18 Detect infinite loop in fts3SelectLeaf()
- db close
diff --git a/dev-db/sqlite/files/sqlite-3.31.1-full_archive-security_fixes.patch b/dev-db/sqlite/files/sqlite-3.31.1-full_archive-security_fixes.patch
deleted file mode 100644
index c0bb714..0000000
--- a/dev-db/sqlite/files/sqlite-3.31.1-full_archive-security_fixes.patch
+++ /dev/null
@@ -1,163 +0,0 @@
-https://sqlite.org/cgi/src/info/9d0d4ab95dc0c56e
-https://sqlite.org/cgi/src/info/abc473fb8fb99900
-https://sqlite.org/cgi/src/info/5aeb5a2d295e10d5
-https://sqlite.org/cgi/src/info/a67cf5b7d37d5b14
-https://sqlite.org/cgi/src/info/14d14eb537075c6a
-https://sqlite.org/cgi/src/info/c431b3fd8fd0f6a6
-
---- /src/expr.c
-+++ /src/expr.c
-@@ -5463,19 +5463,25 @@
- case TK_LT:
- case TK_LE:
- case TK_GT:
-- case TK_GE:
-+ case TK_GE: {
-+ Expr *pLeft = pExpr->pLeft;
-+ Expr *pRight = pExpr->pRight;
- testcase( pExpr->op==TK_EQ );
- testcase( pExpr->op==TK_NE );
- testcase( pExpr->op==TK_LT );
- testcase( pExpr->op==TK_LE );
- testcase( pExpr->op==TK_GT );
- testcase( pExpr->op==TK_GE );
-- if( (pExpr->pLeft->op==TK_COLUMN && IsVirtual(pExpr->pLeft->y.pTab))
-- || (pExpr->pRight->op==TK_COLUMN && IsVirtual(pExpr->pRight->y.pTab))
-+ /* The y.pTab=0 assignment in wherecode.c always happens after the
-+ ** impliesNotNullRow() test */
-+ if( (pLeft->op==TK_COLUMN && ALWAYS(pLeft->y.pTab!=0)
-+ && IsVirtual(pLeft->y.pTab))
-+ || (pRight->op==TK_COLUMN && ALWAYS(pRight->y.pTab!=0)
-+ && IsVirtual(pRight->y.pTab))
- ){
-- return WRC_Prune;
-+ return WRC_Prune;
- }
--
-+ }
- default:
- return WRC_Continue;
- }
---- /src/resolve.c
-+++ /src/resolve.c
-@@ -1051,7 +1051,7 @@
- assert( !ExprHasProperty(pExpr, EP_Reduced) );
- /* Handle special cases of "x IS TRUE", "x IS FALSE", "x IS NOT TRUE",
- ** and "x IS NOT FALSE". */
-- if( pRight->op==TK_ID ){
-+ if( pRight && pRight->op==TK_ID ){
- int rc = resolveExprStep(pWalker, pRight);
- if( rc==WRC_Abort ) return WRC_Abort;
- if( pRight->op==TK_TRUEFALSE ){
---- /src/select.c
-+++ /src/select.c
-@@ -2806,6 +2806,7 @@
- /* Generate code to take the intersection of the two temporary
- ** tables.
- */
-+ if( rc ) break;
- assert( p->pEList );
- iBreak = sqlite3VdbeMakeLabel(pParse);
- iCont = sqlite3VdbeMakeLabel(pParse);
-@@ -5148,7 +5149,7 @@
- pNew = sqlite3ExprListAppend(pParse, pNew, pExpr);
- sqlite3TokenInit(&sColname, zColname);
- sqlite3ExprListSetName(pParse, pNew, &sColname, 0);
-- if( pNew && (p->selFlags & SF_NestedFrom)!=0 ){
-+ if( pNew && (p->selFlags & SF_NestedFrom)!=0 && !IN_RENAME_OBJECT ){
- struct ExprList_item *pX = &pNew->a[pNew->nExpr-1];
- sqlite3DbFree(db, pX->zEName);
- if( pSub ){
---- /src/sqliteInt.h
-+++ /src/sqliteInt.h
-@@ -2153,8 +2153,11 @@
- */
- #ifndef SQLITE_OMIT_VIRTUALTABLE
- # define IsVirtual(X) ((X)->nModuleArg)
-+# define ExprIsVtab(X) \
-+ ((X)->op==TK_COLUMN && (X)->y.pTab!=0 && (X)->y.pTab->nModuleArg)
- #else
- # define IsVirtual(X) 0
-+# define ExprIsVtab(X) 0
- #endif
-
- /*
---- /src/whereexpr.c
-+++ /src/whereexpr.c
-@@ -377,7 +377,8 @@
- ** MATCH(expression,vtab_column)
- */
- pCol = pList->a[1].pExpr;
-- if( pCol->op==TK_COLUMN && IsVirtual(pCol->y.pTab) ){
-+ testcase( pCol->op==TK_COLUMN && pCol->y.pTab==0 );
-+ if( ExprIsVtab(pCol) ){
- for(i=0; i<ArraySize(aOp); i++){
- if( sqlite3StrICmp(pExpr->u.zToken, aOp[i].zOp)==0 ){
- *peOp2 = aOp[i].eOp2;
-@@ -399,7 +400,8 @@
- ** with function names in an arbitrary case.
- */
- pCol = pList->a[0].pExpr;
-- if( pCol->op==TK_COLUMN && IsVirtual(pCol->y.pTab) ){
-+ testcase( pCol->op==TK_COLUMN && pCol->y.pTab==0 );
-+ if( ExprIsVtab(pCol) ){
- sqlite3_vtab *pVtab;
- sqlite3_module *pMod;
- void (*xNotUsed)(sqlite3_context*,int,sqlite3_value**);
-@@ -422,10 +424,12 @@
- int res = 0;
- Expr *pLeft = pExpr->pLeft;
- Expr *pRight = pExpr->pRight;
-- if( pLeft->op==TK_COLUMN && IsVirtual(pLeft->y.pTab) ){
-+ testcase( pLeft->op==TK_COLUMN && pLeft->y.pTab==0 );
-+ if( ExprIsVtab(pLeft) ){
- res++;
- }
-- if( pRight && pRight->op==TK_COLUMN && IsVirtual(pRight->y.pTab) ){
-+ testcase( pRight && pRight->op==TK_COLUMN && pRight->y.pTab==0 );
-+ if( pRight && ExprIsVtab(pRight) ){
- res++;
- SWAP(Expr*, pLeft, pRight);
- }
---- /test/altertab.test
-+++ /test/altertab.test
-@@ -613,4 +613,21 @@
- SELECT sql FROM sqlite_master;
- } {{CREATE TABLE t0 (c1 INTEGER, PRIMARY KEY(c1))}}
-
-+# 2020-02-23 ticket f50af3e8a565776b
-+reset_db
-+do_execsql_test 19.100 {
-+ CREATE TABLE t1(x);
-+ CREATE VIEW t2 AS SELECT 1 FROM t1, (t1 AS a0, t1);
-+ ALTER TABLE t1 RENAME TO t3;
-+ SELECT sql FROM sqlite_master;
-+} {{CREATE TABLE "t3"(x)} {CREATE VIEW t2 AS SELECT 1 FROM "t3", ("t3" AS a0, "t3")}}
-+do_execsql_test 19.110 {
-+ INSERT INTO t3(x) VALUES(123);
-+ SELECT * FROM t2;
-+} {1}
-+do_execsql_test 19.120 {
-+ INSERT INTO t3(x) VALUES('xyz');
-+ SELECT * FROM t2;
-+} {1 1 1 1 1 1 1 1}
-+
- finish_test
---- /test/windowfault.test
-+++ /test/windowfault.test
-@@ -263,4 +263,15 @@
- faultsim_test_result {0 {}}
- }
-
-+do_faultsim_test 11 -faults oom* -prep {
-+} -body {
-+ execsql {
-+ VALUES(false),(current_date collate binary)
-+ intersect
-+ values(count() not like group_concat(cast(cast(0e00 as text) as integer) <= NULL || 0.4e-0 || 0x8 & true ) over () collate rtrim);
-+ }
-+} -test {
-+ faultsim_test_result {0 {}}
-+}
-+
- finish_test
diff --git a/dev-db/sqlite/files/sqlite-3.31.1-nonfull_archive-architectures.patch b/dev-db/sqlite/files/sqlite-3.31.1-nonfull_archive-architectures.patch
deleted file mode 100644
index 79f6f07..0000000
--- a/dev-db/sqlite/files/sqlite-3.31.1-nonfull_archive-architectures.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-https://sqlite.org/cgi/src/info/04885763c4cd00cb
-
---- /sqlite3.c
-+++ /sqlite3.c
-@@ -121302,12 +121302,14 @@
- x = *sqlite3VdbeGetOp(v, addrConflictCk);
- if( x.opcode!=OP_IdxRowid ){
- int p2; /* New P2 value for copied conflict check opcode */
-+ const char *zP4;
- if( sqlite3OpcodeProperty[x.opcode]&OPFLG_JUMP ){
- p2 = lblRecheckOk;
- }else{
- p2 = x.p2;
- }
-- sqlite3VdbeAddOp4(v, x.opcode, x.p1, p2, x.p3, x.p4.z, x.p4type);
-+ zP4 = x.p4type==P4_INT32 ? SQLITE_INT_TO_PTR(x.p4.i) : x.p4.z;
-+ sqlite3VdbeAddOp4(v, x.opcode, x.p1, p2, x.p3, zP4, x.p4type);
- sqlite3VdbeChangeP5(v, x.p5);
- VdbeCoverageIf(v, p2!=x.p2);
- }
diff --git a/dev-db/sqlite/files/sqlite-3.31.1-nonfull_archive-security_fixes.patch b/dev-db/sqlite/files/sqlite-3.31.1-nonfull_archive-security_fixes.patch
deleted file mode 100644
index 3bbbbf7..0000000
--- a/dev-db/sqlite/files/sqlite-3.31.1-nonfull_archive-security_fixes.patch
+++ /dev/null
@@ -1,112 +0,0 @@
-https://sqlite.org/cgi/src/info/9d0d4ab95dc0c56e
-https://sqlite.org/cgi/src/info/abc473fb8fb99900
-https://sqlite.org/cgi/src/info/5aeb5a2d295e10d5
-https://sqlite.org/cgi/src/info/a67cf5b7d37d5b14
-https://sqlite.org/cgi/src/info/c431b3fd8fd0f6a6
-
---- /sqlite3.c
-+++ /sqlite3.c
-@@ -17428,8 +17428,11 @@
- */
- #ifndef SQLITE_OMIT_VIRTUALTABLE
- # define IsVirtual(X) ((X)->nModuleArg)
-+# define ExprIsVtab(X) \
-+ ((X)->op==TK_COLUMN && (X)->y.pTab!=0 && (X)->y.pTab->nModuleArg)
- #else
- # define IsVirtual(X) 0
-+# define ExprIsVtab(X) 0
- #endif
-
- /*
-@@ -97816,7 +97819,7 @@
- assert( !ExprHasProperty(pExpr, EP_Reduced) );
- /* Handle special cases of "x IS TRUE", "x IS FALSE", "x IS NOT TRUE",
- ** and "x IS NOT FALSE". */
-- if( pRight->op==TK_ID ){
-+ if( pRight && pRight->op==TK_ID ){
- int rc = resolveExprStep(pWalker, pRight);
- if( rc==WRC_Abort ) return WRC_Abort;
- if( pRight->op==TK_TRUEFALSE ){
-@@ -104133,19 +104136,25 @@
- case TK_LT:
- case TK_LE:
- case TK_GT:
-- case TK_GE:
-+ case TK_GE: {
-+ Expr *pLeft = pExpr->pLeft;
-+ Expr *pRight = pExpr->pRight;
- testcase( pExpr->op==TK_EQ );
- testcase( pExpr->op==TK_NE );
- testcase( pExpr->op==TK_LT );
- testcase( pExpr->op==TK_LE );
- testcase( pExpr->op==TK_GT );
- testcase( pExpr->op==TK_GE );
-- if( (pExpr->pLeft->op==TK_COLUMN && IsVirtual(pExpr->pLeft->y.pTab))
-- || (pExpr->pRight->op==TK_COLUMN && IsVirtual(pExpr->pRight->y.pTab))
-+ /* The y.pTab=0 assignment in wherecode.c always happens after the
-+ ** impliesNotNullRow() test */
-+ if( (pLeft->op==TK_COLUMN && ALWAYS(pLeft->y.pTab!=0)
-+ && IsVirtual(pLeft->y.pTab))
-+ || (pRight->op==TK_COLUMN && ALWAYS(pRight->y.pTab!=0)
-+ && IsVirtual(pRight->y.pTab))
- ){
-- return WRC_Prune;
-+ return WRC_Prune;
- }
--
-+ }
- default:
- return WRC_Continue;
- }
-@@ -130673,6 +130682,7 @@
- /* Generate code to take the intersection of the two temporary
- ** tables.
- */
-+ if( rc ) break;
- assert( p->pEList );
- iBreak = sqlite3VdbeMakeLabel(pParse);
- iCont = sqlite3VdbeMakeLabel(pParse);
-@@ -133015,7 +133025,7 @@
- pNew = sqlite3ExprListAppend(pParse, pNew, pExpr);
- sqlite3TokenInit(&sColname, zColname);
- sqlite3ExprListSetName(pParse, pNew, &sColname, 0);
-- if( pNew && (p->selFlags & SF_NestedFrom)!=0 ){
-+ if( pNew && (p->selFlags & SF_NestedFrom)!=0 && !IN_RENAME_OBJECT ){
- struct ExprList_item *pX = &pNew->a[pNew->nExpr-1];
- sqlite3DbFree(db, pX->zEName);
- if( pSub ){
-@@ -142593,7 +142603,8 @@
- ** MATCH(expression,vtab_column)
- */
- pCol = pList->a[1].pExpr;
-- if( pCol->op==TK_COLUMN && IsVirtual(pCol->y.pTab) ){
-+ testcase( pCol->op==TK_COLUMN && pCol->y.pTab==0 );
-+ if( ExprIsVtab(pCol) ){
- for(i=0; i<ArraySize(aOp); i++){
- if( sqlite3StrICmp(pExpr->u.zToken, aOp[i].zOp)==0 ){
- *peOp2 = aOp[i].eOp2;
-@@ -142615,7 +142626,8 @@
- ** with function names in an arbitrary case.
- */
- pCol = pList->a[0].pExpr;
-- if( pCol->op==TK_COLUMN && IsVirtual(pCol->y.pTab) ){
-+ testcase( pCol->op==TK_COLUMN && pCol->y.pTab==0 );
-+ if( ExprIsVtab(pCol) ){
- sqlite3_vtab *pVtab;
- sqlite3_module *pMod;
- void (*xNotUsed)(sqlite3_context*,int,sqlite3_value**);
-@@ -142638,10 +142650,12 @@
- int res = 0;
- Expr *pLeft = pExpr->pLeft;
- Expr *pRight = pExpr->pRight;
-- if( pLeft->op==TK_COLUMN && IsVirtual(pLeft->y.pTab) ){
-+ testcase( pLeft->op==TK_COLUMN && pLeft->y.pTab==0 );
-+ if( ExprIsVtab(pLeft) ){
- res++;
- }
-- if( pRight && pRight->op==TK_COLUMN && IsVirtual(pRight->y.pTab) ){
-+ testcase( pRight && pRight->op==TK_COLUMN && pRight->y.pTab==0 );
-+ if( pRight && ExprIsVtab(pRight) ){
- res++;
- SWAP(Expr*, pLeft, pRight);
- }
diff --git a/dev-db/sqlite/files/sqlite-3.32.1-full_archive-build_2.patch b/dev-db/sqlite/files/sqlite-3.32.1-full_archive-build_2.patch
deleted file mode 100644
index f12c0b2..0000000
--- a/dev-db/sqlite/files/sqlite-3.32.1-full_archive-build_2.patch
+++ /dev/null
@@ -1,640 +0,0 @@
-Enable some extensions in libsqlite3.so.
-Move some code to libsqlite3.so to avoid duplication.
-Link executables against libsqlite3.so.
-Increase timeout for fuzzcheck.
-Fix building with dlopen() not available.
-
---- /Makefile.in
-+++ /Makefile.in
-@@ -313,6 +313,9 @@
- # Source code for extensions
- #
- SRC += \
-+ $(TOP)/ext/expert/sqlite3expert.c \
-+ $(TOP)/ext/expert/sqlite3expert.h
-+SRC += \
- $(TOP)/ext/fts1/fts1.c \
- $(TOP)/ext/fts1/fts1.h \
- $(TOP)/ext/fts1/fts1_hash.c \
-@@ -365,8 +368,24 @@
- $(TOP)/ext/rbu/sqlite3rbu.h \
- $(TOP)/ext/rbu/sqlite3rbu.c
- SRC += \
-+ $(TOP)/ext/misc/appendvfs.c \
-+ $(TOP)/ext/misc/carray.c \
-+ $(TOP)/ext/misc/completion.c \
-+ $(TOP)/ext/misc/csv.c \
-+ $(TOP)/ext/misc/dbdata.c \
-+ $(TOP)/ext/misc/eval.c \
-+ $(TOP)/ext/misc/fileio.c \
-+ $(TOP)/ext/misc/ieee754.c \
- $(TOP)/ext/misc/json1.c \
-- $(TOP)/ext/misc/stmt.c
-+ $(TOP)/ext/misc/regexp.c \
-+ $(TOP)/ext/misc/sha1.c \
-+ $(TOP)/ext/misc/shathree.c \
-+ $(TOP)/ext/misc/sqlar.c \
-+ $(TOP)/ext/misc/stmt.c \
-+ $(TOP)/ext/misc/totype.c \
-+ $(TOP)/ext/misc/uint.c \
-+ $(TOP)/ext/misc/uuid.c \
-+ $(TOP)/ext/misc/zipfile.c
-
- # Generated source code files
- #
-@@ -437,33 +456,24 @@
- # Statically linked extensions
- #
- TESTSRC += \
-- $(TOP)/ext/expert/sqlite3expert.c \
- $(TOP)/ext/expert/test_expert.c \
- $(TOP)/ext/misc/amatch.c \
-- $(TOP)/ext/misc/carray.c \
- $(TOP)/ext/misc/closure.c \
-- $(TOP)/ext/misc/csv.c \
-- $(TOP)/ext/misc/eval.c \
- $(TOP)/ext/misc/explain.c \
-- $(TOP)/ext/misc/fileio.c \
- $(TOP)/ext/misc/fuzzer.c \
- $(TOP)/ext/fts5/fts5_tcl.c \
- $(TOP)/ext/fts5/fts5_test_mi.c \
- $(TOP)/ext/fts5/fts5_test_tok.c \
-- $(TOP)/ext/misc/ieee754.c \
- $(TOP)/ext/misc/mmapwarm.c \
- $(TOP)/ext/misc/nextchar.c \
- $(TOP)/ext/misc/normalize.c \
- $(TOP)/ext/misc/percentile.c \
- $(TOP)/ext/misc/prefixes.c \
-- $(TOP)/ext/misc/regexp.c \
- $(TOP)/ext/misc/remember.c \
- $(TOP)/ext/misc/series.c \
- $(TOP)/ext/misc/spellfix.c \
-- $(TOP)/ext/misc/totype.c \
- $(TOP)/ext/misc/unionvtab.c \
- $(TOP)/ext/misc/wholenumber.c \
-- $(TOP)/ext/misc/zipfile.c \
- $(TOP)/ext/userauth/userauth.c
-
- # Source code to the library files needed by the test fixture
-@@ -645,25 +655,25 @@
-
- libtclsqlite3.la: tclsqlite.lo libsqlite3.la
- $(LTLINK) -no-undefined -o $@ tclsqlite.lo \
-- libsqlite3.la @TCL_STUB_LIB_SPEC@ $(TLIBS) \
-+ libsqlite3.la @TCL_STUB_LIB_SPEC@ \
- -rpath "$(TCLLIBDIR)" \
- -version-info "8:6:8" \
- -avoid-version
-
--sqlite3$(TEXE): shell.c sqlite3.c
-- $(LTLINK) $(READLINE_FLAGS) $(SHELL_OPT) -o $@ \
-- shell.c sqlite3.c \
-- $(LIBREADLINE) $(TLIBS) -rpath "$(libdir)"
-+sqlite3$(TEXE): shell.c libsqlite3.la
-+ $(LTLINK) $(READLINE_FLAGS) -o $@ \
-+ shell.c libsqlite3.la \
-+ $(LIBREADLINE)
-
--sqldiff$(TEXE): $(TOP)/tool/sqldiff.c sqlite3.lo sqlite3.h
-- $(LTLINK) -o $@ $(TOP)/tool/sqldiff.c sqlite3.lo $(TLIBS)
-+sqldiff$(TEXE): $(TOP)/tool/sqldiff.c libsqlite3.la
-+ $(LTLINK) -o $@ $(TOP)/tool/sqldiff.c libsqlite3.la
-
--dbhash$(TEXE): $(TOP)/tool/dbhash.c sqlite3.lo sqlite3.h
-- $(LTLINK) -o $@ $(TOP)/tool/dbhash.c sqlite3.lo $(TLIBS)
-+dbhash$(TEXE): $(TOP)/tool/dbhash.c libsqlite3.la
-+ $(LTLINK) -o $@ $(TOP)/tool/dbhash.c libsqlite3.la
-
--scrub$(TEXE): $(TOP)/ext/misc/scrub.c sqlite3.lo
-+scrub$(TEXE): $(TOP)/ext/misc/scrub.c libsqlite3.la
- $(LTLINK) -o $@ -I. -DSCRUB_STANDALONE \
-- $(TOP)/ext/misc/scrub.c sqlite3.lo $(TLIBS)
-+ $(TOP)/ext/misc/scrub.c libsqlite3.la
-
- srcck1$(BEXE): $(TOP)/tool/srcck1.c
- $(BCC) -o srcck1$(BEXE) $(TOP)/tool/srcck1.c
-@@ -774,7 +784,7 @@
- # Rule to build the amalgamation
- #
- sqlite3.lo: sqlite3.c
-- $(LTCOMPILE) $(TEMP_STORE) -c sqlite3.c
-+ $(LTCOMPILE) $(SHELL_OPT) $(TEMP_STORE) -c sqlite3.c
-
- # Rules to build the LEMON compiler generator
- #
-@@ -1074,15 +1084,6 @@
- # Source files that go into making shell.c
- SHELL_SRC = \
- $(TOP)/src/shell.c.in \
-- $(TOP)/ext/misc/appendvfs.c \
-- $(TOP)/ext/misc/shathree.c \
-- $(TOP)/ext/misc/fileio.c \
-- $(TOP)/ext/misc/completion.c \
-- $(TOP)/ext/misc/sqlar.c \
-- $(TOP)/ext/misc/uint.c \
-- $(TOP)/ext/expert/sqlite3expert.c \
-- $(TOP)/ext/expert/sqlite3expert.h \
-- $(TOP)/ext/misc/zipfile.c \
- $(TOP)/ext/misc/memtrace.c \
- $(TOP)/src/test_windirent.c
-
-@@ -1251,11 +1252,11 @@
-
- # Fuzz testing
- fuzztest: fuzzcheck$(TEXE) $(FUZZDATA) sessionfuzz$(TEXE) $(TOP)/test/sessionfuzz-data1.db
-- ./fuzzcheck$(TEXE) $(FUZZDATA)
-+ ./fuzzcheck$(TEXE) --timeout 3600 $(FUZZDATA)
- ./sessionfuzz$(TEXE) run $(TOP)/test/sessionfuzz-data1.db
-
- valgrindfuzz: fuzzcheck$(TEXT) $(FUZZDATA) sessionfuzz$(TEXE) $(TOP)/test/sessionfuzz-data1.db
-- valgrind ./fuzzcheck$(TEXE) --cell-size-check --limit-mem 10M --timeout 600 $(FUZZDATA)
-+ valgrind ./fuzzcheck$(TEXE) --cell-size-check --limit-mem 10M --timeout 3600 $(FUZZDATA)
- valgrind ./sessionfuzz$(TEXE) run $(TOP)/test/sessionfuzz-data1.db
-
- # The veryquick.test TCL tests.
-@@ -1286,24 +1287,23 @@
- smoketest: $(TESTPROGS) fuzzcheck$(TEXE)
- ./testfixture$(TEXE) $(TOP)/test/main.test $(TESTOPTS)
-
--sqlite3_analyzer.c: sqlite3.c $(TOP)/src/tclsqlite.c $(TOP)/tool/spaceanal.tcl $(TOP)/tool/mkccode.tcl $(TOP)/tool/sqlite3_analyzer.c.in
-+sqlite3_analyzer.c: $(TOP)/src/tclsqlite.c $(TOP)/tool/spaceanal.tcl $(TOP)/tool/mkccode.tcl $(TOP)/tool/sqlite3_analyzer.c.in
- $(TCLSH_CMD) $(TOP)/tool/mkccode.tcl $(TOP)/tool/sqlite3_analyzer.c.in >sqlite3_analyzer.c
-
--sqlite3_analyzer$(TEXE): sqlite3_analyzer.c
-- $(LTLINK) sqlite3_analyzer.c -o $@ $(LIBTCL) $(TLIBS)
-+sqlite3_analyzer$(TEXE): sqlite3_analyzer.c libsqlite3.la
-+ $(LTLINK) sqlite3_analyzer.c -o $@ libsqlite3.la $(LIBTCL)
-
--sqltclsh.c: sqlite3.c $(TOP)/src/tclsqlite.c $(TOP)/tool/sqltclsh.tcl $(TOP)/ext/misc/appendvfs.c $(TOP)/tool/mkccode.tcl $(TOP)/tool/sqltclsh.c.in
-+sqltclsh.c: $(TOP)/src/tclsqlite.c $(TOP)/tool/sqltclsh.tcl $(TOP)/tool/mkccode.tcl $(TOP)/tool/sqltclsh.c.in
- $(TCLSH_CMD) $(TOP)/tool/mkccode.tcl $(TOP)/tool/sqltclsh.c.in >sqltclsh.c
-
--sqltclsh$(TEXE): sqltclsh.c
-- $(LTLINK) sqltclsh.c -o $@ $(LIBTCL) $(TLIBS)
-+sqltclsh$(TEXE): sqltclsh.c libsqlite3.la
-+ $(LTLINK) sqltclsh.c -o $@ libsqlite3.la $(LIBTCL)
-
--sqlite3_expert$(TEXE): $(TOP)/ext/expert/sqlite3expert.h $(TOP)/ext/expert/sqlite3expert.c $(TOP)/ext/expert/expert.c sqlite3.c
-- $(LTLINK) $(TOP)/ext/expert/sqlite3expert.h $(TOP)/ext/expert/sqlite3expert.c $(TOP)/ext/expert/expert.c sqlite3.c -o sqlite3_expert $(TLIBS)
-+sqlite3_expert$(TEXE): $(TOP)/ext/expert/sqlite3expert.h $(TOP)/ext/expert/expert.c libsqlite3.la
-+ $(LTLINK) $(TOP)/ext/expert/expert.c -o sqlite3_expert libsqlite3.la
-
- CHECKER_DEPS =\
- $(TOP)/tool/mkccode.tcl \
-- sqlite3.c \
- $(TOP)/src/tclsqlite.c \
- $(TOP)/ext/repair/sqlite3_checker.tcl \
- $(TOP)/ext/repair/checkindex.c \
-@@ -1314,36 +1314,36 @@
- sqlite3_checker.c: $(CHECKER_DEPS)
- $(TCLSH_CMD) $(TOP)/tool/mkccode.tcl $(TOP)/ext/repair/sqlite3_checker.c.in >$@
-
--sqlite3_checker$(TEXE): sqlite3_checker.c
-- $(LTLINK) sqlite3_checker.c -o $@ $(LIBTCL) $(TLIBS)
-+sqlite3_checker$(TEXE): sqlite3_checker.c libsqlite3.la
-+ $(LTLINK) sqlite3_checker.c -o $@ libsqlite3.la $(LIBTCL)
-
--dbdump$(TEXE): $(TOP)/ext/misc/dbdump.c sqlite3.lo
-+dbdump$(TEXE): $(TOP)/ext/misc/dbdump.c libsqlite3.la
- $(LTLINK) -DDBDUMP_STANDALONE -o $@ \
-- $(TOP)/ext/misc/dbdump.c sqlite3.lo $(TLIBS)
-+ $(TOP)/ext/misc/dbdump.c libsqlite3.la
-
--dbtotxt$(TEXE): $(TOP)/tool/dbtotxt.c
-- $(LTLINK)-o $@ $(TOP)/tool/dbtotxt.c
-+dbtotxt$(TEXE): $(TOP)/tool/dbtotxt.c
-+ $(LTLINK) -o $@ $(TOP)/tool/dbtotxt.c
-
--showdb$(TEXE): $(TOP)/tool/showdb.c sqlite3.lo
-- $(LTLINK) -o $@ $(TOP)/tool/showdb.c sqlite3.lo $(TLIBS)
-+showdb$(TEXE): $(TOP)/tool/showdb.c libsqlite3.la
-+ $(LTLINK) -o $@ $(TOP)/tool/showdb.c libsqlite3.la
-
--showstat4$(TEXE): $(TOP)/tool/showstat4.c sqlite3.lo
-- $(LTLINK) -o $@ $(TOP)/tool/showstat4.c sqlite3.lo $(TLIBS)
-+showstat4$(TEXE): $(TOP)/tool/showstat4.c libsqlite3.la
-+ $(LTLINK) -o $@ $(TOP)/tool/showstat4.c libsqlite3.la
-
--showjournal$(TEXE): $(TOP)/tool/showjournal.c sqlite3.lo
-- $(LTLINK) -o $@ $(TOP)/tool/showjournal.c sqlite3.lo $(TLIBS)
-+showjournal$(TEXE): $(TOP)/tool/showjournal.c
-+ $(LTLINK) -o $@ $(TOP)/tool/showjournal.c
-
--showwal$(TEXE): $(TOP)/tool/showwal.c sqlite3.lo
-- $(LTLINK) -o $@ $(TOP)/tool/showwal.c sqlite3.lo $(TLIBS)
-+showwal$(TEXE): $(TOP)/tool/showwal.c
-+ $(LTLINK) -o $@ $(TOP)/tool/showwal.c
-
- showshm$(TEXE): $(TOP)/tool/showshm.c
- $(LTLINK) -o $@ $(TOP)/tool/showshm.c
-
--index_usage$(TEXE): $(TOP)/tool/index_usage.c sqlite3.lo
-- $(LTLINK) $(SHELL_OPT) -o $@ $(TOP)/tool/index_usage.c sqlite3.lo $(TLIBS)
-+index_usage$(TEXE): $(TOP)/tool/index_usage.c libsqlite3.la
-+ $(LTLINK) -o $@ $(TOP)/tool/index_usage.c libsqlite3.la
-
--changeset$(TEXE): $(TOP)/ext/session/changeset.c sqlite3.lo
-- $(LTLINK) -o $@ $(TOP)/ext/session/changeset.c sqlite3.lo $(TLIBS)
-+changeset$(TEXE): $(TOP)/ext/session/changeset.c libsqlite3.la
-+ $(LTLINK) -o $@ $(TOP)/ext/session/changeset.c libsqlite3.la
-
- changesetfuzz$(TEXE): $(TOP)/ext/session/changesetfuzz.c sqlite3.lo
- $(LTLINK) -o $@ $(TOP)/ext/session/changesetfuzz.c sqlite3.lo $(TLIBS)
-@@ -1368,11 +1368,11 @@
- kvtest$(TEXE): $(TOP)/test/kvtest.c sqlite3.c
- $(LTLINK) $(KV_OPT) -o $@ $(TOP)/test/kvtest.c sqlite3.c $(TLIBS)
-
--rbu$(EXE): $(TOP)/ext/rbu/rbu.c $(TOP)/ext/rbu/sqlite3rbu.c sqlite3.lo
-- $(LTLINK) -I. -o $@ $(TOP)/ext/rbu/rbu.c sqlite3.lo $(TLIBS)
-+rbu$(EXE): $(TOP)/ext/rbu/rbu.c libsqlite3.la
-+ $(LTLINK) -I. -o $@ $(TOP)/ext/rbu/rbu.c libsqlite3.la
-
--loadfts$(EXE): $(TOP)/tool/loadfts.c libsqlite3.la
-- $(LTLINK) $(TOP)/tool/loadfts.c libsqlite3.la -o $@ $(TLIBS)
-+loadfts$(EXE): $(TOP)/tool/loadfts.c libsqlite3.la
-+ $(LTLINK) $(TOP)/tool/loadfts.c libsqlite3.la -o $@
-
- # This target will fail if the SQLite amalgamation contains any exported
- # symbols that do not begin with "sqlite3_". It is run as part of the
---- /configure.ac
-+++ /configure.ac
-@@ -587,6 +587,9 @@
- if test "${enable_load_extension}" = "yes" ; then
- OPT_FEATURE_FLAGS=""
- AC_SEARCH_LIBS(dlopen, dl)
-+ if test "${ac_cv_search_dlopen}" = "no" ; then
-+ OPT_FEATURE_FLAGS="-DSQLITE_OMIT_LOAD_EXTENSION=1"
-+ fi
- else
- OPT_FEATURE_FLAGS="-DSQLITE_OMIT_LOAD_EXTENSION=1"
- fi
---- /ext/repair/sqlite3_checker.c.in
-+++ /ext/repair/sqlite3_checker.c.in
-@@ -2,6 +2,7 @@
- ** Read an SQLite database file and analyze its space utilization. Generate
- ** text on standard output.
- */
-+#define SQLITE_CORE 1
- #define TCLSH_INIT_PROC sqlite3_checker_init_proc
- #define SQLITE_ENABLE_DBPAGE_VTAB 1
- #define SQLITE_ENABLE_JSON1 1
-@@ -14,7 +15,7 @@
- #define SQLITE_OMIT_SHARED_CACHE 1
- #define SQLITE_DEFAULT_MEMSTATUS 0
- #define SQLITE_MAX_EXPR_DEPTH 0
--INCLUDE sqlite3.c
-+#include "sqlite3.h"
- INCLUDE $ROOT/src/tclsqlite.c
- INCLUDE $ROOT/ext/misc/btreeinfo.c
- INCLUDE $ROOT/ext/repair/checkindex.c
---- /src/main.c
-+++ /src/main.c
-@@ -50,12 +50,31 @@
- #ifdef SQLITE_ENABLE_FTS5
- int sqlite3Fts5Init(sqlite3*);
- #endif
-+#if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_ENABLE_DBPAGE_VTAB)
-+int sqlite3DbdataRegister(sqlite3*);
-+#endif
- #ifdef SQLITE_ENABLE_JSON1
- int sqlite3Json1Init(sqlite3*);
- #endif
- #ifdef SQLITE_ENABLE_STMTVTAB
- int sqlite3StmtVtabInit(sqlite3*);
- #endif
-+int sqlite3CarrayInit(sqlite3*);
-+int sqlite3CompletionVtabInit(sqlite3*);
-+int sqlite3CsvInit(sqlite3*);
-+int sqlite3EvalInit(sqlite3*);
-+int sqlite3FileioInit(sqlite3*);
-+int sqlite3IeeeInit(sqlite3*);
-+int sqlite3RegexpInit(sqlite3*);
-+int sqlite3ShaInit(sqlite3*);
-+int sqlite3ShathreeInit(sqlite3*);
-+int sqlite3TotypeInit(sqlite3*);
-+int sqlite3UintInit(sqlite3*);
-+int sqlite3UuidInit(sqlite3*);
-+#if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_HAVE_ZLIB)
-+int sqlite3ZipfileInit(sqlite3*);
-+int sqlite3SqlarInit(sqlite3*);
-+#endif
-
- /*
- ** An array of pointers to extension initializer functions for
-@@ -83,6 +102,9 @@
- #ifdef SQLITE_ENABLE_DBPAGE_VTAB
- sqlite3DbpageRegister,
- #endif
-+#if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_ENABLE_DBPAGE_VTAB)
-+ sqlite3DbdataRegister,
-+#endif
- #ifdef SQLITE_ENABLE_DBSTAT_VTAB
- sqlite3DbstatRegister,
- #endif
-@@ -96,6 +118,22 @@
- #ifdef SQLITE_ENABLE_BYTECODE_VTAB
- sqlite3VdbeBytecodeVtabInit,
- #endif
-+ sqlite3CarrayInit,
-+ sqlite3CompletionVtabInit,
-+ sqlite3CsvInit,
-+ sqlite3EvalInit,
-+ sqlite3FileioInit,
-+ sqlite3IeeeInit,
-+ sqlite3RegexpInit,
-+ sqlite3ShaInit,
-+ sqlite3ShathreeInit,
-+ sqlite3TotypeInit,
-+ sqlite3UintInit,
-+ sqlite3UuidInit,
-+#if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_HAVE_ZLIB)
-+ sqlite3ZipfileInit,
-+ sqlite3SqlarInit,
-+#endif
- };
-
- #ifndef SQLITE_AMALGAMATION
---- /src/shell.c.in
-+++ /src/shell.c.in
-@@ -69,6 +69,7 @@
- #include <stdio.h>
- #include <assert.h>
- #include "sqlite3.h"
-+#include "ext/expert/sqlite3expert.h"
- typedef sqlite3_int64 i64;
- typedef sqlite3_uint64 u64;
- typedef unsigned char u8;
-@@ -135,6 +136,10 @@
- # define SHELL_USE_LOCAL_GETLINE 1
- #endif
-
-+#ifdef SQLITE_HAVE_ZLIB
-+#include <zlib.h>
-+#endif
-+
-
- #if defined(_WIN32) || defined(WIN32)
- # if SQLITE_OS_WINRT
-@@ -1005,22 +1010,7 @@
- INCLUDE test_windirent.c
- #define dirent DIRENT
- #endif
--INCLUDE ../ext/misc/shathree.c
--INCLUDE ../ext/misc/fileio.c
--INCLUDE ../ext/misc/completion.c
--INCLUDE ../ext/misc/appendvfs.c
- INCLUDE ../ext/misc/memtrace.c
--INCLUDE ../ext/misc/uint.c
--#ifdef SQLITE_HAVE_ZLIB
--INCLUDE ../ext/misc/zipfile.c
--INCLUDE ../ext/misc/sqlar.c
--#endif
--INCLUDE ../ext/expert/sqlite3expert.h
--INCLUDE ../ext/expert/sqlite3expert.c
--
--#if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_ENABLE_DBPAGE_VTAB)
--INCLUDE ../ext/misc/dbdata.c
--#endif
-
- #if defined(SQLITE_ENABLE_SESSION)
- /*
-@@ -4261,17 +4251,6 @@
- #ifndef SQLITE_OMIT_LOAD_EXTENSION
- sqlite3_enable_load_extension(p->db, 1);
- #endif
-- sqlite3_fileio_init(p->db, 0, 0);
-- sqlite3_shathree_init(p->db, 0, 0);
-- sqlite3_completion_init(p->db, 0, 0);
-- sqlite3_uint_init(p->db, 0, 0);
--#if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_ENABLE_DBPAGE_VTAB)
-- sqlite3_dbdata_init(p->db, 0, 0);
--#endif
--#ifdef SQLITE_HAVE_ZLIB
-- sqlite3_zipfile_init(p->db, 0, 0);
-- sqlite3_sqlar_init(p->db, 0, 0);
--#endif
- sqlite3_create_function(p->db, "shell_add_schema", 3, SQLITE_UTF8, 0,
- shellAddSchemaName, 0, 0);
- sqlite3_create_function(p->db, "shell_module_schema", 1, SQLITE_UTF8, 0,
-@@ -6281,8 +6260,6 @@
- );
- goto end_ar_command;
- }
-- sqlite3_fileio_init(cmd.db, 0, 0);
-- sqlite3_sqlar_init(cmd.db, 0, 0);
- sqlite3_create_function(cmd.db, "shell_putsnl", 1, SQLITE_UTF8, cmd.p,
- shellPutsFunc, 0, 0);
-
-@@ -10621,6 +10598,7 @@
- #endif
- }
- data.out = stdout;
-+ extern int sqlite3_appendvfs_init(sqlite3 *, char **, const sqlite3_api_routines *);
- sqlite3_appendvfs_init(0,0,0);
-
- /* Go ahead and open the database file if it already exists. If the
---- /src/test_config.c
-+++ /src/test_config.c
-@@ -540,6 +540,8 @@
- Tcl_SetVar2(interp, "sqlite_options", "progress", "1", TCL_GLOBAL_ONLY);
- #endif
-
-+ Tcl_SetVar2(interp, "sqlite_options", "regexp", "1", TCL_GLOBAL_ONLY);
-+
- #ifdef SQLITE_OMIT_REINDEX
- Tcl_SetVar2(interp, "sqlite_options", "reindex", "0", TCL_GLOBAL_ONLY);
- #else
-@@ -662,6 +664,8 @@
- Tcl_SetVar2(interp, "sqlite_options", "truncate_opt", "1", TCL_GLOBAL_ONLY);
- #endif
-
-+ Tcl_SetVar2(interp, "sqlite_options", "uint", "1", TCL_GLOBAL_ONLY);
-+
- #ifdef SQLITE_OMIT_UTF16
- Tcl_SetVar2(interp, "sqlite_options", "utf16", "0", TCL_GLOBAL_ONLY);
- #else
---- /test/e_expr.test
-+++ /test/e_expr.test
-@@ -1078,7 +1078,7 @@
- #
- # There is a regexp function if ICU is enabled though.
- #
--ifcapable !icu {
-+ifcapable !icu&&!regexp {
- do_catchsql_test e_expr-18.1.1 {
- SELECT regexp('abc', 'def')
- } {1 {no such function: regexp}}
---- /test/icu.test
-+++ /test/icu.test
-@@ -41,7 +41,7 @@
- #
- test_expr icu-1.1 {i1='hello'} {i1 REGEXP 'hello'} 1
- test_expr icu-1.2 {i1='hello'} {i1 REGEXP '.ello'} 1
-- test_expr icu-1.3 {i1='hello'} {i1 REGEXP '.ell'} 0
-+ test_expr icu-1.3 {i1='hello'} {i1 REGEXP '.ell$'} 0
- test_expr icu-1.4 {i1='hello'} {i1 REGEXP '.ell.*'} 1
- test_expr icu-1.5 {i1=NULL} {i1 REGEXP '.ell.*'} {}
-
---- /test/pragma.test
-+++ /test/pragma.test
-@@ -1360,17 +1360,32 @@
- } ;# ifcapable trigger
-
- ifcapable schema_pragmas {
-- do_test pragma-11.1 {
-- execsql2 {
-- pragma collation_list;
-- }
-- } {seq 0 name RTRIM seq 1 name NOCASE seq 2 name BINARY}
-- do_test pragma-11.2 {
-- db collate New_Collation blah...
-- execsql {
-- pragma collation_list;
-- }
-- } {0 New_Collation 1 RTRIM 2 NOCASE 3 BINARY}
-+ ifcapable uint {
-+ do_test pragma-11.1 {
-+ execsql2 {
-+ pragma collation_list;
-+ }
-+ } {seq 0 name UINT seq 1 name RTRIM seq 2 name NOCASE seq 3 name BINARY}
-+ do_test pragma-11.2 {
-+ db collate New_Collation blah...
-+ execsql {
-+ pragma collation_list;
-+ }
-+ } {0 New_Collation 1 UINT 2 RTRIM 3 NOCASE 4 BINARY}
-+ }
-+ ifcapable !uint {
-+ do_test pragma-11.1 {
-+ execsql2 {
-+ pragma collation_list;
-+ }
-+ } {seq 0 name RTRIM seq 1 name NOCASE seq 2 name BINARY}
-+ do_test pragma-11.2 {
-+ db collate New_Collation blah...
-+ execsql {
-+ pragma collation_list;
-+ }
-+ } {0 New_Collation 1 RTRIM 2 NOCASE 3 BINARY}
-+ }
- }
-
- ifcapable schema_pragmas&&tempdb {
---- /test/sessionfuzz.c
-+++ /test/sessionfuzz.c
-@@ -700,42 +700,6 @@
- #include <assert.h>
- #include "zlib.h"
-
--/*
--** Implementation of the "sqlar_uncompress(X,SZ)" SQL function
--**
--** Parameter SZ is interpreted as an integer. If it is less than or
--** equal to zero, then this function returns a copy of X. Or, if
--** SZ is equal to the size of X when interpreted as a blob, also
--** return a copy of X. Otherwise, decompress blob X using zlib
--** utility function uncompress() and return the results (another
--** blob).
--*/
--static void sqlarUncompressFunc(
-- sqlite3_context *context,
-- int argc,
-- sqlite3_value **argv
--){
-- uLong nData;
-- uLongf sz;
--
-- assert( argc==2 );
-- sz = sqlite3_value_int(argv[1]);
--
-- if( sz<=0 || sz==(nData = sqlite3_value_bytes(argv[0])) ){
-- sqlite3_result_value(context, argv[0]);
-- }else{
-- const Bytef *pData= sqlite3_value_blob(argv[0]);
-- Bytef *pOut = sqlite3_malloc(sz);
-- if( Z_OK!=uncompress(pOut, &sz, pData, nData) ){
-- sqlite3_result_error(context, "error in uncompress()", -1);
-- }else{
-- sqlite3_result_blob(context, pOut, sz, SQLITE_TRANSIENT);
-- }
-- sqlite3_free(pOut);
-- }
--}
--
--
- /* Run a chunk of SQL. If any errors happen, print an error message
- ** and exit.
- */
---- /tool/mksqlite3c.tcl
-+++ /tool/mksqlite3c.tcl
-@@ -117,6 +117,7 @@
- rtree.h
- sqlite3session.h
- sqlite3.h
-+ sqlite3expert.h
- sqlite3ext.h
- sqlite3rbu.h
- sqliteicu.h
-@@ -404,6 +405,23 @@
- sqlite3session.c
- fts5.c
- stmt.c
-+ appendvfs.c
-+ carray.c
-+ completion.c
-+ csv.c
-+ dbdata.c
-+ eval.c
-+ fileio.c
-+ ieee754.c
-+ regexp.c
-+ sha1.c
-+ shathree.c
-+ sqlar.c
-+ sqlite3expert.c
-+ totype.c
-+ uint.c
-+ uuid.c
-+ zipfile.c
- } {
- copy_file tsrc/$file
- }
---- /tool/sqlite3_analyzer.c.in
-+++ /tool/sqlite3_analyzer.c.in
-@@ -14,9 +14,6 @@
- #define SQLITE_DEFAULT_MEMSTATUS 0
- #define SQLITE_MAX_EXPR_DEPTH 0
- #define SQLITE_OMIT_LOAD_EXTENSION 1
--#ifndef USE_EXTERNAL_SQLITE
--INCLUDE sqlite3.c
--#endif
- INCLUDE $ROOT/src/tclsqlite.c
-
- const char *sqlite3_analyzer_init_proc(Tcl_Interp *interp){
---- /tool/sqltclsh.c.in
-+++ /tool/sqltclsh.c.in
-@@ -27,21 +27,13 @@
- #define SQLITE_OMIT_SHARED_CACHE 1
- #define SQLITE_DEFAULT_MEMSTATUS 0
- #define SQLITE_MAX_EXPR_DEPTH 0
--INCLUDE sqlite3.c
--INCLUDE $ROOT/ext/misc/appendvfs.c
--#ifdef SQLITE_HAVE_ZLIB
--INCLUDE $ROOT/ext/misc/zipfile.c
--INCLUDE $ROOT/ext/misc/sqlar.c
--#endif
-+#include "sqlite3.h"
- INCLUDE $ROOT/src/tclsqlite.c
-
- const char *sqlite3_tclapp_init_proc(Tcl_Interp *interp){
- (void)interp;
-+ extern int sqlite3_appendvfs_init(sqlite3 *,char **, const sqlite3_api_routines *);
- sqlite3_appendvfs_init(0,0,0);
--#ifdef SQLITE_HAVE_ZLIB
-- sqlite3_auto_extension((void(*)(void))sqlite3_sqlar_init);
-- sqlite3_auto_extension((void(*)(void))sqlite3_zipfile_init);
--#endif
-
- return
- BEGIN_STRING
diff --git a/dev-db/sqlite/files/sqlite-3.32.3-security_fixes.patch b/dev-db/sqlite/files/sqlite-3.32.3-security_fixes.patch
deleted file mode 100644
index ad2a3bf..0000000
--- a/dev-db/sqlite/files/sqlite-3.32.3-security_fixes.patch
+++ /dev/null
@@ -1,146 +0,0 @@
-https://sqlite.org/src/info/cc888878ea8d5bc7
-https://sqlite.org/src/info/be545f85a6ef09cc
-https://sqlite.org/src/info/6e0ffa2053124168
-https://sqlite.org/src/info/4d0cfb1236884349
-
---- /ext/fts3/fts3.c
-+++ /ext/fts3/fts3.c
-@@ -5208,10 +5208,12 @@
- );
- if( res ){
- nNew = (int)(pOut - pPhrase->doclist.pList) - 1;
-- assert( pPhrase->doclist.pList[nNew]=='\0' );
-- assert( nNew<=pPhrase->doclist.nList && nNew>0 );
-- memset(&pPhrase->doclist.pList[nNew], 0, pPhrase->doclist.nList - nNew);
-- pPhrase->doclist.nList = nNew;
-+ if( nNew>=0 ){
-+ assert( pPhrase->doclist.pList[nNew]=='\0' );
-+ assert( nNew<=pPhrase->doclist.nList && nNew>0 );
-+ memset(&pPhrase->doclist.pList[nNew], 0, pPhrase->doclist.nList - nNew);
-+ pPhrase->doclist.nList = nNew;
-+ }
- *paPoslist = pPhrase->doclist.pList;
- *pnToken = pPhrase->nToken;
- }
---- /ext/fts3/fts3_write.c
-+++ /ext/fts3/fts3_write.c
-@@ -341,7 +341,9 @@
- ** created by merging the oldest :2 segments from absolute level :1. See
- ** function sqlite3Fts3Incrmerge() for details. */
- /* 29 */ "SELECT 2 * total(1 + leaves_end_block - start_block) "
-- " FROM %Q.'%q_segdir' WHERE level = ? AND idx < ?",
-+ " FROM (SELECT * FROM %Q.'%q_segdir' "
-+ " WHERE level = ? ORDER BY idx ASC LIMIT ?"
-+ " )",
-
- /* SQL_DELETE_SEGDIR_ENTRY
- ** Delete the %_segdir entry on absolute level :1 with index :2. */
-@@ -2853,6 +2855,19 @@
- return SQLITE_OK;
- }
-
-+static int fts3GrowSegReaderBuffer(Fts3MultiSegReader *pCsr, int nReq){
-+ if( nReq>pCsr->nBuffer ){
-+ char *aNew;
-+ pCsr->nBuffer = nReq*2;
-+ aNew = sqlite3_realloc(pCsr->aBuffer, pCsr->nBuffer);
-+ if( !aNew ){
-+ return SQLITE_NOMEM;
-+ }
-+ pCsr->aBuffer = aNew;
-+ }
-+ return SQLITE_OK;
-+}
-+
-
- int sqlite3Fts3SegReaderStep(
- Fts3Table *p, /* Virtual table handle */
-@@ -2987,15 +3002,9 @@
- }
-
- nByte = sqlite3Fts3VarintLen(iDelta) + (isRequirePos?nList+1:0);
-- if( nDoclist+nByte>pCsr->nBuffer ){
-- char *aNew;
-- pCsr->nBuffer = (nDoclist+nByte)*2;
-- aNew = sqlite3_realloc(pCsr->aBuffer, pCsr->nBuffer);
-- if( !aNew ){
-- return SQLITE_NOMEM;
-- }
-- pCsr->aBuffer = aNew;
-- }
-+
-+ rc = fts3GrowSegReaderBuffer(pCsr, nByte+nDoclist);
-+ if( rc ) return rc;
-
- if( isFirst ){
- char *a = &pCsr->aBuffer[nDoclist];
-@@ -3020,6 +3029,9 @@
- fts3SegReaderSort(apSegment, nMerge, j, xCmp);
- }
- if( nDoclist>0 ){
-+ rc = fts3GrowSegReaderBuffer(pCsr, nDoclist+FTS3_NODE_PADDING);
-+ if( rc ) return rc;
-+ memset(&pCsr->aBuffer[nDoclist], 0, FTS3_NODE_PADDING);
- pCsr->aDoclist = pCsr->aBuffer;
- pCsr->nDoclist = nDoclist;
- rc = SQLITE_ROW;
---- /src/expr.c
-+++ /src/expr.c
-@@ -4272,7 +4272,9 @@
- int nCol;
- testcase( op==TK_EXISTS );
- testcase( op==TK_SELECT );
-- if( op==TK_SELECT && (nCol = pExpr->x.pSelect->pEList->nExpr)!=1 ){
-+ if( pParse->db->mallocFailed ){
-+ return 0;
-+ }else if( op==TK_SELECT && (nCol = pExpr->x.pSelect->pEList->nExpr)!=1 ){
- sqlite3SubselectError(pParse, nCol, 1);
- }else{
- return sqlite3CodeSubselect(pParse, pExpr);
---- /test/fts3corrupt4.test
-+++ /test/fts3corrupt4.test
-@@ -6123,4 +6123,44 @@
- SELECT offsets(t1) FROM t1 WHERE t1 MATCH 'rtree ner "json1^enable"';
- }
-
-+#-------------------------------------------------------------------------
-+do_execsql_test 42.1 {
-+ CREATE VIRTUAL TABLE f USING fts3(a, b);
-+}
-+do_execsql_test 42.2 {
-+ INSERT INTO f_segdir VALUES(0,2,1111,0,0,X'00');
-+ INSERT INTO f_segdir VALUES(0,3,0 ,0,0,X'00013003010200');
-+}
-+do_execsql_test 42.3 {
-+ INSERT INTO f(f) VALUES ('merge=107,2');
-+}
-+
-+#-------------------------------------------------------------------------
-+reset_db
-+set saved $sqlite_fts3_enable_parentheses
-+set sqlite_fts3_enable_parentheses 1
-+do_execsql_test 43.1 {
-+ CREATE VIRTUAL TABLE def USING fts3(xyz);
-+ INSERT INTO def_segdir VALUES(0,0,0,0,0, X'0001310301c9000103323334050d81');
-+} {}
-+
-+do_execsql_test 43.2 {
-+ SELECT rowid FROM def WHERE def MATCH '1 NEAR 1'
-+} {1}
-+
-+set sqlite_fts3_enable_parentheses $saved
-+
-+#-------------------------------------------------------------------------
-+reset_db
-+do_execsql_test 44.1 {
-+ CREATE VIRTUAL TABLE t0 USING fts3(col0 INTEGER PRIMARY KEY,col1 VARCHAR(8),col2 BINARY,col3 BINARY);
-+ INSERT INTO t0_content VALUES(0,NULL,NULL,NULL,NULL);
-+ INSERT INTO t0_segdir VALUES(0,0,0,0,'0 42',X'00013103010200010332333405010201ba00000461616161050101020200000462626262050101030200');
-+}
-+
-+do_execsql_test 44.2 {
-+ SELECT matchinfo(t0, t0) IS NULL FROM t0 WHERE t0 MATCH '1*'
-+} {0}
-+
-+
- finish_test
diff --git a/dev-db/sqlite/files/sqlite-3.34.1-build_1.1.patch b/dev-db/sqlite/files/sqlite-3.34.1-build_1.1.patch
new file mode 100644
index 0000000..d7f759a
--- /dev/null
+++ b/dev-db/sqlite/files/sqlite-3.34.1-build_1.1.patch
@@ -0,0 +1,375 @@
+Add initialization functions for internal usage in libsqlite3.so.
+
+SQLite revision: 10e20c0b43500cfb9bbc0eaa061c57514f715d87238f4d835880cd846b9ebd1f
+
+--- /ext/misc/amatch.c
++++ /ext/misc/amatch.c
+@@ -1480,9 +1480,18 @@
+
+ #endif /* SQLITE_OMIT_VIRTUALTABLE */
+
++int sqlite3AmatchInit(sqlite3 *db){
++ int rc = SQLITE_OK;
++#ifndef SQLITE_OMIT_VIRTUALTABLE
++ rc = sqlite3_create_module(db, "approximate_match", &amatchModule, 0);
++#endif /* SQLITE_OMIT_VIRTUALTABLE */
++ return rc;
++}
++
+ /*
+ ** Register the amatch virtual table
+ */
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
+ #ifdef _WIN32
+ __declspec(dllexport)
+ #endif
+@@ -1491,11 +1500,8 @@
+ char **pzErrMsg,
+ const sqlite3_api_routines *pApi
+ ){
+- int rc = SQLITE_OK;
+ SQLITE_EXTENSION_INIT2(pApi);
+ (void)pzErrMsg; /* Not used */
+-#ifndef SQLITE_OMIT_VIRTUALTABLE
+- rc = sqlite3_create_module(db, "approximate_match", &amatchModule, 0);
+-#endif /* SQLITE_OMIT_VIRTUALTABLE */
+- return rc;
++ return sqlite3AmatchInit(db);
+ }
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
+--- /ext/misc/carray.c
++++ /ext/misc/carray.c
+@@ -498,16 +498,8 @@
+
+ #endif /* SQLITE_OMIT_VIRTUALTABLE */
+
+-#ifdef _WIN32
+-__declspec(dllexport)
+-#endif
+-int sqlite3_carray_init(
+- sqlite3 *db,
+- char **pzErrMsg,
+- const sqlite3_api_routines *pApi
+-){
++int sqlite3CarrayInit(sqlite3 *db){
+ int rc = SQLITE_OK;
+- SQLITE_EXTENSION_INIT2(pApi);
+ #ifndef SQLITE_OMIT_VIRTUALTABLE
+ rc = sqlite3_create_module(db, "carray", &carrayModule, 0);
+ #ifdef SQLITE_TEST
+@@ -519,3 +511,18 @@
+ #endif /* SQLITE_OMIT_VIRTUALTABLE */
+ return rc;
+ }
++
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
++#ifdef _WIN32
++__declspec(dllexport)
++#endif
++int sqlite3_carray_init(
++ sqlite3 *db,
++ char **pzErrMsg,
++ const sqlite3_api_routines *pApi
++){
++ SQLITE_EXTENSION_INIT2(pApi);
++ (void)pzErrMsg; /* Unused parameter */
++ return sqlite3CarrayInit(db);
++}
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
+--- /ext/misc/completion.c
++++ /ext/misc/completion.c
+@@ -483,12 +483,13 @@
+ return rc;
+ }
+
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
+ #ifdef _WIN32
+ __declspec(dllexport)
+ #endif
+ int sqlite3_completion_init(
+- sqlite3 *db,
+- char **pzErrMsg,
++ sqlite3 *db,
++ char **pzErrMsg,
+ const sqlite3_api_routines *pApi
+ ){
+ int rc = SQLITE_OK;
+@@ -499,3 +500,4 @@
+ #endif
+ return rc;
+ }
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
+--- /ext/misc/csv.c
++++ /ext/misc/csv.c
+@@ -928,6 +928,22 @@
+ #endif /* !defined(SQLITE_OMIT_VIRTUALTABLE) */
+
+
++int sqlite3CsvInit(sqlite3 *db){
++#ifndef SQLITE_OMIT_VIRTUALTABLE
++ int rc;
++ rc = sqlite3_create_module(db, "csv", &CsvModule, 0);
++#ifdef SQLITE_TEST
++ if( rc==SQLITE_OK ){
++ rc = sqlite3_create_module(db, "csv_wr", &CsvModuleFauxWrite, 0);
++ }
++#endif
++ return rc;
++#else
++ return SQLITE_OK;
++#endif
++}
++
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
+ #ifdef _WIN32
+ __declspec(dllexport)
+ #endif
+@@ -941,17 +957,8 @@
+ char **pzErrMsg,
+ const sqlite3_api_routines *pApi
+ ){
+-#ifndef SQLITE_OMIT_VIRTUALTABLE
+- int rc;
+ SQLITE_EXTENSION_INIT2(pApi);
+- rc = sqlite3_create_module(db, "csv", &CsvModule, 0);
+-#ifdef SQLITE_TEST
+- if( rc==SQLITE_OK ){
+- rc = sqlite3_create_module(db, "csv_wr", &CsvModuleFauxWrite, 0);
+- }
+-#endif
+- return rc;
+-#else
+- return SQLITE_OK;
+-#endif
++ (void)pzErrMsg; /* Unused parameter */
++ return sqlite3CsvInit(db);
+ }
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
+--- /ext/misc/dbdata.c
++++ /ext/misc/dbdata.c
+@@ -803,7 +803,7 @@
+ /*
+ ** Invoke this routine to register the "sqlite_dbdata" virtual table module
+ */
+-static int sqlite3DbdataRegister(sqlite3 *db){
++int sqlite3DbdataRegister(sqlite3 *db){
+ static sqlite3_module dbdata_module = {
+ 0, /* iVersion */
+ 0, /* xCreate */
+@@ -838,6 +838,7 @@
+ return rc;
+ }
+
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
+ #ifdef _WIN32
+ __declspec(dllexport)
+ #endif
+@@ -849,3 +850,4 @@
+ SQLITE_EXTENSION_INIT2(pApi);
+ return sqlite3DbdataRegister(db);
+ }
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
+--- /ext/misc/decimal.c
++++ /ext/misc/decimal.c
+@@ -590,14 +590,7 @@
+ decimal_free(pB);
+ }
+
+-#ifdef _WIN32
+-__declspec(dllexport)
+-#endif
+-int sqlite3_decimal_init(
+- sqlite3 *db,
+- char **pzErrMsg,
+- const sqlite3_api_routines *pApi
+-){
++int sqlite3DecimalInit(sqlite3 *db){
+ int rc = SQLITE_OK;
+ static const struct {
+ const char *zFuncName;
+@@ -611,10 +604,6 @@
+ { "decimal_mul", 2, decimalMulFunc },
+ };
+ unsigned int i;
+- (void)pzErrMsg; /* Unused parameter */
+-
+- SQLITE_EXTENSION_INIT2(pApi);
+-
+ for(i=0; i<sizeof(aFunc)/sizeof(aFunc[0]) && rc==SQLITE_OK; i++){
+ rc = sqlite3_create_function(db, aFunc[i].zFuncName, aFunc[i].nArg,
+ SQLITE_UTF8|SQLITE_INNOCUOUS|SQLITE_DETERMINISTIC,
+@@ -632,3 +621,20 @@
+ }
+ return rc;
+ }
++
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
++#ifdef _WIN32
++__declspec(dllexport)
++#endif
++int sqlite3_decimal_init(
++ sqlite3 *db,
++ char **pzErrMsg,
++ const sqlite3_api_routines *pApi
++){
++ (void)pzErrMsg; /* Unused parameter */
++
++ SQLITE_EXTENSION_INIT2(pApi);
++
++ return sqlite3DecimalInit(db);
++}
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
+--- /ext/misc/eval.c
++++ /ext/misc/eval.c
+@@ -102,6 +102,20 @@
+ }
+
+
++int sqlite3EvalInit(sqlite3 *db){
++ int rc = SQLITE_OK;
++ rc = sqlite3_create_function(db, "eval", 1,
++ SQLITE_UTF8|SQLITE_DIRECTONLY, 0,
++ sqlEvalFunc, 0, 0);
++ if( rc==SQLITE_OK ){
++ rc = sqlite3_create_function(db, "eval", 2,
++ SQLITE_UTF8|SQLITE_DIRECTONLY, 0,
++ sqlEvalFunc, 0, 0);
++ }
++ return rc;
++}
++
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
+ #ifdef _WIN32
+ __declspec(dllexport)
+ #endif
+@@ -110,16 +124,8 @@
+ char **pzErrMsg,
+ const sqlite3_api_routines *pApi
+ ){
+- int rc = SQLITE_OK;
+ SQLITE_EXTENSION_INIT2(pApi);
+ (void)pzErrMsg; /* Unused parameter */
+- rc = sqlite3_create_function(db, "eval", 1,
+- SQLITE_UTF8|SQLITE_DIRECTONLY, 0,
+- sqlEvalFunc, 0, 0);
+- if( rc==SQLITE_OK ){
+- rc = sqlite3_create_function(db, "eval", 2,
+- SQLITE_UTF8|SQLITE_DIRECTONLY, 0,
+- sqlEvalFunc, 0, 0);
+- }
+- return rc;
++ return sqlite3EvalInit(db);
+ }
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
+--- /ext/misc/fileio.c
++++ /ext/misc/fileio.c
+@@ -340,7 +340,7 @@
+ ** This function does the work for the writefile() UDF. Refer to
+ ** header comments at the top of this file for details.
+ */
+-static int writeFile(
++static int writeFileContents(
+ sqlite3_context *pCtx, /* Context to return bytes written in */
+ const char *zFile, /* File to write */
+ sqlite3_value *pData, /* Data to write */
+@@ -480,10 +480,10 @@
+ mtime = sqlite3_value_int64(argv[3]);
+ }
+
+- res = writeFile(context, zFile, argv[1], mode, mtime);
++ res = writeFileContents(context, zFile, argv[1], mode, mtime);
+ if( res==1 && errno==ENOENT ){
+ if( makeDirectory(zFile)==SQLITE_OK ){
+- res = writeFile(context, zFile, argv[1], mode, mtime);
++ res = writeFileContents(context, zFile, argv[1], mode, mtime);
+ }
+ }
+
+@@ -970,18 +970,9 @@
+ # define fsdirRegister(x) SQLITE_OK
+ #endif
+
+-#ifdef _WIN32
+-__declspec(dllexport)
+-#endif
+-int sqlite3_fileio_init(
+- sqlite3 *db,
+- char **pzErrMsg,
+- const sqlite3_api_routines *pApi
+-){
++int sqlite3FileioInit(sqlite3 *db){
+ int rc = SQLITE_OK;
+- SQLITE_EXTENSION_INIT2(pApi);
+- (void)pzErrMsg; /* Unused parameter */
+- rc = sqlite3_create_function(db, "readfile", 1,
++ rc = sqlite3_create_function(db, "readfile", 1,
+ SQLITE_UTF8|SQLITE_DIRECTONLY, 0,
+ readfileFunc, 0, 0);
+ if( rc==SQLITE_OK ){
+@@ -998,3 +989,18 @@
+ }
+ return rc;
+ }
++
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
++#ifdef _WIN32
++__declspec(dllexport)
++#endif
++int sqlite3_fileio_init(
++ sqlite3 *db,
++ char **pzErrMsg,
++ const sqlite3_api_routines *pApi
++){
++ SQLITE_EXTENSION_INIT2(pApi);
++ (void)pzErrMsg; /* Unused parameter */
++ return sqlite3FileioInit(db);
++}
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
+--- /ext/misc/ieee754.c
++++ /ext/misc/ieee754.c
+@@ -245,14 +245,7 @@
+ }
+
+
+-#ifdef _WIN32
+-__declspec(dllexport)
+-#endif
+-int sqlite3_ieee_init(
+- sqlite3 *db,
+- char **pzErrMsg,
+- const sqlite3_api_routines *pApi
+-){
++int sqlite3IeeeInit(sqlite3 *db){
+ static const struct {
+ char *zFName;
+ int nArg;
+@@ -269,13 +262,26 @@
+ };
+ unsigned int i;
+ int rc = SQLITE_OK;
+- SQLITE_EXTENSION_INIT2(pApi);
+- (void)pzErrMsg; /* Unused parameter */
+ for(i=0; i<sizeof(aFunc)/sizeof(aFunc[0]) && rc==SQLITE_OK; i++){
+- rc = sqlite3_create_function(db, aFunc[i].zFName, aFunc[i].nArg,
++ rc = sqlite3_create_function(db, aFunc[i].zFName, aFunc[i].nArg,
+ SQLITE_UTF8|SQLITE_INNOCUOUS,
+ (void*)&aFunc[i].iAux,
+ aFunc[i].xFunc, 0, 0);
+ }
+ return rc;
+ }
++
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
++#ifdef _WIN32
++__declspec(dllexport)
++#endif
++int sqlite3_ieee_init(
++ sqlite3 *db,
++ char **pzErrMsg,
++ const sqlite3_api_routines *pApi
++){
++ SQLITE_EXTENSION_INIT2(pApi);
++ (void)pzErrMsg; /* Unused parameter */
++ return sqlite3IeeeInit(db);
++}
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
diff --git a/dev-db/sqlite/files/sqlite-3.32.1-full_archive-build_1.patch b/dev-db/sqlite/files/sqlite-3.34.1-build_1.2.patch
similarity index 65%
copy from dev-db/sqlite/files/sqlite-3.32.1-full_archive-build_1.patch
copy to dev-db/sqlite/files/sqlite-3.34.1-build_1.2.patch
index aec90e4..5c5d6e9 100644
--- a/dev-db/sqlite/files/sqlite-3.32.1-full_archive-build_1.patch
+++ b/dev-db/sqlite/files/sqlite-3.34.1-build_1.2.patch
@@ -1,225 +1,29 @@
Add initialization functions for internal usage in libsqlite3.so.
---- /ext/misc/carray.c
-+++ /ext/misc/carray.c
-@@ -383,16 +383,8 @@
-
- #endif /* SQLITE_OMIT_VIRTUALTABLE */
+SQLite revision: 10e20c0b43500cfb9bbc0eaa061c57514f715d87238f4d835880cd846b9ebd1f
+
+--- /ext/misc/nextchar.c
++++ /ext/misc/nextchar.c
+@@ -286,17 +286,8 @@
+ sqlite3_free(c.aResult);
+ }
-#ifdef _WIN32
-__declspec(dllexport)
-#endif
--int sqlite3_carray_init(
+-int sqlite3_nextchar_init(
- sqlite3 *db,
- char **pzErrMsg,
- const sqlite3_api_routines *pApi
-){
-+int sqlite3CarrayInit(sqlite3 *db){
- int rc = SQLITE_OK;
-- SQLITE_EXTENSION_INIT2(pApi);
- #ifndef SQLITE_OMIT_VIRTUALTABLE
- rc = sqlite3_create_module(db, "carray", &carrayModule, 0);
- #ifdef SQLITE_TEST
-@@ -404,3 +396,18 @@
- #endif /* SQLITE_OMIT_VIRTUALTABLE */
- return rc;
- }
-+
-+#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
-+#ifdef _WIN32
-+__declspec(dllexport)
-+#endif
-+int sqlite3_carray_init(
-+ sqlite3 *db,
-+ char **pzErrMsg,
-+ const sqlite3_api_routines *pApi
-+){
-+ SQLITE_EXTENSION_INIT2(pApi);
-+ (void)pzErrMsg; /* Unused parameter */
-+ return sqlite3CarrayInit(db);
-+}
-+#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
---- /ext/misc/completion.c
-+++ /ext/misc/completion.c
-@@ -483,12 +483,13 @@
- return rc;
- }
-
-+#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
- #ifdef _WIN32
- __declspec(dllexport)
- #endif
- int sqlite3_completion_init(
-- sqlite3 *db,
-- char **pzErrMsg,
-+ sqlite3 *db,
-+ char **pzErrMsg,
- const sqlite3_api_routines *pApi
- ){
- int rc = SQLITE_OK;
-@@ -499,3 +500,4 @@
- #endif
- return rc;
- }
-+#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
---- /ext/misc/csv.c
-+++ /ext/misc/csv.c
-@@ -928,6 +928,22 @@
- #endif /* !defined(SQLITE_OMIT_VIRTUALTABLE) */
-
-
-+int sqlite3CsvInit(sqlite3 *db){
-+#ifndef SQLITE_OMIT_VIRTUALTABLE
-+ int rc;
-+ rc = sqlite3_create_module(db, "csv", &CsvModule, 0);
-+#ifdef SQLITE_TEST
-+ if( rc==SQLITE_OK ){
-+ rc = sqlite3_create_module(db, "csv_wr", &CsvModuleFauxWrite, 0);
-+ }
-+#endif
-+ return rc;
-+#else
-+ return SQLITE_OK;
-+#endif
-+}
-+
-+#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
- #ifdef _WIN32
- __declspec(dllexport)
- #endif
-@@ -941,17 +957,8 @@
- char **pzErrMsg,
- const sqlite3_api_routines *pApi
- ){
--#ifndef SQLITE_OMIT_VIRTUALTABLE
-- int rc;
- SQLITE_EXTENSION_INIT2(pApi);
-- rc = sqlite3_create_module(db, "csv", &CsvModule, 0);
--#ifdef SQLITE_TEST
-- if( rc==SQLITE_OK ){
-- rc = sqlite3_create_module(db, "csv_wr", &CsvModuleFauxWrite, 0);
-- }
--#endif
-- return rc;
--#else
-- return SQLITE_OK;
--#endif
-+ (void)pzErrMsg; /* Unused parameter */
-+ return sqlite3CsvInit(db);
- }
-+#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
---- /ext/misc/dbdata.c
-+++ /ext/misc/dbdata.c
-@@ -803,7 +803,7 @@
- /*
- ** Invoke this routine to register the "sqlite_dbdata" virtual table module
- */
--static int sqlite3DbdataRegister(sqlite3 *db){
-+int sqlite3DbdataRegister(sqlite3 *db){
- static sqlite3_module dbdata_module = {
- 0, /* iVersion */
- 0, /* xCreate */
-@@ -838,6 +838,7 @@
- return rc;
- }
-
-+#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
- #ifdef _WIN32
- __declspec(dllexport)
- #endif
-@@ -849,3 +850,4 @@
- SQLITE_EXTENSION_INIT2(pApi);
- return sqlite3DbdataRegister(db);
- }
-+#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
---- /ext/misc/eval.c
-+++ /ext/misc/eval.c
-@@ -102,6 +102,20 @@
- }
-
-
-+int sqlite3EvalInit(sqlite3 *db){
-+ int rc = SQLITE_OK;
-+ rc = sqlite3_create_function(db, "eval", 1,
-+ SQLITE_UTF8|SQLITE_DIRECTONLY, 0,
-+ sqlEvalFunc, 0, 0);
-+ if( rc==SQLITE_OK ){
-+ rc = sqlite3_create_function(db, "eval", 2,
-+ SQLITE_UTF8|SQLITE_DIRECTONLY, 0,
-+ sqlEvalFunc, 0, 0);
-+ }
-+ return rc;
-+}
-+
-+#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
- #ifdef _WIN32
- __declspec(dllexport)
- #endif
-@@ -110,16 +124,8 @@
- char **pzErrMsg,
- const sqlite3_api_routines *pApi
- ){
-- int rc = SQLITE_OK;
- SQLITE_EXTENSION_INIT2(pApi);
- (void)pzErrMsg; /* Unused parameter */
-- rc = sqlite3_create_function(db, "eval", 1,
-- SQLITE_UTF8|SQLITE_DIRECTONLY, 0,
-- sqlEvalFunc, 0, 0);
-- if( rc==SQLITE_OK ){
-- rc = sqlite3_create_function(db, "eval", 2,
-- SQLITE_UTF8|SQLITE_DIRECTONLY, 0,
-- sqlEvalFunc, 0, 0);
-- }
-- return rc;
-+ return sqlite3EvalInit(db);
- }
-+#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
---- /ext/misc/fileio.c
-+++ /ext/misc/fileio.c
-@@ -340,7 +340,7 @@
- ** This function does the work for the writefile() UDF. Refer to
- ** header comments at the top of this file for details.
- */
--static int writeFile(
-+static int writeFileContents(
- sqlite3_context *pCtx, /* Context to return bytes written in */
- const char *zFile, /* File to write */
- sqlite3_value *pData, /* Data to write */
-@@ -480,10 +480,10 @@
- mtime = sqlite3_value_int64(argv[3]);
- }
-
-- res = writeFile(context, zFile, argv[1], mode, mtime);
-+ res = writeFileContents(context, zFile, argv[1], mode, mtime);
- if( res==1 && errno==ENOENT ){
- if( makeDirectory(zFile)==SQLITE_OK ){
-- res = writeFile(context, zFile, argv[1], mode, mtime);
-+ res = writeFileContents(context, zFile, argv[1], mode, mtime);
- }
- }
-
-@@ -970,18 +970,9 @@
- # define fsdirRegister(x) SQLITE_OK
- #endif
-
--#ifdef _WIN32
--__declspec(dllexport)
--#endif
--int sqlite3_fileio_init(
-- sqlite3 *db,
-- char **pzErrMsg,
-- const sqlite3_api_routines *pApi
--){
-+int sqlite3FileioInit(sqlite3 *db){
++int sqlite3NextcharInit(sqlite3 *db){
int rc = SQLITE_OK;
- SQLITE_EXTENSION_INIT2(pApi);
- (void)pzErrMsg; /* Unused parameter */
-- rc = sqlite3_create_function(db, "readfile", 1,
-+ rc = sqlite3_create_function(db, "readfile", 1,
- SQLITE_UTF8|SQLITE_DIRECTONLY, 0,
- readfileFunc, 0, 0);
- if( rc==SQLITE_OK ){
-@@ -998,3 +989,18 @@
+ rc = sqlite3_create_function(db, "next_char", 3,
+ SQLITE_UTF8|SQLITE_INNOCUOUS, 0,
+ nextCharFunc, 0, 0);
+@@ -312,3 +303,18 @@
}
return rc;
}
@@ -228,32 +32,27 @@
+#ifdef _WIN32
+__declspec(dllexport)
+#endif
-+int sqlite3_fileio_init(
++int sqlite3_nextchar_init(
+ sqlite3 *db,
+ char **pzErrMsg,
+ const sqlite3_api_routines *pApi
+){
+ SQLITE_EXTENSION_INIT2(pApi);
+ (void)pzErrMsg; /* Unused parameter */
-+ return sqlite3FileioInit(db);
++ return sqlite3NextcharInit(db);
+}
+#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
---- /ext/misc/ieee754.c
-+++ /ext/misc/ieee754.c
-@@ -110,6 +110,20 @@
+--- /ext/misc/percentile.c
++++ /ext/misc/percentile.c
+@@ -202,6 +202,15 @@
}
-+int sqlite3IeeeInit(sqlite3 *db){
++int sqlite3PercentileInit(sqlite3 *db){
+ int rc = SQLITE_OK;
-+ rc = sqlite3_create_function(db, "ieee754", 1,
++ rc = sqlite3_create_function(db, "percentile", 2,
+ SQLITE_UTF8|SQLITE_INNOCUOUS, 0,
-+ ieee754func, 0, 0);
-+ if( rc==SQLITE_OK ){
-+ rc = sqlite3_create_function(db, "ieee754", 2,
-+ SQLITE_UTF8|SQLITE_INNOCUOUS, 0,
-+ ieee754func, 0, 0);
-+ }
++ 0, percentStep, percentFinal);
+ return rc;
+}
+
@@ -261,23 +60,18 @@
#ifdef _WIN32
__declspec(dllexport)
#endif
-@@ -118,16 +132,8 @@
+@@ -210,11 +219,8 @@
char **pzErrMsg,
const sqlite3_api_routines *pApi
){
- int rc = SQLITE_OK;
SQLITE_EXTENSION_INIT2(pApi);
(void)pzErrMsg; /* Unused parameter */
-- rc = sqlite3_create_function(db, "ieee754", 1,
+- rc = sqlite3_create_function(db, "percentile", 2,
- SQLITE_UTF8|SQLITE_INNOCUOUS, 0,
-- ieee754func, 0, 0);
-- if( rc==SQLITE_OK ){
-- rc = sqlite3_create_function(db, "ieee754", 2,
-- SQLITE_UTF8|SQLITE_INNOCUOUS, 0,
-- ieee754func, 0, 0);
-- }
+- 0, percentStep, percentFinal);
- return rc;
-+ return sqlite3IeeeInit(db);
++ return sqlite3PercentileInit(db);
}
+#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
--- /ext/misc/regexp.c
@@ -314,6 +108,42 @@
+ return sqlite3RegexpInit(db);
}
+#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
+--- /ext/misc/series.c
++++ /ext/misc/series.c
+@@ -413,6 +413,15 @@
+
+ #endif /* SQLITE_OMIT_VIRTUALTABLE */
+
++int sqlite3SeriesInit(sqlite3 *db){
++ int rc = SQLITE_OK;
++#ifndef SQLITE_OMIT_VIRTUALTABLE
++ rc = sqlite3_create_module(db, "generate_series", &seriesModule, 0);
++#endif
++ return rc;
++}
++
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
+ #ifdef _WIN32
+ __declspec(dllexport)
+ #endif
+@@ -421,7 +430,6 @@
+ char **pzErrMsg,
+ const sqlite3_api_routines *pApi
+ ){
+- int rc = SQLITE_OK;
+ SQLITE_EXTENSION_INIT2(pApi);
+ #ifndef SQLITE_OMIT_VIRTUALTABLE
+ if( sqlite3_libversion_number()<3008012 ){
+@@ -429,7 +437,7 @@
+ "generate_series() requires SQLite 3.8.12 or later");
+ return SQLITE_ERROR;
+ }
+- rc = sqlite3_create_module(db, "generate_series", &seriesModule, 0);
+ #endif
+- return rc;
++ return sqlite3SeriesInit(db);
+ }
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
--- /ext/misc/sha1.c
+++ /ext/misc/sha1.c
@@ -175,7 +175,7 @@
@@ -402,16 +232,16 @@
SHA3Context *p, /* Add content to this context */
const char *zFormat,
...
-@@ -622,7 +622,7 @@
- nCol = sqlite3_column_count(pStmt);
+@@ -623,7 +623,7 @@
z = sqlite3_sql(pStmt);
- n = (int)strlen(z);
-- hash_step_vformat(&cx,"S%d:",n);
-+ sha3_hash_step_vformat(&cx,"S%d:",n);
- SHA3Update(&cx,(unsigned char*)z,n);
+ if( z ){
+ n = (int)strlen(z);
+- hash_step_vformat(&cx,"S%d:",n);
++ sha3_hash_step_vformat(&cx,"S%d:",n);
+ SHA3Update(&cx,(unsigned char*)z,n);
+ }
- /* Compute a hash over the result of the query */
-@@ -665,14 +665,14 @@
+@@ -667,14 +667,14 @@
case SQLITE_TEXT: {
int n2 = sqlite3_column_bytes(pStmt, i);
const unsigned char *z2 = sqlite3_column_text(pStmt, i);
@@ -428,7 +258,7 @@
SHA3Update(&cx, z2, n2);
break;
}
-@@ -685,17 +685,8 @@
+@@ -687,17 +687,8 @@
}
@@ -447,7 +277,7 @@
rc = sqlite3_create_function(db, "sha3", 1,
SQLITE_UTF8 | SQLITE_INNOCUOUS | SQLITE_DETERMINISTIC,
0, sha3Func, 0, 0);
-@@ -716,3 +707,18 @@
+@@ -718,3 +709,18 @@
}
return rc;
}
@@ -637,7 +467,7 @@
#include "sqlite3ext.h"
SQLITE_EXTENSION_INIT1
#include <stdio.h>
-@@ -2137,7 +2139,7 @@
+@@ -2139,7 +2141,7 @@
/*
** Register the "zipfile" virtual table.
*/
@@ -646,7 +476,7 @@
static sqlite3_module zipfileModule = {
1, /* iVersion */
zipfileConnect, /* xCreate */
-@@ -2171,9 +2173,10 @@
+@@ -2173,9 +2175,10 @@
return rc;
}
#else /* SQLITE_OMIT_VIRTUALTABLE */
@@ -658,7 +488,7 @@
#ifdef _WIN32
__declspec(dllexport)
#endif
-@@ -2184,5 +2187,8 @@
+@@ -2186,5 +2189,8 @@
){
SQLITE_EXTENSION_INIT2(pApi);
(void)pzErrMsg; /* Unused parameter */
diff --git a/dev-db/sqlite/files/sqlite-3.34.1-build_2.1.patch b/dev-db/sqlite/files/sqlite-3.34.1-build_2.1.patch
new file mode 100644
index 0000000..fe5fb7e
--- /dev/null
+++ b/dev-db/sqlite/files/sqlite-3.34.1-build_2.1.patch
@@ -0,0 +1,291 @@
+Move some code to libsqlite3.so to avoid duplication.
+Link executables against libsqlite3.so.
+Increase timeout for fuzzcheck.
+Update list of optionally available functions.
+Fix building with dlopen() not available.
+
+SQLite revision: 10e20c0b43500cfb9bbc0eaa061c57514f715d87238f4d835880cd846b9ebd1f
+
+--- /Makefile.in
++++ /Makefile.in
+@@ -313,6 +313,9 @@
+ # Source code for extensions
+ #
+ SRC += \
++ $(TOP)/ext/expert/sqlite3expert.c \
++ $(TOP)/ext/expert/sqlite3expert.h
++SRC += \
+ $(TOP)/ext/fts1/fts1.c \
+ $(TOP)/ext/fts1/fts1.h \
+ $(TOP)/ext/fts1/fts1_hash.c \
+@@ -365,8 +368,29 @@
+ $(TOP)/ext/rbu/sqlite3rbu.h \
+ $(TOP)/ext/rbu/sqlite3rbu.c
+ SRC += \
++ $(TOP)/ext/misc/amatch.c \
++ $(TOP)/ext/misc/appendvfs.c \
++ $(TOP)/ext/misc/carray.c \
++ $(TOP)/ext/misc/completion.c \
++ $(TOP)/ext/misc/csv.c \
++ $(TOP)/ext/misc/dbdata.c \
++ $(TOP)/ext/misc/decimal.c \
++ $(TOP)/ext/misc/eval.c \
++ $(TOP)/ext/misc/fileio.c \
++ $(TOP)/ext/misc/ieee754.c \
+ $(TOP)/ext/misc/json1.c \
+- $(TOP)/ext/misc/stmt.c
++ $(TOP)/ext/misc/nextchar.c \
++ $(TOP)/ext/misc/percentile.c \
++ $(TOP)/ext/misc/regexp.c \
++ $(TOP)/ext/misc/series.c \
++ $(TOP)/ext/misc/sha1.c \
++ $(TOP)/ext/misc/shathree.c \
++ $(TOP)/ext/misc/sqlar.c \
++ $(TOP)/ext/misc/stmt.c \
++ $(TOP)/ext/misc/totype.c \
++ $(TOP)/ext/misc/uint.c \
++ $(TOP)/ext/misc/uuid.c \
++ $(TOP)/ext/misc/zipfile.c
+
+ # Generated source code files
+ #
+@@ -437,35 +461,21 @@
+ # Statically linked extensions
+ #
+ TESTSRC += \
+- $(TOP)/ext/expert/sqlite3expert.c \
+ $(TOP)/ext/expert/test_expert.c \
+- $(TOP)/ext/misc/amatch.c \
+- $(TOP)/ext/misc/carray.c \
+ $(TOP)/ext/misc/cksumvfs.c \
+ $(TOP)/ext/misc/closure.c \
+- $(TOP)/ext/misc/csv.c \
+- $(TOP)/ext/misc/decimal.c \
+- $(TOP)/ext/misc/eval.c \
+ $(TOP)/ext/misc/explain.c \
+- $(TOP)/ext/misc/fileio.c \
+ $(TOP)/ext/misc/fuzzer.c \
+ $(TOP)/ext/fts5/fts5_tcl.c \
+ $(TOP)/ext/fts5/fts5_test_mi.c \
+ $(TOP)/ext/fts5/fts5_test_tok.c \
+- $(TOP)/ext/misc/ieee754.c \
+ $(TOP)/ext/misc/mmapwarm.c \
+- $(TOP)/ext/misc/nextchar.c \
+ $(TOP)/ext/misc/normalize.c \
+- $(TOP)/ext/misc/percentile.c \
+ $(TOP)/ext/misc/prefixes.c \
+- $(TOP)/ext/misc/regexp.c \
+ $(TOP)/ext/misc/remember.c \
+- $(TOP)/ext/misc/series.c \
+ $(TOP)/ext/misc/spellfix.c \
+- $(TOP)/ext/misc/totype.c \
+ $(TOP)/ext/misc/unionvtab.c \
+ $(TOP)/ext/misc/wholenumber.c \
+- $(TOP)/ext/misc/zipfile.c \
+ $(TOP)/ext/userauth/userauth.c
+
+ # Source code to the library files needed by the test fixture
+@@ -647,25 +657,25 @@
+
+ libtclsqlite3.la: tclsqlite.lo libsqlite3.la
+ $(LTLINK) -no-undefined -o $@ tclsqlite.lo \
+- libsqlite3.la @TCL_STUB_LIB_SPEC@ $(TLIBS) \
++ libsqlite3.la @TCL_STUB_LIB_SPEC@ \
+ -rpath "$(TCLLIBDIR)" \
+ -version-info "8:6:8" \
+ -avoid-version
+
+-sqlite3$(TEXE): shell.c sqlite3.c
+- $(LTLINK) $(READLINE_FLAGS) $(SHELL_OPT) -o $@ \
+- shell.c sqlite3.c \
+- $(LIBREADLINE) $(TLIBS) -rpath "$(libdir)"
++sqlite3$(TEXE): shell.c libsqlite3.la
++ $(LTLINK) $(READLINE_FLAGS) -o $@ \
++ shell.c libsqlite3.la \
++ $(LIBREADLINE)
+
+-sqldiff$(TEXE): $(TOP)/tool/sqldiff.c sqlite3.lo sqlite3.h
+- $(LTLINK) -o $@ $(TOP)/tool/sqldiff.c sqlite3.lo $(TLIBS)
++sqldiff$(TEXE): $(TOP)/tool/sqldiff.c libsqlite3.la
++ $(LTLINK) -o $@ $(TOP)/tool/sqldiff.c libsqlite3.la
+
+-dbhash$(TEXE): $(TOP)/tool/dbhash.c sqlite3.lo sqlite3.h
+- $(LTLINK) -o $@ $(TOP)/tool/dbhash.c sqlite3.lo $(TLIBS)
++dbhash$(TEXE): $(TOP)/tool/dbhash.c libsqlite3.la
++ $(LTLINK) -o $@ $(TOP)/tool/dbhash.c libsqlite3.la
+
+-scrub$(TEXE): $(TOP)/ext/misc/scrub.c sqlite3.lo
++scrub$(TEXE): $(TOP)/ext/misc/scrub.c libsqlite3.la
+ $(LTLINK) -o $@ -I. -DSCRUB_STANDALONE \
+- $(TOP)/ext/misc/scrub.c sqlite3.lo $(TLIBS)
++ $(TOP)/ext/misc/scrub.c libsqlite3.la
+
+ srcck1$(BEXE): $(TOP)/tool/srcck1.c
+ $(BCC) -o srcck1$(BEXE) $(TOP)/tool/srcck1.c
+@@ -776,7 +786,7 @@
+ # Rule to build the amalgamation
+ #
+ sqlite3.lo: sqlite3.c
+- $(LTCOMPILE) $(TEMP_STORE) -c sqlite3.c
++ $(LTCOMPILE) $(SHELL_OPT) $(TEMP_STORE) -c sqlite3.c
+
+ # Rules to build the LEMON compiler generator
+ #
+@@ -1082,18 +1092,6 @@
+ # Source files that go into making shell.c
+ SHELL_SRC = \
+ $(TOP)/src/shell.c.in \
+- $(TOP)/ext/misc/appendvfs.c \
+- $(TOP)/ext/misc/completion.c \
+- $(TOP)/ext/misc/decimal.c \
+- $(TOP)/ext/misc/fileio.c \
+- $(TOP)/ext/misc/ieee754.c \
+- $(TOP)/ext/misc/series.c \
+- $(TOP)/ext/misc/shathree.c \
+- $(TOP)/ext/misc/sqlar.c \
+- $(TOP)/ext/misc/uint.c \
+- $(TOP)/ext/expert/sqlite3expert.c \
+- $(TOP)/ext/expert/sqlite3expert.h \
+- $(TOP)/ext/misc/zipfile.c \
+ $(TOP)/ext/misc/memtrace.c \
+ $(TOP)/src/test_windirent.c
+
+@@ -1263,11 +1261,11 @@
+
+ # Fuzz testing
+ fuzztest: fuzzcheck$(TEXE) $(FUZZDATA) sessionfuzz$(TEXE) $(TOP)/test/sessionfuzz-data1.db
+- ./fuzzcheck$(TEXE) $(FUZZDATA)
++ ./fuzzcheck$(TEXE) --timeout 3600 $(FUZZDATA)
+ ./sessionfuzz$(TEXE) run $(TOP)/test/sessionfuzz-data1.db
+
+ valgrindfuzz: fuzzcheck$(TEXT) $(FUZZDATA) sessionfuzz$(TEXE) $(TOP)/test/sessionfuzz-data1.db
+- valgrind ./fuzzcheck$(TEXE) --cell-size-check --limit-mem 10M --timeout 600 $(FUZZDATA)
++ valgrind ./fuzzcheck$(TEXE) --cell-size-check --limit-mem 10M --timeout 3600 $(FUZZDATA)
+ valgrind ./sessionfuzz$(TEXE) run $(TOP)/test/sessionfuzz-data1.db
+
+ # The veryquick.test TCL tests.
+@@ -1301,24 +1299,23 @@
+ shelltest: $(TESTPROGS)
+ ./testfixture$(TEXT) $(TOP)/test/permutations.test shell
+
+-sqlite3_analyzer.c: sqlite3.c $(TOP)/src/tclsqlite.c $(TOP)/tool/spaceanal.tcl $(TOP)/tool/mkccode.tcl $(TOP)/tool/sqlite3_analyzer.c.in
++sqlite3_analyzer.c: $(TOP)/src/tclsqlite.c $(TOP)/tool/spaceanal.tcl $(TOP)/tool/mkccode.tcl $(TOP)/tool/sqlite3_analyzer.c.in
+ $(TCLSH_CMD) $(TOP)/tool/mkccode.tcl $(TOP)/tool/sqlite3_analyzer.c.in >sqlite3_analyzer.c
+
+-sqlite3_analyzer$(TEXE): sqlite3_analyzer.c
+- $(LTLINK) sqlite3_analyzer.c -o $@ $(LIBTCL) $(TLIBS)
++sqlite3_analyzer$(TEXE): sqlite3_analyzer.c libsqlite3.la
++ $(LTLINK) sqlite3_analyzer.c -o $@ libsqlite3.la $(LIBTCL)
+
+-sqltclsh.c: sqlite3.c $(TOP)/src/tclsqlite.c $(TOP)/tool/sqltclsh.tcl $(TOP)/ext/misc/appendvfs.c $(TOP)/tool/mkccode.tcl $(TOP)/tool/sqltclsh.c.in
++sqltclsh.c: $(TOP)/src/tclsqlite.c $(TOP)/tool/sqltclsh.tcl $(TOP)/tool/mkccode.tcl $(TOP)/tool/sqltclsh.c.in
+ $(TCLSH_CMD) $(TOP)/tool/mkccode.tcl $(TOP)/tool/sqltclsh.c.in >sqltclsh.c
+
+-sqltclsh$(TEXE): sqltclsh.c
+- $(LTLINK) sqltclsh.c -o $@ $(LIBTCL) $(TLIBS)
++sqltclsh$(TEXE): sqltclsh.c libsqlite3.la
++ $(LTLINK) sqltclsh.c -o $@ libsqlite3.la $(LIBTCL)
+
+-sqlite3_expert$(TEXE): $(TOP)/ext/expert/sqlite3expert.h $(TOP)/ext/expert/sqlite3expert.c $(TOP)/ext/expert/expert.c sqlite3.c
+- $(LTLINK) $(TOP)/ext/expert/sqlite3expert.h $(TOP)/ext/expert/sqlite3expert.c $(TOP)/ext/expert/expert.c sqlite3.c -o sqlite3_expert $(TLIBS)
++sqlite3_expert$(TEXE): $(TOP)/ext/expert/sqlite3expert.h $(TOP)/ext/expert/expert.c libsqlite3.la
++ $(LTLINK) $(TOP)/ext/expert/expert.c -o sqlite3_expert libsqlite3.la
+
+ CHECKER_DEPS =\
+ $(TOP)/tool/mkccode.tcl \
+- sqlite3.c \
+ $(TOP)/src/tclsqlite.c \
+ $(TOP)/ext/repair/sqlite3_checker.tcl \
+ $(TOP)/ext/repair/checkindex.c \
+@@ -1329,36 +1326,36 @@
+ sqlite3_checker.c: $(CHECKER_DEPS)
+ $(TCLSH_CMD) $(TOP)/tool/mkccode.tcl $(TOP)/ext/repair/sqlite3_checker.c.in >$@
+
+-sqlite3_checker$(TEXE): sqlite3_checker.c
+- $(LTLINK) sqlite3_checker.c -o $@ $(LIBTCL) $(TLIBS)
++sqlite3_checker$(TEXE): sqlite3_checker.c libsqlite3.la
++ $(LTLINK) sqlite3_checker.c -o $@ libsqlite3.la $(LIBTCL)
+
+-dbdump$(TEXE): $(TOP)/ext/misc/dbdump.c sqlite3.lo
++dbdump$(TEXE): $(TOP)/ext/misc/dbdump.c libsqlite3.la
+ $(LTLINK) -DDBDUMP_STANDALONE -o $@ \
+- $(TOP)/ext/misc/dbdump.c sqlite3.lo $(TLIBS)
++ $(TOP)/ext/misc/dbdump.c libsqlite3.la
+
+-dbtotxt$(TEXE): $(TOP)/tool/dbtotxt.c
+- $(LTLINK)-o $@ $(TOP)/tool/dbtotxt.c
++dbtotxt$(TEXE): $(TOP)/tool/dbtotxt.c
++ $(LTLINK) -o $@ $(TOP)/tool/dbtotxt.c
+
+-showdb$(TEXE): $(TOP)/tool/showdb.c sqlite3.lo
+- $(LTLINK) -o $@ $(TOP)/tool/showdb.c sqlite3.lo $(TLIBS)
++showdb$(TEXE): $(TOP)/tool/showdb.c libsqlite3.la
++ $(LTLINK) -o $@ $(TOP)/tool/showdb.c libsqlite3.la
+
+-showstat4$(TEXE): $(TOP)/tool/showstat4.c sqlite3.lo
+- $(LTLINK) -o $@ $(TOP)/tool/showstat4.c sqlite3.lo $(TLIBS)
++showstat4$(TEXE): $(TOP)/tool/showstat4.c libsqlite3.la
++ $(LTLINK) -o $@ $(TOP)/tool/showstat4.c libsqlite3.la
+
+-showjournal$(TEXE): $(TOP)/tool/showjournal.c sqlite3.lo
+- $(LTLINK) -o $@ $(TOP)/tool/showjournal.c sqlite3.lo $(TLIBS)
++showjournal$(TEXE): $(TOP)/tool/showjournal.c
++ $(LTLINK) -o $@ $(TOP)/tool/showjournal.c
+
+-showwal$(TEXE): $(TOP)/tool/showwal.c sqlite3.lo
+- $(LTLINK) -o $@ $(TOP)/tool/showwal.c sqlite3.lo $(TLIBS)
++showwal$(TEXE): $(TOP)/tool/showwal.c
++ $(LTLINK) -o $@ $(TOP)/tool/showwal.c
+
+ showshm$(TEXE): $(TOP)/tool/showshm.c
+ $(LTLINK) -o $@ $(TOP)/tool/showshm.c
+
+-index_usage$(TEXE): $(TOP)/tool/index_usage.c sqlite3.lo
+- $(LTLINK) $(SHELL_OPT) -o $@ $(TOP)/tool/index_usage.c sqlite3.lo $(TLIBS)
++index_usage$(TEXE): $(TOP)/tool/index_usage.c libsqlite3.la
++ $(LTLINK) -o $@ $(TOP)/tool/index_usage.c libsqlite3.la
+
+-changeset$(TEXE): $(TOP)/ext/session/changeset.c sqlite3.lo
+- $(LTLINK) -o $@ $(TOP)/ext/session/changeset.c sqlite3.lo $(TLIBS)
++changeset$(TEXE): $(TOP)/ext/session/changeset.c libsqlite3.la
++ $(LTLINK) -o $@ $(TOP)/ext/session/changeset.c libsqlite3.la
+
+ changesetfuzz$(TEXE): $(TOP)/ext/session/changesetfuzz.c sqlite3.lo
+ $(LTLINK) -o $@ $(TOP)/ext/session/changesetfuzz.c sqlite3.lo $(TLIBS)
+@@ -1383,11 +1380,11 @@
+ kvtest$(TEXE): $(TOP)/test/kvtest.c sqlite3.c
+ $(LTLINK) $(KV_OPT) -o $@ $(TOP)/test/kvtest.c sqlite3.c $(TLIBS)
+
+-rbu$(EXE): $(TOP)/ext/rbu/rbu.c $(TOP)/ext/rbu/sqlite3rbu.c sqlite3.lo
+- $(LTLINK) -I. -o $@ $(TOP)/ext/rbu/rbu.c sqlite3.lo $(TLIBS)
++rbu$(EXE): $(TOP)/ext/rbu/rbu.c libsqlite3.la
++ $(LTLINK) -I. -o $@ $(TOP)/ext/rbu/rbu.c libsqlite3.la
+
+-loadfts$(EXE): $(TOP)/tool/loadfts.c libsqlite3.la
+- $(LTLINK) $(TOP)/tool/loadfts.c libsqlite3.la -o $@ $(TLIBS)
++loadfts$(EXE): $(TOP)/tool/loadfts.c libsqlite3.la
++ $(LTLINK) $(TOP)/tool/loadfts.c libsqlite3.la -o $@
+
+ # This target will fail if the SQLite amalgamation contains any exported
+ # symbols that do not begin with "sqlite3_". It is run as part of the
+--- /configure.ac
++++ /configure.ac
+@@ -108,7 +108,7 @@
+ #########
+ # Figure out whether or not we have these functions
+ #
+-AC_CHECK_FUNCS([fdatasync gmtime_r isnan localtime_r localtime_s malloc_usable_size strchrnul usleep utime pread pread64 pwrite pwrite64])
++AC_CHECK_FUNCS([fdatasync fullfsync gmtime_r isnan localtime_r localtime_s malloc_usable_size posix_fallocate pread pread64 pwrite pwrite64 strchrnul usleep utime])
+
+ #########
+ # By default, we use the amalgamation (this may be changed below...)
+@@ -582,6 +582,9 @@
+ if test "${enable_load_extension}" = "yes" ; then
+ OPT_FEATURE_FLAGS=""
+ AC_SEARCH_LIBS(dlopen, dl)
++ if test "${ac_cv_search_dlopen}" = "no" ; then
++ OPT_FEATURE_FLAGS="-DSQLITE_OMIT_LOAD_EXTENSION=1"
++ fi
+ else
+ OPT_FEATURE_FLAGS="-DSQLITE_OMIT_LOAD_EXTENSION=1"
+ fi
diff --git a/dev-db/sqlite/files/sqlite-3.34.1-build_2.2.patch b/dev-db/sqlite/files/sqlite-3.34.1-build_2.2.patch
new file mode 100644
index 0000000..7bb99c6
--- /dev/null
+++ b/dev-db/sqlite/files/sqlite-3.34.1-build_2.2.patch
@@ -0,0 +1,441 @@
+Move some code to libsqlite3.so to avoid duplication.
+Initialize some extensions in libsqlite3.so.
+Update test suite.
+
+SQLite revision: 10e20c0b43500cfb9bbc0eaa061c57514f715d87238f4d835880cd846b9ebd1f
+
+--- /ext/repair/sqlite3_checker.c.in
++++ /ext/repair/sqlite3_checker.c.in
+@@ -2,6 +2,7 @@
+ ** Read an SQLite database file and analyze its space utilization. Generate
+ ** text on standard output.
+ */
++#define SQLITE_CORE 1
+ #define TCLSH_INIT_PROC sqlite3_checker_init_proc
+ #define SQLITE_ENABLE_DBPAGE_VTAB 1
+ #define SQLITE_ENABLE_JSON1 1
+@@ -14,7 +15,7 @@
+ #define SQLITE_OMIT_SHARED_CACHE 1
+ #define SQLITE_DEFAULT_MEMSTATUS 0
+ #define SQLITE_MAX_EXPR_DEPTH 0
+-INCLUDE sqlite3.c
++#include "sqlite3.h"
+ INCLUDE $ROOT/src/tclsqlite.c
+ INCLUDE $ROOT/ext/misc/btreeinfo.c
+ INCLUDE $ROOT/ext/repair/checkindex.c
+--- /src/main.c
++++ /src/main.c
+@@ -50,12 +50,36 @@
+ #ifdef SQLITE_ENABLE_FTS5
+ int sqlite3Fts5Init(sqlite3*);
+ #endif
++#if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_ENABLE_DBPAGE_VTAB)
++int sqlite3DbdataRegister(sqlite3*);
++#endif
+ #ifdef SQLITE_ENABLE_JSON1
+ int sqlite3Json1Init(sqlite3*);
+ #endif
+ #ifdef SQLITE_ENABLE_STMTVTAB
+ int sqlite3StmtVtabInit(sqlite3*);
+ #endif
++int sqlite3AmatchInit(sqlite3*);
++int sqlite3CarrayInit(sqlite3*);
++int sqlite3CompletionVtabInit(sqlite3*);
++int sqlite3CsvInit(sqlite3*);
++int sqlite3DecimalInit(sqlite3*);
++int sqlite3EvalInit(sqlite3*);
++int sqlite3FileioInit(sqlite3*);
++int sqlite3IeeeInit(sqlite3*);
++int sqlite3NextcharInit(sqlite3*);
++int sqlite3PercentileInit(sqlite3*);
++int sqlite3RegexpInit(sqlite3*);
++int sqlite3SeriesInit(sqlite3*);
++int sqlite3ShaInit(sqlite3*);
++int sqlite3ShathreeInit(sqlite3*);
++int sqlite3TotypeInit(sqlite3*);
++int sqlite3UintInit(sqlite3*);
++int sqlite3UuidInit(sqlite3*);
++#if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_HAVE_ZLIB)
++int sqlite3ZipfileInit(sqlite3*);
++int sqlite3SqlarInit(sqlite3*);
++#endif
+
+ /*
+ ** An array of pointers to extension initializer functions for
+@@ -83,6 +107,9 @@
+ #ifdef SQLITE_ENABLE_DBPAGE_VTAB
+ sqlite3DbpageRegister,
+ #endif
++#if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_ENABLE_DBPAGE_VTAB)
++ sqlite3DbdataRegister,
++#endif
+ #ifdef SQLITE_ENABLE_DBSTAT_VTAB
+ sqlite3DbstatRegister,
+ #endif
+@@ -96,6 +123,27 @@
+ #ifdef SQLITE_ENABLE_BYTECODE_VTAB
+ sqlite3VdbeBytecodeVtabInit,
+ #endif
++ sqlite3AmatchInit,
++ sqlite3CarrayInit,
++ sqlite3CompletionVtabInit,
++ sqlite3CsvInit,
++ sqlite3DecimalInit,
++ sqlite3EvalInit,
++ sqlite3FileioInit,
++ sqlite3IeeeInit,
++ sqlite3NextcharInit,
++ sqlite3PercentileInit,
++ sqlite3RegexpInit,
++ sqlite3SeriesInit,
++ sqlite3ShaInit,
++ sqlite3ShathreeInit,
++ sqlite3TotypeInit,
++ sqlite3UintInit,
++ sqlite3UuidInit,
++#if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_HAVE_ZLIB)
++ sqlite3ZipfileInit,
++ sqlite3SqlarInit,
++#endif
+ };
+
+ #ifndef SQLITE_AMALGAMATION
+--- /src/shell.c.in
++++ /src/shell.c.in
+@@ -69,6 +69,7 @@
+ #include <stdio.h>
+ #include <assert.h>
+ #include "sqlite3.h"
++#include "ext/expert/sqlite3expert.h"
+ typedef sqlite3_int64 i64;
+ typedef sqlite3_uint64 u64;
+ typedef unsigned char u8;
+@@ -135,6 +136,10 @@
+ # define SHELL_USE_LOCAL_GETLINE 1
+ #endif
+
++#ifdef SQLITE_HAVE_ZLIB
++#include <zlib.h>
++#endif
++
+
+ #if defined(_WIN32) || defined(WIN32)
+ # if SQLITE_OS_WINRT
+@@ -1018,25 +1023,7 @@
+ INCLUDE test_windirent.c
+ #define dirent DIRENT
+ #endif
+-INCLUDE ../ext/misc/shathree.c
+-INCLUDE ../ext/misc/fileio.c
+-INCLUDE ../ext/misc/completion.c
+-INCLUDE ../ext/misc/appendvfs.c
+ INCLUDE ../ext/misc/memtrace.c
+-INCLUDE ../ext/misc/uint.c
+-INCLUDE ../ext/misc/decimal.c
+-INCLUDE ../ext/misc/ieee754.c
+-INCLUDE ../ext/misc/series.c
+-#ifdef SQLITE_HAVE_ZLIB
+-INCLUDE ../ext/misc/zipfile.c
+-INCLUDE ../ext/misc/sqlar.c
+-#endif
+-INCLUDE ../ext/expert/sqlite3expert.h
+-INCLUDE ../ext/expert/sqlite3expert.c
+-
+-#if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_ENABLE_DBPAGE_VTAB)
+-INCLUDE ../ext/misc/dbdata.c
+-#endif
+
+ #if defined(SQLITE_ENABLE_SESSION)
+ /*
+@@ -4608,20 +4595,6 @@
+ #ifndef SQLITE_OMIT_LOAD_EXTENSION
+ sqlite3_enable_load_extension(p->db, 1);
+ #endif
+- sqlite3_fileio_init(p->db, 0, 0);
+- sqlite3_shathree_init(p->db, 0, 0);
+- sqlite3_completion_init(p->db, 0, 0);
+- sqlite3_uint_init(p->db, 0, 0);
+- sqlite3_decimal_init(p->db, 0, 0);
+- sqlite3_ieee_init(p->db, 0, 0);
+- sqlite3_series_init(p->db, 0, 0);
+-#if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_ENABLE_DBPAGE_VTAB)
+- sqlite3_dbdata_init(p->db, 0, 0);
+-#endif
+-#ifdef SQLITE_HAVE_ZLIB
+- sqlite3_zipfile_init(p->db, 0, 0);
+- sqlite3_sqlar_init(p->db, 0, 0);
+-#endif
+ sqlite3_create_function(p->db, "shell_add_schema", 3, SQLITE_UTF8, 0,
+ shellAddSchemaName, 0, 0);
+ sqlite3_create_function(p->db, "shell_module_schema", 1, SQLITE_UTF8, 0,
+@@ -6644,8 +6617,6 @@
+ );
+ goto end_ar_command;
+ }
+- sqlite3_fileio_init(cmd.db, 0, 0);
+- sqlite3_sqlar_init(cmd.db, 0, 0);
+ sqlite3_create_function(cmd.db, "shell_putsnl", 1, SQLITE_UTF8, cmd.p,
+ shellPutsFunc, 0, 0);
+
+@@ -11076,6 +11047,7 @@
+ #endif
+ }
+ data.out = stdout;
++ extern int sqlite3_appendvfs_init(sqlite3 *, char **, const sqlite3_api_routines *);
+ sqlite3_appendvfs_init(0,0,0);
+
+ /* Go ahead and open the database file if it already exists. If the
+--- /src/test_config.c
++++ /src/test_config.c
+@@ -353,6 +353,8 @@
+ Tcl_SetVar2(interp, "sqlite_options", "datetime", "1", TCL_GLOBAL_ONLY);
+ #endif
+
++ Tcl_SetVar2(interp, "sqlite_options", "decimal", "1", TCL_GLOBAL_ONLY);
++
+ #ifdef SQLITE_OMIT_DECLTYPE
+ Tcl_SetVar2(interp, "sqlite_options", "decltype", "0", TCL_GLOBAL_ONLY);
+ #else
+@@ -540,6 +542,8 @@
+ Tcl_SetVar2(interp, "sqlite_options", "progress", "1", TCL_GLOBAL_ONLY);
+ #endif
+
++ Tcl_SetVar2(interp, "sqlite_options", "regexp", "1", TCL_GLOBAL_ONLY);
++
+ #ifdef SQLITE_OMIT_REINDEX
+ Tcl_SetVar2(interp, "sqlite_options", "reindex", "0", TCL_GLOBAL_ONLY);
+ #else
+@@ -662,6 +666,8 @@
+ Tcl_SetVar2(interp, "sqlite_options", "truncate_opt", "1", TCL_GLOBAL_ONLY);
+ #endif
+
++ Tcl_SetVar2(interp, "sqlite_options", "uint", "1", TCL_GLOBAL_ONLY);
++
+ #ifdef SQLITE_OMIT_UTF16
+ Tcl_SetVar2(interp, "sqlite_options", "utf16", "0", TCL_GLOBAL_ONLY);
+ #else
+--- /test/e_expr.test
++++ /test/e_expr.test
+@@ -1079,7 +1079,7 @@
+ #
+ # There is a regexp function if ICU is enabled though.
+ #
+-ifcapable !icu {
++ifcapable !icu&&!regexp {
+ do_catchsql_test e_expr-18.1.1 {
+ SELECT regexp('abc', 'def')
+ } {1 {no such function: regexp}}
+--- /test/icu.test
++++ /test/icu.test
+@@ -41,7 +41,7 @@
+ #
+ test_expr icu-1.1 {i1='hello'} {i1 REGEXP 'hello'} 1
+ test_expr icu-1.2 {i1='hello'} {i1 REGEXP '.ello'} 1
+- test_expr icu-1.3 {i1='hello'} {i1 REGEXP '.ell'} 0
++ test_expr icu-1.3 {i1='hello'} {i1 REGEXP '.ell$'} 0
+ test_expr icu-1.4 {i1='hello'} {i1 REGEXP '.ell.*'} 1
+ test_expr icu-1.5 {i1=NULL} {i1 REGEXP '.ell.*'} {}
+
+--- /test/pragma.test
++++ /test/pragma.test
+@@ -1370,17 +1370,62 @@
+ } ;# ifcapable trigger
+
+ ifcapable schema_pragmas {
+- do_test pragma-11.1 {
+- execsql2 {
+- pragma collation_list;
++ ifcapable decimal {
++ ifcapable uint {
++ do_test pragma-11.1 {
++ execsql2 {
++ pragma collation_list;
++ }
++ } {seq 0 name UINT seq 1 name decimal seq 2 name RTRIM seq 3 name NOCASE seq 4 name BINARY}
++ do_test pragma-11.2 {
++ db collate New_Collation blah...
++ execsql {
++ pragma collation_list;
++ }
++ } {0 New_Collation 1 UINT 2 decimal 3 RTRIM 4 NOCASE 5 BINARY}
+ }
+- } {seq 0 name RTRIM seq 1 name NOCASE seq 2 name BINARY}
+- do_test pragma-11.2 {
+- db collate New_Collation blah...
+- execsql {
+- pragma collation_list;
++ ifcapable !uint {
++ do_test pragma-11.1 {
++ execsql2 {
++ pragma collation_list;
++ }
++ } {seq 0 name decimal seq 1 name RTRIM seq 2 name NOCASE seq 3 name BINARY}
++ do_test pragma-11.2 {
++ db collate New_Collation blah...
++ execsql {
++ pragma collation_list;
++ }
++ } {0 New_Collation 1 decimal 2 RTRIM 3 NOCASE 4 BINARY}
+ }
+- } {0 New_Collation 1 RTRIM 2 NOCASE 3 BINARY}
++ }
++ ifcapable !decimal {
++ ifcapable uint {
++ do_test pragma-11.1 {
++ execsql2 {
++ pragma collation_list;
++ }
++ } {seq 0 name UINT seq 1 name RTRIM seq 2 name NOCASE seq 3 name BINARY}
++ do_test pragma-11.2 {
++ db collate New_Collation blah...
++ execsql {
++ pragma collation_list;
++ }
++ } {0 New_Collation 1 UINT 2 RTRIM 3 NOCASE 4 BINARY}
++ }
++ ifcapable !uint {
++ do_test pragma-11.1 {
++ execsql2 {
++ pragma collation_list;
++ }
++ } {seq 0 name RTRIM seq 1 name NOCASE seq 2 name BINARY}
++ do_test pragma-11.2 {
++ db collate New_Collation blah...
++ execsql {
++ pragma collation_list;
++ }
++ } {0 New_Collation 1 RTRIM 2 NOCASE 3 BINARY}
++ }
++ }
+ }
+
+ ifcapable schema_pragmas&&tempdb {
+--- /test/sessionfuzz.c
++++ /test/sessionfuzz.c
+@@ -698,49 +698,6 @@
+ #include <stdio.h>
+ #include <string.h>
+ #include <assert.h>
+-#ifndef OMIT_ZLIB
+-#include "zlib.h"
+-#endif
+-
+-/*
+-** Implementation of the "sqlar_uncompress(X,SZ)" SQL function
+-**
+-** Parameter SZ is interpreted as an integer. If it is less than or
+-** equal to zero, then this function returns a copy of X. Or, if
+-** SZ is equal to the size of X when interpreted as a blob, also
+-** return a copy of X. Otherwise, decompress blob X using zlib
+-** utility function uncompress() and return the results (another
+-** blob).
+-*/
+-static void sqlarUncompressFunc(
+- sqlite3_context *context,
+- int argc,
+- sqlite3_value **argv
+-){
+-#ifdef OMIT_ZLIB
+- sqlite3_result_value(context, argv[0]);
+-#else
+- uLong nData;
+- uLongf sz;
+-
+- assert( argc==2 );
+- sz = sqlite3_value_int(argv[1]);
+-
+- if( sz<=0 || sz==(nData = sqlite3_value_bytes(argv[0])) ){
+- sqlite3_result_value(context, argv[0]);
+- }else{
+- const Bytef *pData= sqlite3_value_blob(argv[0]);
+- Bytef *pOut = sqlite3_malloc(sz);
+- if( Z_OK!=uncompress(pOut, &sz, pData, nData) ){
+- sqlite3_result_error(context, "error in uncompress()", -1);
+- }else{
+- sqlite3_result_blob(context, pOut, sz, SQLITE_TRANSIENT);
+- }
+- sqlite3_free(pOut);
+- }
+-#endif
+-}
+-
+
+ /* Run a chunk of SQL. If any errors happen, print an error message
+ ** and exit.
+--- /tool/mksqlite3c.tcl
++++ /tool/mksqlite3c.tcl
+@@ -129,6 +129,7 @@
+ rtree.h
+ sqlite3session.h
+ sqlite3.h
++ sqlite3expert.h
+ sqlite3ext.h
+ sqlite3rbu.h
+ sqliteicu.h
+@@ -416,6 +417,28 @@
+ sqlite3session.c
+ fts5.c
+ stmt.c
++ amatch.c
++ appendvfs.c
++ carray.c
++ completion.c
++ csv.c
++ dbdata.c
++ decimal.c
++ eval.c
++ fileio.c
++ ieee754.c
++ nextchar.c
++ percentile.c
++ regexp.c
++ series.c
++ sha1.c
++ shathree.c
++ sqlar.c
++ sqlite3expert.c
++ totype.c
++ uint.c
++ uuid.c
++ zipfile.c
+ } {
+ copy_file tsrc/$file
+ }
+--- /tool/sqlite3_analyzer.c.in
++++ /tool/sqlite3_analyzer.c.in
+@@ -14,9 +14,6 @@
+ #define SQLITE_DEFAULT_MEMSTATUS 0
+ #define SQLITE_MAX_EXPR_DEPTH 0
+ #define SQLITE_OMIT_LOAD_EXTENSION 1
+-#ifndef USE_EXTERNAL_SQLITE
+-INCLUDE sqlite3.c
+-#endif
+ INCLUDE $ROOT/src/tclsqlite.c
+
+ const char *sqlite3_analyzer_init_proc(Tcl_Interp *interp){
+--- /tool/sqltclsh.c.in
++++ /tool/sqltclsh.c.in
+@@ -27,21 +27,13 @@
+ #define SQLITE_OMIT_SHARED_CACHE 1
+ #define SQLITE_DEFAULT_MEMSTATUS 0
+ #define SQLITE_MAX_EXPR_DEPTH 0
+-INCLUDE sqlite3.c
+-INCLUDE $ROOT/ext/misc/appendvfs.c
+-#ifdef SQLITE_HAVE_ZLIB
+-INCLUDE $ROOT/ext/misc/zipfile.c
+-INCLUDE $ROOT/ext/misc/sqlar.c
+-#endif
++#include "sqlite3.h"
+ INCLUDE $ROOT/src/tclsqlite.c
+
+ const char *sqlite3_tclapp_init_proc(Tcl_Interp *interp){
+ (void)interp;
++ extern int sqlite3_appendvfs_init(sqlite3 *,char **, const sqlite3_api_routines *);
+ sqlite3_appendvfs_init(0,0,0);
+-#ifdef SQLITE_HAVE_ZLIB
+- sqlite3_auto_extension((void(*)(void))sqlite3_sqlar_init);
+- sqlite3_auto_extension((void(*)(void))sqlite3_zipfile_init);
+-#endif
+
+ return
+ BEGIN_STRING
diff --git a/dev-db/sqlite/files/sqlite-3.35.0-build_1.1.patch b/dev-db/sqlite/files/sqlite-3.35.0-build_1.1.patch
new file mode 100644
index 0000000..1506f3d
--- /dev/null
+++ b/dev-db/sqlite/files/sqlite-3.35.0-build_1.1.patch
@@ -0,0 +1,375 @@
+Add initialization functions for internal usage in libsqlite3.so.
+
+SQLite revision: acd63062eb06748bfe9e4886639e4f2b54ea6a496a83f10716abbaba4115500b
+
+--- /ext/misc/amatch.c
++++ /ext/misc/amatch.c
+@@ -1480,9 +1480,18 @@
+
+ #endif /* SQLITE_OMIT_VIRTUALTABLE */
+
++int sqlite3AmatchInit(sqlite3 *db){
++ int rc = SQLITE_OK;
++#ifndef SQLITE_OMIT_VIRTUALTABLE
++ rc = sqlite3_create_module(db, "approximate_match", &amatchModule, 0);
++#endif /* SQLITE_OMIT_VIRTUALTABLE */
++ return rc;
++}
++
+ /*
+ ** Register the amatch virtual table
+ */
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
+ #ifdef _WIN32
+ __declspec(dllexport)
+ #endif
+@@ -1491,11 +1500,8 @@
+ char **pzErrMsg,
+ const sqlite3_api_routines *pApi
+ ){
+- int rc = SQLITE_OK;
+ SQLITE_EXTENSION_INIT2(pApi);
+ (void)pzErrMsg; /* Not used */
+-#ifndef SQLITE_OMIT_VIRTUALTABLE
+- rc = sqlite3_create_module(db, "approximate_match", &amatchModule, 0);
+-#endif /* SQLITE_OMIT_VIRTUALTABLE */
+- return rc;
++ return sqlite3AmatchInit(db);
+ }
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
+--- /ext/misc/carray.c
++++ /ext/misc/carray.c
+@@ -498,16 +498,8 @@
+
+ #endif /* SQLITE_OMIT_VIRTUALTABLE */
+
+-#ifdef _WIN32
+-__declspec(dllexport)
+-#endif
+-int sqlite3_carray_init(
+- sqlite3 *db,
+- char **pzErrMsg,
+- const sqlite3_api_routines *pApi
+-){
++int sqlite3CarrayInit(sqlite3 *db){
+ int rc = SQLITE_OK;
+- SQLITE_EXTENSION_INIT2(pApi);
+ #ifndef SQLITE_OMIT_VIRTUALTABLE
+ rc = sqlite3_create_module(db, "carray", &carrayModule, 0);
+ #ifdef SQLITE_TEST
+@@ -519,3 +511,18 @@
+ #endif /* SQLITE_OMIT_VIRTUALTABLE */
+ return rc;
+ }
++
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
++#ifdef _WIN32
++__declspec(dllexport)
++#endif
++int sqlite3_carray_init(
++ sqlite3 *db,
++ char **pzErrMsg,
++ const sqlite3_api_routines *pApi
++){
++ SQLITE_EXTENSION_INIT2(pApi);
++ (void)pzErrMsg; /* Unused parameter */
++ return sqlite3CarrayInit(db);
++}
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
+--- /ext/misc/completion.c
++++ /ext/misc/completion.c
+@@ -483,12 +483,13 @@
+ return rc;
+ }
+
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
+ #ifdef _WIN32
+ __declspec(dllexport)
+ #endif
+ int sqlite3_completion_init(
+- sqlite3 *db,
+- char **pzErrMsg,
++ sqlite3 *db,
++ char **pzErrMsg,
+ const sqlite3_api_routines *pApi
+ ){
+ int rc = SQLITE_OK;
+@@ -499,3 +500,4 @@
+ #endif
+ return rc;
+ }
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
+--- /ext/misc/csv.c
++++ /ext/misc/csv.c
+@@ -928,6 +928,22 @@
+ #endif /* !defined(SQLITE_OMIT_VIRTUALTABLE) */
+
+
++int sqlite3CsvInit(sqlite3 *db){
++#ifndef SQLITE_OMIT_VIRTUALTABLE
++ int rc;
++ rc = sqlite3_create_module(db, "csv", &CsvModule, 0);
++#ifdef SQLITE_TEST
++ if( rc==SQLITE_OK ){
++ rc = sqlite3_create_module(db, "csv_wr", &CsvModuleFauxWrite, 0);
++ }
++#endif
++ return rc;
++#else
++ return SQLITE_OK;
++#endif
++}
++
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
+ #ifdef _WIN32
+ __declspec(dllexport)
+ #endif
+@@ -941,17 +957,8 @@
+ char **pzErrMsg,
+ const sqlite3_api_routines *pApi
+ ){
+-#ifndef SQLITE_OMIT_VIRTUALTABLE
+- int rc;
+ SQLITE_EXTENSION_INIT2(pApi);
+- rc = sqlite3_create_module(db, "csv", &CsvModule, 0);
+-#ifdef SQLITE_TEST
+- if( rc==SQLITE_OK ){
+- rc = sqlite3_create_module(db, "csv_wr", &CsvModuleFauxWrite, 0);
+- }
+-#endif
+- return rc;
+-#else
+- return SQLITE_OK;
+-#endif
++ (void)pzErrMsg; /* Unused parameter */
++ return sqlite3CsvInit(db);
+ }
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
+--- /ext/misc/dbdata.c
++++ /ext/misc/dbdata.c
+@@ -803,7 +803,7 @@
+ /*
+ ** Invoke this routine to register the "sqlite_dbdata" virtual table module
+ */
+-static int sqlite3DbdataRegister(sqlite3 *db){
++int sqlite3DbdataRegister(sqlite3 *db){
+ static sqlite3_module dbdata_module = {
+ 0, /* iVersion */
+ 0, /* xCreate */
+@@ -838,6 +838,7 @@
+ return rc;
+ }
+
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
+ #ifdef _WIN32
+ __declspec(dllexport)
+ #endif
+@@ -849,3 +850,4 @@
+ SQLITE_EXTENSION_INIT2(pApi);
+ return sqlite3DbdataRegister(db);
+ }
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
+--- /ext/misc/decimal.c
++++ /ext/misc/decimal.c
+@@ -590,14 +590,7 @@
+ decimal_free(pB);
+ }
+
+-#ifdef _WIN32
+-__declspec(dllexport)
+-#endif
+-int sqlite3_decimal_init(
+- sqlite3 *db,
+- char **pzErrMsg,
+- const sqlite3_api_routines *pApi
+-){
++int sqlite3DecimalInit(sqlite3 *db){
+ int rc = SQLITE_OK;
+ static const struct {
+ const char *zFuncName;
+@@ -611,10 +604,6 @@
+ { "decimal_mul", 2, decimalMulFunc },
+ };
+ unsigned int i;
+- (void)pzErrMsg; /* Unused parameter */
+-
+- SQLITE_EXTENSION_INIT2(pApi);
+-
+ for(i=0; i<sizeof(aFunc)/sizeof(aFunc[0]) && rc==SQLITE_OK; i++){
+ rc = sqlite3_create_function(db, aFunc[i].zFuncName, aFunc[i].nArg,
+ SQLITE_UTF8|SQLITE_INNOCUOUS|SQLITE_DETERMINISTIC,
+@@ -632,3 +621,20 @@
+ }
+ return rc;
+ }
++
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
++#ifdef _WIN32
++__declspec(dllexport)
++#endif
++int sqlite3_decimal_init(
++ sqlite3 *db,
++ char **pzErrMsg,
++ const sqlite3_api_routines *pApi
++){
++ (void)pzErrMsg; /* Unused parameter */
++
++ SQLITE_EXTENSION_INIT2(pApi);
++
++ return sqlite3DecimalInit(db);
++}
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
+--- /ext/misc/eval.c
++++ /ext/misc/eval.c
+@@ -102,6 +102,20 @@
+ }
+
+
++int sqlite3EvalInit(sqlite3 *db){
++ int rc = SQLITE_OK;
++ rc = sqlite3_create_function(db, "eval", 1,
++ SQLITE_UTF8|SQLITE_DIRECTONLY, 0,
++ sqlEvalFunc, 0, 0);
++ if( rc==SQLITE_OK ){
++ rc = sqlite3_create_function(db, "eval", 2,
++ SQLITE_UTF8|SQLITE_DIRECTONLY, 0,
++ sqlEvalFunc, 0, 0);
++ }
++ return rc;
++}
++
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
+ #ifdef _WIN32
+ __declspec(dllexport)
+ #endif
+@@ -110,16 +124,8 @@
+ char **pzErrMsg,
+ const sqlite3_api_routines *pApi
+ ){
+- int rc = SQLITE_OK;
+ SQLITE_EXTENSION_INIT2(pApi);
+ (void)pzErrMsg; /* Unused parameter */
+- rc = sqlite3_create_function(db, "eval", 1,
+- SQLITE_UTF8|SQLITE_DIRECTONLY, 0,
+- sqlEvalFunc, 0, 0);
+- if( rc==SQLITE_OK ){
+- rc = sqlite3_create_function(db, "eval", 2,
+- SQLITE_UTF8|SQLITE_DIRECTONLY, 0,
+- sqlEvalFunc, 0, 0);
+- }
+- return rc;
++ return sqlite3EvalInit(db);
+ }
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
+--- /ext/misc/fileio.c
++++ /ext/misc/fileio.c
+@@ -340,7 +340,7 @@
+ ** This function does the work for the writefile() UDF. Refer to
+ ** header comments at the top of this file for details.
+ */
+-static int writeFile(
++static int writeFileContents(
+ sqlite3_context *pCtx, /* Context to return bytes written in */
+ const char *zFile, /* File to write */
+ sqlite3_value *pData, /* Data to write */
+@@ -480,10 +480,10 @@
+ mtime = sqlite3_value_int64(argv[3]);
+ }
+
+- res = writeFile(context, zFile, argv[1], mode, mtime);
++ res = writeFileContents(context, zFile, argv[1], mode, mtime);
+ if( res==1 && errno==ENOENT ){
+ if( makeDirectory(zFile)==SQLITE_OK ){
+- res = writeFile(context, zFile, argv[1], mode, mtime);
++ res = writeFileContents(context, zFile, argv[1], mode, mtime);
+ }
+ }
+
+@@ -970,18 +970,9 @@
+ # define fsdirRegister(x) SQLITE_OK
+ #endif
+
+-#ifdef _WIN32
+-__declspec(dllexport)
+-#endif
+-int sqlite3_fileio_init(
+- sqlite3 *db,
+- char **pzErrMsg,
+- const sqlite3_api_routines *pApi
+-){
++int sqlite3FileioInit(sqlite3 *db){
+ int rc = SQLITE_OK;
+- SQLITE_EXTENSION_INIT2(pApi);
+- (void)pzErrMsg; /* Unused parameter */
+- rc = sqlite3_create_function(db, "readfile", 1,
++ rc = sqlite3_create_function(db, "readfile", 1,
+ SQLITE_UTF8|SQLITE_DIRECTONLY, 0,
+ readfileFunc, 0, 0);
+ if( rc==SQLITE_OK ){
+@@ -998,3 +989,18 @@
+ }
+ return rc;
+ }
++
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
++#ifdef _WIN32
++__declspec(dllexport)
++#endif
++int sqlite3_fileio_init(
++ sqlite3 *db,
++ char **pzErrMsg,
++ const sqlite3_api_routines *pApi
++){
++ SQLITE_EXTENSION_INIT2(pApi);
++ (void)pzErrMsg; /* Unused parameter */
++ return sqlite3FileioInit(db);
++}
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
+--- /ext/misc/ieee754.c
++++ /ext/misc/ieee754.c
+@@ -253,14 +253,7 @@
+ }
+
+
+-#ifdef _WIN32
+-__declspec(dllexport)
+-#endif
+-int sqlite3_ieee_init(
+- sqlite3 *db,
+- char **pzErrMsg,
+- const sqlite3_api_routines *pApi
+-){
++int sqlite3IeeeInit(sqlite3 *db){
+ static const struct {
+ char *zFName;
+ int nArg;
+@@ -277,13 +270,26 @@
+ };
+ unsigned int i;
+ int rc = SQLITE_OK;
+- SQLITE_EXTENSION_INIT2(pApi);
+- (void)pzErrMsg; /* Unused parameter */
+ for(i=0; i<sizeof(aFunc)/sizeof(aFunc[0]) && rc==SQLITE_OK; i++){
+- rc = sqlite3_create_function(db, aFunc[i].zFName, aFunc[i].nArg,
++ rc = sqlite3_create_function(db, aFunc[i].zFName, aFunc[i].nArg,
+ SQLITE_UTF8|SQLITE_INNOCUOUS,
+ (void*)&aFunc[i].iAux,
+ aFunc[i].xFunc, 0, 0);
+ }
+ return rc;
+ }
++
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
++#ifdef _WIN32
++__declspec(dllexport)
++#endif
++int sqlite3_ieee_init(
++ sqlite3 *db,
++ char **pzErrMsg,
++ const sqlite3_api_routines *pApi
++){
++ SQLITE_EXTENSION_INIT2(pApi);
++ (void)pzErrMsg; /* Unused parameter */
++ return sqlite3IeeeInit(db);
++}
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
diff --git a/dev-db/sqlite/files/sqlite-3.32.1-full_archive-build_1.patch b/dev-db/sqlite/files/sqlite-3.35.0-build_1.2.patch
similarity index 65%
rename from dev-db/sqlite/files/sqlite-3.32.1-full_archive-build_1.patch
rename to dev-db/sqlite/files/sqlite-3.35.0-build_1.2.patch
index aec90e4..0c3577f 100644
--- a/dev-db/sqlite/files/sqlite-3.32.1-full_archive-build_1.patch
+++ b/dev-db/sqlite/files/sqlite-3.35.0-build_1.2.patch
@@ -1,225 +1,29 @@
Add initialization functions for internal usage in libsqlite3.so.
---- /ext/misc/carray.c
-+++ /ext/misc/carray.c
-@@ -383,16 +383,8 @@
-
- #endif /* SQLITE_OMIT_VIRTUALTABLE */
+SQLite revision: acd63062eb06748bfe9e4886639e4f2b54ea6a496a83f10716abbaba4115500b
+
+--- /ext/misc/nextchar.c
++++ /ext/misc/nextchar.c
+@@ -286,17 +286,8 @@
+ sqlite3_free(c.aResult);
+ }
-#ifdef _WIN32
-__declspec(dllexport)
-#endif
--int sqlite3_carray_init(
+-int sqlite3_nextchar_init(
- sqlite3 *db,
- char **pzErrMsg,
- const sqlite3_api_routines *pApi
-){
-+int sqlite3CarrayInit(sqlite3 *db){
- int rc = SQLITE_OK;
-- SQLITE_EXTENSION_INIT2(pApi);
- #ifndef SQLITE_OMIT_VIRTUALTABLE
- rc = sqlite3_create_module(db, "carray", &carrayModule, 0);
- #ifdef SQLITE_TEST
-@@ -404,3 +396,18 @@
- #endif /* SQLITE_OMIT_VIRTUALTABLE */
- return rc;
- }
-+
-+#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
-+#ifdef _WIN32
-+__declspec(dllexport)
-+#endif
-+int sqlite3_carray_init(
-+ sqlite3 *db,
-+ char **pzErrMsg,
-+ const sqlite3_api_routines *pApi
-+){
-+ SQLITE_EXTENSION_INIT2(pApi);
-+ (void)pzErrMsg; /* Unused parameter */
-+ return sqlite3CarrayInit(db);
-+}
-+#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
---- /ext/misc/completion.c
-+++ /ext/misc/completion.c
-@@ -483,12 +483,13 @@
- return rc;
- }
-
-+#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
- #ifdef _WIN32
- __declspec(dllexport)
- #endif
- int sqlite3_completion_init(
-- sqlite3 *db,
-- char **pzErrMsg,
-+ sqlite3 *db,
-+ char **pzErrMsg,
- const sqlite3_api_routines *pApi
- ){
- int rc = SQLITE_OK;
-@@ -499,3 +500,4 @@
- #endif
- return rc;
- }
-+#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
---- /ext/misc/csv.c
-+++ /ext/misc/csv.c
-@@ -928,6 +928,22 @@
- #endif /* !defined(SQLITE_OMIT_VIRTUALTABLE) */
-
-
-+int sqlite3CsvInit(sqlite3 *db){
-+#ifndef SQLITE_OMIT_VIRTUALTABLE
-+ int rc;
-+ rc = sqlite3_create_module(db, "csv", &CsvModule, 0);
-+#ifdef SQLITE_TEST
-+ if( rc==SQLITE_OK ){
-+ rc = sqlite3_create_module(db, "csv_wr", &CsvModuleFauxWrite, 0);
-+ }
-+#endif
-+ return rc;
-+#else
-+ return SQLITE_OK;
-+#endif
-+}
-+
-+#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
- #ifdef _WIN32
- __declspec(dllexport)
- #endif
-@@ -941,17 +957,8 @@
- char **pzErrMsg,
- const sqlite3_api_routines *pApi
- ){
--#ifndef SQLITE_OMIT_VIRTUALTABLE
-- int rc;
- SQLITE_EXTENSION_INIT2(pApi);
-- rc = sqlite3_create_module(db, "csv", &CsvModule, 0);
--#ifdef SQLITE_TEST
-- if( rc==SQLITE_OK ){
-- rc = sqlite3_create_module(db, "csv_wr", &CsvModuleFauxWrite, 0);
-- }
--#endif
-- return rc;
--#else
-- return SQLITE_OK;
--#endif
-+ (void)pzErrMsg; /* Unused parameter */
-+ return sqlite3CsvInit(db);
- }
-+#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
---- /ext/misc/dbdata.c
-+++ /ext/misc/dbdata.c
-@@ -803,7 +803,7 @@
- /*
- ** Invoke this routine to register the "sqlite_dbdata" virtual table module
- */
--static int sqlite3DbdataRegister(sqlite3 *db){
-+int sqlite3DbdataRegister(sqlite3 *db){
- static sqlite3_module dbdata_module = {
- 0, /* iVersion */
- 0, /* xCreate */
-@@ -838,6 +838,7 @@
- return rc;
- }
-
-+#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
- #ifdef _WIN32
- __declspec(dllexport)
- #endif
-@@ -849,3 +850,4 @@
- SQLITE_EXTENSION_INIT2(pApi);
- return sqlite3DbdataRegister(db);
- }
-+#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
---- /ext/misc/eval.c
-+++ /ext/misc/eval.c
-@@ -102,6 +102,20 @@
- }
-
-
-+int sqlite3EvalInit(sqlite3 *db){
-+ int rc = SQLITE_OK;
-+ rc = sqlite3_create_function(db, "eval", 1,
-+ SQLITE_UTF8|SQLITE_DIRECTONLY, 0,
-+ sqlEvalFunc, 0, 0);
-+ if( rc==SQLITE_OK ){
-+ rc = sqlite3_create_function(db, "eval", 2,
-+ SQLITE_UTF8|SQLITE_DIRECTONLY, 0,
-+ sqlEvalFunc, 0, 0);
-+ }
-+ return rc;
-+}
-+
-+#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
- #ifdef _WIN32
- __declspec(dllexport)
- #endif
-@@ -110,16 +124,8 @@
- char **pzErrMsg,
- const sqlite3_api_routines *pApi
- ){
-- int rc = SQLITE_OK;
- SQLITE_EXTENSION_INIT2(pApi);
- (void)pzErrMsg; /* Unused parameter */
-- rc = sqlite3_create_function(db, "eval", 1,
-- SQLITE_UTF8|SQLITE_DIRECTONLY, 0,
-- sqlEvalFunc, 0, 0);
-- if( rc==SQLITE_OK ){
-- rc = sqlite3_create_function(db, "eval", 2,
-- SQLITE_UTF8|SQLITE_DIRECTONLY, 0,
-- sqlEvalFunc, 0, 0);
-- }
-- return rc;
-+ return sqlite3EvalInit(db);
- }
-+#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
---- /ext/misc/fileio.c
-+++ /ext/misc/fileio.c
-@@ -340,7 +340,7 @@
- ** This function does the work for the writefile() UDF. Refer to
- ** header comments at the top of this file for details.
- */
--static int writeFile(
-+static int writeFileContents(
- sqlite3_context *pCtx, /* Context to return bytes written in */
- const char *zFile, /* File to write */
- sqlite3_value *pData, /* Data to write */
-@@ -480,10 +480,10 @@
- mtime = sqlite3_value_int64(argv[3]);
- }
-
-- res = writeFile(context, zFile, argv[1], mode, mtime);
-+ res = writeFileContents(context, zFile, argv[1], mode, mtime);
- if( res==1 && errno==ENOENT ){
- if( makeDirectory(zFile)==SQLITE_OK ){
-- res = writeFile(context, zFile, argv[1], mode, mtime);
-+ res = writeFileContents(context, zFile, argv[1], mode, mtime);
- }
- }
-
-@@ -970,18 +970,9 @@
- # define fsdirRegister(x) SQLITE_OK
- #endif
-
--#ifdef _WIN32
--__declspec(dllexport)
--#endif
--int sqlite3_fileio_init(
-- sqlite3 *db,
-- char **pzErrMsg,
-- const sqlite3_api_routines *pApi
--){
-+int sqlite3FileioInit(sqlite3 *db){
++int sqlite3NextcharInit(sqlite3 *db){
int rc = SQLITE_OK;
- SQLITE_EXTENSION_INIT2(pApi);
- (void)pzErrMsg; /* Unused parameter */
-- rc = sqlite3_create_function(db, "readfile", 1,
-+ rc = sqlite3_create_function(db, "readfile", 1,
- SQLITE_UTF8|SQLITE_DIRECTONLY, 0,
- readfileFunc, 0, 0);
- if( rc==SQLITE_OK ){
-@@ -998,3 +989,18 @@
+ rc = sqlite3_create_function(db, "next_char", 3,
+ SQLITE_UTF8|SQLITE_INNOCUOUS, 0,
+ nextCharFunc, 0, 0);
+@@ -312,3 +303,18 @@
}
return rc;
}
@@ -228,32 +32,27 @@
+#ifdef _WIN32
+__declspec(dllexport)
+#endif
-+int sqlite3_fileio_init(
++int sqlite3_nextchar_init(
+ sqlite3 *db,
+ char **pzErrMsg,
+ const sqlite3_api_routines *pApi
+){
+ SQLITE_EXTENSION_INIT2(pApi);
+ (void)pzErrMsg; /* Unused parameter */
-+ return sqlite3FileioInit(db);
++ return sqlite3NextcharInit(db);
+}
+#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
---- /ext/misc/ieee754.c
-+++ /ext/misc/ieee754.c
-@@ -110,6 +110,20 @@
+--- /ext/misc/percentile.c
++++ /ext/misc/percentile.c
+@@ -202,6 +202,15 @@
}
-+int sqlite3IeeeInit(sqlite3 *db){
++int sqlite3PercentileInit(sqlite3 *db){
+ int rc = SQLITE_OK;
-+ rc = sqlite3_create_function(db, "ieee754", 1,
++ rc = sqlite3_create_function(db, "percentile", 2,
+ SQLITE_UTF8|SQLITE_INNOCUOUS, 0,
-+ ieee754func, 0, 0);
-+ if( rc==SQLITE_OK ){
-+ rc = sqlite3_create_function(db, "ieee754", 2,
-+ SQLITE_UTF8|SQLITE_INNOCUOUS, 0,
-+ ieee754func, 0, 0);
-+ }
++ 0, percentStep, percentFinal);
+ return rc;
+}
+
@@ -261,23 +60,18 @@
#ifdef _WIN32
__declspec(dllexport)
#endif
-@@ -118,16 +132,8 @@
+@@ -210,11 +219,8 @@
char **pzErrMsg,
const sqlite3_api_routines *pApi
){
- int rc = SQLITE_OK;
SQLITE_EXTENSION_INIT2(pApi);
(void)pzErrMsg; /* Unused parameter */
-- rc = sqlite3_create_function(db, "ieee754", 1,
+- rc = sqlite3_create_function(db, "percentile", 2,
- SQLITE_UTF8|SQLITE_INNOCUOUS, 0,
-- ieee754func, 0, 0);
-- if( rc==SQLITE_OK ){
-- rc = sqlite3_create_function(db, "ieee754", 2,
-- SQLITE_UTF8|SQLITE_INNOCUOUS, 0,
-- ieee754func, 0, 0);
-- }
+- 0, percentStep, percentFinal);
- return rc;
-+ return sqlite3IeeeInit(db);
++ return sqlite3PercentileInit(db);
}
+#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
--- /ext/misc/regexp.c
@@ -314,6 +108,42 @@
+ return sqlite3RegexpInit(db);
}
+#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
+--- /ext/misc/series.c
++++ /ext/misc/series.c
+@@ -423,6 +423,15 @@
+
+ #endif /* SQLITE_OMIT_VIRTUALTABLE */
+
++int sqlite3SeriesInit(sqlite3 *db){
++ int rc = SQLITE_OK;
++#ifndef SQLITE_OMIT_VIRTUALTABLE
++ rc = sqlite3_create_module(db, "generate_series", &seriesModule, 0);
++#endif
++ return rc;
++}
++
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
+ #ifdef _WIN32
+ __declspec(dllexport)
+ #endif
+@@ -431,7 +440,6 @@
+ char **pzErrMsg,
+ const sqlite3_api_routines *pApi
+ ){
+- int rc = SQLITE_OK;
+ SQLITE_EXTENSION_INIT2(pApi);
+ #ifndef SQLITE_OMIT_VIRTUALTABLE
+ if( sqlite3_libversion_number()<3008012 ){
+@@ -439,7 +447,7 @@
+ "generate_series() requires SQLite 3.8.12 or later");
+ return SQLITE_ERROR;
+ }
+- rc = sqlite3_create_module(db, "generate_series", &seriesModule, 0);
+ #endif
+- return rc;
++ return sqlite3SeriesInit(db);
+ }
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
--- /ext/misc/sha1.c
+++ /ext/misc/sha1.c
@@ -175,7 +175,7 @@
@@ -393,7 +223,7 @@
+#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
--- /ext/misc/shathree.c
+++ /ext/misc/shathree.c
-@@ -527,7 +527,7 @@
+@@ -530,7 +530,7 @@
/* Compute a string using sqlite3_vsnprintf() with a maximum length
** of 50 bytes and add it to the hash.
*/
@@ -402,16 +232,16 @@
SHA3Context *p, /* Add content to this context */
const char *zFormat,
...
-@@ -622,7 +622,7 @@
- nCol = sqlite3_column_count(pStmt);
+@@ -626,7 +626,7 @@
z = sqlite3_sql(pStmt);
- n = (int)strlen(z);
-- hash_step_vformat(&cx,"S%d:",n);
-+ sha3_hash_step_vformat(&cx,"S%d:",n);
- SHA3Update(&cx,(unsigned char*)z,n);
+ if( z ){
+ n = (int)strlen(z);
+- hash_step_vformat(&cx,"S%d:",n);
++ sha3_hash_step_vformat(&cx,"S%d:",n);
+ SHA3Update(&cx,(unsigned char*)z,n);
+ }
- /* Compute a hash over the result of the query */
-@@ -665,14 +665,14 @@
+@@ -670,14 +670,14 @@
case SQLITE_TEXT: {
int n2 = sqlite3_column_bytes(pStmt, i);
const unsigned char *z2 = sqlite3_column_text(pStmt, i);
@@ -428,7 +258,7 @@
SHA3Update(&cx, z2, n2);
break;
}
-@@ -685,17 +685,8 @@
+@@ -690,17 +690,8 @@
}
@@ -447,7 +277,7 @@
rc = sqlite3_create_function(db, "sha3", 1,
SQLITE_UTF8 | SQLITE_INNOCUOUS | SQLITE_DETERMINISTIC,
0, sha3Func, 0, 0);
-@@ -716,3 +707,18 @@
+@@ -721,3 +712,18 @@
}
return rc;
}
@@ -637,7 +467,7 @@
#include "sqlite3ext.h"
SQLITE_EXTENSION_INIT1
#include <stdio.h>
-@@ -2137,7 +2139,7 @@
+@@ -2139,7 +2141,7 @@
/*
** Register the "zipfile" virtual table.
*/
@@ -646,7 +476,7 @@
static sqlite3_module zipfileModule = {
1, /* iVersion */
zipfileConnect, /* xCreate */
-@@ -2171,9 +2173,10 @@
+@@ -2173,9 +2175,10 @@
return rc;
}
#else /* SQLITE_OMIT_VIRTUALTABLE */
@@ -658,7 +488,7 @@
#ifdef _WIN32
__declspec(dllexport)
#endif
-@@ -2184,5 +2187,8 @@
+@@ -2186,5 +2189,8 @@
){
SQLITE_EXTENSION_INIT2(pApi);
(void)pzErrMsg; /* Unused parameter */
diff --git a/dev-db/sqlite/files/sqlite-3.35.0-build_2.1.patch b/dev-db/sqlite/files/sqlite-3.35.0-build_2.1.patch
new file mode 100644
index 0000000..383a493
--- /dev/null
+++ b/dev-db/sqlite/files/sqlite-3.35.0-build_2.1.patch
@@ -0,0 +1,292 @@
+Move some code to libsqlite3.so to avoid duplication.
+Link executables against libsqlite3.so.
+Increase timeout for fuzzcheck.
+Update list of optionally available functions.
+Fix building with dlopen() not available.
+
+SQLite revision: acd63062eb06748bfe9e4886639e4f2b54ea6a496a83f10716abbaba4115500b
+
+--- /Makefile.in
++++ /Makefile.in
+@@ -313,6 +313,9 @@
+ # Source code for extensions
+ #
+ SRC += \
++ $(TOP)/ext/expert/sqlite3expert.c \
++ $(TOP)/ext/expert/sqlite3expert.h
++SRC += \
+ $(TOP)/ext/fts1/fts1.c \
+ $(TOP)/ext/fts1/fts1.h \
+ $(TOP)/ext/fts1/fts1_hash.c \
+@@ -365,8 +368,29 @@
+ $(TOP)/ext/rbu/sqlite3rbu.h \
+ $(TOP)/ext/rbu/sqlite3rbu.c
+ SRC += \
++ $(TOP)/ext/misc/amatch.c \
++ $(TOP)/ext/misc/appendvfs.c \
++ $(TOP)/ext/misc/carray.c \
++ $(TOP)/ext/misc/completion.c \
++ $(TOP)/ext/misc/csv.c \
++ $(TOP)/ext/misc/dbdata.c \
++ $(TOP)/ext/misc/decimal.c \
++ $(TOP)/ext/misc/eval.c \
++ $(TOP)/ext/misc/fileio.c \
++ $(TOP)/ext/misc/ieee754.c \
+ $(TOP)/ext/misc/json1.c \
+- $(TOP)/ext/misc/stmt.c
++ $(TOP)/ext/misc/nextchar.c \
++ $(TOP)/ext/misc/percentile.c \
++ $(TOP)/ext/misc/regexp.c \
++ $(TOP)/ext/misc/series.c \
++ $(TOP)/ext/misc/sha1.c \
++ $(TOP)/ext/misc/shathree.c \
++ $(TOP)/ext/misc/sqlar.c \
++ $(TOP)/ext/misc/stmt.c \
++ $(TOP)/ext/misc/totype.c \
++ $(TOP)/ext/misc/uint.c \
++ $(TOP)/ext/misc/uuid.c \
++ $(TOP)/ext/misc/zipfile.c
+
+ # Generated source code files
+ #
+@@ -437,36 +461,21 @@
+ # Statically linked extensions
+ #
+ TESTSRC += \
+- $(TOP)/ext/expert/sqlite3expert.c \
+ $(TOP)/ext/expert/test_expert.c \
+- $(TOP)/ext/misc/amatch.c \
+- $(TOP)/ext/misc/appendvfs.c \
+- $(TOP)/ext/misc/carray.c \
+ $(TOP)/ext/misc/cksumvfs.c \
+ $(TOP)/ext/misc/closure.c \
+- $(TOP)/ext/misc/csv.c \
+- $(TOP)/ext/misc/decimal.c \
+- $(TOP)/ext/misc/eval.c \
+ $(TOP)/ext/misc/explain.c \
+- $(TOP)/ext/misc/fileio.c \
+ $(TOP)/ext/misc/fuzzer.c \
+ $(TOP)/ext/fts5/fts5_tcl.c \
+ $(TOP)/ext/fts5/fts5_test_mi.c \
+ $(TOP)/ext/fts5/fts5_test_tok.c \
+- $(TOP)/ext/misc/ieee754.c \
+ $(TOP)/ext/misc/mmapwarm.c \
+- $(TOP)/ext/misc/nextchar.c \
+ $(TOP)/ext/misc/normalize.c \
+- $(TOP)/ext/misc/percentile.c \
+ $(TOP)/ext/misc/prefixes.c \
+- $(TOP)/ext/misc/regexp.c \
+ $(TOP)/ext/misc/remember.c \
+- $(TOP)/ext/misc/series.c \
+ $(TOP)/ext/misc/spellfix.c \
+- $(TOP)/ext/misc/totype.c \
+ $(TOP)/ext/misc/unionvtab.c \
+ $(TOP)/ext/misc/wholenumber.c \
+- $(TOP)/ext/misc/zipfile.c \
+ $(TOP)/ext/userauth/userauth.c
+
+ # Source code to the library files needed by the test fixture
+@@ -648,25 +657,25 @@
+
+ libtclsqlite3.la: tclsqlite.lo libsqlite3.la
+ $(LTLINK) -no-undefined -o $@ tclsqlite.lo \
+- libsqlite3.la @TCL_STUB_LIB_SPEC@ $(TLIBS) \
++ libsqlite3.la @TCL_STUB_LIB_SPEC@ \
+ -rpath "$(TCLLIBDIR)" \
+ -version-info "8:6:8" \
+ -avoid-version
+
+-sqlite3$(TEXE): shell.c sqlite3.c
+- $(LTLINK) $(READLINE_FLAGS) $(SHELL_OPT) -o $@ \
+- shell.c sqlite3.c \
+- $(LIBREADLINE) $(TLIBS) -rpath "$(libdir)"
++sqlite3$(TEXE): shell.c libsqlite3.la
++ $(LTLINK) $(READLINE_FLAGS) -o $@ \
++ shell.c libsqlite3.la \
++ $(LIBREADLINE)
+
+-sqldiff$(TEXE): $(TOP)/tool/sqldiff.c sqlite3.lo sqlite3.h
+- $(LTLINK) -o $@ $(TOP)/tool/sqldiff.c sqlite3.lo $(TLIBS)
++sqldiff$(TEXE): $(TOP)/tool/sqldiff.c libsqlite3.la
++ $(LTLINK) -o $@ $(TOP)/tool/sqldiff.c libsqlite3.la
+
+-dbhash$(TEXE): $(TOP)/tool/dbhash.c sqlite3.lo sqlite3.h
+- $(LTLINK) -o $@ $(TOP)/tool/dbhash.c sqlite3.lo $(TLIBS)
++dbhash$(TEXE): $(TOP)/tool/dbhash.c libsqlite3.la
++ $(LTLINK) -o $@ $(TOP)/tool/dbhash.c libsqlite3.la
+
+-scrub$(TEXE): $(TOP)/ext/misc/scrub.c sqlite3.lo
++scrub$(TEXE): $(TOP)/ext/misc/scrub.c libsqlite3.la
+ $(LTLINK) -o $@ -I. -DSCRUB_STANDALONE \
+- $(TOP)/ext/misc/scrub.c sqlite3.lo $(TLIBS)
++ $(TOP)/ext/misc/scrub.c libsqlite3.la
+
+ srcck1$(BEXE): $(TOP)/tool/srcck1.c
+ $(BCC) -o srcck1$(BEXE) $(TOP)/tool/srcck1.c
+@@ -777,7 +786,7 @@
+ # Rule to build the amalgamation
+ #
+ sqlite3.lo: sqlite3.c
+- $(LTCOMPILE) $(TEMP_STORE) -c sqlite3.c
++ $(LTCOMPILE) $(SHELL_OPT) $(TEMP_STORE) -c sqlite3.c
+
+ # Rules to build the LEMON compiler generator
+ #
+@@ -1083,18 +1092,6 @@
+ # Source files that go into making shell.c
+ SHELL_SRC = \
+ $(TOP)/src/shell.c.in \
+- $(TOP)/ext/misc/appendvfs.c \
+- $(TOP)/ext/misc/completion.c \
+- $(TOP)/ext/misc/decimal.c \
+- $(TOP)/ext/misc/fileio.c \
+- $(TOP)/ext/misc/ieee754.c \
+- $(TOP)/ext/misc/series.c \
+- $(TOP)/ext/misc/shathree.c \
+- $(TOP)/ext/misc/sqlar.c \
+- $(TOP)/ext/misc/uint.c \
+- $(TOP)/ext/expert/sqlite3expert.c \
+- $(TOP)/ext/expert/sqlite3expert.h \
+- $(TOP)/ext/misc/zipfile.c \
+ $(TOP)/ext/misc/memtrace.c \
+ $(TOP)/src/test_windirent.c
+
+@@ -1264,11 +1261,11 @@
+
+ # Fuzz testing
+ fuzztest: fuzzcheck$(TEXE) $(FUZZDATA) sessionfuzz$(TEXE) $(TOP)/test/sessionfuzz-data1.db
+- ./fuzzcheck$(TEXE) $(FUZZDATA)
++ ./fuzzcheck$(TEXE) --timeout 3600 $(FUZZDATA)
+ ./sessionfuzz$(TEXE) run $(TOP)/test/sessionfuzz-data1.db
+
+ valgrindfuzz: fuzzcheck$(TEXT) $(FUZZDATA) sessionfuzz$(TEXE) $(TOP)/test/sessionfuzz-data1.db
+- valgrind ./fuzzcheck$(TEXE) --cell-size-check --limit-mem 10M $(FUZZDATA)
++ valgrind ./fuzzcheck$(TEXE) --cell-size-check --limit-mem 10M --timeout 3600 $(FUZZDATA)
+ valgrind ./sessionfuzz$(TEXE) run $(TOP)/test/sessionfuzz-data1.db
+
+ # The veryquick.test TCL tests.
+@@ -1302,24 +1299,23 @@
+ shelltest: $(TESTPROGS)
+ ./testfixture$(TEXT) $(TOP)/test/permutations.test shell
+
+-sqlite3_analyzer.c: sqlite3.c $(TOP)/src/tclsqlite.c $(TOP)/tool/spaceanal.tcl $(TOP)/tool/mkccode.tcl $(TOP)/tool/sqlite3_analyzer.c.in
++sqlite3_analyzer.c: $(TOP)/src/tclsqlite.c $(TOP)/tool/spaceanal.tcl $(TOP)/tool/mkccode.tcl $(TOP)/tool/sqlite3_analyzer.c.in
+ $(TCLSH_CMD) $(TOP)/tool/mkccode.tcl $(TOP)/tool/sqlite3_analyzer.c.in >sqlite3_analyzer.c
+
+-sqlite3_analyzer$(TEXE): sqlite3_analyzer.c
+- $(LTLINK) sqlite3_analyzer.c -o $@ $(LIBTCL) $(TLIBS)
++sqlite3_analyzer$(TEXE): sqlite3_analyzer.c libsqlite3.la
++ $(LTLINK) sqlite3_analyzer.c -o $@ libsqlite3.la $(LIBTCL)
+
+-sqltclsh.c: sqlite3.c $(TOP)/src/tclsqlite.c $(TOP)/tool/sqltclsh.tcl $(TOP)/ext/misc/appendvfs.c $(TOP)/tool/mkccode.tcl $(TOP)/tool/sqltclsh.c.in
++sqltclsh.c: $(TOP)/src/tclsqlite.c $(TOP)/tool/sqltclsh.tcl $(TOP)/tool/mkccode.tcl $(TOP)/tool/sqltclsh.c.in
+ $(TCLSH_CMD) $(TOP)/tool/mkccode.tcl $(TOP)/tool/sqltclsh.c.in >sqltclsh.c
+
+-sqltclsh$(TEXE): sqltclsh.c
+- $(LTLINK) sqltclsh.c -o $@ $(LIBTCL) $(TLIBS)
++sqltclsh$(TEXE): sqltclsh.c libsqlite3.la
++ $(LTLINK) sqltclsh.c -o $@ libsqlite3.la $(LIBTCL)
+
+-sqlite3_expert$(TEXE): $(TOP)/ext/expert/sqlite3expert.h $(TOP)/ext/expert/sqlite3expert.c $(TOP)/ext/expert/expert.c sqlite3.c
+- $(LTLINK) $(TOP)/ext/expert/sqlite3expert.h $(TOP)/ext/expert/sqlite3expert.c $(TOP)/ext/expert/expert.c sqlite3.c -o sqlite3_expert $(TLIBS)
++sqlite3_expert$(TEXE): $(TOP)/ext/expert/sqlite3expert.h $(TOP)/ext/expert/expert.c libsqlite3.la
++ $(LTLINK) $(TOP)/ext/expert/expert.c -o sqlite3_expert libsqlite3.la
+
+ CHECKER_DEPS =\
+ $(TOP)/tool/mkccode.tcl \
+- sqlite3.c \
+ $(TOP)/src/tclsqlite.c \
+ $(TOP)/ext/repair/sqlite3_checker.tcl \
+ $(TOP)/ext/repair/checkindex.c \
+@@ -1330,36 +1326,36 @@
+ sqlite3_checker.c: $(CHECKER_DEPS)
+ $(TCLSH_CMD) $(TOP)/tool/mkccode.tcl $(TOP)/ext/repair/sqlite3_checker.c.in >$@
+
+-sqlite3_checker$(TEXE): sqlite3_checker.c
+- $(LTLINK) sqlite3_checker.c -o $@ $(LIBTCL) $(TLIBS)
++sqlite3_checker$(TEXE): sqlite3_checker.c libsqlite3.la
++ $(LTLINK) sqlite3_checker.c -o $@ libsqlite3.la $(LIBTCL)
+
+-dbdump$(TEXE): $(TOP)/ext/misc/dbdump.c sqlite3.lo
++dbdump$(TEXE): $(TOP)/ext/misc/dbdump.c libsqlite3.la
+ $(LTLINK) -DDBDUMP_STANDALONE -o $@ \
+- $(TOP)/ext/misc/dbdump.c sqlite3.lo $(TLIBS)
++ $(TOP)/ext/misc/dbdump.c libsqlite3.la
+
+-dbtotxt$(TEXE): $(TOP)/tool/dbtotxt.c
+- $(LTLINK)-o $@ $(TOP)/tool/dbtotxt.c
++dbtotxt$(TEXE): $(TOP)/tool/dbtotxt.c
++ $(LTLINK) -o $@ $(TOP)/tool/dbtotxt.c
+
+-showdb$(TEXE): $(TOP)/tool/showdb.c sqlite3.lo
+- $(LTLINK) -o $@ $(TOP)/tool/showdb.c sqlite3.lo $(TLIBS)
++showdb$(TEXE): $(TOP)/tool/showdb.c libsqlite3.la
++ $(LTLINK) -o $@ $(TOP)/tool/showdb.c libsqlite3.la
+
+-showstat4$(TEXE): $(TOP)/tool/showstat4.c sqlite3.lo
+- $(LTLINK) -o $@ $(TOP)/tool/showstat4.c sqlite3.lo $(TLIBS)
++showstat4$(TEXE): $(TOP)/tool/showstat4.c libsqlite3.la
++ $(LTLINK) -o $@ $(TOP)/tool/showstat4.c libsqlite3.la
+
+-showjournal$(TEXE): $(TOP)/tool/showjournal.c sqlite3.lo
+- $(LTLINK) -o $@ $(TOP)/tool/showjournal.c sqlite3.lo $(TLIBS)
++showjournal$(TEXE): $(TOP)/tool/showjournal.c
++ $(LTLINK) -o $@ $(TOP)/tool/showjournal.c
+
+-showwal$(TEXE): $(TOP)/tool/showwal.c sqlite3.lo
+- $(LTLINK) -o $@ $(TOP)/tool/showwal.c sqlite3.lo $(TLIBS)
++showwal$(TEXE): $(TOP)/tool/showwal.c
++ $(LTLINK) -o $@ $(TOP)/tool/showwal.c
+
+ showshm$(TEXE): $(TOP)/tool/showshm.c
+ $(LTLINK) -o $@ $(TOP)/tool/showshm.c
+
+-index_usage$(TEXE): $(TOP)/tool/index_usage.c sqlite3.lo
+- $(LTLINK) $(SHELL_OPT) -o $@ $(TOP)/tool/index_usage.c sqlite3.lo $(TLIBS)
++index_usage$(TEXE): $(TOP)/tool/index_usage.c libsqlite3.la
++ $(LTLINK) -o $@ $(TOP)/tool/index_usage.c libsqlite3.la
+
+-changeset$(TEXE): $(TOP)/ext/session/changeset.c sqlite3.lo
+- $(LTLINK) -o $@ $(TOP)/ext/session/changeset.c sqlite3.lo $(TLIBS)
++changeset$(TEXE): $(TOP)/ext/session/changeset.c libsqlite3.la
++ $(LTLINK) -o $@ $(TOP)/ext/session/changeset.c libsqlite3.la
+
+ changesetfuzz$(TEXE): $(TOP)/ext/session/changesetfuzz.c sqlite3.lo
+ $(LTLINK) -o $@ $(TOP)/ext/session/changesetfuzz.c sqlite3.lo $(TLIBS)
+@@ -1387,11 +1383,11 @@
+ kvtest$(TEXE): $(TOP)/test/kvtest.c sqlite3.c
+ $(LTLINK) $(KV_OPT) -o $@ $(TOP)/test/kvtest.c sqlite3.c $(TLIBS)
+
+-rbu$(EXE): $(TOP)/ext/rbu/rbu.c $(TOP)/ext/rbu/sqlite3rbu.c sqlite3.lo
+- $(LTLINK) -I. -o $@ $(TOP)/ext/rbu/rbu.c sqlite3.lo $(TLIBS)
++rbu$(EXE): $(TOP)/ext/rbu/rbu.c libsqlite3.la
++ $(LTLINK) -I. -o $@ $(TOP)/ext/rbu/rbu.c libsqlite3.la
+
+-loadfts$(EXE): $(TOP)/tool/loadfts.c libsqlite3.la
+- $(LTLINK) $(TOP)/tool/loadfts.c libsqlite3.la -o $@ $(TLIBS)
++loadfts$(EXE): $(TOP)/tool/loadfts.c libsqlite3.la
++ $(LTLINK) $(TOP)/tool/loadfts.c libsqlite3.la -o $@
+
+ # This target will fail if the SQLite amalgamation contains any exported
+ # symbols that do not begin with "sqlite3_". It is run as part of the
+--- /configure.ac
++++ /configure.ac
+@@ -108,7 +108,7 @@
+ #########
+ # Figure out whether or not we have these functions
+ #
+-AC_CHECK_FUNCS([fdatasync gmtime_r isnan localtime_r localtime_s malloc_usable_size strchrnul usleep utime pread pread64 pwrite pwrite64])
++AC_CHECK_FUNCS([fdatasync fullfsync gmtime_r isnan localtime_r localtime_s malloc_usable_size posix_fallocate pread pread64 pwrite pwrite64 strchrnul usleep utime])
+
+ #########
+ # By default, we use the amalgamation (this may be changed below...)
+@@ -587,6 +587,9 @@
+ if test "${enable_load_extension}" = "yes" ; then
+ OPT_FEATURE_FLAGS=""
+ AC_SEARCH_LIBS(dlopen, dl)
++ if test "${ac_cv_search_dlopen}" = "no" ; then
++ OPT_FEATURE_FLAGS="-DSQLITE_OMIT_LOAD_EXTENSION=1"
++ fi
+ else
+ OPT_FEATURE_FLAGS="-DSQLITE_OMIT_LOAD_EXTENSION=1"
+ fi
diff --git a/dev-db/sqlite/files/sqlite-3.35.0-build_2.2.patch b/dev-db/sqlite/files/sqlite-3.35.0-build_2.2.patch
new file mode 100644
index 0000000..99350c7
--- /dev/null
+++ b/dev-db/sqlite/files/sqlite-3.35.0-build_2.2.patch
@@ -0,0 +1,441 @@
+Move some code to libsqlite3.so to avoid duplication.
+Initialize some extensions in libsqlite3.so.
+Update test suite.
+
+SQLite revision: acd63062eb06748bfe9e4886639e4f2b54ea6a496a83f10716abbaba4115500b
+
+--- /ext/repair/sqlite3_checker.c.in
++++ /ext/repair/sqlite3_checker.c.in
+@@ -2,6 +2,7 @@
+ ** Read an SQLite database file and analyze its space utilization. Generate
+ ** text on standard output.
+ */
++#define SQLITE_CORE 1
+ #define TCLSH_INIT_PROC sqlite3_checker_init_proc
+ #define SQLITE_ENABLE_DBPAGE_VTAB 1
+ #define SQLITE_ENABLE_JSON1 1
+@@ -14,7 +15,7 @@
+ #define SQLITE_OMIT_SHARED_CACHE 1
+ #define SQLITE_DEFAULT_MEMSTATUS 0
+ #define SQLITE_MAX_EXPR_DEPTH 0
+-INCLUDE sqlite3.c
++#include "sqlite3.h"
+ INCLUDE $ROOT/src/tclsqlite.c
+ INCLUDE $ROOT/ext/misc/btreeinfo.c
+ INCLUDE $ROOT/ext/repair/checkindex.c
+--- /src/main.c
++++ /src/main.c
+@@ -50,12 +50,36 @@
+ #ifdef SQLITE_ENABLE_FTS5
+ int sqlite3Fts5Init(sqlite3*);
+ #endif
++#if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_ENABLE_DBPAGE_VTAB)
++int sqlite3DbdataRegister(sqlite3*);
++#endif
+ #ifdef SQLITE_ENABLE_JSON1
+ int sqlite3Json1Init(sqlite3*);
+ #endif
+ #ifdef SQLITE_ENABLE_STMTVTAB
+ int sqlite3StmtVtabInit(sqlite3*);
+ #endif
++int sqlite3AmatchInit(sqlite3*);
++int sqlite3CarrayInit(sqlite3*);
++int sqlite3CompletionVtabInit(sqlite3*);
++int sqlite3CsvInit(sqlite3*);
++int sqlite3DecimalInit(sqlite3*);
++int sqlite3EvalInit(sqlite3*);
++int sqlite3FileioInit(sqlite3*);
++int sqlite3IeeeInit(sqlite3*);
++int sqlite3NextcharInit(sqlite3*);
++int sqlite3PercentileInit(sqlite3*);
++int sqlite3RegexpInit(sqlite3*);
++int sqlite3SeriesInit(sqlite3*);
++int sqlite3ShaInit(sqlite3*);
++int sqlite3ShathreeInit(sqlite3*);
++int sqlite3TotypeInit(sqlite3*);
++int sqlite3UintInit(sqlite3*);
++int sqlite3UuidInit(sqlite3*);
++#if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_HAVE_ZLIB)
++int sqlite3ZipfileInit(sqlite3*);
++int sqlite3SqlarInit(sqlite3*);
++#endif
+
+ /*
+ ** An array of pointers to extension initializer functions for
+@@ -83,6 +107,9 @@
+ #ifdef SQLITE_ENABLE_DBPAGE_VTAB
+ sqlite3DbpageRegister,
+ #endif
++#if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_ENABLE_DBPAGE_VTAB)
++ sqlite3DbdataRegister,
++#endif
+ #ifdef SQLITE_ENABLE_DBSTAT_VTAB
+ sqlite3DbstatRegister,
+ #endif
+@@ -96,6 +123,27 @@
+ #ifdef SQLITE_ENABLE_BYTECODE_VTAB
+ sqlite3VdbeBytecodeVtabInit,
+ #endif
++ sqlite3AmatchInit,
++ sqlite3CarrayInit,
++ sqlite3CompletionVtabInit,
++ sqlite3CsvInit,
++ sqlite3DecimalInit,
++ sqlite3EvalInit,
++ sqlite3FileioInit,
++ sqlite3IeeeInit,
++ sqlite3NextcharInit,
++ sqlite3PercentileInit,
++ sqlite3RegexpInit,
++ sqlite3SeriesInit,
++ sqlite3ShaInit,
++ sqlite3ShathreeInit,
++ sqlite3TotypeInit,
++ sqlite3UintInit,
++ sqlite3UuidInit,
++#if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_HAVE_ZLIB)
++ sqlite3ZipfileInit,
++ sqlite3SqlarInit,
++#endif
+ };
+
+ #ifndef SQLITE_AMALGAMATION
+--- /src/shell.c.in
++++ /src/shell.c.in
+@@ -69,6 +69,7 @@
+ #include <stdio.h>
+ #include <assert.h>
+ #include "sqlite3.h"
++#include "ext/expert/sqlite3expert.h"
+ typedef sqlite3_int64 i64;
+ typedef sqlite3_uint64 u64;
+ typedef unsigned char u8;
+@@ -135,6 +136,10 @@
+ # define SHELL_USE_LOCAL_GETLINE 1
+ #endif
+
++#ifdef SQLITE_HAVE_ZLIB
++#include <zlib.h>
++#endif
++
+
+ #if defined(_WIN32) || defined(WIN32)
+ # if SQLITE_OS_WINRT
+@@ -1018,25 +1023,7 @@
+ INCLUDE test_windirent.c
+ #define dirent DIRENT
+ #endif
+-INCLUDE ../ext/misc/shathree.c
+-INCLUDE ../ext/misc/fileio.c
+-INCLUDE ../ext/misc/completion.c
+-INCLUDE ../ext/misc/appendvfs.c
+ INCLUDE ../ext/misc/memtrace.c
+-INCLUDE ../ext/misc/uint.c
+-INCLUDE ../ext/misc/decimal.c
+-INCLUDE ../ext/misc/ieee754.c
+-INCLUDE ../ext/misc/series.c
+-#ifdef SQLITE_HAVE_ZLIB
+-INCLUDE ../ext/misc/zipfile.c
+-INCLUDE ../ext/misc/sqlar.c
+-#endif
+-INCLUDE ../ext/expert/sqlite3expert.h
+-INCLUDE ../ext/expert/sqlite3expert.c
+-
+-#if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_ENABLE_DBPAGE_VTAB)
+-INCLUDE ../ext/misc/dbdata.c
+-#endif
+
+ #if defined(SQLITE_ENABLE_SESSION)
+ /*
+@@ -4608,20 +4595,6 @@
+ #ifndef SQLITE_OMIT_LOAD_EXTENSION
+ sqlite3_enable_load_extension(p->db, 1);
+ #endif
+- sqlite3_fileio_init(p->db, 0, 0);
+- sqlite3_shathree_init(p->db, 0, 0);
+- sqlite3_completion_init(p->db, 0, 0);
+- sqlite3_uint_init(p->db, 0, 0);
+- sqlite3_decimal_init(p->db, 0, 0);
+- sqlite3_ieee_init(p->db, 0, 0);
+- sqlite3_series_init(p->db, 0, 0);
+-#if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_ENABLE_DBPAGE_VTAB)
+- sqlite3_dbdata_init(p->db, 0, 0);
+-#endif
+-#ifdef SQLITE_HAVE_ZLIB
+- sqlite3_zipfile_init(p->db, 0, 0);
+- sqlite3_sqlar_init(p->db, 0, 0);
+-#endif
+ sqlite3_create_function(p->db, "shell_add_schema", 3, SQLITE_UTF8, 0,
+ shellAddSchemaName, 0, 0);
+ sqlite3_create_function(p->db, "shell_module_schema", 1, SQLITE_UTF8, 0,
+@@ -6644,8 +6617,6 @@
+ );
+ goto end_ar_command;
+ }
+- sqlite3_fileio_init(cmd.db, 0, 0);
+- sqlite3_sqlar_init(cmd.db, 0, 0);
+ sqlite3_create_function(cmd.db, "shell_putsnl", 1, SQLITE_UTF8, cmd.p,
+ shellPutsFunc, 0, 0);
+
+@@ -11108,6 +11079,7 @@
+ #endif
+ }
+ data.out = stdout;
++ extern int sqlite3_appendvfs_init(sqlite3 *, char **, const sqlite3_api_routines *);
+ sqlite3_appendvfs_init(0,0,0);
+
+ /* Go ahead and open the database file if it already exists. If the
+--- /src/test_config.c
++++ /src/test_config.c
+@@ -359,6 +359,8 @@
+ Tcl_SetVar2(interp, "sqlite_options", "datetime", "1", TCL_GLOBAL_ONLY);
+ #endif
+
++ Tcl_SetVar2(interp, "sqlite_options", "decimal", "1", TCL_GLOBAL_ONLY);
++
+ #ifdef SQLITE_OMIT_DECLTYPE
+ Tcl_SetVar2(interp, "sqlite_options", "decltype", "0", TCL_GLOBAL_ONLY);
+ #else
+@@ -546,6 +548,8 @@
+ Tcl_SetVar2(interp, "sqlite_options", "progress", "1", TCL_GLOBAL_ONLY);
+ #endif
+
++ Tcl_SetVar2(interp, "sqlite_options", "regexp", "1", TCL_GLOBAL_ONLY);
++
+ #ifdef SQLITE_OMIT_REINDEX
+ Tcl_SetVar2(interp, "sqlite_options", "reindex", "0", TCL_GLOBAL_ONLY);
+ #else
+@@ -668,6 +672,8 @@
+ Tcl_SetVar2(interp, "sqlite_options", "truncate_opt", "1", TCL_GLOBAL_ONLY);
+ #endif
+
++ Tcl_SetVar2(interp, "sqlite_options", "uint", "1", TCL_GLOBAL_ONLY);
++
+ #ifdef SQLITE_OMIT_UTF16
+ Tcl_SetVar2(interp, "sqlite_options", "utf16", "0", TCL_GLOBAL_ONLY);
+ #else
+--- /test/e_expr.test
++++ /test/e_expr.test
+@@ -1079,7 +1079,7 @@
+ #
+ # There is a regexp function if ICU is enabled though.
+ #
+-ifcapable !icu {
++ifcapable !icu&&!regexp {
+ do_catchsql_test e_expr-18.1.1 {
+ SELECT regexp('abc', 'def')
+ } {1 {no such function: regexp}}
+--- /test/icu.test
++++ /test/icu.test
+@@ -41,7 +41,7 @@
+ #
+ test_expr icu-1.1 {i1='hello'} {i1 REGEXP 'hello'} 1
+ test_expr icu-1.2 {i1='hello'} {i1 REGEXP '.ello'} 1
+- test_expr icu-1.3 {i1='hello'} {i1 REGEXP '.ell'} 0
++ test_expr icu-1.3 {i1='hello'} {i1 REGEXP '.ell$'} 0
+ test_expr icu-1.4 {i1='hello'} {i1 REGEXP '.ell.*'} 1
+ test_expr icu-1.5 {i1=NULL} {i1 REGEXP '.ell.*'} {}
+
+--- /test/pragma.test
++++ /test/pragma.test
+@@ -1370,17 +1370,62 @@
+ } ;# ifcapable trigger
+
+ ifcapable schema_pragmas {
+- do_test pragma-11.1 {
+- execsql2 {
+- pragma collation_list;
++ ifcapable decimal {
++ ifcapable uint {
++ do_test pragma-11.1 {
++ execsql2 {
++ pragma collation_list;
++ }
++ } {seq 0 name UINT seq 1 name decimal seq 2 name RTRIM seq 3 name NOCASE seq 4 name BINARY}
++ do_test pragma-11.2 {
++ db collate New_Collation blah...
++ execsql {
++ pragma collation_list;
++ }
++ } {0 New_Collation 1 UINT 2 decimal 3 RTRIM 4 NOCASE 5 BINARY}
+ }
+- } {seq 0 name RTRIM seq 1 name NOCASE seq 2 name BINARY}
+- do_test pragma-11.2 {
+- db collate New_Collation blah...
+- execsql {
+- pragma collation_list;
++ ifcapable !uint {
++ do_test pragma-11.1 {
++ execsql2 {
++ pragma collation_list;
++ }
++ } {seq 0 name decimal seq 1 name RTRIM seq 2 name NOCASE seq 3 name BINARY}
++ do_test pragma-11.2 {
++ db collate New_Collation blah...
++ execsql {
++ pragma collation_list;
++ }
++ } {0 New_Collation 1 decimal 2 RTRIM 3 NOCASE 4 BINARY}
+ }
+- } {0 New_Collation 1 RTRIM 2 NOCASE 3 BINARY}
++ }
++ ifcapable !decimal {
++ ifcapable uint {
++ do_test pragma-11.1 {
++ execsql2 {
++ pragma collation_list;
++ }
++ } {seq 0 name UINT seq 1 name RTRIM seq 2 name NOCASE seq 3 name BINARY}
++ do_test pragma-11.2 {
++ db collate New_Collation blah...
++ execsql {
++ pragma collation_list;
++ }
++ } {0 New_Collation 1 UINT 2 RTRIM 3 NOCASE 4 BINARY}
++ }
++ ifcapable !uint {
++ do_test pragma-11.1 {
++ execsql2 {
++ pragma collation_list;
++ }
++ } {seq 0 name RTRIM seq 1 name NOCASE seq 2 name BINARY}
++ do_test pragma-11.2 {
++ db collate New_Collation blah...
++ execsql {
++ pragma collation_list;
++ }
++ } {0 New_Collation 1 RTRIM 2 NOCASE 3 BINARY}
++ }
++ }
+ }
+
+ ifcapable schema_pragmas&&tempdb {
+--- /test/sessionfuzz.c
++++ /test/sessionfuzz.c
+@@ -698,49 +698,6 @@
+ #include <stdio.h>
+ #include <string.h>
+ #include <assert.h>
+-#ifndef OMIT_ZLIB
+-#include "zlib.h"
+-#endif
+-
+-/*
+-** Implementation of the "sqlar_uncompress(X,SZ)" SQL function
+-**
+-** Parameter SZ is interpreted as an integer. If it is less than or
+-** equal to zero, then this function returns a copy of X. Or, if
+-** SZ is equal to the size of X when interpreted as a blob, also
+-** return a copy of X. Otherwise, decompress blob X using zlib
+-** utility function uncompress() and return the results (another
+-** blob).
+-*/
+-static void sqlarUncompressFunc(
+- sqlite3_context *context,
+- int argc,
+- sqlite3_value **argv
+-){
+-#ifdef OMIT_ZLIB
+- sqlite3_result_value(context, argv[0]);
+-#else
+- uLong nData;
+- uLongf sz;
+-
+- assert( argc==2 );
+- sz = sqlite3_value_int(argv[1]);
+-
+- if( sz<=0 || sz==(nData = sqlite3_value_bytes(argv[0])) ){
+- sqlite3_result_value(context, argv[0]);
+- }else{
+- const Bytef *pData= sqlite3_value_blob(argv[0]);
+- Bytef *pOut = sqlite3_malloc(sz);
+- if( Z_OK!=uncompress(pOut, &sz, pData, nData) ){
+- sqlite3_result_error(context, "error in uncompress()", -1);
+- }else{
+- sqlite3_result_blob(context, pOut, sz, SQLITE_TRANSIENT);
+- }
+- sqlite3_free(pOut);
+- }
+-#endif
+-}
+-
+
+ /* Run a chunk of SQL. If any errors happen, print an error message
+ ** and exit.
+--- /tool/mksqlite3c.tcl
++++ /tool/mksqlite3c.tcl
+@@ -129,6 +129,7 @@
+ rtree.h
+ sqlite3session.h
+ sqlite3.h
++ sqlite3expert.h
+ sqlite3ext.h
+ sqlite3rbu.h
+ sqliteicu.h
+@@ -416,6 +417,28 @@
+ sqlite3session.c
+ fts5.c
+ stmt.c
++ amatch.c
++ appendvfs.c
++ carray.c
++ completion.c
++ csv.c
++ dbdata.c
++ decimal.c
++ eval.c
++ fileio.c
++ ieee754.c
++ nextchar.c
++ percentile.c
++ regexp.c
++ series.c
++ sha1.c
++ shathree.c
++ sqlar.c
++ sqlite3expert.c
++ totype.c
++ uint.c
++ uuid.c
++ zipfile.c
+ } {
+ copy_file tsrc/$file
+ }
+--- /tool/sqlite3_analyzer.c.in
++++ /tool/sqlite3_analyzer.c.in
+@@ -14,9 +14,6 @@
+ #define SQLITE_DEFAULT_MEMSTATUS 0
+ #define SQLITE_MAX_EXPR_DEPTH 0
+ #define SQLITE_OMIT_LOAD_EXTENSION 1
+-#ifndef USE_EXTERNAL_SQLITE
+-INCLUDE sqlite3.c
+-#endif
+ INCLUDE $ROOT/src/tclsqlite.c
+
+ const char *sqlite3_analyzer_init_proc(Tcl_Interp *interp){
+--- /tool/sqltclsh.c.in
++++ /tool/sqltclsh.c.in
+@@ -27,21 +27,13 @@
+ #define SQLITE_OMIT_SHARED_CACHE 1
+ #define SQLITE_DEFAULT_MEMSTATUS 0
+ #define SQLITE_MAX_EXPR_DEPTH 0
+-INCLUDE sqlite3.c
+-INCLUDE $ROOT/ext/misc/appendvfs.c
+-#ifdef SQLITE_HAVE_ZLIB
+-INCLUDE $ROOT/ext/misc/zipfile.c
+-INCLUDE $ROOT/ext/misc/sqlar.c
+-#endif
++#include "sqlite3.h"
+ INCLUDE $ROOT/src/tclsqlite.c
+
+ const char *sqlite3_tclapp_init_proc(Tcl_Interp *interp){
+ (void)interp;
++ extern int sqlite3_appendvfs_init(sqlite3 *,char **, const sqlite3_api_routines *);
+ sqlite3_appendvfs_init(0,0,0);
+-#ifdef SQLITE_HAVE_ZLIB
+- sqlite3_auto_extension((void(*)(void))sqlite3_sqlar_init);
+- sqlite3_auto_extension((void(*)(void))sqlite3_zipfile_init);
+-#endif
+
+ return
+ BEGIN_STRING
diff --git a/dev-db/sqlite/metadata.xml b/dev-db/sqlite/metadata.xml
index c7b127a..67b1888 100644
--- a/dev-db/sqlite/metadata.xml
+++ b/dev-db/sqlite/metadata.xml
@@ -1,14 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
- <maintainer type="person">
+ <maintainer type="person" proxied="yes">
<email>arfrever.fta@gmail.com</email>
<name>Arfrever Frehtes Taifersar Arahesis</name>
</maintainer>
- <maintainer type="person">
+ <maintainer type="person" proxied="proxy">
<email>floppym@gentoo.org</email>
<name>Mike Gilbert</name>
- <description>Proxy</description>
</maintainer>
<use>
<flag name="secure-delete">Enable overwriting of deleted content with zeros by default (http://sqlite.org/pragma.html#pragma_secure_delete), causing some performance penalty</flag>
diff --git a/dev-db/sqlite/sqlite-3.32.3-r2.ebuild b/dev-db/sqlite/sqlite-3.32.3-r2.ebuild
deleted file mode 120000
index 50c9052..0000000
--- a/dev-db/sqlite/sqlite-3.32.3-r2.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-sqlite-3.32.3.ebuild
\ No newline at end of file
diff --git a/dev-db/sqlite/sqlite-3.32.3.ebuild b/dev-db/sqlite/sqlite-3.32.3.ebuild
deleted file mode 100644
index b81249d..0000000
--- a/dev-db/sqlite/sqlite-3.32.3.ebuild
+++ /dev/null
@@ -1,340 +0,0 @@
-# Copyright 1999-2020 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="7"
-
-inherit autotools flag-o-matic multilib-minimal toolchain-funcs
-
-if [[ "${PV}" != "9999" ]]; then
- SRC_PV="$(printf "%u%02u%02u%02u" $(ver_rs 1- " "))"
- DOC_PV="${SRC_PV}"
- # DOC_PV="$(printf "%u%02u%02u00" $(ver_rs 1-3 " "))"
-fi
-
-DESCRIPTION="SQL database engine"
-HOMEPAGE="https://sqlite.org/"
-if [[ "${PV}" == "9999" ]]; then
- SRC_URI=""
-else
- SRC_URI="https://sqlite.org/2020/${PN}-src-${SRC_PV}.zip
- doc? ( https://sqlite.org/2020/${PN}-doc-${DOC_PV}.zip )"
-fi
-
-LICENSE="public-domain"
-SLOT="3"
-KEYWORDS="*"
-IUSE="debug doc icu +readline secure-delete static-libs tcl test tools"
-if [[ "${PV}" == "9999" ]]; then
- PROPERTIES="live"
-fi
-RESTRICT="!test? ( test )"
-
-if [[ "${PV}" == "9999" ]]; then
- BDEPEND=">=dev-lang/tcl-8.6:0
- dev-vcs/fossil"
-else
- BDEPEND="app-arch/unzip
- >=dev-lang/tcl-8.6:0"
-fi
-RDEPEND="sys-libs/zlib:0=[${MULTILIB_USEDEP}]
- icu? ( dev-libs/icu:0=[${MULTILIB_USEDEP}] )
- readline? ( sys-libs/readline:0=[${MULTILIB_USEDEP}] )
- tcl? ( dev-lang/tcl:0=[${MULTILIB_USEDEP}] )
- tools? ( dev-lang/tcl:0=[${MULTILIB_USEDEP}] )"
-DEPEND="${RDEPEND}
- test? ( >=dev-lang/tcl-8.6:0[${MULTILIB_USEDEP}] )"
-
-if [[ "${PV}" == "9999" ]]; then
- S="${WORKDIR}/${PN}"
-else
- S="${WORKDIR}/${PN}-src-${SRC_PV}"
-fi
-
-src_unpack() {
- if [[ "${PV}" == "9999" ]]; then
- local distdir="${PORTAGE_ACTUAL_DISTDIR:-${DISTDIR}}"
- addwrite "${distdir}"
- mkdir -p "${distdir}/fossil-src/${PN}" || die
-
- mkdir "${WORKDIR}/${PN}" || die
- pushd "${WORKDIR}/${PN}" > /dev/null || die
- if [[ ! -f "${distdir}/fossil-src/${PN}/sqlite.fossil" ]]; then
- einfo fossil clone --verbose https://sqlite.org/src sqlite.fossil
- fossil clone --verbose https://sqlite.org/src sqlite.fossil || die
- echo
- else
- cp -p "${distdir}/fossil-src/${PN}/sqlite.fossil" . || die
- einfo fossil pull --repository sqlite.fossil --verbose https://sqlite.org/src
- fossil pull --repository sqlite.fossil --verbose https://sqlite.org/src || die
- echo
- fi
- cp -p sqlite.fossil "${distdir}/fossil-src/${PN}" || die
- einfo fossil open --quiet sqlite.fossil
- fossil open --quiet sqlite.fossil || die
- echo
- popd > /dev/null || die
-
- if use doc; then
- mkdir "${WORKDIR}/${PN}-doc" || die
- pushd "${WORKDIR}/${PN}-doc" > /dev/null || die
- if [[ ! -f "${distdir}/fossil-src/${PN}/sqlite-doc.fossil" ]]; then
- einfo fossil clone --verbose https://sqlite.org/docsrc sqlite-doc.fossil
- fossil clone --verbose https://sqlite.org/docsrc sqlite-doc.fossil || die
- echo
- else
- cp -p "${distdir}/fossil-src/${PN}/sqlite-doc.fossil" . || die
- einfo fossil pull --repository sqlite-doc.fossil --verbose https://sqlite.org/docsrc
- fossil pull --repository sqlite-doc.fossil --verbose https://sqlite.org/docsrc || die
- echo
- fi
- cp -p sqlite-doc.fossil "${distdir}/fossil-src/${PN}" || die
- einfo fossil open --quiet sqlite-doc.fossil
- fossil open --quiet sqlite-doc.fossil || die
- echo
- popd > /dev/null || die
- fi
- else
- default
- fi
-}
-
-src_prepare() {
- eapply "${FILESDIR}/${PN}-3.32.1-full_archive-build_1.patch"
- eapply "${FILESDIR}/${PN}-3.32.1-full_archive-build_2.patch"
- eapply "${FILESDIR}/${PN}-3.32.3-security_fixes.patch"
-
- eapply_user
-
- # Fix AC_CHECK_FUNCS.
- # https://mailinglists.sqlite.org/cgi-bin/mailman/private/sqlite-dev/2016-March/002762.html
- sed -e "s/AC_CHECK_FUNCS(.*)/AC_CHECK_FUNCS([fdatasync fullfsync gmtime_r isnan localtime_r localtime_s malloc_usable_size posix_fallocate pread pread64 pwrite pwrite64 strchrnul usleep utime])/" -i configure.ac || die "sed failed"
-
- eautoreconf
-
- multilib_copy_sources
-}
-
-multilib_src_configure() {
- local -x CPPFLAGS="${CPPFLAGS}" CFLAGS="${CFLAGS}"
- local options=()
-
- options+=(
- --enable-load-extension
- --enable-threadsafe
- )
-
- # Support detection of misuse of SQLite API.
- # https://sqlite.org/compile.html#enable_api_armor
- append-cppflags -DSQLITE_ENABLE_API_ARMOR
-
- # Support bytecode and tables_used virtual tables.
- # https://sqlite.org/bytecodevtab.html
- append-cppflags -DSQLITE_ENABLE_BYTECODE_VTAB
-
- # Support column metadata functions.
- # https://sqlite.org/c3ref/column_database_name.html
- append-cppflags -DSQLITE_ENABLE_COLUMN_METADATA
-
- # Support sqlite_dbpage virtual table.
- # https://sqlite.org/dbpage.html
- append-cppflags -DSQLITE_ENABLE_DBPAGE_VTAB
-
- # Support dbstat virtual table.
- # https://sqlite.org/dbstat.html
- append-cppflags -DSQLITE_ENABLE_DBSTAT_VTAB
-
- # Support sqlite3_serialize() and sqlite3_deserialize() functions.
- # https://sqlite.org/c3ref/serialize.html
- # https://sqlite.org/c3ref/deserialize.html
- append-cppflags -DSQLITE_ENABLE_DESERIALIZE
-
- # Support comments in output of EXPLAIN.
- # https://sqlite.org/compile.html#enable_explain_comments
- append-cppflags -DSQLITE_ENABLE_EXPLAIN_COMMENTS
-
- # Support Full-Text Search versions 3, 4 and 5.
- # https://sqlite.org/fts3.html
- # https://sqlite.org/fts5.html
- append-cppflags -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_FTS3_PARENTHESIS -DSQLITE_ENABLE_FTS4
- options+=(--enable-fts5)
-
- # Support hidden columns.
- append-cppflags -DSQLITE_ENABLE_HIDDEN_COLUMNS
-
- # Support JSON1 extension.
- # https://sqlite.org/json1.html
- append-cppflags -DSQLITE_ENABLE_JSON1
-
- # Support memsys5 memory allocator.
- # https://sqlite.org/malloc.html#memsys5
- append-cppflags -DSQLITE_ENABLE_MEMSYS5
-
- # Support sqlite3_normalized_sql() function.
- # https://sqlite.org/c3ref/expanded_sql.html
- append-cppflags -DSQLITE_ENABLE_NORMALIZE
-
- # Support sqlite_offset() function.
- # https://sqlite.org/lang_corefunc.html#sqlite_offset
- append-cppflags -DSQLITE_ENABLE_OFFSET_SQL_FUNC
-
- # Support pre-update hook functions.
- # https://sqlite.org/c3ref/preupdate_count.html
- append-cppflags -DSQLITE_ENABLE_PREUPDATE_HOOK
-
- # Support Resumable Bulk Update extension.
- # https://sqlite.org/rbu.html
- append-cppflags -DSQLITE_ENABLE_RBU
-
- # Support R*Trees.
- # https://sqlite.org/rtree.html
- # https://sqlite.org/geopoly.html
- append-cppflags -DSQLITE_ENABLE_RTREE -DSQLITE_ENABLE_GEOPOLY
-
- # Support scan status functions.
- # https://sqlite.org/c3ref/stmt_scanstatus.html
- # https://sqlite.org/c3ref/stmt_scanstatus_reset.html
- append-cppflags -DSQLITE_ENABLE_STMT_SCANSTATUS
-
- # Support sqlite_stmt virtual table.
- # https://sqlite.org/stmt.html
- append-cppflags -DSQLITE_ENABLE_STMTVTAB
-
- # Support Session extension.
- # https://sqlite.org/sessionintro.html
- options+=(--enable-session)
-
- # Support unknown() function.
- # https://sqlite.org/compile.html#enable_unknown_sql_function
- append-cppflags -DSQLITE_ENABLE_UNKNOWN_SQL_FUNCTION
-
- # Support unlock notification.
- # https://sqlite.org/unlock_notify.html
- append-cppflags -DSQLITE_ENABLE_UNLOCK_NOTIFY
-
- # Support LIMIT and ORDER BY clauses on DELETE and UPDATE statements.
- # https://sqlite.org/lang_delete.html#optional_limit_and_order_by_clauses
- # https://sqlite.org/lang_update.html#optional_limit_and_order_by_clauses
- append-cppflags -DSQLITE_ENABLE_UPDATE_DELETE_LIMIT
-
- # Support soundex() function.
- # https://sqlite.org/lang_corefunc.html#soundex
- append-cppflags -DSQLITE_SOUNDEX
-
- # Support URI filenames.
- # https://sqlite.org/uri.html
- append-cppflags -DSQLITE_USE_URI
-
- # debug USE flag.
- options+=($(use_enable debug))
-
- # icu USE flag.
- if use icu; then
- # Support ICU extension.
- # https://sqlite.org/compile.html#enable_icu
- append-cppflags -DSQLITE_ENABLE_ICU
- sed -e "s/^TLIBS = @LIBS@/& -licui18n -licuuc/" -i Makefile.in || die "sed failed"
- fi
-
- # readline USE flag.
- options+=(
- --disable-editline
- $(use_enable readline)
- )
- if use readline; then
- options+=(--with-readline-inc="-I${ESYSROOT}/usr/include/readline")
- fi
-
- # secure-delete USE flag.
- if use secure-delete; then
- # Enable secure_delete pragma by default.
- # https://sqlite.org/pragma.html#pragma_secure_delete
- append-cppflags -DSQLITE_SECURE_DELETE
- fi
-
- # static-libs USE flag.
- options+=($(use_enable static-libs static))
-
- # tcl, test, tools USE flags.
- options+=(--enable-tcl)
-
- if [[ "${CHOST}" == *-mint* ]]; then
- append-cppflags -DSQLITE_OMIT_WAL
- fi
-
- if [[ "${ABI}" == "x86" ]]; then
- if $(tc-getCC) ${CPPFLAGS} ${CFLAGS} -E -P -dM - < /dev/null 2> /dev/null | grep -q "^#define __SSE__ 1$"; then
- append-cflags -mfpmath=sse
- else
- append-cflags -ffloat-store
- fi
- fi
-
- econf "${options[@]}"
-}
-
-multilib_src_compile() {
- emake HAVE_TCL="$(usex tcl 1 "")" TCLLIBDIR="${EPREFIX}/usr/$(get_libdir)/${P}"
-
- if use tools && multilib_is_native_abi; then
- emake changeset dbdump dbhash dbtotxt index_usage rbu scrub showdb showjournal showshm showstat4 showwal sqldiff sqlite3_analyzer sqlite3_checker sqlite3_expert sqltclsh
- fi
-}
-
-multilib_src_test() {
- if [[ "${EUID}" -eq 0 ]]; then
- ewarn "Skipping tests due to root permissions"
- return
- fi
-
- local -x SQLITE_HISTORY="${T}/sqlite_history_${ABI}"
-
- emake HAVE_TCL="$(usex tcl 1 "")" $(use debug && echo fulltest || echo test)
-}
-
-multilib_src_install() {
- emake DESTDIR="${D}" HAVE_TCL="$(usex tcl 1 "")" TCLLIBDIR="${EPREFIX}/usr/$(get_libdir)/${P}" install
-
- if use tools && multilib_is_native_abi; then
- install_tool() {
- if [[ -f ".libs/${1}" ]]; then
- newbin ".libs/${1}" "${2}"
- else
- newbin "${1}" "${2}"
- fi
- }
-
- install_tool changeset sqlite3-changeset
- install_tool dbdump sqlite3-db-dump
- install_tool dbhash sqlite3-db-hash
- install_tool dbtotxt sqlite3-db-to-txt
- install_tool index_usage sqlite3-index-usage
- install_tool rbu sqlite3-rbu
- install_tool scrub sqlite3-scrub
- install_tool showdb sqlite3-show-db
- install_tool showjournal sqlite3-show-journal
- install_tool showshm sqlite3-show-shm
- install_tool showstat4 sqlite3-show-stat4
- install_tool showwal sqlite3-show-wal
- install_tool sqldiff sqlite3-diff
- install_tool sqlite3_analyzer sqlite3-analyzer
- install_tool sqlite3_checker sqlite3-checker
- install_tool sqlite3_expert sqlite3-expert
- install_tool sqltclsh sqlite3-tclsh
-
- unset -f install_tool
- fi
-}
-
-multilib_src_install_all() {
- find "${D}" -name "*.la" -type f -delete || die
-
- doman sqlite3.1
-
- if use doc; then
- rm "${WORKDIR}/${PN}-doc-${DOC_PV}/"*.{db,txt} || die
- (
- docinto html
- dodoc -r "${WORKDIR}/${PN}-doc-${DOC_PV}/"*
- )
- fi
-}
diff --git a/dev-db/sqlite/sqlite-3.34.1.ebuild b/dev-db/sqlite/sqlite-3.34.1.ebuild
new file mode 100644
index 0000000..e2730e4
--- /dev/null
+++ b/dev-db/sqlite/sqlite-3.34.1.ebuild
@@ -0,0 +1,434 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+inherit autotools flag-o-matic multilib-minimal toolchain-funcs
+
+if [[ "${PV}" != "9999" ]]; then
+ SRC_PV="$(printf "%u%02u%02u%02u" $(ver_rs 1- " "))"
+ DOC_PV="${SRC_PV}"
+ # DOC_PV="$(printf "%u%02u%02u00" $(ver_rs 1-3 " "))"
+fi
+
+DESCRIPTION="SQL database engine"
+HOMEPAGE="https://sqlite.org/"
+if [[ "${PV}" == "9999" ]]; then
+ SRC_URI=""
+else
+ SRC_URI="https://sqlite.org/2021/${PN}-src-${SRC_PV}.zip
+ doc? ( https://sqlite.org/2021/${PN}-doc-${DOC_PV}.zip )"
+fi
+
+LICENSE="public-domain"
+SLOT="3"
+KEYWORDS="*"
+IUSE="debug doc icu +readline secure-delete static-libs tcl test tools"
+if [[ "${PV}" == "9999" ]]; then
+ PROPERTIES="live"
+fi
+RESTRICT="!test? ( test )"
+
+if [[ "${PV}" == "9999" ]]; then
+ BDEPEND=">=dev-lang/tcl-8.6:0
+ dev-vcs/fossil"
+else
+ BDEPEND="app-arch/unzip
+ >=dev-lang/tcl-8.6:0"
+fi
+RDEPEND="sys-libs/zlib:0=[${MULTILIB_USEDEP}]
+ icu? ( dev-libs/icu:0=[${MULTILIB_USEDEP}] )
+ readline? ( sys-libs/readline:0=[${MULTILIB_USEDEP}] )
+ tcl? ( dev-lang/tcl:0=[${MULTILIB_USEDEP}] )
+ tools? ( dev-lang/tcl:0= )"
+DEPEND="${RDEPEND}
+ test? ( >=dev-lang/tcl-8.6:0[${MULTILIB_USEDEP}] )"
+
+if [[ "${PV}" == "9999" ]]; then
+ S="${WORKDIR}/${PN}"
+else
+ S="${WORKDIR}/${PN}-src-${SRC_PV}"
+fi
+
+_fossil_fetch() {
+ local distdir="${PORTAGE_ACTUAL_DISTDIR:-${DISTDIR}}"
+ local repo_id="${1}"
+ local repo_uri="${2}"
+
+ local -x FOSSIL_HOME="${HOME}"
+
+ mkdir -p "${T}/fossil/${repo_id}" || die
+ pushd "${T}/fossil/${repo_id}" > /dev/null || die
+
+ if [[ -n "${EVCS_OFFLINE}" ]]; then
+ if [[ ! -f "${distdir}/fossil-src/${repo_id}/${repo_id}.fossil" ]]; then
+ die "Network activity disabled using EVCS_OFFLINE and clone of repository missing: \"${distdir}/fossil-src/${repo_id}/${repo_id}.fossil\""
+ fi
+ else
+ if [[ ! -f "${distdir}/fossil-src/${repo_id}/${repo_id}.fossil" ]]; then
+ einfo fossil clone --verbose "${repo_uri}" "${repo_id}.fossil"
+ fossil clone --verbose "${repo_uri}" "${repo_id}.fossil" || die
+ echo
+ else
+ cp -p "${distdir}/fossil-src/${repo_id}/${repo_id}.fossil" . || die
+ einfo fossil pull --repository "${repo_id}.fossil" --verbose "${repo_uri}"
+ fossil pull --repository "${repo_id}.fossil" --verbose "${repo_uri}" || die
+ echo
+ fi
+
+ (
+ addwrite "${distdir}"
+ mkdir -p "${distdir}/fossil-src/${repo_id}" || die
+ cp -p "${repo_id}.fossil" "${distdir}/fossil-src/${repo_id}/${repo_id}.fossil" || die
+ )
+ fi
+
+ popd > /dev/null || die
+}
+
+_fossil_checkout() {
+ local distdir="${PORTAGE_ACTUAL_DISTDIR:-${DISTDIR}}"
+ local repo_id="${1}"
+ local branch_or_commit="${2}"
+ local target_directory="${3}"
+
+ local -x FOSSIL_HOME="${HOME}"
+
+ if [[ ! -f "${distdir}/fossil-src/${repo_id}/${repo_id}.fossil" ]]; then
+ die "Clone of repository missing: \"${distdir}/fossil-src/${repo_id}/${repo_id}.fossil\""
+ fi
+
+ if [[ ! -f "${T}/fossil/${repo_id}/${repo_id}.fossil" ]]; then
+ mkdir -p "${T}/fossil/${repo_id}" || die
+ cp -p "${distdir}/fossil-src/${repo_id}/${repo_id}.fossil" "${T}/fossil/${repo_id}" || die
+ fi
+
+ mkdir "${target_directory}" || die
+ pushd "${target_directory}" > /dev/null || die
+
+ einfo fossil open --quiet "${T}/fossil/${repo_id}/${repo_id}.fossil" "${branch_or_commit}"
+ fossil open --quiet "${T}/fossil/${repo_id}/${repo_id}.fossil" "${branch_or_commit}" || die
+ echo
+
+ popd > /dev/null || die
+}
+
+fossil_fetch() {
+ local repo_id="${1}"
+ local repo_uri="${2}"
+ local target_directory="${3}"
+
+ local branch_or_commit="${EFOSSIL_COMMIT:-${EFOSSIL_BRANCH:-trunk}}"
+
+ _fossil_fetch "${repo_id}" "${repo_uri}"
+ _fossil_checkout "${repo_id}" "${branch_or_commit}" "${target_directory}"
+}
+
+src_unpack() {
+ if [[ "${PV}" == "9999" ]]; then
+ fossil_fetch sqlite https://sqlite.org/src "${WORKDIR}/${PN}"
+ if use doc; then
+ fossil_fetch sqlite-doc https://sqlite.org/docsrc "${WORKDIR}/${PN}-doc"
+ fi
+ else
+ default
+ fi
+}
+
+src_prepare() {
+ eapply "${FILESDIR}/"${PN}-3.34.1-build_{1.1,1.2,2.1,2.2}.patch
+
+ eapply_user
+
+ eautoreconf
+
+ multilib_copy_sources
+}
+
+multilib_src_configure() {
+ local -x CPPFLAGS="${CPPFLAGS}" CFLAGS="${CFLAGS}"
+ local options=()
+
+ options+=(
+ --enable-load-extension
+ --enable-threadsafe
+ )
+
+ # Support detection of misuse of SQLite API.
+ # https://sqlite.org/compile.html#enable_api_armor
+ append-cppflags -DSQLITE_ENABLE_API_ARMOR
+
+ # Support bytecode and tables_used virtual tables.
+ # https://sqlite.org/compile.html#enable_bytecode_vtab
+ # https://sqlite.org/bytecodevtab.html
+ append-cppflags -DSQLITE_ENABLE_BYTECODE_VTAB
+
+ # Support column metadata functions.
+ # https://sqlite.org/compile.html#enable_column_metadata
+ # https://sqlite.org/c3ref/column_database_name.html
+ append-cppflags -DSQLITE_ENABLE_COLUMN_METADATA
+
+ # Support sqlite_dbpage virtual table.
+ # https://sqlite.org/compile.html#enable_dbpage_vtab
+ # https://sqlite.org/dbpage.html
+ append-cppflags -DSQLITE_ENABLE_DBPAGE_VTAB
+
+ # Support dbstat virtual table.
+ # https://sqlite.org/compile.html#enable_dbstat_vtab
+ # https://sqlite.org/dbstat.html
+ append-cppflags -DSQLITE_ENABLE_DBSTAT_VTAB
+
+ # Support sqlite3_serialize() and sqlite3_deserialize() functions.
+ # https://sqlite.org/compile.html#enable_deserialize
+ # https://sqlite.org/c3ref/serialize.html
+ # https://sqlite.org/c3ref/deserialize.html
+ append-cppflags -DSQLITE_ENABLE_DESERIALIZE
+
+ # Support comments in output of EXPLAIN.
+ # https://sqlite.org/compile.html#enable_explain_comments
+ append-cppflags -DSQLITE_ENABLE_EXPLAIN_COMMENTS
+
+ # Support Full-Text Search versions 3, 4 and 5.
+ # https://sqlite.org/compile.html#enable_fts3
+ # https://sqlite.org/compile.html#enable_fts3_parenthesis
+ # https://sqlite.org/compile.html#enable_fts4
+ # https://sqlite.org/compile.html#enable_fts5
+ # https://sqlite.org/fts3.html
+ # https://sqlite.org/fts5.html
+ append-cppflags -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_FTS3_PARENTHESIS -DSQLITE_ENABLE_FTS4
+ options+=(--enable-fts5)
+
+ # Support hidden columns.
+ append-cppflags -DSQLITE_ENABLE_HIDDEN_COLUMNS
+
+ # Support JSON1 extension.
+ # https://sqlite.org/compile.html#enable_json1
+ # https://sqlite.org/json1.html
+ append-cppflags -DSQLITE_ENABLE_JSON1
+
+ # Support memsys5 memory allocator.
+ # https://sqlite.org/compile.html#enable_memsys5
+ # https://sqlite.org/malloc.html#memsys5
+ append-cppflags -DSQLITE_ENABLE_MEMSYS5
+
+ # Support sqlite3_normalized_sql() function.
+ # https://sqlite.org/c3ref/expanded_sql.html
+ append-cppflags -DSQLITE_ENABLE_NORMALIZE
+
+ # Support sqlite_offset() function.
+ # https://sqlite.org/compile.html#enable_offset_sql_func
+ # https://sqlite.org/lang_corefunc.html#sqlite_offset
+ append-cppflags -DSQLITE_ENABLE_OFFSET_SQL_FUNC
+
+ # Support pre-update hook functions.
+ # https://sqlite.org/compile.html#enable_preupdate_hook
+ # https://sqlite.org/c3ref/preupdate_count.html
+ append-cppflags -DSQLITE_ENABLE_PREUPDATE_HOOK
+
+ # Support Resumable Bulk Update extension.
+ # https://sqlite.org/compile.html#enable_rbu
+ # https://sqlite.org/rbu.html
+ append-cppflags -DSQLITE_ENABLE_RBU
+
+ # Support R*Trees.
+ # https://sqlite.org/compile.html#enable_rtree
+ # https://sqlite.org/compile.html#enable_geopoly
+ # https://sqlite.org/rtree.html
+ # https://sqlite.org/geopoly.html
+ append-cppflags -DSQLITE_ENABLE_RTREE -DSQLITE_ENABLE_GEOPOLY
+
+ # Support Session extension.
+ # https://sqlite.org/compile.html#enable_session
+ # https://sqlite.org/sessionintro.html
+ append-cppflags -DSQLITE_ENABLE_SESSION
+
+ # Support scan status functions.
+ # https://sqlite.org/compile.html#enable_stmt_scanstatus
+ # https://sqlite.org/c3ref/stmt_scanstatus.html
+ # https://sqlite.org/c3ref/stmt_scanstatus_reset.html
+ append-cppflags -DSQLITE_ENABLE_STMT_SCANSTATUS
+
+ # Support sqlite_stmt virtual table.
+ # https://sqlite.org/compile.html#enable_stmtvtab
+ # https://sqlite.org/stmt.html
+ append-cppflags -DSQLITE_ENABLE_STMTVTAB
+
+ # Support unknown() function.
+ # https://sqlite.org/compile.html#enable_unknown_sql_function
+ append-cppflags -DSQLITE_ENABLE_UNKNOWN_SQL_FUNCTION
+
+ # Support unlock notification.
+ # https://sqlite.org/compile.html#enable_unlock_notify
+ # https://sqlite.org/c3ref/unlock_notify.html
+ # https://sqlite.org/unlock_notify.html
+ append-cppflags -DSQLITE_ENABLE_UNLOCK_NOTIFY
+
+ # Support LIMIT and ORDER BY clauses on DELETE and UPDATE statements.
+ # https://sqlite.org/compile.html#enable_update_delete_limit
+ # https://sqlite.org/lang_delete.html#optional_limit_and_order_by_clauses
+ # https://sqlite.org/lang_update.html#optional_limit_and_order_by_clauses
+ append-cppflags -DSQLITE_ENABLE_UPDATE_DELETE_LIMIT
+
+ # Support soundex() function.
+ # https://sqlite.org/compile.html#soundex
+ # https://sqlite.org/lang_corefunc.html#soundex
+ append-cppflags -DSQLITE_SOUNDEX
+
+ # Support URI filenames.
+ # https://sqlite.org/compile.html#use_uri
+ # https://sqlite.org/uri.html
+ append-cppflags -DSQLITE_USE_URI
+
+ # debug USE flag.
+ options+=($(use_enable debug))
+
+ # icu USE flag.
+ if use icu; then
+ # Support ICU extension.
+ # https://sqlite.org/compile.html#enable_icu
+ append-cppflags -DSQLITE_ENABLE_ICU
+ sed -e "s/^TLIBS = @LIBS@/& -licui18n -licuuc/" -i Makefile.in || die "sed failed"
+ fi
+
+ # readline USE flag.
+ options+=(
+ --disable-editline
+ $(use_enable readline)
+ )
+ if use readline; then
+ options+=(--with-readline-inc="-I${ESYSROOT}/usr/include/readline")
+ fi
+
+ # secure-delete USE flag.
+ if use secure-delete; then
+ # Enable secure_delete pragma by default.
+ # https://sqlite.org/compile.html#secure_delete
+ # https://sqlite.org/pragma.html#pragma_secure_delete
+ append-cppflags -DSQLITE_SECURE_DELETE
+ fi
+
+ # static-libs USE flag.
+ options+=($(use_enable static-libs static))
+
+ # tcl, test, tools USE flags.
+ if use tcl || use test || { use tools && multilib_is_native_abi; }; then
+ options+=(
+ --enable-tcl
+ --with-tcl="${ESYSROOT}/usr/$(get_libdir)"
+ )
+ else
+ options+=(--disable-tcl)
+ fi
+
+ if [[ "${CHOST}" == *-mint* ]]; then
+ # sys/mman.h not available in MiNTLib.
+ # https://sqlite.org/compile.html#omit_wal
+ append-cppflags -DSQLITE_OMIT_WAL
+ fi
+
+ if [[ "${ABI}" == "x86" ]]; then
+ if $(tc-getCC) ${CPPFLAGS} ${CFLAGS} -E -P -dM - < /dev/null 2> /dev/null | grep -q "^#define __SSE__ 1$"; then
+ append-cflags -mfpmath=sse
+ else
+ append-cflags -ffloat-store
+ fi
+ fi
+
+ econf "${options[@]}"
+}
+
+multilib_src_compile() {
+ emake HAVE_TCL="$(usex tcl 1 "")" TCLLIBDIR="${EPREFIX}/usr/$(get_libdir)/${P}"
+
+ if use tools && multilib_is_native_abi; then
+ emake changeset dbdump dbhash dbtotxt index_usage rbu scrub showdb showjournal showshm showstat4 showwal sqldiff sqlite3_analyzer sqlite3_checker sqlite3_expert sqltclsh
+ fi
+
+ if [[ "${PV}" == "9999" ]] && use doc && multilib_is_native_abi; then
+ emake tclsqlite3.c
+
+ local build_directory="$(pwd)"
+ build_directory="${build_directory##*/}"
+
+ mkdir "${WORKDIR}/${PN}-doc-build" || die
+ pushd "${WORKDIR}/${PN}-doc-build" > /dev/null || die
+
+ emake -f "../${PN}-doc/Makefile" -j1 SRC="../${PN}" BLD="../${build_directory}" DOC="../${PN}-doc" CC="$(tc-getBUILD_CC)" TCLINC="" TCLFLAGS="$($(tc-getBUILD_PKG_CONFIG) --libs tcl) -ldl -lm" base doc
+ rmdir doc/matrix{/*,} || die
+
+ popd > /dev/null || die
+ fi
+}
+
+multilib_src_test() {
+ if [[ "${EUID}" -eq 0 ]]; then
+ ewarn "Skipping tests due to root permissions"
+ return
+ fi
+
+ local -x SQLITE_HISTORY="${T}/sqlite_history_${ABI}"
+
+ emake HAVE_TCL="$(usex tcl 1 "")" $(use debug && echo fulltest || echo test)
+}
+
+multilib_src_install() {
+ emake DESTDIR="${D}" HAVE_TCL="$(usex tcl 1 "")" TCLLIBDIR="${EPREFIX}/usr/$(get_libdir)/${P}" install
+
+ if use tools && multilib_is_native_abi; then
+ install_tool() {
+ if [[ -f ".libs/${1}" ]]; then
+ newbin ".libs/${1}" "${2}"
+ else
+ newbin "${1}" "${2}"
+ fi
+ }
+
+ install_tool changeset sqlite3-changeset
+ install_tool dbdump sqlite3-db-dump
+ install_tool dbhash sqlite3-db-hash
+ install_tool dbtotxt sqlite3-db-to-txt
+ install_tool index_usage sqlite3-index-usage
+ install_tool rbu sqlite3-rbu
+ install_tool scrub sqlite3-scrub
+ install_tool showdb sqlite3-show-db
+ install_tool showjournal sqlite3-show-journal
+ install_tool showshm sqlite3-show-shm
+ install_tool showstat4 sqlite3-show-stat4
+ install_tool showwal sqlite3-show-wal
+ install_tool sqldiff sqlite3-diff
+ install_tool sqlite3_analyzer sqlite3-analyzer
+ install_tool sqlite3_checker sqlite3-checker
+ install_tool sqlite3_expert sqlite3-expert
+ install_tool sqltclsh sqlite3-tclsh
+
+ unset -f install_tool
+ fi
+}
+
+multilib_src_install_all() {
+ find "${ED}" -name "*.la" -delete || die
+
+ doman sqlite3.1
+
+ if use doc; then
+ if [[ "${PV}" == "9999" ]]; then
+ pushd "${WORKDIR}/${PN}-doc-build/doc" > /dev/null || die
+ else
+ pushd "${WORKDIR}/${PN}-doc-${DOC_PV}" > /dev/null || die
+ fi
+
+ find "(" -name "*.db" -o -name "*.txt" ")" -delete || die
+ if [[ "${PV}" != "9999" ]]; then
+ rm search search.d/admin || die
+ rmdir search.d || die
+ find -name "*~" -delete || die
+ fi
+
+ (
+ docinto html
+ dodoc -r *
+ )
+
+ popd > /dev/null || die
+ fi
+}
diff --git a/metadata/md5-cache/dev-db/sqlite-3.32.3-r2 b/metadata/md5-cache/dev-db/sqlite-3.32.3-r2
deleted file mode 100644
index 93173fe..0000000
--- a/metadata/md5-cache/dev-db/sqlite-3.32.3-r2
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=app-arch/unzip >=dev-lang/tcl-8.6:0 >=app-portage/elt-patches-20170815
-DEFINED_PHASES=compile configure install prepare test unpack
-DEPEND=sys-libs/zlib:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] icu? ( dev-libs/icu:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) readline? ( sys-libs/readline:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) tcl? ( dev-lang/tcl:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) tools? ( dev-lang/tcl:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) test? ( >=dev-lang/tcl-8.6:0[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
-DESCRIPTION=SQL database engine
-EAPI=7
-HOMEPAGE=https://sqlite.org/
-IUSE=debug doc icu +readline secure-delete static-libs tcl test tools abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
-KEYWORDS=*
-LICENSE=public-domain
-RDEPEND=sys-libs/zlib:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] icu? ( dev-libs/icu:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) readline? ( sys-libs/readline:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) tcl? ( dev-lang/tcl:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) tools? ( dev-lang/tcl:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] )
-RESTRICT=!test? ( test )
-SLOT=3
-SRC_URI=https://sqlite.org/2020/sqlite-src-3320300.zip doc? ( https://sqlite.org/2020/sqlite-doc-3320300.zip )
-_eclasses_=autotools d0e5375d47f4c809f406eb892e531513 eutils fcb2aa98e1948b835b5ae66ca52868c5 flag-o-matic 5d5921a298e95441da2f85be419894c0 libtool f143db5a74ccd9ca28c1234deffede96 multibuild 40fe59465edacd730c644ec2bc197809 multilib 2477ebe553d3e4d2c606191fe6c33602 multilib-build 1979aa0ff4d356d32507ca4650d9f37d multilib-minimal 8bddda43703ba94d8341f4e247f97566 toolchain-funcs 605c126bed8d87e4378d5ff1645330cb
-_md5_=8d00e548b21f9a4ff66d6d7b03d2429f
diff --git a/metadata/md5-cache/dev-db/sqlite-3.32.3 b/metadata/md5-cache/dev-db/sqlite-3.34.1
similarity index 71%
rename from metadata/md5-cache/dev-db/sqlite-3.32.3
rename to metadata/md5-cache/dev-db/sqlite-3.34.1
index 93173fe..c5eb9e6 100644
--- a/metadata/md5-cache/dev-db/sqlite-3.32.3
+++ b/metadata/md5-cache/dev-db/sqlite-3.34.1
@@ -1,15 +1,15 @@
BDEPEND=app-arch/unzip >=dev-lang/tcl-8.6:0 >=app-portage/elt-patches-20170815
DEFINED_PHASES=compile configure install prepare test unpack
-DEPEND=sys-libs/zlib:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] icu? ( dev-libs/icu:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) readline? ( sys-libs/readline:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) tcl? ( dev-lang/tcl:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) tools? ( dev-lang/tcl:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) test? ( >=dev-lang/tcl-8.6:0[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
+DEPEND=sys-libs/zlib:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] icu? ( dev-libs/icu:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) readline? ( sys-libs/readline:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) tcl? ( dev-lang/tcl:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) tools? ( dev-lang/tcl:0= ) test? ( >=dev-lang/tcl-8.6:0[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
DESCRIPTION=SQL database engine
EAPI=7
HOMEPAGE=https://sqlite.org/
IUSE=debug doc icu +readline secure-delete static-libs tcl test tools abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
KEYWORDS=*
LICENSE=public-domain
-RDEPEND=sys-libs/zlib:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] icu? ( dev-libs/icu:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) readline? ( sys-libs/readline:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) tcl? ( dev-lang/tcl:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) tools? ( dev-lang/tcl:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] )
+RDEPEND=sys-libs/zlib:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] icu? ( dev-libs/icu:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) readline? ( sys-libs/readline:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) tcl? ( dev-lang/tcl:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) tools? ( dev-lang/tcl:0= )
RESTRICT=!test? ( test )
SLOT=3
-SRC_URI=https://sqlite.org/2020/sqlite-src-3320300.zip doc? ( https://sqlite.org/2020/sqlite-doc-3320300.zip )
+SRC_URI=https://sqlite.org/2021/sqlite-src-3340100.zip doc? ( https://sqlite.org/2021/sqlite-doc-3340100.zip )
_eclasses_=autotools d0e5375d47f4c809f406eb892e531513 eutils fcb2aa98e1948b835b5ae66ca52868c5 flag-o-matic 5d5921a298e95441da2f85be419894c0 libtool f143db5a74ccd9ca28c1234deffede96 multibuild 40fe59465edacd730c644ec2bc197809 multilib 2477ebe553d3e4d2c606191fe6c33602 multilib-build 1979aa0ff4d356d32507ca4650d9f37d multilib-minimal 8bddda43703ba94d8341f4e247f97566 toolchain-funcs 605c126bed8d87e4378d5ff1645330cb
-_md5_=8d00e548b21f9a4ff66d6d7b03d2429f
+_md5_=5ec9b05a23b1cff374c9ac49f307773f