commit:     380d244d2c1ec075ab5387fd5302ceba9a4b0e62
Author:     Arfrever Frehtes Taifersar Arahesis <Arfrever <AT> Apache <DOT> Org>
AuthorDate: Sat Feb 10 17:00:09 2018 +0000
Commit:     Mike Gilbert <floppym <AT> gentoo <DOT> org>
CommitDate: Mon Feb 12 19:16:12 2018 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=380d244d

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

 dev-db/sqlite/Manifest                             |   3 +
 .../files/sqlite-3.22.0-full_archive-build.patch   | 405 +++++++++++++++++++++
 .../files/sqlite-3.22.0-full_archive-headers.patch |  15 +
 .../files/sqlite-3.22.0-full_archive-tests.patch   | 249 +++++++++++++
 dev-db/sqlite/sqlite-3.22.0.ebuild                 | 303 +++++++++++++++
 5 files changed, 975 insertions(+)

diff --git a/dev-db/sqlite/Manifest b/dev-db/sqlite/Manifest
index 65f0c3790f5..53d8ac0a3fd 100644
--- a/dev-db/sqlite/Manifest
+++ b/dev-db/sqlite/Manifest
@@ -2,11 +2,14 @@ DIST sqlite-autoconf-3190300.tar.gz 2542682 BLAKE2B 
bcbc3ce87b569c2d84c099776db2
 DIST sqlite-autoconf-3200000.tar.gz 2565548 BLAKE2B 
29d88fb8597b6ef7c7b3613c73d8b912cd22e1354c664a2edae0b5d0379103b1025a54d83f24ee74159bed3b928627cb1a50c8df48658ba0cdc5ce7fdbfa5920
 SHA512 
f5b0ffcc27adeed5b27b29962d03defa167151868f2281c5642a8ddfa10ac8971aff22081a5b46bd36bcf664bd271975e80249ec403b73656658b33af084ec94
 DIST sqlite-autoconf-3200100.tar.gz 2565638 BLAKE2B 
bd1d32c211ea906cb2dbf78ea54d364db1a642d8a3b2751a427521a9da3391a2cd23c1ecdc5ff70b68f4166c583e69373f566cb04847295542185ab598e79c1b
 SHA512 
56e3d326ea2225cadc628c3518d46d9f7c4bafa0e3612f2b7ab0dc0d79fcbb7e095f6d84a9a48e1c6d83adcdc8706ad5ac4404f0f622c7fe38cfde3a7e7e69f0
 DIST sqlite-autoconf-3210000.tar.gz 2568942 BLAKE2B 
83a7095fd5fd5447a3c16816ceb9f51f393de9689942bd4eb4c6eafe357a1dd1783500f8faf2765fa6628da6a39f550237b661af1337ac063ca285f5f0a5218e
 SHA512 
8f00708965eacef171620c49538f75768d350ec3f2bfef412a5c70af865ab03b6a64ce1e65d9fdb3d66f4d00262a30fc162b01fd69f63c05c14d5243374b6298
+DIST sqlite-autoconf-3220000.tar.gz 2644649 BLAKE2B 
e73fd7846362e6cc07eb96ea18e8883c1473c2b07c6e0c89e7e65726c5a6556b50bac71904a5b3a431ba40ff72b32e55c3e5ab7461567b5643560a0790a9a4dd
 SHA512 
13e791bb1d7ba7edb5d84f4945f36ce2e03898a5bb1612d28799ef35a100f32e85cbb38f4ef65a7b43d020e5d48bf09b2e79cbb2003cc8aca2b09458b8c5d5bc
 DIST sqlite-doc-3190300.zip 5649351 BLAKE2B 
f0bc52bebe6e3c4be227d8f6cf2689fb2f6d46e6472d61334a7959697d4017dcee87c4ff146293f13a88e69990c2e7f291e4ad8ae5359c378e1bcecf6dfe2aa1
 SHA512 
4f99b6797f76dab1859eaf4596c42d6b10a80a1ad9dcb33b82fcc4ef80a8e8299ac24c0d2a0f41debf9e82d43c9ecf9675547eb6163756f29afe847613ef75f3
 DIST sqlite-doc-3200000.zip 5695366 BLAKE2B 
0e6dba7666d449875026772204943c892e8984a85cd517a33d7a5bdccb352070fc2cc8012b9b57b70c2436587ab5d6840ef329253bcb27c7c1cd10b0b4c30c06
 SHA512 
0dfa9487c5e4084a9c17e8bf83a92b9a2cd53642efeff0b12051ecdeaf11e3896031f1b4d59021354a293b8acc8c6fcab827961721fda7a5de8415460d3bd280
 DIST sqlite-doc-3200100.zip 5759028 BLAKE2B 
a633672b739160873e64b89e1350c85b0002fd8f268b6ae0f5189de12f411125fbb309585175727b8915fe1468b3e70e7c33239826232c3e7bc8c1c59132bec0
 SHA512 
518ca59644cecfcd67f511268112e421c5d7bbd77ef1e33304bf306ef110becf1e2a7fe37c506ec6892edb9d5c6ee77657b374c2e061f49890d18af062dea2b3
 DIST sqlite-doc-3210000.zip 5800635 BLAKE2B 
c9e15fe7373045783d05bd7b0a70f980e3c8a3c0ec4243f85fe338788830a58e82f1c6b3c053efe75caa33e99a6162e2f9831e4f5b9577c0bf90a305ee2f0381
 SHA512 
799c7279166b489d1a5acc9410808c2d4b78e64037fc15b60764180fe1c698f35e27e86793140302f560cfa583baa2c33e416d5c9e1842ec58c6cb6093729334
+DIST sqlite-doc-3220000.zip 5856836 BLAKE2B 
1be73848040f3ae9734a44c94e4c36cae269d79abb20467f9f8368754e1ae07f4c25490be985b44d08f427e281fc268c6569dc0f5bbb6254621c62798507d687
 SHA512 
f9141d3907e5c1a3008d3b7e111e46e7ff1f010358eb682d3e1187a67deb7cca7ba1d5fbc5b19da26ee8df3a0c71a098fd0e8d8ca89c25e5ad2b3e12ba7dc312
 DIST sqlite-src-3190300.zip 10193997 BLAKE2B 
2286d410594cb04acc79e4877101cbd5018cb84802394fbe4fe9ceaca4e9b20064372f5189d8d70bc7c034789fa92799224939e46f35f8fe47fb42d08f9b29e1
 SHA512 
514c3de6346bdea359036a79c880133f0eeed4cdfc9e811d662dc343f91ea43edda0f9760405a48e7f61ea1dd3478980cc7d3b5409ef27adcb5311a06e36297e
 DIST sqlite-src-3200000.zip 10575632 BLAKE2B 
2f0f41129e56477531f59d91e02469ccf5e21eaadce57a2a81bde9bcd549c12d55a496f27fd07bf0ded78b55aa8a6e4d48e5073638dc87eaeef8e989906fccfb
 SHA512 
40fe7972902d041f012c7739c8712aa40069aebc7be680fde8f43b33fed885bfc42331bfb7200651486484edb71cbdd77ddb9c119d0847bdfb0e92063090f029
 DIST sqlite-src-3200100.zip 10575637 BLAKE2B 
e45bad50d728e749c258546dd75a9d647ca35584092c663fed176fdd69164623bbe58afd15cd74fcd32a0cec893cffdb0f096873188c42ec5595ef7d635c79ad
 SHA512 
845a0d64c9356aadf178c04dd716bbd37a7353526b06cfa8e8f65653cf6a1893a5c5e8c78d20b43910c34d9167272cf517749c91ed0ba7686977e3d0327e8939
 DIST sqlite-src-3210000.zip 10577695 BLAKE2B 
21f110d4cdda95864a39b9b9b65985d29e1409ed38a9bda692d33dde845c115476cd77dc3b9cd1b7359ff383dc3050cbf0437b113ea128392aef50dd3b778d46
 SHA512 
3a054422da80d750fd5ab297f9d2728f4e7b55fa790a72d55da8c381835571992d56b349e50d4680b04c9e2e44d6fa83009c2df3ffa045f43ff9059bb8736894
+DIST sqlite-src-3220000.zip 10721627 BLAKE2B 
ed4cf93c36c095edeccd6ee4dac5419c516264a42eb9d6d2e333b1d4a134c6198dfcd2bbae41dff811616f0dc7f9e9bb487f9c5b5f631fcb5885540a84bf527a
 SHA512 
e35defb0ffcc10100399051bc734746de40fa3dc5cd673eac470fb58cd8bd6d911b6dacb5e8489e2dd79c6ae75faaeb8c02384f64c4595963e62bd3faeb9446c

diff --git a/dev-db/sqlite/files/sqlite-3.22.0-full_archive-build.patch 
b/dev-db/sqlite/files/sqlite-3.22.0-full_archive-build.patch
new file mode 100644
index 00000000000..5e1236a4e96
--- /dev/null
+++ b/dev-db/sqlite/files/sqlite-3.22.0-full_archive-build.patch
@@ -0,0 +1,405 @@
+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
+@@ -307,6 +307,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 \
+@@ -355,8 +358,11 @@
+   $(TOP)/ext/rbu/sqlite3rbu.h \
+   $(TOP)/ext/rbu/sqlite3rbu.c
+ SRC += \
++  $(TOP)/ext/misc/appendvfs.c \
+   $(TOP)/ext/misc/json1.c \
+-  $(TOP)/ext/misc/stmt.c
++  $(TOP)/ext/misc/sqlar.c \
++  $(TOP)/ext/misc/stmt.c \
++  $(TOP)/ext/misc/zipfile.c
+ 
+ # Generated source code files
+ #
+@@ -425,7 +431,6 @@
+ # Statically linked extensions
+ #
+ TESTSRC += \
+-  $(TOP)/ext/expert/sqlite3expert.c \
+   $(TOP)/ext/expert/test_expert.c \
+   $(TOP)/ext/misc/amatch.c \
+   $(TOP)/ext/misc/carray.c \
+@@ -447,8 +452,7 @@
+   $(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/misc/wholenumber.c
+ 
+ # Source code to the library files needed by the test fixture
+ #
+@@ -610,25 +614,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
+@@ -704,7 +708,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
+ #
+@@ -995,14 +999,9 @@
+ # Source files that go into making shell.c
+ SHELL_SRC = \
+       $(TOP)/src/shell.c.in \
+-        $(TOP)/ext/misc/appendvfs.c \
+       $(TOP)/ext/misc/shathree.c \
+       $(TOP)/ext/misc/fileio.c \
+       $(TOP)/ext/misc/completion.c \
+-      $(TOP)/ext/misc/sqlar.c \
+-      $(TOP)/ext/expert/sqlite3expert.c \
+-      $(TOP)/ext/expert/sqlite3expert.h \
+-      $(TOP)/ext/misc/zipfile.c \
+         $(TOP)/src/test_windirent.c
+ 
+ shell.c:      $(SHELL_SRC) $(TOP)/tool/mkshellc.tcl
+@@ -1161,13 +1160,13 @@
+ 
+ # Fuzz testing
+ fuzztest:     fuzzcheck$(TEXE) $(FUZZDATA)
+-      ./fuzzcheck$(TEXE) $(FUZZDATA)
++      ./fuzzcheck$(TEXE) --timeout 3600 $(FUZZDATA)
+ 
+ fastfuzztest: fuzzcheck$(TEXE) $(FUZZDATA)
+-      ./fuzzcheck$(TEXE) --limit-mem 100M $(FUZZDATA)
++      ./fuzzcheck$(TEXE) --limit-mem 100M --timeout 3600 $(FUZZDATA)
+ 
+ valgrindfuzz: fuzzcheck$(TEXT) $(FUZZDATA)
+-      valgrind ./fuzzcheck$(TEXE) --cell-size-check --limit-mem 10M --timeout 
600 $(FUZZDATA)
++      valgrind ./fuzzcheck$(TEXE) --cell-size-check --limit-mem 10M --timeout 
3600 $(FUZZDATA)
+ 
+ # The veryquick.test TCL tests.
+ #
+@@ -1197,24 +1196,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 \
+@@ -1225,30 +1223,30 @@
+ 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
+ 
+-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
+ 
+-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
+ 
+ rollback-test$(TEXE): $(TOP)/tool/rollback-test.c sqlite3.lo
+       $(LTLINK) -o $@ $(TOP)/tool/rollback-test.c sqlite3.lo $(TLIBS)
+@@ -1267,11 +1265,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
+@@ -590,6 +590,9 @@
+ if test "${use_loadextension}" = "yes" ; then
+   OPT_FEATURE_FLAGS=""
+   AC_SEARCH_LIBS(dlopen, dl)
++  if test "${ac_cv_search_dlopen}" = "no" ; then
++    OPT_FEATURE_FLAGS="-DSQLITE_OMIT_LOAD_EXTENSION=1"
++  fi
+ else
+   OPT_FEATURE_FLAGS="-DSQLITE_OMIT_LOAD_EXTENSION=1"
+ fi
+--- /ext/misc/sqlar.c
++++ /ext/misc/sqlar.c
+@@ -14,6 +14,8 @@
+ ** for working with sqlar archives and used by the shell tool's built-in
+ ** sqlar support.
+ */
++#ifdef SQLITE_HAVE_ZLIB
++
+ #include "sqlite3ext.h"
+ SQLITE_EXTENSION_INIT1
+ #include <zlib.h>
+@@ -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>
+@@ -1665,3 +1667,5 @@
+   (void)pzErrMsg;  /* Unused parameter */
+   return zipfileRegister(db);
+ }
++
++#endif /* SQLITE_HAVE_ZLIB */
+--- /ext/repair/sqlite3_checker.c.in
++++ /ext/repair/sqlite3_checker.c.in
+@@ -2,6 +2,7 @@
+ ** Read an SQLite database file and analyze its space utilization.  Generate
+ ** text on standard output.
+ */
++#define SQLITE_CORE 1
+ #define TCLSH_INIT_PROC sqlite3_checker_init_proc
+ #define SQLITE_ENABLE_DBPAGE_VTAB 1
+ #define SQLITE_ENABLE_JSON1 1
+@@ -14,7 +15,7 @@
+ #define SQLITE_OMIT_SHARED_CACHE 1
+ #define SQLITE_DEFAULT_MEMSTATUS 0
+ #define SQLITE_MAX_EXPR_DEPTH 0
+-INCLUDE sqlite3.c
++#include "sqlite3.h"
+ INCLUDE $ROOT/src/tclsqlite.c
+ INCLUDE $ROOT/ext/misc/btreeinfo.c
+ INCLUDE $ROOT/ext/repair/checkindex.c
+--- /src/shell.c.in
++++ /src/shell.c.in
+@@ -61,6 +61,7 @@
+ #include <stdio.h>
+ #include <assert.h>
+ #include "sqlite3.h"
++#include "ext/expert/sqlite3expert.h"
+ typedef sqlite3_int64 i64;
+ typedef sqlite3_uint64 u64;
+ typedef unsigned char u8;
+@@ -124,6 +125,10 @@
+ # define SHELL_USE_LOCAL_GETLINE 1
+ #endif
+ 
++#ifdef SQLITE_HAVE_ZLIB
++#include <zlib.h>
++#endif
++
+ 
+ #if defined(_WIN32) || defined(WIN32)
+ # include <io.h>
+@@ -963,13 +968,6 @@
+ INCLUDE ../ext/misc/shathree.c
+ INCLUDE ../ext/misc/fileio.c
+ INCLUDE ../ext/misc/completion.c
+-INCLUDE ../ext/misc/appendvfs.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_ENABLE_SESSION)
+ /*
+@@ -3467,7 +3465,9 @@
+     sqlite3_shathree_init(p->db, 0, 0);
+     sqlite3_completion_init(p->db, 0, 0);
+ #ifdef SQLITE_HAVE_ZLIB
++    extern int sqlite3_zipfile_init(sqlite3 *, char **, const 
sqlite3_api_routines *);
+     sqlite3_zipfile_init(p->db, 0, 0);
++    extern int sqlite3_sqlar_init(sqlite3 *, char **, const 
sqlite3_api_routines *);
+     sqlite3_sqlar_init(p->db, 0, 0);
+ #endif
+     sqlite3_create_function(p->db, "shell_add_schema", 3, SQLITE_UTF8, 0,
+@@ -5316,6 +5316,7 @@
+       }
+       sqlite3_fileio_init(cmd.db, 0, 0);
+ #ifdef SQLITE_HAVE_ZLIB
++      extern int sqlite3_sqlar_init(sqlite3 *, char **, const 
sqlite3_api_routines *);
+       sqlite3_sqlar_init(cmd.db, 0, 0);
+ #endif
+       sqlite3_create_function(cmd.db, "shell_putsnl", 1, SQLITE_UTF8, cmd.p,
+@@ -8222,6 +8223,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
+--- /tool/mksqlite3c.tcl
++++ /tool/mksqlite3c.tcl
+@@ -116,6 +116,7 @@
+    rtree.h
+    sqlite3session.h
+    sqlite3.h
++   sqlite3expert.h
+    sqlite3ext.h
+    sqlite3rbu.h
+    sqliteicu.h
+@@ -399,6 +400,10 @@
+    json1.c
+    fts5.c
+    stmt.c
++   appendvfs.c
++   sqlar.c
++   sqlite3expert.c
++   zipfile.c
+ } {
+   copy_file tsrc/$file
+ }
+--- /tool/sqlite3_analyzer.c.in
++++ /tool/sqlite3_analyzer.c.in
+@@ -14,9 +14,6 @@
+ #define SQLITE_DEFAULT_MEMSTATUS 0
+ #define SQLITE_MAX_EXPR_DEPTH 0
+ #define SQLITE_OMIT_LOAD_EXTENSION 1
+-#ifndef USE_EXTERNAL_SQLITE
+-INCLUDE sqlite3.c
+-#endif
+ INCLUDE $ROOT/src/tclsqlite.c
+ 
+ const char *sqlite3_analyzer_init_proc(Tcl_Interp *interp){
+--- /tool/sqltclsh.c.in
++++ /tool/sqltclsh.c.in
+@@ -27,19 +27,17 @@
+ #define SQLITE_OMIT_SHARED_CACHE 1
+ #define SQLITE_DEFAULT_MEMSTATUS 0
+ #define SQLITE_MAX_EXPR_DEPTH 0
+-INCLUDE sqlite3.c
+-INCLUDE $ROOT/ext/misc/appendvfs.c
+-#ifdef SQLITE_HAVE_ZLIB
+-INCLUDE $ROOT/ext/misc/zipfile.c
+-INCLUDE $ROOT/ext/misc/sqlar.c
+-#endif
++#include "sqlite3.h"
+ INCLUDE $ROOT/src/tclsqlite.c
+ 
+ const char *sqlite3_tclapp_init_proc(Tcl_Interp *interp){
+   (void)interp;
++  extern int sqlite3_appendvfs_init(sqlite3 *,char **, const 
sqlite3_api_routines *);
+   sqlite3_appendvfs_init(0,0,0);
+ #ifdef SQLITE_HAVE_ZLIB
++  extern int sqlite3_sqlar_init(sqlite3 *, char **, const 
sqlite3_api_routines *);
+   sqlite3_auto_extension((void(*)(void))sqlite3_sqlar_init);
++  extern int sqlite3_zipfile_init(sqlite3 *, char **, const 
sqlite3_api_routines *);
+   sqlite3_auto_extension((void(*)(void))sqlite3_zipfile_init);
+ #endif
+ 

diff --git a/dev-db/sqlite/files/sqlite-3.22.0-full_archive-headers.patch 
b/dev-db/sqlite/files/sqlite-3.22.0-full_archive-headers.patch
new file mode 100644
index 00000000000..751f00a62bd
--- /dev/null
+++ b/dev-db/sqlite/files/sqlite-3.22.0-full_archive-headers.patch
@@ -0,0 +1,15 @@
+https://sqlite.org/src/info/6185d190e250faae
+
+--- /src/sqlite3ext.h
++++ /src/sqlite3ext.h
+@@ -563,8 +563,8 @@
+ #define sqlite3_value_pointer          sqlite3_api->value_pointer
+ /* Version 3.22.0 and later */
+ #define sqlite3_vtab_nochange          sqlite3_api->vtab_nochange
+-#define sqlite3_value_nochange         sqltie3_api->value_nochange
+-#define sqlite3_vtab_collation         sqltie3_api->vtab_collation
++#define sqlite3_value_nochange         sqlite3_api->value_nochange
++#define sqlite3_vtab_collation         sqlite3_api->vtab_collation
+ #endif /* !defined(SQLITE_CORE) && !defined(SQLITE_OMIT_LOAD_EXTENSION) */
+ 
+ #if !defined(SQLITE_CORE) && !defined(SQLITE_OMIT_LOAD_EXTENSION)

diff --git a/dev-db/sqlite/files/sqlite-3.22.0-full_archive-tests.patch 
b/dev-db/sqlite/files/sqlite-3.22.0-full_archive-tests.patch
new file mode 100644
index 00000000000..a253028b7f4
--- /dev/null
+++ b/dev-db/sqlite/files/sqlite-3.22.0-full_archive-tests.patch
@@ -0,0 +1,249 @@
+https://sqlite.org/src/info/e4766cabdf64d8e9
+https://sqlite.org/src/info/d9e59cfb8476e1ec
+https://sqlite.org/src/info/ba0631de60ca38bf
+https://sqlite.org/src/info/b685d3231097fb90
+
+--- /test/fts3rank.test
++++ /test/fts3rank.test
+@@ -14,7 +14,7 @@
+ 
+ set testdir [file dirname $argv0]
+ source $testdir/tester.tcl
+-set testprefix fts3expr5
++set testprefix fts3rank
+ 
+ # If SQLITE_ENABLE_FTS3 is defined, omit this file.
+ ifcapable !fts3 {
+@@ -56,9 +56,14 @@
+   SELECT * FROM t1 ORDER BY rank(x'0000000000000000') DESC, rowid
+ } {0 {{one two} one {one two} three {one two} two}}
+ 
+-do_catchsql_test 1.5 {
+-  SELECT * FROM t1 ORDER BY rank(x'0100000001000000') DESC, rowid
+-} {1 {invalid matchinfo blob passed to function rank()}}
++if {$tcl_platform(byteOrder)=="littleEndian"} {
++  do_catchsql_test 1.5le {
++    SELECT * FROM t1 ORDER BY rank(x'0100000001000000') DESC, rowid
++  } {1 {invalid matchinfo blob passed to function rank()}}
++} else {
++  do_catchsql_test 1.5be {
++    SELECT * FROM t1 ORDER BY rank(x'0000000100000001') DESC, rowid
++  } {1 {invalid matchinfo blob passed to function rank()}}
++}
+ 
+ finish_test
+-
+--- /test/func6.test
++++ /test/func6.test
+@@ -33,54 +33,125 @@
+   CREATE TABLE t2(x TEXT PRIMARY KEY, y) WITHOUT ROWID;
+   INSERT INTO t2(x,y) SELECT a, b FROM t1;
+ }
++
++# Load the contents of $file from disk and return it encoded as a hex
++# string.
++proc loadhex {file} {
++  set fd [open $file]
++  fconfigure $fd -translation binary -encoding binary
++  set data [read $fd]
++  close $fd
++  binary encode hex $data 
++}
++
++# Each argument is either an integer between 0 and 65535, a text value, or
++# an empty string representing an SQL NULL. This command builds an SQLite
++# record containing the values passed as arguments and returns it encoded
++# as a hex string.
++proc hexrecord {args} {
++  set hdr ""
++  set body ""
++  foreach x $args {
++    if {$x==""} {
++      append hdr 00
++    } elseif {[string is integer $x]==0} {
++      set n [string length $x]
++      append hdr [format %02x [expr $n*2 + 13]]
++      append body [binary encode hex $x]
++    } elseif {$x == 0} {
++      append hdr 08
++    } elseif {$x == 1} {
++      append hdr 09
++    } elseif {$x <= 127} {
++      append hdr 01
++      append body [format %02x $x]
++    } else {
++      append hdr 02
++      append body [format %04x $x]
++    }
++  }
++  set res [format %02x [expr 1 + [string length $hdr]/2]]
++  append res $hdr
++  append res $body
++}
++
++# Argument $off is an offset into the database image encoded as a hex string
++# in argument $hexdb. This command returns 0 if the offset contains the hex
++# $hexrec, or throws an exception otherwise.
++#
++proc offset_contains_record {off hexdb hexrec} {
++  set n [string length $hexrec]
++  set off [expr $off*2]
++  if { [string compare $hexrec [string range $hexdb $off [expr $off+$n-1]]] } 
{
++    error "record not found!"
++  }
++  return 0
++}
++
++# This command is the implementation of SQL function "offrec()". The first
++# argument to this is an offset value. The remaining values are used to
++# formulate an SQLite record. If database file test.db does not contain
++# an equivalent record at the specified offset, an exception is thrown.
++# Otherwise, 0 is returned.
++#
++proc offrec {args} {
++  set offset [lindex $args 0]
++  set rec [hexrecord {*}[lrange $args 1 end]]
++  offset_contains_record $offset $::F $rec
++}
++set F [loadhex test.db]
++db func offrec offrec
++
++# Test the sanity of the tests.
++do_execsql_test func6-105 {
++  SELECT sqlite_offset(d) FROM t1 ORDER BY rowid LIMIT 1;
++} {8179}
++do_test func6-106 {
++  set r [hexrecord abc001 1 999 {}]
++  offset_contains_record 8179 $F $r
++} 0
++
++set z100 [string trim [string repeat "0 " 100]]
++
++# Test offsets within table b-tree t1.
+ do_execsql_test func6-110 {
+-  SELECT a, sqlite_offset(d)/4096 + 1,
+-            sqlite_offset(d)%4096 FROM t1
+-   ORDER BY rowid LIMIT 2;
+-} {abc001 2 4084 abc002 2 4069}
++  SELECT offrec(sqlite_offset(d), a, b, c, d) FROM t1 ORDER BY rowid
++} $z100
++
+ do_execsql_test func6-120 {
+   SELECT a, typeof(sqlite_offset(+a)) FROM t1
+    ORDER BY rowid LIMIT 2;
+ } {abc001 null abc002 null}
++
++# Test offsets within index b-tree t1a.
+ do_execsql_test func6-130 {
+-  SELECT a, sqlite_offset(a)/4096+1, 
+-         sqlite_offset(a)%4096
+-   FROM t1
+-   ORDER BY a LIMIT 2;
+-} {abc001 3 4087 abc002 3 4076}
++  SELECT offrec(sqlite_offset(a), a, rowid) FROM t1 ORDER BY a
++} $z100
++
++# Test offsets within table b-tree t1 with a temp b-tree ORDER BY.
+ do_execsql_test func6-140 {
+-  SELECT a, sqlite_offset(d)/4096+1, 
+-         sqlite_offset(d)%4096
+-   FROM t1
+-   ORDER BY a LIMIT 2;
+-} {abc001 2 4084 abc002 2 4069}
++  SELECT offrec(sqlite_offset(d), a, b, c, d) FROM t1 ORDER BY a
++} $z100
++
++# Test offsets from both index t1a and table t1 in the same query.
+ do_execsql_test func6-150 {
+-  SELECT a,
+-         sqlite_offset(a)/4096+1, 
+-         sqlite_offset(a)%4096,
+-         sqlite_offset(d)/4096+1, 
+-         sqlite_offset(d)%4096
+-   FROM t1
+-   ORDER BY a LIMIT 2;
+-} {abc001 3 4087 2 4084 abc002 3 4076 2 4069}
+-do_execsql_test func6-160 {
+-  SELECT b,
+-         sqlite_offset(b)/4096+1, 
+-         sqlite_offset(b)%4096,
+-         sqlite_offset(c)/4096+1, 
+-         sqlite_offset(c)%4096,
+-         sqlite_offset(d)/4096+1, 
+-         sqlite_offset(d)%4096
+-   FROM t1
+-   ORDER BY b LIMIT 2;
+-} {1 4 4090 4 4090 2 4084 2 4 4081 4 4081 2 4069}
++  SELECT offrec(sqlite_offset(a), a, rowid),
++         offrec(sqlite_offset(d), a, b, c, d)
++  FROM t1 ORDER BY a
++} [concat $z100 $z100]
+ 
++# Test offsets from both index t1bc and table t1 in the same query.
++do_execsql_test func6-160 {
++  SELECT offrec(sqlite_offset(b), b, c, rowid),
++         offrec(sqlite_offset(c), b, c, rowid),
++         offrec(sqlite_offset(d), a, b, c, d)
++  FROM t1
++  ORDER BY b
++} [concat $z100 $z100 $z100]
+ 
++# Test offsets in WITHOUT ROWID table t2.
+ do_execsql_test func6-200 {
+-  SELECT y, sqlite_offset(y)/4096+1,
+-         sqlite_offset(y)%4096
+-   FROM t2
+-   ORDER BY x LIMIT 2;
+-} {1 5 4087 2 5 4076}
++  SELECT offrec( sqlite_offset(y), x, y ) FROM t2 ORDER BY x
++} $z100
+ 
+ finish_test
+--- /test/walro2.test
++++ /test/walro2.test
+@@ -39,6 +39,18 @@
+   }
+ }
+ 
++# Most systems allocate the *-shm file in 32KB trunks. But on UNIX systems
++# for which the getpagesize() call returns greater than 32K, the *-shm
++# file is allocated in page-sized units (since you cannot mmap part of
++# a page). The following code sets variable $MINSHMSZ to the smallest
++# possible *-shm file (i.e. the greater of 32KB and the system page-size).
++#
++do_execsql_test 0.0 {
++  PRAGMA journal_mode = wal;
++  CREATE TABLE t1(x);
++} {wal}
++set MINSHMSZ [file size test.db-shm]
++
+ foreach bZeroShm {0 1} {
+ set TN [expr $bZeroShm+1]
+ do_multiclient_test tn {
+@@ -169,7 +181,7 @@
+   } {a b c d e f g h 1 2}
+   do_test $TN.3.2.2 {
+     list [file size test.db-wal] [file size test.db-shm]
+-  } {0 32768}
++  } [list 0 $MINSHMSZ]
+ 
+   do_test $TN.3.3.0 {
+     code2 { sqlite3 db2 test.db }
+@@ -182,7 +194,7 @@
+     code2 { db2 close }
+     code1 { db close }
+     list [file size test.db-wal] [file size test.db-shm]
+-  } [list [wal_file_size 4 1024] 32768]
++  } [list [wal_file_size 4 1024] $MINSHMSZ]
+   do_test $TN.3.3.1 {
+     code1 { sqlite3 db file:test.db?readonly_shm=1 }
+     sql1 { SELECT * FROM t1 }
+@@ -196,7 +208,7 @@
+     }
+     code2 { db2 close }
+     list [file size test.db-wal] [file size test.db-shm]
+-  } [list [wal_file_size 4 1024] 32768]
++  } [list [wal_file_size 4 1024] $MINSHMSZ]
+   do_test $TN.3.3.3 {
+     sql1 { SELECT * FROM t1 }
+   } {i ii}

diff --git a/dev-db/sqlite/sqlite-3.22.0.ebuild 
b/dev-db/sqlite/sqlite-3.22.0.ebuild
new file mode 100644
index 00000000000..56d3540d02b
--- /dev/null
+++ b/dev-db/sqlite/sqlite-3.22.0.ebuild
@@ -0,0 +1,303 @@
+# Copyright 1999-2018 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="6"
+
+inherit autotools eutils flag-o-matic multilib multilib-minimal 
toolchain-funcs versionator
+
+SRC_PV="$(printf "%u%02u%02u%02u" $(get_version_components))"
+DOC_PV="${SRC_PV}"
+# DOC_PV="$(printf "%u%02u%02u00" $(get_version_components 
$(get_version_component_range 1-3)))"
+
+DESCRIPTION="A SQL Database Engine in a C Library"
+HOMEPAGE="https://sqlite.org/";
+SRC_URI="doc? ( https://sqlite.org/2018/${PN}-doc-${DOC_PV}.zip )
+       tcl? ( https://sqlite.org/2018/${PN}-src-${SRC_PV}.zip )
+       test? ( https://sqlite.org/2018/${PN}-src-${SRC_PV}.zip )
+       tools? ( https://sqlite.org/2018/${PN}-src-${SRC_PV}.zip )
+       !tcl? ( !test? ( !tools? ( 
https://sqlite.org/2018/${PN}-autoconf-${SRC_PV}.tar.gz ) ) )"
+
+LICENSE="public-domain"
+SLOT="3"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 
~sh ~sparc ~x86 ~ppc-aix ~x64-cygwin ~amd64-fbsd ~x86-fbsd ~amd64-linux 
~arm-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"
+
+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}
+       doc? ( app-arch/unzip )
+       tcl? ( app-arch/unzip )
+       test? (
+               app-arch/unzip
+               dev-lang/tcl:0[${MULTILIB_USEDEP}]
+       )
+       tools? ( app-arch/unzip )"
+
+full_archive() {
+       use tcl || use test || use tools
+}
+
+pkg_setup() {
+       if full_archive; then
+               S="${WORKDIR}/${PN}-src-${SRC_PV}"
+       else
+               S="${WORKDIR}/${PN}-autoconf-${SRC_PV}"
+       fi
+}
+
+src_prepare() {
+       if full_archive; then
+               eapply "${FILESDIR}/${PN}-3.22.0-full_archive-build.patch"
+               eapply "${FILESDIR}/${PN}-3.22.0-full_archive-headers.patch"
+               eapply "${FILESDIR}/${PN}-3.22.0-full_archive-tests.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.21.0-nonfull_archive-build.patch"
+               eapply -p2 "${FILESDIR}/${PN}-3.22.0-full_archive-headers.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 CPPFLAGS="${CPPFLAGS}" CFLAGS="${CFLAGS}" 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 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
+       append-cppflags -DSQLITE_ENABLE_DBPAGE_VTAB
+
+       # Support dbstat virtual table.
+       # https://sqlite.org/dbstat.html
+       append-cppflags -DSQLITE_ENABLE_DBSTAT_VTAB
+
+       # 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 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
+       append-cppflags -DSQLITE_ENABLE_RTREE
+
+       # 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/compile.html#enable_update_delete_limit
+       append-cppflags -DSQLITE_ENABLE_UPDATE_DELETE_LIMIT
+
+       # Support PRAGMA function_list, PRAGMA module_list and PRAGMA 
pragma_list statements.
+       # https://sqlite.org/pragma.html#pragma_function_list
+       # https://sqlite.org/pragma.html#pragma_module_list
+       # https://sqlite.org/pragma.html#pragma_pragma_list
+       append-cppflags -DSQLITE_INTROSPECTION_PRAGMAS
+
+       # Support soundex() function.
+       # https://sqlite.org/lang_corefunc.html#soundex
+       append-cppflags -DSQLITE_SOUNDEX
+
+       # 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 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
+
+       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 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() {
+       prune_libtool_files
+
+       doman sqlite3.1
+
+       if use doc; then
+               rm "${WORKDIR}/${PN}-doc-${DOC_PV}/"*.{db,txt}
+               (
+                       docinto html
+                       dodoc -r "${WORKDIR}/${PN}-doc-${DOC_PV}/"*
+               )
+       fi
+}

Reply via email to