public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Mike Gilbert" <floppym@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/gentoo:master commit in: dev-db/sqlite/, dev-db/sqlite/files/
Date: Sat,  4 Jul 2020 13:53:09 +0000 (UTC)	[thread overview]
Message-ID: <1593870747.1ace56886862557c51491ff03ab6a82fb5373786.floppym@gentoo> (raw)

commit:     1ace56886862557c51491ff03ab6a82fb5373786
Author:     Arfrever Frehtes Taifersar Arahesis <Arfrever <AT> Apache <DOT> Org>
AuthorDate: Thu Jul  2 13:37:59 2020 +0000
Commit:     Mike Gilbert <floppym <AT> gentoo <DOT> org>
CommitDate: Sat Jul  4 13:52:27 2020 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=1ace5688

dev-db/sqlite: Version bump (3.32.3).

Bug: https://bugs.gentoo.org/716748
Signed-off-by: Arfrever Frehtes Taifersar Arahesis <Arfrever <AT> Apache.Org>
Signed-off-by: Mike Gilbert <floppym <AT> gentoo.org>

 dev-db/sqlite/Manifest                             |   3 +
 .../files/sqlite-3.32.1-full_archive-build_1.patch | 670 +++++++++++++++++++++
 .../files/sqlite-3.32.1-full_archive-build_2.patch | 640 ++++++++++++++++++++
 dev-db/sqlite/sqlite-3.32.3.ebuild                 | 393 ++++++++++++
 4 files changed, 1706 insertions(+)

diff --git a/dev-db/sqlite/Manifest b/dev-db/sqlite/Manifest
index a5126e72a2e..1e33d9d9906 100644
--- a/dev-db/sqlite/Manifest
+++ b/dev-db/sqlite/Manifest
@@ -1,3 +1,6 @@
 DIST sqlite-autoconf-3310100.tar.gz 2887243 BLAKE2B ef5d40b6e6c59a51ae95368eb9f6a938188813f89d5328ea1c1180ef35f124c14b3e83b0832ae5c2fa24cc2df352f1b0ea5f20b64d0762d50a700d9895f9a12e SHA512 d85250ba5f78f0c918880f663741709aba662192f04888b2324a0df17affdf5b8540e8428c6c7315119806e7adad758ea281c9b403c0ad94ac6a9bd1b93fd617
+DIST sqlite-autoconf-3320300.tar.gz 2904404 BLAKE2B 23c75256f31bd24ca14949afd144ac3280dcaaf25301ffcb8b9ecea6834fce9b1aee603ef616c2987674ae30afb59326c6f2010870b075f7d4c6566a2329f155 SHA512 add0ef47c059be0a75add7ab4fe52b2fbd4060cacbf1cbb93f1b4007cdeb8fc92256b1aadc224c4839e733fb868e56d9d73dd33c56a6f66180d1ff001d8d275e
 DIST sqlite-doc-3310100.zip 9600405 BLAKE2B 324fb7a0a38bc56476e41504c14996e9d5d83ac659403991515413d49f5ee3aad064ccece25f52b6041ef26bf23f320a9be1b6b02c5fbe96c36372107f54fc2e SHA512 5572e2c2dac30c014ef9cd60a620b7a7bb610f91a47e2890c0641540d39b9d5ce0e914ee697583130317633918b7827e2612a7cbc024f5bd6aa22ad28a78b56b
+DIST sqlite-doc-3320300.zip 9772933 BLAKE2B efd72c18d0398c103e3f9c4cfeb03e7794fd69691b1bcea95b74a0c5d8af22aa13abc84ce8dc5864b5f4cb79be239433933b4daca34d1adfcc6f31ce2cde66bf SHA512 af9dca970b4c03c058d7d1cd55a3d11fa4b112dccac942b8660d82a7e9ba2956963fcb429eedfdc85915637c102e1f904ace98c8e0455c4120422bbd9f2f3cd0
 DIST sqlite-src-3310100.zip 12510166 BLAKE2B a856695e8552b8b4dcb28452fdbd48305fdb9072f9d6587f4b1f4445daf386e920eb936dcb50fdfe41a49f84b26a7c5fedcffea5acf3ba3fa935c36695d4b8ee SHA512 af92a00877bcd90372d6f83a27fea12b4fe8d1155b223a6bccbccc31bb8e3d2269cd9e68f329bc55f70d1068ccbf220ff5abccea6f593fd7a3a4bdd732d1cdbe
+DIST sqlite-src-3320300.zip 12461750 BLAKE2B 59cce74d284191cfc69ac09b6014701ddd2b7b3d7ebaad5da4ad71cc200e70285b3b201ff174819aa8dde5f610589d7947f547450334f0f17149014078316185 SHA512 7e027c7163a760fb9b6dbfd2e4ccffb39d4972280583fb0d7f8390017101dfed3b12a36653b3130a548ae4d04c6abb11c0a1921b6f09c54c6ae1e72fbdcb2fd4

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 00000000000..aec90e4c07a
--- /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.32.1-full_archive-build_2.patch b/dev-db/sqlite/files/sqlite-3.32.1-full_archive-build_2.patch
new file mode 100644
index 00000000000..f12c0b22a48
--- /dev/null
+++ b/dev-db/sqlite/files/sqlite-3.32.1-full_archive-build_2.patch
@@ -0,0 +1,640 @@
+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/sqlite-3.32.3.ebuild b/dev-db/sqlite/sqlite-3.32.3.ebuild
new file mode 100644
index 00000000000..42d31da076a
--- /dev/null
+++ b/dev-db/sqlite/sqlite-3.32.3.ebuild
@@ -0,0 +1,393 @@
+# 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="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 ) ) )"
+fi
+
+LICENSE="public-domain"
+SLOT="3"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~ppc-aix ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~m68k-mint ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
+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="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
+		)"
+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}] )"
+
+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
+}
+
+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() {
+	if full_archive; then
+		eapply "${FILESDIR}/${PN}-3.32.1-full_archive-build_1.patch"
+		eapply "${FILESDIR}/${PN}-3.32.1-full_archive-build_2.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"
+	else
+		eapply "${FILESDIR}/${PN}-3.25.0-nonfull_archive-build.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
+
+	eautoreconf
+
+	multilib_copy_sources
+}
+
+multilib_src_configure() {
+	local -x CPPFLAGS="${CPPFLAGS}" CFLAGS="${CFLAGS}"
+	local options=()
+
+	options+=(
+		--enable-$(full_archive && echo load-extension || echo dynamic-extensions)
+		--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/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.
+	if full_archive; then
+		options+=($(use_enable debug))
+	else
+		if use debug; then
+			append-cppflags -DSQLITE_DEBUG
+		else
+			append-cppflags -DNDEBUG
+		fi
+	fi
+
+	# 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
+	fi
+
+	# readline USE flag.
+	options+=(
+		--disable-editline
+		$(use_enable readline)
+	)
+	if full_archive && use readline; then
+		options+=(--with-readline-inc="-I${EPREFIX}/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.
+	if full_archive; then
+		options+=(--enable-tcl)
+	fi
+
+	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
+}


             reply	other threads:[~2020-07-04 13:53 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-07-04 13:53 Mike Gilbert [this message]
  -- strict thread matches above, loose matches on Subject: below --
2024-03-01 19:10 [gentoo-commits] repo/gentoo:master commit in: dev-db/sqlite/, dev-db/sqlite/files/ Jakov Smolić
2024-02-06  3:26 Sam James
2023-04-17 17:30 Jakov Smolić
2023-03-23 22:39 Sam James
2022-11-25  3:40 Sam James
2021-04-02 15:00 Mike Gilbert
2021-03-26 14:38 Mike Gilbert
2021-03-26 14:38 Mike Gilbert
2020-12-28  0:01 Mike Gilbert
2020-12-27 18:39 Mike Gilbert
2020-09-15 18:34 Mike Gilbert
2020-07-29 18:46 Mike Gilbert
2020-07-04 13:53 Mike Gilbert
2020-03-09 19:29 Mike Gilbert
2019-12-06 20:25 Mike Gilbert
2019-05-05 19:05 Mike Gilbert
2019-02-25 21:25 Mike Gilbert
2018-12-19 17:59 Mike Gilbert
2018-10-02 20:08 Mike Gilbert
2018-06-13 14:36 Mike Gilbert
2018-04-16 18:29 Mike Gilbert
2018-04-16 18:29 Mike Gilbert
2018-02-12 19:16 Mike Gilbert
2017-11-01 20:54 Mike Gilbert
2017-11-01 20:54 Mike Gilbert
2017-09-28 17:18 Mike Gilbert
2017-08-04 18:39 Mike Gilbert
2017-04-04 19:50 Mike Gilbert
2016-11-10 18:19 Mike Gilbert
2016-08-16 18:37 Mike Gilbert
2016-04-02 21:31 Mike Gilbert
2016-03-03  1:54 Mike Gilbert
2016-02-20 17:23 Pacho Ramos

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1593870747.1ace56886862557c51491ff03ab6a82fb5373786.floppym@gentoo \
    --to=floppym@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox