sqlite: upgraded package to upstream
Upgraded dev-db/sqlite to version 3.32.3 on amd64
BUG=chromium:1086896,chromium:1087362,chromium:1101756
TEST=build_packages
Change-Id: I3a20f77fd9c7cda21cb34d0216608cf91919fa4f
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/overlays/portage-stable/+/2282688
Reviewed-by: Alex Klein <saklein@chromium.org>
Reviewed-by: Mike Frysinger <vapier@chromium.org>
Tested-by: Allen Webb <allenwebb@google.com>
Commit-Queue: Allen Webb <allenwebb@google.com>
diff --git a/dev-db/sqlite/Manifest b/dev-db/sqlite/Manifest
index a5126e7..fa0381a 100644
--- a/dev-db/sqlite/Manifest
+++ b/dev-db/sqlite/Manifest
@@ -1,3 +1,2 @@
-DIST sqlite-autoconf-3310100.tar.gz 2887243 BLAKE2B ef5d40b6e6c59a51ae95368eb9f6a938188813f89d5328ea1c1180ef35f124c14b3e83b0832ae5c2fa24cc2df352f1b0ea5f20b64d0762d50a700d9895f9a12e SHA512 d85250ba5f78f0c918880f663741709aba662192f04888b2324a0df17affdf5b8540e8428c6c7315119806e7adad758ea281c9b403c0ad94ac6a9bd1b93fd617
-DIST sqlite-doc-3310100.zip 9600405 BLAKE2B 324fb7a0a38bc56476e41504c14996e9d5d83ac659403991515413d49f5ee3aad064ccece25f52b6041ef26bf23f320a9be1b6b02c5fbe96c36372107f54fc2e SHA512 5572e2c2dac30c014ef9cd60a620b7a7bb610f91a47e2890c0641540d39b9d5ce0e914ee697583130317633918b7827e2612a7cbc024f5bd6aa22ad28a78b56b
-DIST sqlite-src-3310100.zip 12510166 BLAKE2B a856695e8552b8b4dcb28452fdbd48305fdb9072f9d6587f4b1f4445daf386e920eb936dcb50fdfe41a49f84b26a7c5fedcffea5acf3ba3fa935c36695d4b8ee SHA512 af92a00877bcd90372d6f83a27fea12b4fe8d1155b223a6bccbccc31bb8e3d2269cd9e68f329bc55f70d1068ccbf220ff5abccea6f593fd7a3a4bdd732d1cdbe
+DIST sqlite-doc-3320300.zip 9772933 BLAKE2B efd72c18d0398c103e3f9c4cfeb03e7794fd69691b1bcea95b74a0c5d8af22aa13abc84ce8dc5864b5f4cb79be239433933b4daca34d1adfcc6f31ce2cde66bf SHA512 af9dca970b4c03c058d7d1cd55a3d11fa4b112dccac942b8660d82a7e9ba2956963fcb429eedfdc85915637c102e1f904ace98c8e0455c4120422bbd9f2f3cd0
+DIST sqlite-src-3320300.zip 12461750 BLAKE2B 59cce74d284191cfc69ac09b6014701ddd2b7b3d7ebaad5da4ad71cc200e70285b3b201ff174819aa8dde5f610589d7947f547450334f0f17149014078316185 SHA512 7e027c7163a760fb9b6dbfd2e4ccffb39d4972280583fb0d7f8390017101dfed3b12a36653b3130a548ae4d04c6abb11c0a1921b6f09c54c6ae1e72fbdcb2fd4
diff --git a/dev-db/sqlite/files/sqlite-3.29.0-full_archive-tests.patch b/dev-db/sqlite/files/sqlite-3.29.0-full_archive-tests.patch
deleted file mode 100644
index 3f3779d..0000000
--- a/dev-db/sqlite/files/sqlite-3.29.0-full_archive-tests.patch
+++ /dev/null
@@ -1,121 +0,0 @@
-https://sqlite.org/src/info/408144a1832569ce
-
---- /test/vtab1.test
-+++ /test/vtab1.test
-@@ -1303,25 +1303,27 @@
- CREATE VIRTUAL TABLE e6 USING echo(t6);
- }
-
--foreach {tn sql res filter} {
-- 1.1 "SELECT a FROM e6 WHERE b>'8James'" {4 2 6 1 5}
-- {xFilter {SELECT rowid, a, b FROM 't6' WHERE b > ?} 8James}
--
-- 1.2 "SELECT a FROM e6 WHERE b>='8' AND b<'9'" {3 4}
-- {xFilter {SELECT rowid, a, b FROM 't6' WHERE b >= ? AND b < ?} 8 9}
--
-- 1.3 "SELECT a FROM e6 WHERE b LIKE '8J%'" {3 4}
-- {xFilter {SELECT rowid, a, b FROM 't6' WHERE b >= ? AND b < ? AND b like ?} 8J 8k 8J%}
--
-- 1.4 "SELECT a FROM e6 WHERE b LIKE '8j%'" {3 4}
-- {xFilter {SELECT rowid, a, b FROM 't6' WHERE b >= ? AND b < ? AND b like ?} 8J 8k 8j%}
--
-- 1.5 "SELECT a FROM e6 WHERE b LIKE '8%'" {3 4}
-- {xFilter {SELECT rowid, a, b FROM 't6' WHERE b like ?} 8%}
--} {
-- set echo_module {}
-- do_execsql_test 18.$tn.1 $sql $res
-- do_test 18.$tn.2 { lrange $::echo_module 2 end } $filter
-+ifcapable !icu {
-+ foreach {tn sql res filter} {
-+ 1.1 "SELECT a FROM e6 WHERE b>'8James'" {4 2 6 1 5}
-+ {xFilter {SELECT rowid, a, b FROM 't6' WHERE b > ?} 8James}
-+
-+ 1.2 "SELECT a FROM e6 WHERE b>='8' AND b<'9'" {3 4}
-+ {xFilter {SELECT rowid, a, b FROM 't6' WHERE b >= ? AND b < ?} 8 9}
-+
-+ 1.3 "SELECT a FROM e6 WHERE b LIKE '8J%'" {3 4}
-+ {xFilter {SELECT rowid, a, b FROM 't6' WHERE b >= ? AND b < ? AND b like ?} 8J 8k 8J%}
-+
-+ 1.4 "SELECT a FROM e6 WHERE b LIKE '8j%'" {3 4}
-+ {xFilter {SELECT rowid, a, b FROM 't6' WHERE b >= ? AND b < ? AND b like ?} 8J 8k 8j%}
-+
-+ 1.5 "SELECT a FROM e6 WHERE b LIKE '8%'" {3 4}
-+ {xFilter {SELECT rowid, a, b FROM 't6' WHERE b like ?} 8%}
-+ } {
-+ set echo_module {}
-+ do_execsql_test 18.$tn.1 $sql $res
-+ do_test 18.$tn.2 { lrange $::echo_module 2 end } $filter
-+ }
- }
-
- do_execsql_test 18.2.0 { PRAGMA case_sensitive_like = ON }
---- /test/vtabH.test
-+++ /test/vtabH.test
-@@ -30,36 +30,38 @@
- CREATE VIRTUAL TABLE e6 USING echo(t6);
- }
-
--foreach {tn sql expect} {
-- 1 "SELECT * FROM e6 WHERE b LIKE '8abc'" {
-- xBestIndex
-- {SELECT rowid, a, b FROM 't6' WHERE b >= ? AND b < ? AND b like ?}
-- xFilter
-- {SELECT rowid, a, b FROM 't6' WHERE b >= ? AND b < ? AND b like ?}
-- 8ABC 8abd 8abc
-+ifcapable !icu {
-+ foreach {tn sql expect} {
-+ 1 "SELECT * FROM e6 WHERE b LIKE '8abc'" {
-+ xBestIndex
-+ {SELECT rowid, a, b FROM 't6' WHERE b >= ? AND b < ? AND b like ?}
-+ xFilter
-+ {SELECT rowid, a, b FROM 't6' WHERE b >= ? AND b < ? AND b like ?}
-+ 8ABC 8abd 8abc
-+ }
-+
-+ 2 "SELECT * FROM e6 WHERE b GLOB '8abc'" {
-+ xBestIndex
-+ {SELECT rowid, a, b FROM 't6' WHERE b >= ? AND b < ? AND b glob ?}
-+ xFilter
-+ {SELECT rowid, a, b FROM 't6' WHERE b >= ? AND b < ? AND b glob ?}
-+ 8abc 8abd 8abc
-+ }
-+ 3 "SELECT * FROM e6 WHERE b LIKE '8e/'" {
-+ xBestIndex {SELECT rowid, a, b FROM 't6' WHERE b like ?}
-+ xFilter {SELECT rowid, a, b FROM 't6' WHERE b like ?} 8e/
-+ }
-+ 4 "SELECT * FROM e6 WHERE b GLOB '8e/'" {
-+ xBestIndex {SELECT rowid, a, b FROM 't6' WHERE b glob ?}
-+ xFilter {SELECT rowid, a, b FROM 't6' WHERE b glob ?} 8e/
-+ }
-+ } {
-+ do_test 1.$tn {
-+ set echo_module {}
-+ execsql $sql
-+ set ::echo_module
-+ } [list {*}$expect]
- }
--
-- 2 "SELECT * FROM e6 WHERE b GLOB '8abc'" {
-- xBestIndex
-- {SELECT rowid, a, b FROM 't6' WHERE b >= ? AND b < ? AND b glob ?}
-- xFilter
-- {SELECT rowid, a, b FROM 't6' WHERE b >= ? AND b < ? AND b glob ?}
-- 8abc 8abd 8abc
-- }
-- 3 "SELECT * FROM e6 WHERE b LIKE '8e/'" {
-- xBestIndex {SELECT rowid, a, b FROM 't6' WHERE b like ?}
-- xFilter {SELECT rowid, a, b FROM 't6' WHERE b like ?} 8e/
-- }
-- 4 "SELECT * FROM e6 WHERE b GLOB '8e/'" {
-- xBestIndex {SELECT rowid, a, b FROM 't6' WHERE b glob ?}
-- xFilter {SELECT rowid, a, b FROM 't6' WHERE b glob ?} 8e/
-- }
--} {
-- do_test 1.$tn {
-- set echo_module {}
-- execsql $sql
-- set ::echo_module
-- } [list {*}$expect]
- }
-
-
diff --git a/dev-db/sqlite/files/sqlite-3.32.1-full_archive-build_1.patch b/dev-db/sqlite/files/sqlite-3.32.1-full_archive-build_1.patch
new file mode 100644
index 0000000..aec90e4
--- /dev/null
+++ b/dev-db/sqlite/files/sqlite-3.32.1-full_archive-build_1.patch
@@ -0,0 +1,670 @@
+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 */
+
+-#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
+@@ -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 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
+@@ -110,6 +110,20 @@
+ }
+
+
++int sqlite3IeeeInit(sqlite3 *db){
++ int rc = SQLITE_OK;
++ rc = sqlite3_create_function(db, "ieee754", 1,
++ 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);
++ }
++ return rc;
++}
++
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
+ #ifdef _WIN32
+ __declspec(dllexport)
+ #endif
+@@ -118,16 +132,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,
+- 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);
+- }
+- return rc;
++ return sqlite3IeeeInit(db);
+ }
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
+--- /ext/misc/regexp.c
++++ /ext/misc/regexp.c
+@@ -740,10 +740,18 @@
+ }
+ }
+
++int sqlite3RegexpInit(sqlite3 *db){
++ int rc = SQLITE_OK;
++ rc = sqlite3_create_function(db, "regexp", 2, SQLITE_UTF8|SQLITE_INNOCUOUS,
++ 0, re_sql_func, 0, 0);
++ return rc;
++}
++
+ /*
+ ** Invoke this routine to register the regexp() function with the
+ ** SQLite database connection.
+ */
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
+ #ifdef _WIN32
+ __declspec(dllexport)
+ #endif
+@@ -752,9 +760,8 @@
+ char **pzErrMsg,
+ const sqlite3_api_routines *pApi
+ ){
+- int rc = SQLITE_OK;
+ SQLITE_EXTENSION_INIT2(pApi);
+- rc = sqlite3_create_function(db, "regexp", 2, SQLITE_UTF8|SQLITE_INNOCUOUS,
+- 0, re_sql_func, 0, 0);
+- return rc;
++ (void)pzErrMsg; /* Unused parameter */
++ return sqlite3RegexpInit(db);
+ }
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
+--- /ext/misc/sha1.c
++++ /ext/misc/sha1.c
+@@ -175,7 +175,7 @@
+ }
+
+ /* Compute a string using sqlite3_vsnprintf() and hash it */
+-static void hash_step_vformat(
++static void sha1_hash_step_vformat(
+ SHA1Context *p, /* Add content to this context */
+ const char *zFormat,
+ ...
+@@ -306,7 +306,7 @@
+ nCol = sqlite3_column_count(pStmt);
+ z = sqlite3_sql(pStmt);
+ n = (int)strlen(z);
+- hash_step_vformat(&cx,"S%d:",n);
++ sha1_hash_step_vformat(&cx,"S%d:",n);
+ hash_step(&cx,(unsigned char*)z,n);
+
+ /* Compute a hash over the result of the query */
+@@ -349,14 +349,14 @@
+ case SQLITE_TEXT: {
+ int n2 = sqlite3_column_bytes(pStmt, i);
+ const unsigned char *z2 = sqlite3_column_text(pStmt, i);
+- hash_step_vformat(&cx,"T%d:",n2);
++ sha1_hash_step_vformat(&cx,"T%d:",n2);
+ hash_step(&cx, z2, n2);
+ break;
+ }
+ case SQLITE_BLOB: {
+ int n2 = sqlite3_column_bytes(pStmt, i);
+ const unsigned char *z2 = sqlite3_column_blob(pStmt, i);
+- hash_step_vformat(&cx,"B%d:",n2);
++ sha1_hash_step_vformat(&cx,"B%d:",n2);
+ hash_step(&cx, z2, n2);
+ break;
+ }
+@@ -370,6 +370,20 @@
+ }
+
+
++int sqlite3ShaInit(sqlite3 *db){
++ int rc = SQLITE_OK;
++ rc = sqlite3_create_function(db, "sha1", 1,
++ SQLITE_UTF8 | SQLITE_INNOCUOUS | SQLITE_DETERMINISTIC,
++ 0, sha1Func, 0, 0);
++ if( rc==SQLITE_OK ){
++ rc = sqlite3_create_function(db, "sha1_query", 1,
++ SQLITE_UTF8|SQLITE_DIRECTONLY, 0,
++ sha1QueryFunc, 0, 0);
++ }
++ return rc;
++}
++
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
+ #ifdef _WIN32
+ __declspec(dllexport)
+ #endif
+@@ -378,16 +392,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, "sha1", 1,
+- SQLITE_UTF8 | SQLITE_INNOCUOUS | SQLITE_DETERMINISTIC,
+- 0, sha1Func, 0, 0);
+- if( rc==SQLITE_OK ){
+- rc = sqlite3_create_function(db, "sha1_query", 1,
+- SQLITE_UTF8|SQLITE_DIRECTONLY, 0,
+- sha1QueryFunc, 0, 0);
+- }
+- return rc;
++ return sqlite3ShaInit(db);
+ }
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
+--- /ext/misc/shathree.c
++++ /ext/misc/shathree.c
+@@ -527,7 +527,7 @@
+ /* Compute a string using sqlite3_vsnprintf() with a maximum length
+ ** of 50 bytes and add it to the hash.
+ */
+-static void hash_step_vformat(
++static void sha3_hash_step_vformat(
+ SHA3Context *p, /* Add content to this context */
+ const char *zFormat,
+ ...
+@@ -622,7 +622,7 @@
+ nCol = sqlite3_column_count(pStmt);
+ 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);
+
+ /* Compute a hash over the result of the query */
+@@ -665,14 +665,14 @@
+ case SQLITE_TEXT: {
+ int n2 = sqlite3_column_bytes(pStmt, i);
+ const unsigned char *z2 = sqlite3_column_text(pStmt, i);
+- hash_step_vformat(&cx,"T%d:",n2);
++ sha3_hash_step_vformat(&cx,"T%d:",n2);
+ SHA3Update(&cx, z2, n2);
+ break;
+ }
+ case SQLITE_BLOB: {
+ int n2 = sqlite3_column_bytes(pStmt, i);
+ const unsigned char *z2 = sqlite3_column_blob(pStmt, i);
+- hash_step_vformat(&cx,"B%d:",n2);
++ sha3_hash_step_vformat(&cx,"B%d:",n2);
+ SHA3Update(&cx, z2, n2);
+ break;
+ }
+@@ -685,17 +685,8 @@
+ }
+
+
+-#ifdef _WIN32
+-__declspec(dllexport)
+-#endif
+-int sqlite3_shathree_init(
+- sqlite3 *db,
+- char **pzErrMsg,
+- const sqlite3_api_routines *pApi
+-){
++int sqlite3ShathreeInit(sqlite3 *db){
+ int rc = SQLITE_OK;
+- SQLITE_EXTENSION_INIT2(pApi);
+- (void)pzErrMsg; /* Unused parameter */
+ rc = sqlite3_create_function(db, "sha3", 1,
+ SQLITE_UTF8 | SQLITE_INNOCUOUS | SQLITE_DETERMINISTIC,
+ 0, sha3Func, 0, 0);
+@@ -716,3 +707,18 @@
+ }
+ return rc;
+ }
++
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
++#ifdef _WIN32
++__declspec(dllexport)
++#endif
++int sqlite3_shathree_init(
++ sqlite3 *db,
++ char **pzErrMsg,
++ const sqlite3_api_routines *pApi
++){
++ SQLITE_EXTENSION_INIT2(pApi);
++ (void)pzErrMsg; /* Unused parameter */
++ return sqlite3ShathreeInit(db);
++}
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
+--- /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>
+@@ -101,6 +103,20 @@
+ }
+
+
++int sqlite3SqlarInit(sqlite3 *db){
++ int rc = SQLITE_OK;
++ rc = sqlite3_create_function(db, "sqlar_compress", 1,
++ SQLITE_UTF8|SQLITE_INNOCUOUS, 0,
++ sqlarCompressFunc, 0, 0);
++ if( rc==SQLITE_OK ){
++ rc = sqlite3_create_function(db, "sqlar_uncompress", 2,
++ SQLITE_UTF8|SQLITE_INNOCUOUS, 0,
++ sqlarUncompressFunc, 0, 0);
++ }
++ return rc;
++}
++
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
+ #ifdef _WIN32
+ __declspec(dllexport)
+ #endif
+@@ -109,16 +125,10 @@
+ char **pzErrMsg,
+ const sqlite3_api_routines *pApi
+ ){
+- int rc = SQLITE_OK;
+ SQLITE_EXTENSION_INIT2(pApi);
+ (void)pzErrMsg; /* Unused parameter */
+- rc = sqlite3_create_function(db, "sqlar_compress", 1,
+- SQLITE_UTF8|SQLITE_INNOCUOUS, 0,
+- sqlarCompressFunc, 0, 0);
+- if( rc==SQLITE_OK ){
+- rc = sqlite3_create_function(db, "sqlar_uncompress", 2,
+- SQLITE_UTF8|SQLITE_INNOCUOUS, 0,
+- sqlarUncompressFunc, 0, 0);
+- }
+- return rc;
++ return sqlite3SqlarInit(db);
+ }
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
++
++#endif /* SQLITE_HAVE_ZLIB */
+--- /ext/misc/totype.c
++++ /ext/misc/totype.c
+@@ -491,17 +491,8 @@
+ #pragma warning(default: 4748)
+ #endif
+
+-#ifdef _WIN32
+-__declspec(dllexport)
+-#endif
+-int sqlite3_totype_init(
+- sqlite3 *db,
+- char **pzErrMsg,
+- const sqlite3_api_routines *pApi
+-){
++int sqlite3TotypeInit(sqlite3 *db){
+ int rc = SQLITE_OK;
+- SQLITE_EXTENSION_INIT2(pApi);
+- (void)pzErrMsg; /* Unused parameter */
+ rc = sqlite3_create_function(db, "tointeger", 1,
+ SQLITE_UTF8 | SQLITE_DETERMINISTIC | SQLITE_INNOCUOUS, 0,
+ tointegerFunc, 0, 0);
+@@ -512,3 +503,18 @@
+ }
+ return rc;
+ }
++
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
++#ifdef _WIN32
++__declspec(dllexport)
++#endif
++int sqlite3_totype_init(
++ sqlite3 *db,
++ char **pzErrMsg,
++ const sqlite3_api_routines *pApi
++){
++ SQLITE_EXTENSION_INIT2(pApi);
++ (void)pzErrMsg; /* Unused parameter */
++ return sqlite3TotypeInit(db);
++}
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
+--- /ext/misc/uint.c
++++ /ext/misc/uint.c
+@@ -78,6 +78,11 @@
+ return (nKey1 - i) - (nKey2 - j);
+ }
+
++int sqlite3UintInit(sqlite3 *db){
++ return sqlite3_create_collation(db, "UINT", SQLITE_UTF8, 0, uintCollFunc);
++}
++
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
+ #ifdef _WIN32
+ __declspec(dllexport)
+ #endif
+@@ -88,5 +93,6 @@
+ ){
+ SQLITE_EXTENSION_INIT2(pApi);
+ (void)pzErrMsg; /* Unused parameter */
+- return sqlite3_create_collation(db, "uint", SQLITE_UTF8, 0, uintCollFunc);
++ return sqlite3UintInit(db);
+ }
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
+--- /ext/misc/uuid.c
++++ /ext/misc/uuid.c
+@@ -206,21 +206,12 @@
+ sqlite3_result_blob(context, pBlob, 16, SQLITE_TRANSIENT);
+ }
+
+-#ifdef _WIN32
+-__declspec(dllexport)
+-#endif
+-int sqlite3_uuid_init(
+- sqlite3 *db,
+- char **pzErrMsg,
+- const sqlite3_api_routines *pApi
+-){
++int sqlite3UuidInit(sqlite3 *db){
+ int rc = SQLITE_OK;
+- SQLITE_EXTENSION_INIT2(pApi);
+- (void)pzErrMsg; /* Unused parameter */
+ rc = sqlite3_create_function(db, "uuid", 0, SQLITE_UTF8|SQLITE_INNOCUOUS, 0,
+ sqlite3UuidFunc, 0, 0);
+ if( rc==SQLITE_OK ){
+- rc = sqlite3_create_function(db, "uuid_str", 1,
++ rc = sqlite3_create_function(db, "uuid_str", 1,
+ SQLITE_UTF8|SQLITE_INNOCUOUS|SQLITE_DETERMINISTIC,
+ 0, sqlite3UuidStrFunc, 0, 0);
+ }
+@@ -231,3 +222,18 @@
+ }
+ return rc;
+ }
++
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
++#ifdef _WIN32
++__declspec(dllexport)
++#endif
++int sqlite3_uuid_init(
++ sqlite3 *db,
++ char **pzErrMsg,
++ const sqlite3_api_routines *pApi
++){
++ SQLITE_EXTENSION_INIT2(pApi);
++ (void)pzErrMsg; /* Unused parameter */
++ return sqlite3UuidInit(db);
++}
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
+--- /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>
+@@ -2137,7 +2139,7 @@
+ /*
+ ** Register the "zipfile" virtual table.
+ */
+-static int zipfileRegister(sqlite3 *db){
++int sqlite3ZipfileInit(sqlite3 *db){
+ static sqlite3_module zipfileModule = {
+ 1, /* iVersion */
+ zipfileConnect, /* xCreate */
+@@ -2171,9 +2173,10 @@
+ return rc;
+ }
+ #else /* SQLITE_OMIT_VIRTUALTABLE */
+-# define zipfileRegister(x) SQLITE_OK
++# define sqlite3ZipfileInit(x) SQLITE_OK
+ #endif
+
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
+ #ifdef _WIN32
+ __declspec(dllexport)
+ #endif
+@@ -2184,5 +2187,8 @@
+ ){
+ SQLITE_EXTENSION_INIT2(pApi);
+ (void)pzErrMsg; /* Unused parameter */
+- return zipfileRegister(db);
++ return sqlite3ZipfileInit(db);
+ }
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
++
++#endif /* SQLITE_HAVE_ZLIB */
diff --git a/dev-db/sqlite/files/sqlite-3.29.0-full_archive-build.patch b/dev-db/sqlite/files/sqlite-3.32.1-full_archive-build_2.patch
similarity index 64%
rename from dev-db/sqlite/files/sqlite-3.29.0-full_archive-build.patch
rename to dev-db/sqlite/files/sqlite-3.32.1-full_archive-build_2.patch
index 290d286..f12c0b2 100644
--- a/dev-db/sqlite/files/sqlite-3.29.0-full_archive-build.patch
+++ b/dev-db/sqlite/files/sqlite-3.32.1-full_archive-build_2.patch
@@ -1,3 +1,4 @@
+Enable some extensions in libsqlite3.so.
Move some code to libsqlite3.so to avoid duplication.
Link executables against libsqlite3.so.
Increase timeout for fuzzcheck.
@@ -5,7 +6,7 @@
--- /Makefile.in
+++ /Makefile.in
-@@ -311,6 +311,9 @@
+@@ -313,6 +313,9 @@
# Source code for extensions
#
SRC += \
@@ -15,37 +16,67 @@
$(TOP)/ext/fts1/fts1.c \
$(TOP)/ext/fts1/fts1.h \
$(TOP)/ext/fts1/fts1_hash.c \
-@@ -363,8 +366,12 @@
+@@ -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
#
-@@ -435,7 +442,6 @@
+@@ -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 \
-@@ -461,7 +467,6 @@
- $(TOP)/ext/misc/totype.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
-@@ -640,25 +645,25 @@
+@@ -645,25 +655,25 @@
libtclsqlite3.la: tclsqlite.lo libsqlite3.la
$(LTLINK) -no-undefined -o $@ tclsqlite.lo \
@@ -82,7 +113,7 @@
srcck1$(BEXE): $(TOP)/tool/srcck1.c
$(BCC) -o srcck1$(BEXE) $(TOP)/tool/srcck1.c
-@@ -768,7 +773,7 @@
+@@ -774,7 +784,7 @@
# Rule to build the amalgamation
#
sqlite3.lo: sqlite3.c
@@ -91,22 +122,23 @@
# Rules to build the LEMON compiler generator
#
-@@ -1065,14 +1070,9 @@
+@@ -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/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
-@@ -1240,15 +1240,15 @@
+@@ -1251,11 +1252,11 @@
# Fuzz testing
fuzztest: fuzzcheck$(TEXE) $(FUZZDATA) sessionfuzz$(TEXE) $(TOP)/test/sessionfuzz-data1.db
@@ -114,18 +146,13 @@
+ ./fuzzcheck$(TEXE) --timeout 3600 $(FUZZDATA)
./sessionfuzz$(TEXE) run $(TOP)/test/sessionfuzz-data1.db
- fastfuzztest: fuzzcheck$(TEXE) $(FUZZDATA) sessionfuzz$(TEXE) $(TOP)/test/sessionfuzz-data1.db
-- ./fuzzcheck$(TEXE) --limit-mem 100M $(FUZZDATA)
-+ ./fuzzcheck$(TEXE) --limit-mem 100M --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.
-@@ -1279,24 +1279,23 @@
+@@ -1286,24 +1287,23 @@
smoketest: $(TESTPROGS) fuzzcheck$(TEXE)
./testfixture$(TEXE) $(TOP)/test/main.test $(TESTOPTS)
@@ -158,7 +185,7 @@
$(TOP)/src/tclsqlite.c \
$(TOP)/ext/repair/sqlite3_checker.tcl \
$(TOP)/ext/repair/checkindex.c \
-@@ -1307,36 +1306,36 @@
+@@ -1314,36 +1314,36 @@
sqlite3_checker.c: $(CHECKER_DEPS)
$(TCLSH_CMD) $(TOP)/tool/mkccode.tcl $(TOP)/ext/repair/sqlite3_checker.c.in >$@
@@ -213,7 +240,7 @@
changesetfuzz$(TEXE): $(TOP)/ext/session/changesetfuzz.c sqlite3.lo
$(LTLINK) -o $@ $(TOP)/ext/session/changesetfuzz.c sqlite3.lo $(TLIBS)
-@@ -1361,11 +1360,11 @@
+@@ -1368,11 +1368,11 @@
kvtest$(TEXE): $(TOP)/test/kvtest.c sqlite3.c
$(LTLINK) $(KV_OPT) -o $@ $(TOP)/test/kvtest.c sqlite3.c $(TLIBS)
@@ -241,40 +268,6 @@
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>
-@@ -119,3 +121,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>
-@@ -2176,3 +2178,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 @@
@@ -294,9 +287,76 @@
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
-@@ -61,6 +61,7 @@
+@@ -69,6 +69,7 @@
#include <stdio.h>
#include <assert.h>
#include "sqlite3.h"
@@ -304,7 +364,7 @@
typedef sqlite3_int64 i64;
typedef sqlite3_uint64 u64;
typedef unsigned char u8;
-@@ -127,6 +128,10 @@
+@@ -135,6 +136,10 @@
# define SHELL_USE_LOCAL_GETLINE 1
#endif
@@ -314,13 +374,17 @@
+
#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
+ # 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
@@ -334,29 +398,34 @@
#if defined(SQLITE_ENABLE_SESSION)
/*
-@@ -4135,10 +4129,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);
+@@ -4261,17 +4251,6 @@
+ #ifndef SQLITE_OMIT_LOAD_EXTENSION
+ sqlite3_enable_load_extension(p->db, 1);
#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_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,
-@@ -6135,6 +6132,7 @@
+ 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);
-+ extern int sqlite3_sqlar_init(sqlite3 *, char **, const sqlite3_api_routines *);
- sqlite3_sqlar_init(cmd.db, 0, 0);
+- 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);
-@@ -10187,6 +10185,7 @@
+
+@@ -10621,6 +10598,7 @@
#endif
}
data.out = stdout;
@@ -364,6 +433,94 @@
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 @@
@@ -419,14 +576,26 @@
sqlite3ext.h
sqlite3rbu.h
sqliteicu.h
-@@ -403,6 +404,11 @@
+@@ -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
@@ -445,7 +614,7 @@
const char *sqlite3_analyzer_init_proc(Tcl_Interp *interp){
--- /tool/sqltclsh.c.in
+++ /tool/sqltclsh.c.in
-@@ -27,19 +27,17 @@
+@@ -27,21 +27,13 @@
#define SQLITE_OMIT_SHARED_CACHE 1
#define SQLITE_DEFAULT_MEMSTATUS 0
#define SQLITE_MAX_EXPR_DEPTH 0
@@ -462,10 +631,10 @@
(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
+-#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
new file mode 100644
index 0000000..ad2a3bf
--- /dev/null
+++ b/dev-db/sqlite/files/sqlite-3.32.3-security_fixes.patch
@@ -0,0 +1,146 @@
+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/sqlite-3.31.1.ebuild b/dev-db/sqlite/sqlite-3.32.3.ebuild
similarity index 75%
rename from dev-db/sqlite/sqlite-3.31.1.ebuild
rename to dev-db/sqlite/sqlite-3.32.3.ebuild
index dfea153..7d0e713 100644
--- a/dev-db/sqlite/sqlite-3.31.1.ebuild
+++ b/dev-db/sqlite/sqlite-3.32.3.ebuild
@@ -16,11 +16,8 @@
if [[ "${PV}" == "9999" ]]; then
SRC_URI=""
else
- SRC_URI="doc? ( https://sqlite.org/2020/${PN}-doc-${DOC_PV}.zip )
- tcl? ( https://sqlite.org/2020/${PN}-src-${SRC_PV}.zip )
- test? ( https://sqlite.org/2020/${PN}-src-${SRC_PV}.zip )
- tools? ( https://sqlite.org/2020/${PN}-src-${SRC_PV}.zip )
- !tcl? ( !test? ( !tools? ( https://sqlite.org/2020/${PN}-autoconf-${SRC_PV}.tar.gz ) ) )"
+ 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"
@@ -36,19 +33,8 @@
BDEPEND=">=dev-lang/tcl-8.6:0
dev-vcs/fossil"
else
- BDEPEND="doc? ( app-arch/unzip )
- tcl? (
- app-arch/unzip
- >=dev-lang/tcl-8.6:0
- )
- test? (
- app-arch/unzip
- >=dev-lang/tcl-8.6:0
- )
- tools? (
- app-arch/unzip
- >=dev-lang/tcl-8.6:0
- )"
+ 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}] )
@@ -58,21 +44,11 @@
DEPEND="${RDEPEND}
test? ( >=dev-lang/tcl-8.6:0[${MULTILIB_USEDEP}] )"
-full_archive() {
- [[ "${PV}" == "9999" ]] || use tcl || use test || use tools
-}
-
-pkg_setup() {
- if [[ "${PV}" == "9999" ]]; then
- S="${WORKDIR}/${PN}"
- else
- if full_archive; then
- S="${WORKDIR}/${PN}-src-${SRC_PV}"
- else
- S="${WORKDIR}/${PN}-autoconf-${SRC_PV}"
- fi
- fi
-}
+if [[ "${PV}" == "9999" ]]; then
+ S="${WORKDIR}/${PN}"
+else
+ S="${WORKDIR}/${PN}-src-${SRC_PV}"
+fi
src_unpack() {
if [[ "${PV}" == "9999" ]]; then
@@ -123,30 +99,15 @@
}
src_prepare() {
- if full_archive; then
- eapply "${FILESDIR}/${PN}-3.31.0-full_archive-build.patch"
- eapply "${FILESDIR}/${PN}-3.31.1-full_archive-architectures.patch"
- eapply "${FILESDIR}/${PN}-3.31.1-full_archive-security_fixes.patch"
+ 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
+ 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"
- else
- eapply "${FILESDIR}/${PN}-3.25.0-nonfull_archive-build.patch"
- eapply "${FILESDIR}/${PN}-3.31.1-nonfull_archive-architectures.patch"
- eapply "${FILESDIR}/${PN}-3.31.1-nonfull_archive-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(\[fdatasync.*/AC_CHECK_FUNCS([fdatasync fullfsync gmtime_r isnan localtime_r localtime_s malloc_usable_size posix_fallocate pread pread64 pwrite pwrite64 strchrnul usleep utime])/" \
- -e "/AC_CHECK_FUNCS(posix_fallocate)/d" \
- -i configure.ac || die "sed failed"
- fi
+ # 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
@@ -158,23 +119,24 @@
local options=()
options+=(
- --enable-$(full_archive && echo load-extension || echo dynamic-extensions)
+ --enable-load-extension
--enable-threadsafe
)
- if ! full_archive; then
- options+=(--disable-static-shell)
- fi
# 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/compile.html#enable_dbpage_vtab
+ # https://sqlite.org/dbpage.html
append-cppflags -DSQLITE_ENABLE_DBPAGE_VTAB
# Support dbstat virtual table.
@@ -182,7 +144,6 @@
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
@@ -251,7 +212,8 @@
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.
@@ -263,26 +225,14 @@
append-cppflags -DSQLITE_USE_URI
# debug USE flag.
- if full_archive; then
- options+=($(use_enable debug))
- else
- if use debug; then
- append-cppflags -DSQLITE_DEBUG
- else
- append-cppflags -DNDEBUG
- fi
- fi
+ 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
- if full_archive; then
- sed -e "s/^TLIBS = @LIBS@/& -licui18n -licuuc/" -i Makefile.in || die "sed failed"
- else
- sed -e "s/^LIBS = @LIBS@/& -licui18n -licuuc/" -i Makefile.in || die "sed failed"
- fi
+ sed -e "s/^TLIBS = @LIBS@/& -licui18n -licuuc/" -i Makefile.in || die "sed failed"
fi
# readline USE flag.
@@ -290,7 +240,7 @@
--disable-editline
$(use_enable readline)
)
- if full_archive && use readline; then
+ if use readline; then
options+=(--with-readline-inc="-I${EPREFIX}/usr/include/readline")
fi
@@ -305,9 +255,7 @@
options+=($(use_enable static-libs static))
# tcl, test, tools USE flags.
- if full_archive; then
- options+=(--enable-tcl)
- fi
+ options+=(--enable-tcl)
if [[ "${CHOST}" == *-mint* ]]; then
append-cppflags -DSQLITE_OMIT_WAL
diff --git a/metadata/md5-cache/dev-db/sqlite-3.31.1 b/metadata/md5-cache/dev-db/sqlite-3.32.3
similarity index 83%
rename from metadata/md5-cache/dev-db/sqlite-3.31.1
rename to metadata/md5-cache/dev-db/sqlite-3.32.3
index bead653..ee4c9f8 100644
--- a/metadata/md5-cache/dev-db/sqlite-3.31.1
+++ b/metadata/md5-cache/dev-db/sqlite-3.32.3
@@ -1,5 +1,5 @@
-BDEPEND=doc? ( app-arch/unzip ) tcl? ( app-arch/unzip >=dev-lang/tcl-8.6:0 ) test? ( app-arch/unzip >=dev-lang/tcl-8.6:0 ) tools? ( app-arch/unzip >=dev-lang/tcl-8.6:0 ) >=app-portage/elt-patches-20170815
-DEFINED_PHASES=compile configure install prepare setup test unpack
+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
@@ -10,6 +10,6 @@
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=doc? ( https://sqlite.org/2020/sqlite-doc-3310100.zip ) tcl? ( https://sqlite.org/2020/sqlite-src-3310100.zip ) test? ( https://sqlite.org/2020/sqlite-src-3310100.zip ) tools? ( https://sqlite.org/2020/sqlite-src-3310100.zip ) !tcl? ( !test? ( !tools? ( https://sqlite.org/2020/sqlite-autoconf-3310100.tar.gz ) ) )
+SRC_URI=https://sqlite.org/2020/sqlite-src-3320300.zip doc? ( https://sqlite.org/2020/sqlite-doc-3320300.zip )
_eclasses_=autotools d0e5375d47f4c809f406eb892e531513 eutils 06133990e861be0fe60c2b428fd025d9 flag-o-matic 5d5921a298e95441da2f85be419894c0 libtool f143db5a74ccd9ca28c1234deffede96 multibuild 40fe59465edacd730c644ec2bc197809 multilib 2477ebe553d3e4d2c606191fe6c33602 multilib-build 1979aa0ff4d356d32507ca4650d9f37d multilib-minimal 8bddda43703ba94d8341f4e247f97566 toolchain-funcs 605c126bed8d87e4378d5ff1645330cb
-_md5_=e840b461df7d8f3292b3ba04d0458a5a
+_md5_=1628a43ffb91d4a04ff3a7472d69b3b1