From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (unknown [208.92.234.80]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 0902C13835A for ; Fri, 26 Mar 2021 14:38:29 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id CC072E0870; Fri, 26 Mar 2021 14:38:19 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id A356EE0871 for ; Fri, 26 Mar 2021 14:38:19 +0000 (UTC) Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 81E7F340E0D for ; Fri, 26 Mar 2021 14:38:18 +0000 (UTC) Received: from localhost.localdomain (localhost [IPv6:::1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id 2E8A2637 for ; Fri, 26 Mar 2021 14:38:16 +0000 (UTC) From: "Mike Gilbert" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Mike Gilbert" Message-ID: <1616769481.d63454a1e46e59433fbcede480261f6bf51efda7.floppym@gentoo> Subject: [gentoo-commits] repo/gentoo:master commit in: dev-db/sqlite/, dev-db/sqlite/files/ X-VCS-Repository: repo/gentoo X-VCS-Files: dev-db/sqlite/Manifest dev-db/sqlite/files/sqlite-3.35.0-build_1.1.patch dev-db/sqlite/files/sqlite-3.35.0-build_1.2.patch dev-db/sqlite/files/sqlite-3.35.0-build_2.1.patch dev-db/sqlite/files/sqlite-3.35.0-build_2.2.patch dev-db/sqlite/sqlite-3.35.0.ebuild X-VCS-Directories: dev-db/sqlite/ dev-db/sqlite/files/ X-VCS-Committer: floppym X-VCS-Committer-Name: Mike Gilbert X-VCS-Revision: d63454a1e46e59433fbcede480261f6bf51efda7 X-VCS-Branch: master Date: Fri, 26 Mar 2021 14:38:16 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-Archives-Salt: 87f8e14f-5254-45d5-84ae-08f66d50027f X-Archives-Hash: 28228e7efd03b676c440722083eb794f commit: d63454a1e46e59433fbcede480261f6bf51efda7 Author: Arfrever Frehtes Taifersar Arahesis Apache Org> AuthorDate: Thu Mar 25 01:00:00 2021 +0000 Commit: Mike Gilbert gentoo org> CommitDate: Fri Mar 26 14:38:01 2021 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=d63454a1 dev-db/sqlite: Version bump (3.35.0). Signed-off-by: Arfrever Frehtes Taifersar Arahesis Apache.Org> Signed-off-by: Mike Gilbert gentoo.org> dev-db/sqlite/Manifest | 2 + dev-db/sqlite/files/sqlite-3.35.0-build_1.1.patch | 375 ++++++++++++++++ dev-db/sqlite/files/sqlite-3.35.0-build_1.2.patch | 500 ++++++++++++++++++++++ dev-db/sqlite/files/sqlite-3.35.0-build_2.1.patch | 292 +++++++++++++ dev-db/sqlite/files/sqlite-3.35.0-build_2.2.patch | 441 +++++++++++++++++++ dev-db/sqlite/sqlite-3.35.0.ebuild | 427 ++++++++++++++++++ 6 files changed, 2037 insertions(+) diff --git a/dev-db/sqlite/Manifest b/dev-db/sqlite/Manifest index 94518284309..c3652487bb2 100644 --- a/dev-db/sqlite/Manifest +++ b/dev-db/sqlite/Manifest @@ -1,6 +1,8 @@ DIST sqlite-doc-3330000.zip 9834159 BLAKE2B f67155a8ce8e46c2fbc0a4e35722d1fcad86e905a15230adc70732cee267b6b2002c7499883b938129aaa908b99634e4214360e9d1dbdae333b09060de24530e SHA512 14a3cccb4ff6af57738990eeadd37a1b827f89c9c1b16201c62ca5bb9301d39223d48677b9c269ce332210e5c9ae3f42aa0f9de7d79b38acb9809c732d038368 DIST sqlite-doc-3340000.zip 10069888 BLAKE2B 343df62bc8b75d57dffe69c779cceb856d9e94a5b2a77c3a972761eedd8b4b0f5f8849102ec271652c3aa4039df75d7f2e503fd04b0547be03e024fdfbd894ac SHA512 1bdf20030e656ec4ce38a264c8ef7a95c9f2731cd7d756a44b35b6c68827e8aba92018007139ee09d1c27b34bcd72bff1a201dc3f30aa13e96120af5d58e835e DIST sqlite-doc-3340100.zip 10074559 BLAKE2B 66aa999d87b7f3c994c289eda320d6a4e371b0a6a2ab8bcebde540aa955f3bdf4f00b739ca32aa913685cd35a88ee83bebd7fa43a0c148614e9086a1d3f5652a SHA512 20cbb9f05cd329bf7aa2877431781e46192544806042f4104e4eb0e87d84cd2dfc02c7ff226d4bef9bb2c6a69cc612201844d116abe99b0cfed9602adf243a60 +DIST sqlite-doc-3350000.zip 10165959 BLAKE2B e24ae04764617d07fafc82f4c27d96b853df77de2a945109c2ff28abd3b61f8bdd318756d14b8d20e22a0dff05fcca26c9a8c9972f600af0a996cd8e13478c9d SHA512 f6b92cf1a087a97071c55605e85676c4d76b9435a1a433e4663ff3d7937557d72e4fb99931a14abda9ab3dece654da09d10f7ca2560ca3e0972e4b7690997132 DIST sqlite-src-3330000.zip 12591089 BLAKE2B 14888bca229683e97c4666f8efb535be5bd3e322de0089f0175ba15e038016be3a3cc00b5bfa8c111538116914cf6d8439839ca5d1e20339b184e547ddf260a4 SHA512 3260e3e03ee2f6a4ff2bc4ea4bada5a1497afeca33878c155a8005824970c6c1eb8a2db58eb3023cab084af475fadb81d1c3c9892ae92c07f884881e6602e173 DIST sqlite-src-3340000.zip 12623425 BLAKE2B 548293cf0166407727cd068804eb5e1ce62f654533c88a87b71a6ff62da37eb2af21b89b8d63ee677777ca917e0d685ddcf9b8d5c3c8b2a2b787d71da8e5a161 SHA512 520fbca59da02452e2861a140bde891aedfc8254eafaa6894e8d845369d60d6a921595a411efb2611c0f7b0cadd69a713dcdaaeaad1e4254e9fd9a6efde07f91 DIST sqlite-src-3340100.zip 12623711 BLAKE2B 08c98d0c56d46fe909f449f322002ae4d69fd952930d2f04514988a939b31744a13aea85935d84bc05db52faca1aad6a70d7c31e7da0e396bb649685a49699bb SHA512 5ed02fe609b3d08c3297cc43b21e6ee3f56fb51a6616ac391a0e50cd1677dbad03c6bf9bf9c8409cf94b83b16fe6b6e4a112640b18c7d4fd95328066da3c3943 +DIST sqlite-src-3350000.zip 12814378 BLAKE2B f77880bfb335da078623841f9d9d9fc690085630757d8d8e3d40d42646902f809febf8dcc5048d38be0e2d74c0114c35f09789bc261e51d49f9685201f6d1297 SHA512 4b77d963092a6aed61b50e59450edf2af187f16b185b05ca54d81c3eecf71b1cb9bc2883a8aadeb971fcebe343fa430ea788aedb77e3712c8b39d4892c93a797 diff --git a/dev-db/sqlite/files/sqlite-3.35.0-build_1.1.patch b/dev-db/sqlite/files/sqlite-3.35.0-build_1.1.patch new file mode 100644 index 00000000000..1506f3da93e --- /dev/null +++ b/dev-db/sqlite/files/sqlite-3.35.0-build_1.1.patch @@ -0,0 +1,375 @@ +Add initialization functions for internal usage in libsqlite3.so. + +SQLite revision: acd63062eb06748bfe9e4886639e4f2b54ea6a496a83f10716abbaba4115500b + +--- /ext/misc/amatch.c ++++ /ext/misc/amatch.c +@@ -1480,9 +1480,18 @@ + + #endif /* SQLITE_OMIT_VIRTUALTABLE */ + ++int sqlite3AmatchInit(sqlite3 *db){ ++ int rc = SQLITE_OK; ++#ifndef SQLITE_OMIT_VIRTUALTABLE ++ rc = sqlite3_create_module(db, "approximate_match", &amatchModule, 0); ++#endif /* SQLITE_OMIT_VIRTUALTABLE */ ++ return rc; ++} ++ + /* + ** Register the amatch virtual table + */ ++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST) + #ifdef _WIN32 + __declspec(dllexport) + #endif +@@ -1491,11 +1500,8 @@ + char **pzErrMsg, + const sqlite3_api_routines *pApi + ){ +- int rc = SQLITE_OK; + SQLITE_EXTENSION_INIT2(pApi); + (void)pzErrMsg; /* Not used */ +-#ifndef SQLITE_OMIT_VIRTUALTABLE +- rc = sqlite3_create_module(db, "approximate_match", &amatchModule, 0); +-#endif /* SQLITE_OMIT_VIRTUALTABLE */ +- return rc; ++ return sqlite3AmatchInit(db); + } ++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */ +--- /ext/misc/carray.c ++++ /ext/misc/carray.c +@@ -498,16 +498,8 @@ + + #endif /* SQLITE_OMIT_VIRTUALTABLE */ + +-#ifdef _WIN32 +-__declspec(dllexport) +-#endif +-int sqlite3_carray_init( +- sqlite3 *db, +- char **pzErrMsg, +- const sqlite3_api_routines *pApi +-){ ++int sqlite3CarrayInit(sqlite3 *db){ + int rc = SQLITE_OK; +- SQLITE_EXTENSION_INIT2(pApi); + #ifndef SQLITE_OMIT_VIRTUALTABLE + rc = sqlite3_create_module(db, "carray", &carrayModule, 0); + #ifdef SQLITE_TEST +@@ -519,3 +511,18 @@ + #endif /* SQLITE_OMIT_VIRTUALTABLE */ + return rc; + } ++ ++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST) ++#ifdef _WIN32 ++__declspec(dllexport) ++#endif ++int sqlite3_carray_init( ++ sqlite3 *db, ++ char **pzErrMsg, ++ const sqlite3_api_routines *pApi ++){ ++ SQLITE_EXTENSION_INIT2(pApi); ++ (void)pzErrMsg; /* Unused parameter */ ++ return sqlite3CarrayInit(db); ++} ++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */ +--- /ext/misc/completion.c ++++ /ext/misc/completion.c +@@ -483,12 +483,13 @@ + return rc; + } + ++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST) + #ifdef _WIN32 + __declspec(dllexport) + #endif + int sqlite3_completion_init( +- sqlite3 *db, +- char **pzErrMsg, ++ sqlite3 *db, ++ char **pzErrMsg, + const sqlite3_api_routines *pApi + ){ + int rc = SQLITE_OK; +@@ -499,3 +500,4 @@ + #endif + return rc; + } ++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */ +--- /ext/misc/csv.c ++++ /ext/misc/csv.c +@@ -928,6 +928,22 @@ + #endif /* !defined(SQLITE_OMIT_VIRTUALTABLE) */ + + ++int sqlite3CsvInit(sqlite3 *db){ ++#ifndef SQLITE_OMIT_VIRTUALTABLE ++ int rc; ++ rc = sqlite3_create_module(db, "csv", &CsvModule, 0); ++#ifdef SQLITE_TEST ++ if( rc==SQLITE_OK ){ ++ rc = sqlite3_create_module(db, "csv_wr", &CsvModuleFauxWrite, 0); ++ } ++#endif ++ return rc; ++#else ++ return SQLITE_OK; ++#endif ++} ++ ++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST) + #ifdef _WIN32 + __declspec(dllexport) + #endif +@@ -941,17 +957,8 @@ + char **pzErrMsg, + const sqlite3_api_routines *pApi + ){ +-#ifndef SQLITE_OMIT_VIRTUALTABLE +- int rc; + SQLITE_EXTENSION_INIT2(pApi); +- rc = sqlite3_create_module(db, "csv", &CsvModule, 0); +-#ifdef SQLITE_TEST +- if( rc==SQLITE_OK ){ +- rc = sqlite3_create_module(db, "csv_wr", &CsvModuleFauxWrite, 0); +- } +-#endif +- return rc; +-#else +- return SQLITE_OK; +-#endif ++ (void)pzErrMsg; /* Unused parameter */ ++ return sqlite3CsvInit(db); + } ++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */ +--- /ext/misc/dbdata.c ++++ /ext/misc/dbdata.c +@@ -803,7 +803,7 @@ + /* + ** Invoke this routine to register the "sqlite_dbdata" virtual table module + */ +-static int sqlite3DbdataRegister(sqlite3 *db){ ++int sqlite3DbdataRegister(sqlite3 *db){ + static sqlite3_module dbdata_module = { + 0, /* iVersion */ + 0, /* xCreate */ +@@ -838,6 +838,7 @@ + return rc; + } + ++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST) + #ifdef _WIN32 + __declspec(dllexport) + #endif +@@ -849,3 +850,4 @@ + SQLITE_EXTENSION_INIT2(pApi); + return sqlite3DbdataRegister(db); + } ++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */ +--- /ext/misc/decimal.c ++++ /ext/misc/decimal.c +@@ -590,14 +590,7 @@ + decimal_free(pB); + } + +-#ifdef _WIN32 +-__declspec(dllexport) +-#endif +-int sqlite3_decimal_init( +- sqlite3 *db, +- char **pzErrMsg, +- const sqlite3_api_routines *pApi +-){ ++int sqlite3DecimalInit(sqlite3 *db){ + int rc = SQLITE_OK; + static const struct { + const char *zFuncName; +@@ -611,10 +604,6 @@ + { "decimal_mul", 2, decimalMulFunc }, + }; + unsigned int i; +- (void)pzErrMsg; /* Unused parameter */ +- +- SQLITE_EXTENSION_INIT2(pApi); +- + for(i=0; i +@@ -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 +@@ -2139,7 +2141,7 @@ + /* + ** Register the "zipfile" virtual table. + */ +-static int zipfileRegister(sqlite3 *db){ ++int sqlite3ZipfileInit(sqlite3 *db){ + static sqlite3_module zipfileModule = { + 1, /* iVersion */ + zipfileConnect, /* xCreate */ +@@ -2173,9 +2175,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 +@@ -2186,5 +2189,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.35.0-build_2.1.patch b/dev-db/sqlite/files/sqlite-3.35.0-build_2.1.patch new file mode 100644 index 00000000000..383a4936bf0 --- /dev/null +++ b/dev-db/sqlite/files/sqlite-3.35.0-build_2.1.patch @@ -0,0 +1,292 @@ +Move some code to libsqlite3.so to avoid duplication. +Link executables against libsqlite3.so. +Increase timeout for fuzzcheck. +Update list of optionally available functions. +Fix building with dlopen() not available. + +SQLite revision: acd63062eb06748bfe9e4886639e4f2b54ea6a496a83f10716abbaba4115500b + +--- /Makefile.in ++++ /Makefile.in +@@ -313,6 +313,9 @@ + # Source code for extensions + # + SRC += \ ++ $(TOP)/ext/expert/sqlite3expert.c \ ++ $(TOP)/ext/expert/sqlite3expert.h ++SRC += \ + $(TOP)/ext/fts1/fts1.c \ + $(TOP)/ext/fts1/fts1.h \ + $(TOP)/ext/fts1/fts1_hash.c \ +@@ -365,8 +368,29 @@ + $(TOP)/ext/rbu/sqlite3rbu.h \ + $(TOP)/ext/rbu/sqlite3rbu.c + SRC += \ ++ $(TOP)/ext/misc/amatch.c \ ++ $(TOP)/ext/misc/appendvfs.c \ ++ $(TOP)/ext/misc/carray.c \ ++ $(TOP)/ext/misc/completion.c \ ++ $(TOP)/ext/misc/csv.c \ ++ $(TOP)/ext/misc/dbdata.c \ ++ $(TOP)/ext/misc/decimal.c \ ++ $(TOP)/ext/misc/eval.c \ ++ $(TOP)/ext/misc/fileio.c \ ++ $(TOP)/ext/misc/ieee754.c \ + $(TOP)/ext/misc/json1.c \ +- $(TOP)/ext/misc/stmt.c ++ $(TOP)/ext/misc/nextchar.c \ ++ $(TOP)/ext/misc/percentile.c \ ++ $(TOP)/ext/misc/regexp.c \ ++ $(TOP)/ext/misc/series.c \ ++ $(TOP)/ext/misc/sha1.c \ ++ $(TOP)/ext/misc/shathree.c \ ++ $(TOP)/ext/misc/sqlar.c \ ++ $(TOP)/ext/misc/stmt.c \ ++ $(TOP)/ext/misc/totype.c \ ++ $(TOP)/ext/misc/uint.c \ ++ $(TOP)/ext/misc/uuid.c \ ++ $(TOP)/ext/misc/zipfile.c + + # Generated source code files + # +@@ -437,36 +461,21 @@ + # Statically linked extensions + # + TESTSRC += \ +- $(TOP)/ext/expert/sqlite3expert.c \ + $(TOP)/ext/expert/test_expert.c \ +- $(TOP)/ext/misc/amatch.c \ +- $(TOP)/ext/misc/appendvfs.c \ +- $(TOP)/ext/misc/carray.c \ + $(TOP)/ext/misc/cksumvfs.c \ + $(TOP)/ext/misc/closure.c \ +- $(TOP)/ext/misc/csv.c \ +- $(TOP)/ext/misc/decimal.c \ +- $(TOP)/ext/misc/eval.c \ + $(TOP)/ext/misc/explain.c \ +- $(TOP)/ext/misc/fileio.c \ + $(TOP)/ext/misc/fuzzer.c \ + $(TOP)/ext/fts5/fts5_tcl.c \ + $(TOP)/ext/fts5/fts5_test_mi.c \ + $(TOP)/ext/fts5/fts5_test_tok.c \ +- $(TOP)/ext/misc/ieee754.c \ + $(TOP)/ext/misc/mmapwarm.c \ +- $(TOP)/ext/misc/nextchar.c \ + $(TOP)/ext/misc/normalize.c \ +- $(TOP)/ext/misc/percentile.c \ + $(TOP)/ext/misc/prefixes.c \ +- $(TOP)/ext/misc/regexp.c \ + $(TOP)/ext/misc/remember.c \ +- $(TOP)/ext/misc/series.c \ + $(TOP)/ext/misc/spellfix.c \ +- $(TOP)/ext/misc/totype.c \ + $(TOP)/ext/misc/unionvtab.c \ + $(TOP)/ext/misc/wholenumber.c \ +- $(TOP)/ext/misc/zipfile.c \ + $(TOP)/ext/userauth/userauth.c + + # Source code to the library files needed by the test fixture +@@ -648,25 +657,25 @@ + + libtclsqlite3.la: tclsqlite.lo libsqlite3.la + $(LTLINK) -no-undefined -o $@ tclsqlite.lo \ +- libsqlite3.la @TCL_STUB_LIB_SPEC@ $(TLIBS) \ ++ libsqlite3.la @TCL_STUB_LIB_SPEC@ \ + -rpath "$(TCLLIBDIR)" \ + -version-info "8:6:8" \ + -avoid-version + +-sqlite3$(TEXE): shell.c sqlite3.c +- $(LTLINK) $(READLINE_FLAGS) $(SHELL_OPT) -o $@ \ +- shell.c sqlite3.c \ +- $(LIBREADLINE) $(TLIBS) -rpath "$(libdir)" ++sqlite3$(TEXE): shell.c libsqlite3.la ++ $(LTLINK) $(READLINE_FLAGS) -o $@ \ ++ shell.c libsqlite3.la \ ++ $(LIBREADLINE) + +-sqldiff$(TEXE): $(TOP)/tool/sqldiff.c sqlite3.lo sqlite3.h +- $(LTLINK) -o $@ $(TOP)/tool/sqldiff.c sqlite3.lo $(TLIBS) ++sqldiff$(TEXE): $(TOP)/tool/sqldiff.c libsqlite3.la ++ $(LTLINK) -o $@ $(TOP)/tool/sqldiff.c libsqlite3.la + +-dbhash$(TEXE): $(TOP)/tool/dbhash.c sqlite3.lo sqlite3.h +- $(LTLINK) -o $@ $(TOP)/tool/dbhash.c sqlite3.lo $(TLIBS) ++dbhash$(TEXE): $(TOP)/tool/dbhash.c libsqlite3.la ++ $(LTLINK) -o $@ $(TOP)/tool/dbhash.c libsqlite3.la + +-scrub$(TEXE): $(TOP)/ext/misc/scrub.c sqlite3.lo ++scrub$(TEXE): $(TOP)/ext/misc/scrub.c libsqlite3.la + $(LTLINK) -o $@ -I. -DSCRUB_STANDALONE \ +- $(TOP)/ext/misc/scrub.c sqlite3.lo $(TLIBS) ++ $(TOP)/ext/misc/scrub.c libsqlite3.la + + srcck1$(BEXE): $(TOP)/tool/srcck1.c + $(BCC) -o srcck1$(BEXE) $(TOP)/tool/srcck1.c +@@ -777,7 +786,7 @@ + # Rule to build the amalgamation + # + sqlite3.lo: sqlite3.c +- $(LTCOMPILE) $(TEMP_STORE) -c sqlite3.c ++ $(LTCOMPILE) $(SHELL_OPT) $(TEMP_STORE) -c sqlite3.c + + # Rules to build the LEMON compiler generator + # +@@ -1083,18 +1092,6 @@ + # Source files that go into making shell.c + SHELL_SRC = \ + $(TOP)/src/shell.c.in \ +- $(TOP)/ext/misc/appendvfs.c \ +- $(TOP)/ext/misc/completion.c \ +- $(TOP)/ext/misc/decimal.c \ +- $(TOP)/ext/misc/fileio.c \ +- $(TOP)/ext/misc/ieee754.c \ +- $(TOP)/ext/misc/series.c \ +- $(TOP)/ext/misc/shathree.c \ +- $(TOP)/ext/misc/sqlar.c \ +- $(TOP)/ext/misc/uint.c \ +- $(TOP)/ext/expert/sqlite3expert.c \ +- $(TOP)/ext/expert/sqlite3expert.h \ +- $(TOP)/ext/misc/zipfile.c \ + $(TOP)/ext/misc/memtrace.c \ + $(TOP)/src/test_windirent.c + +@@ -1264,11 +1261,11 @@ + + # Fuzz testing + fuzztest: fuzzcheck$(TEXE) $(FUZZDATA) sessionfuzz$(TEXE) $(TOP)/test/sessionfuzz-data1.db +- ./fuzzcheck$(TEXE) $(FUZZDATA) ++ ./fuzzcheck$(TEXE) --timeout 3600 $(FUZZDATA) + ./sessionfuzz$(TEXE) run $(TOP)/test/sessionfuzz-data1.db + + valgrindfuzz: fuzzcheck$(TEXT) $(FUZZDATA) sessionfuzz$(TEXE) $(TOP)/test/sessionfuzz-data1.db +- valgrind ./fuzzcheck$(TEXE) --cell-size-check --limit-mem 10M $(FUZZDATA) ++ valgrind ./fuzzcheck$(TEXE) --cell-size-check --limit-mem 10M --timeout 3600 $(FUZZDATA) + valgrind ./sessionfuzz$(TEXE) run $(TOP)/test/sessionfuzz-data1.db + + # The veryquick.test TCL tests. +@@ -1302,24 +1299,23 @@ + shelltest: $(TESTPROGS) + ./testfixture$(TEXT) $(TOP)/test/permutations.test shell + +-sqlite3_analyzer.c: sqlite3.c $(TOP)/src/tclsqlite.c $(TOP)/tool/spaceanal.tcl $(TOP)/tool/mkccode.tcl $(TOP)/tool/sqlite3_analyzer.c.in ++sqlite3_analyzer.c: $(TOP)/src/tclsqlite.c $(TOP)/tool/spaceanal.tcl $(TOP)/tool/mkccode.tcl $(TOP)/tool/sqlite3_analyzer.c.in + $(TCLSH_CMD) $(TOP)/tool/mkccode.tcl $(TOP)/tool/sqlite3_analyzer.c.in >sqlite3_analyzer.c + +-sqlite3_analyzer$(TEXE): sqlite3_analyzer.c +- $(LTLINK) sqlite3_analyzer.c -o $@ $(LIBTCL) $(TLIBS) ++sqlite3_analyzer$(TEXE): sqlite3_analyzer.c libsqlite3.la ++ $(LTLINK) sqlite3_analyzer.c -o $@ libsqlite3.la $(LIBTCL) + +-sqltclsh.c: sqlite3.c $(TOP)/src/tclsqlite.c $(TOP)/tool/sqltclsh.tcl $(TOP)/ext/misc/appendvfs.c $(TOP)/tool/mkccode.tcl $(TOP)/tool/sqltclsh.c.in ++sqltclsh.c: $(TOP)/src/tclsqlite.c $(TOP)/tool/sqltclsh.tcl $(TOP)/tool/mkccode.tcl $(TOP)/tool/sqltclsh.c.in + $(TCLSH_CMD) $(TOP)/tool/mkccode.tcl $(TOP)/tool/sqltclsh.c.in >sqltclsh.c + +-sqltclsh$(TEXE): sqltclsh.c +- $(LTLINK) sqltclsh.c -o $@ $(LIBTCL) $(TLIBS) ++sqltclsh$(TEXE): sqltclsh.c libsqlite3.la ++ $(LTLINK) sqltclsh.c -o $@ libsqlite3.la $(LIBTCL) + +-sqlite3_expert$(TEXE): $(TOP)/ext/expert/sqlite3expert.h $(TOP)/ext/expert/sqlite3expert.c $(TOP)/ext/expert/expert.c sqlite3.c +- $(LTLINK) $(TOP)/ext/expert/sqlite3expert.h $(TOP)/ext/expert/sqlite3expert.c $(TOP)/ext/expert/expert.c sqlite3.c -o sqlite3_expert $(TLIBS) ++sqlite3_expert$(TEXE): $(TOP)/ext/expert/sqlite3expert.h $(TOP)/ext/expert/expert.c libsqlite3.la ++ $(LTLINK) $(TOP)/ext/expert/expert.c -o sqlite3_expert libsqlite3.la + + CHECKER_DEPS =\ + $(TOP)/tool/mkccode.tcl \ +- sqlite3.c \ + $(TOP)/src/tclsqlite.c \ + $(TOP)/ext/repair/sqlite3_checker.tcl \ + $(TOP)/ext/repair/checkindex.c \ +@@ -1330,36 +1326,36 @@ + sqlite3_checker.c: $(CHECKER_DEPS) + $(TCLSH_CMD) $(TOP)/tool/mkccode.tcl $(TOP)/ext/repair/sqlite3_checker.c.in >$@ + +-sqlite3_checker$(TEXE): sqlite3_checker.c +- $(LTLINK) sqlite3_checker.c -o $@ $(LIBTCL) $(TLIBS) ++sqlite3_checker$(TEXE): sqlite3_checker.c libsqlite3.la ++ $(LTLINK) sqlite3_checker.c -o $@ libsqlite3.la $(LIBTCL) + +-dbdump$(TEXE): $(TOP)/ext/misc/dbdump.c sqlite3.lo ++dbdump$(TEXE): $(TOP)/ext/misc/dbdump.c libsqlite3.la + $(LTLINK) -DDBDUMP_STANDALONE -o $@ \ +- $(TOP)/ext/misc/dbdump.c sqlite3.lo $(TLIBS) ++ $(TOP)/ext/misc/dbdump.c libsqlite3.la + +-dbtotxt$(TEXE): $(TOP)/tool/dbtotxt.c +- $(LTLINK)-o $@ $(TOP)/tool/dbtotxt.c ++dbtotxt$(TEXE): $(TOP)/tool/dbtotxt.c ++ $(LTLINK) -o $@ $(TOP)/tool/dbtotxt.c + +-showdb$(TEXE): $(TOP)/tool/showdb.c sqlite3.lo +- $(LTLINK) -o $@ $(TOP)/tool/showdb.c sqlite3.lo $(TLIBS) ++showdb$(TEXE): $(TOP)/tool/showdb.c libsqlite3.la ++ $(LTLINK) -o $@ $(TOP)/tool/showdb.c libsqlite3.la + +-showstat4$(TEXE): $(TOP)/tool/showstat4.c sqlite3.lo +- $(LTLINK) -o $@ $(TOP)/tool/showstat4.c sqlite3.lo $(TLIBS) ++showstat4$(TEXE): $(TOP)/tool/showstat4.c libsqlite3.la ++ $(LTLINK) -o $@ $(TOP)/tool/showstat4.c libsqlite3.la + +-showjournal$(TEXE): $(TOP)/tool/showjournal.c sqlite3.lo +- $(LTLINK) -o $@ $(TOP)/tool/showjournal.c sqlite3.lo $(TLIBS) ++showjournal$(TEXE): $(TOP)/tool/showjournal.c ++ $(LTLINK) -o $@ $(TOP)/tool/showjournal.c + +-showwal$(TEXE): $(TOP)/tool/showwal.c sqlite3.lo +- $(LTLINK) -o $@ $(TOP)/tool/showwal.c sqlite3.lo $(TLIBS) ++showwal$(TEXE): $(TOP)/tool/showwal.c ++ $(LTLINK) -o $@ $(TOP)/tool/showwal.c + + showshm$(TEXE): $(TOP)/tool/showshm.c + $(LTLINK) -o $@ $(TOP)/tool/showshm.c + +-index_usage$(TEXE): $(TOP)/tool/index_usage.c sqlite3.lo +- $(LTLINK) $(SHELL_OPT) -o $@ $(TOP)/tool/index_usage.c sqlite3.lo $(TLIBS) ++index_usage$(TEXE): $(TOP)/tool/index_usage.c libsqlite3.la ++ $(LTLINK) -o $@ $(TOP)/tool/index_usage.c libsqlite3.la + +-changeset$(TEXE): $(TOP)/ext/session/changeset.c sqlite3.lo +- $(LTLINK) -o $@ $(TOP)/ext/session/changeset.c sqlite3.lo $(TLIBS) ++changeset$(TEXE): $(TOP)/ext/session/changeset.c libsqlite3.la ++ $(LTLINK) -o $@ $(TOP)/ext/session/changeset.c libsqlite3.la + + changesetfuzz$(TEXE): $(TOP)/ext/session/changesetfuzz.c sqlite3.lo + $(LTLINK) -o $@ $(TOP)/ext/session/changesetfuzz.c sqlite3.lo $(TLIBS) +@@ -1387,11 +1383,11 @@ + kvtest$(TEXE): $(TOP)/test/kvtest.c sqlite3.c + $(LTLINK) $(KV_OPT) -o $@ $(TOP)/test/kvtest.c sqlite3.c $(TLIBS) + +-rbu$(EXE): $(TOP)/ext/rbu/rbu.c $(TOP)/ext/rbu/sqlite3rbu.c sqlite3.lo +- $(LTLINK) -I. -o $@ $(TOP)/ext/rbu/rbu.c sqlite3.lo $(TLIBS) ++rbu$(EXE): $(TOP)/ext/rbu/rbu.c libsqlite3.la ++ $(LTLINK) -I. -o $@ $(TOP)/ext/rbu/rbu.c libsqlite3.la + +-loadfts$(EXE): $(TOP)/tool/loadfts.c libsqlite3.la +- $(LTLINK) $(TOP)/tool/loadfts.c libsqlite3.la -o $@ $(TLIBS) ++loadfts$(EXE): $(TOP)/tool/loadfts.c libsqlite3.la ++ $(LTLINK) $(TOP)/tool/loadfts.c libsqlite3.la -o $@ + + # This target will fail if the SQLite amalgamation contains any exported + # symbols that do not begin with "sqlite3_". It is run as part of the +--- /configure.ac ++++ /configure.ac +@@ -108,7 +108,7 @@ + ######### + # Figure out whether or not we have these functions + # +-AC_CHECK_FUNCS([fdatasync gmtime_r isnan localtime_r localtime_s malloc_usable_size strchrnul usleep utime pread pread64 pwrite pwrite64]) ++AC_CHECK_FUNCS([fdatasync fullfsync gmtime_r isnan localtime_r localtime_s malloc_usable_size posix_fallocate pread pread64 pwrite pwrite64 strchrnul usleep utime]) + + ######### + # By default, we use the amalgamation (this may be changed below...) +@@ -587,6 +587,9 @@ + if test "${enable_load_extension}" = "yes" ; then + OPT_FEATURE_FLAGS="" + AC_SEARCH_LIBS(dlopen, dl) ++ if test "${ac_cv_search_dlopen}" = "no" ; then ++ OPT_FEATURE_FLAGS="-DSQLITE_OMIT_LOAD_EXTENSION=1" ++ fi + else + OPT_FEATURE_FLAGS="-DSQLITE_OMIT_LOAD_EXTENSION=1" + fi diff --git a/dev-db/sqlite/files/sqlite-3.35.0-build_2.2.patch b/dev-db/sqlite/files/sqlite-3.35.0-build_2.2.patch new file mode 100644 index 00000000000..99350c79449 --- /dev/null +++ b/dev-db/sqlite/files/sqlite-3.35.0-build_2.2.patch @@ -0,0 +1,441 @@ +Move some code to libsqlite3.so to avoid duplication. +Initialize some extensions in libsqlite3.so. +Update test suite. + +SQLite revision: acd63062eb06748bfe9e4886639e4f2b54ea6a496a83f10716abbaba4115500b + +--- /ext/repair/sqlite3_checker.c.in ++++ /ext/repair/sqlite3_checker.c.in +@@ -2,6 +2,7 @@ + ** Read an SQLite database file and analyze its space utilization. Generate + ** text on standard output. + */ ++#define SQLITE_CORE 1 + #define TCLSH_INIT_PROC sqlite3_checker_init_proc + #define SQLITE_ENABLE_DBPAGE_VTAB 1 + #define SQLITE_ENABLE_JSON1 1 +@@ -14,7 +15,7 @@ + #define SQLITE_OMIT_SHARED_CACHE 1 + #define SQLITE_DEFAULT_MEMSTATUS 0 + #define SQLITE_MAX_EXPR_DEPTH 0 +-INCLUDE sqlite3.c ++#include "sqlite3.h" + INCLUDE $ROOT/src/tclsqlite.c + INCLUDE $ROOT/ext/misc/btreeinfo.c + INCLUDE $ROOT/ext/repair/checkindex.c +--- /src/main.c ++++ /src/main.c +@@ -50,12 +50,36 @@ + #ifdef SQLITE_ENABLE_FTS5 + int sqlite3Fts5Init(sqlite3*); + #endif ++#if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_ENABLE_DBPAGE_VTAB) ++int sqlite3DbdataRegister(sqlite3*); ++#endif + #ifdef SQLITE_ENABLE_JSON1 + int sqlite3Json1Init(sqlite3*); + #endif + #ifdef SQLITE_ENABLE_STMTVTAB + int sqlite3StmtVtabInit(sqlite3*); + #endif ++int sqlite3AmatchInit(sqlite3*); ++int sqlite3CarrayInit(sqlite3*); ++int sqlite3CompletionVtabInit(sqlite3*); ++int sqlite3CsvInit(sqlite3*); ++int sqlite3DecimalInit(sqlite3*); ++int sqlite3EvalInit(sqlite3*); ++int sqlite3FileioInit(sqlite3*); ++int sqlite3IeeeInit(sqlite3*); ++int sqlite3NextcharInit(sqlite3*); ++int sqlite3PercentileInit(sqlite3*); ++int sqlite3RegexpInit(sqlite3*); ++int sqlite3SeriesInit(sqlite3*); ++int sqlite3ShaInit(sqlite3*); ++int sqlite3ShathreeInit(sqlite3*); ++int sqlite3TotypeInit(sqlite3*); ++int sqlite3UintInit(sqlite3*); ++int sqlite3UuidInit(sqlite3*); ++#if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_HAVE_ZLIB) ++int sqlite3ZipfileInit(sqlite3*); ++int sqlite3SqlarInit(sqlite3*); ++#endif + + /* + ** An array of pointers to extension initializer functions for +@@ -83,6 +107,9 @@ + #ifdef SQLITE_ENABLE_DBPAGE_VTAB + sqlite3DbpageRegister, + #endif ++#if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_ENABLE_DBPAGE_VTAB) ++ sqlite3DbdataRegister, ++#endif + #ifdef SQLITE_ENABLE_DBSTAT_VTAB + sqlite3DbstatRegister, + #endif +@@ -96,6 +123,27 @@ + #ifdef SQLITE_ENABLE_BYTECODE_VTAB + sqlite3VdbeBytecodeVtabInit, + #endif ++ sqlite3AmatchInit, ++ sqlite3CarrayInit, ++ sqlite3CompletionVtabInit, ++ sqlite3CsvInit, ++ sqlite3DecimalInit, ++ sqlite3EvalInit, ++ sqlite3FileioInit, ++ sqlite3IeeeInit, ++ sqlite3NextcharInit, ++ sqlite3PercentileInit, ++ sqlite3RegexpInit, ++ sqlite3SeriesInit, ++ sqlite3ShaInit, ++ sqlite3ShathreeInit, ++ sqlite3TotypeInit, ++ sqlite3UintInit, ++ sqlite3UuidInit, ++#if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_HAVE_ZLIB) ++ sqlite3ZipfileInit, ++ sqlite3SqlarInit, ++#endif + }; + + #ifndef SQLITE_AMALGAMATION +--- /src/shell.c.in ++++ /src/shell.c.in +@@ -69,6 +69,7 @@ + #include + #include + #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 ++#endif ++ + + #if defined(_WIN32) || defined(WIN32) + # if SQLITE_OS_WINRT +@@ -1018,25 +1023,7 @@ + INCLUDE test_windirent.c + #define dirent DIRENT + #endif +-INCLUDE ../ext/misc/shathree.c +-INCLUDE ../ext/misc/fileio.c +-INCLUDE ../ext/misc/completion.c +-INCLUDE ../ext/misc/appendvfs.c + INCLUDE ../ext/misc/memtrace.c +-INCLUDE ../ext/misc/uint.c +-INCLUDE ../ext/misc/decimal.c +-INCLUDE ../ext/misc/ieee754.c +-INCLUDE ../ext/misc/series.c +-#ifdef SQLITE_HAVE_ZLIB +-INCLUDE ../ext/misc/zipfile.c +-INCLUDE ../ext/misc/sqlar.c +-#endif +-INCLUDE ../ext/expert/sqlite3expert.h +-INCLUDE ../ext/expert/sqlite3expert.c +- +-#if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_ENABLE_DBPAGE_VTAB) +-INCLUDE ../ext/misc/dbdata.c +-#endif + + #if defined(SQLITE_ENABLE_SESSION) + /* +@@ -4608,20 +4595,6 @@ + #ifndef SQLITE_OMIT_LOAD_EXTENSION + sqlite3_enable_load_extension(p->db, 1); + #endif +- sqlite3_fileio_init(p->db, 0, 0); +- sqlite3_shathree_init(p->db, 0, 0); +- sqlite3_completion_init(p->db, 0, 0); +- sqlite3_uint_init(p->db, 0, 0); +- sqlite3_decimal_init(p->db, 0, 0); +- sqlite3_ieee_init(p->db, 0, 0); +- sqlite3_series_init(p->db, 0, 0); +-#if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_ENABLE_DBPAGE_VTAB) +- sqlite3_dbdata_init(p->db, 0, 0); +-#endif +-#ifdef SQLITE_HAVE_ZLIB +- sqlite3_zipfile_init(p->db, 0, 0); +- sqlite3_sqlar_init(p->db, 0, 0); +-#endif + sqlite3_create_function(p->db, "shell_add_schema", 3, SQLITE_UTF8, 0, + shellAddSchemaName, 0, 0); + sqlite3_create_function(p->db, "shell_module_schema", 1, SQLITE_UTF8, 0, +@@ -6644,8 +6617,6 @@ + ); + goto end_ar_command; + } +- sqlite3_fileio_init(cmd.db, 0, 0); +- sqlite3_sqlar_init(cmd.db, 0, 0); + sqlite3_create_function(cmd.db, "shell_putsnl", 1, SQLITE_UTF8, cmd.p, + shellPutsFunc, 0, 0); + +@@ -11108,6 +11079,7 @@ + #endif + } + data.out = stdout; ++ extern int sqlite3_appendvfs_init(sqlite3 *, char **, const sqlite3_api_routines *); + sqlite3_appendvfs_init(0,0,0); + + /* Go ahead and open the database file if it already exists. If the +--- /src/test_config.c ++++ /src/test_config.c +@@ -359,6 +359,8 @@ + Tcl_SetVar2(interp, "sqlite_options", "datetime", "1", TCL_GLOBAL_ONLY); + #endif + ++ Tcl_SetVar2(interp, "sqlite_options", "decimal", "1", TCL_GLOBAL_ONLY); ++ + #ifdef SQLITE_OMIT_DECLTYPE + Tcl_SetVar2(interp, "sqlite_options", "decltype", "0", TCL_GLOBAL_ONLY); + #else +@@ -546,6 +548,8 @@ + Tcl_SetVar2(interp, "sqlite_options", "progress", "1", TCL_GLOBAL_ONLY); + #endif + ++ Tcl_SetVar2(interp, "sqlite_options", "regexp", "1", TCL_GLOBAL_ONLY); ++ + #ifdef SQLITE_OMIT_REINDEX + Tcl_SetVar2(interp, "sqlite_options", "reindex", "0", TCL_GLOBAL_ONLY); + #else +@@ -668,6 +672,8 @@ + Tcl_SetVar2(interp, "sqlite_options", "truncate_opt", "1", TCL_GLOBAL_ONLY); + #endif + ++ Tcl_SetVar2(interp, "sqlite_options", "uint", "1", TCL_GLOBAL_ONLY); ++ + #ifdef SQLITE_OMIT_UTF16 + Tcl_SetVar2(interp, "sqlite_options", "utf16", "0", TCL_GLOBAL_ONLY); + #else +--- /test/e_expr.test ++++ /test/e_expr.test +@@ -1079,7 +1079,7 @@ + # + # There is a regexp function if ICU is enabled though. + # +-ifcapable !icu { ++ifcapable !icu&&!regexp { + do_catchsql_test e_expr-18.1.1 { + SELECT regexp('abc', 'def') + } {1 {no such function: regexp}} +--- /test/icu.test ++++ /test/icu.test +@@ -41,7 +41,7 @@ + # + test_expr icu-1.1 {i1='hello'} {i1 REGEXP 'hello'} 1 + test_expr icu-1.2 {i1='hello'} {i1 REGEXP '.ello'} 1 +- test_expr icu-1.3 {i1='hello'} {i1 REGEXP '.ell'} 0 ++ test_expr icu-1.3 {i1='hello'} {i1 REGEXP '.ell$'} 0 + test_expr icu-1.4 {i1='hello'} {i1 REGEXP '.ell.*'} 1 + test_expr icu-1.5 {i1=NULL} {i1 REGEXP '.ell.*'} {} + +--- /test/pragma.test ++++ /test/pragma.test +@@ -1370,17 +1370,62 @@ + } ;# ifcapable trigger + + ifcapable schema_pragmas { +- do_test pragma-11.1 { +- execsql2 { +- pragma collation_list; ++ ifcapable decimal { ++ ifcapable uint { ++ do_test pragma-11.1 { ++ execsql2 { ++ pragma collation_list; ++ } ++ } {seq 0 name UINT seq 1 name decimal seq 2 name RTRIM seq 3 name NOCASE seq 4 name BINARY} ++ do_test pragma-11.2 { ++ db collate New_Collation blah... ++ execsql { ++ pragma collation_list; ++ } ++ } {0 New_Collation 1 UINT 2 decimal 3 RTRIM 4 NOCASE 5 BINARY} + } +- } {seq 0 name RTRIM seq 1 name NOCASE seq 2 name BINARY} +- do_test pragma-11.2 { +- db collate New_Collation blah... +- execsql { +- pragma collation_list; ++ ifcapable !uint { ++ do_test pragma-11.1 { ++ execsql2 { ++ pragma collation_list; ++ } ++ } {seq 0 name decimal seq 1 name RTRIM seq 2 name NOCASE seq 3 name BINARY} ++ do_test pragma-11.2 { ++ db collate New_Collation blah... ++ execsql { ++ pragma collation_list; ++ } ++ } {0 New_Collation 1 decimal 2 RTRIM 3 NOCASE 4 BINARY} + } +- } {0 New_Collation 1 RTRIM 2 NOCASE 3 BINARY} ++ } ++ ifcapable !decimal { ++ ifcapable uint { ++ do_test pragma-11.1 { ++ execsql2 { ++ pragma collation_list; ++ } ++ } {seq 0 name UINT seq 1 name RTRIM seq 2 name NOCASE seq 3 name BINARY} ++ do_test pragma-11.2 { ++ db collate New_Collation blah... ++ execsql { ++ pragma collation_list; ++ } ++ } {0 New_Collation 1 UINT 2 RTRIM 3 NOCASE 4 BINARY} ++ } ++ ifcapable !uint { ++ do_test pragma-11.1 { ++ execsql2 { ++ pragma collation_list; ++ } ++ } {seq 0 name RTRIM seq 1 name NOCASE seq 2 name BINARY} ++ do_test pragma-11.2 { ++ db collate New_Collation blah... ++ execsql { ++ pragma collation_list; ++ } ++ } {0 New_Collation 1 RTRIM 2 NOCASE 3 BINARY} ++ } ++ } + } + + ifcapable schema_pragmas&&tempdb { +--- /test/sessionfuzz.c ++++ /test/sessionfuzz.c +@@ -698,49 +698,6 @@ + #include + #include + #include +-#ifndef OMIT_ZLIB +-#include "zlib.h" +-#endif +- +-/* +-** Implementation of the "sqlar_uncompress(X,SZ)" SQL function +-** +-** Parameter SZ is interpreted as an integer. If it is less than or +-** equal to zero, then this function returns a copy of X. Or, if +-** SZ is equal to the size of X when interpreted as a blob, also +-** return a copy of X. Otherwise, decompress blob X using zlib +-** utility function uncompress() and return the results (another +-** blob). +-*/ +-static void sqlarUncompressFunc( +- sqlite3_context *context, +- int argc, +- sqlite3_value **argv +-){ +-#ifdef OMIT_ZLIB +- sqlite3_result_value(context, argv[0]); +-#else +- uLong nData; +- uLongf sz; +- +- assert( argc==2 ); +- sz = sqlite3_value_int(argv[1]); +- +- if( sz<=0 || sz==(nData = sqlite3_value_bytes(argv[0])) ){ +- sqlite3_result_value(context, argv[0]); +- }else{ +- const Bytef *pData= sqlite3_value_blob(argv[0]); +- Bytef *pOut = sqlite3_malloc(sz); +- if( Z_OK!=uncompress(pOut, &sz, pData, nData) ){ +- sqlite3_result_error(context, "error in uncompress()", -1); +- }else{ +- sqlite3_result_blob(context, pOut, sz, SQLITE_TRANSIENT); +- } +- sqlite3_free(pOut); +- } +-#endif +-} +- + + /* Run a chunk of SQL. If any errors happen, print an error message + ** and exit. +--- /tool/mksqlite3c.tcl ++++ /tool/mksqlite3c.tcl +@@ -129,6 +129,7 @@ + rtree.h + sqlite3session.h + sqlite3.h ++ sqlite3expert.h + sqlite3ext.h + sqlite3rbu.h + sqliteicu.h +@@ -416,6 +417,28 @@ + sqlite3session.c + fts5.c + stmt.c ++ amatch.c ++ appendvfs.c ++ carray.c ++ completion.c ++ csv.c ++ dbdata.c ++ decimal.c ++ eval.c ++ fileio.c ++ ieee754.c ++ nextchar.c ++ percentile.c ++ regexp.c ++ series.c ++ sha1.c ++ shathree.c ++ sqlar.c ++ sqlite3expert.c ++ totype.c ++ uint.c ++ uuid.c ++ zipfile.c + } { + copy_file tsrc/$file + } +--- /tool/sqlite3_analyzer.c.in ++++ /tool/sqlite3_analyzer.c.in +@@ -14,9 +14,6 @@ + #define SQLITE_DEFAULT_MEMSTATUS 0 + #define SQLITE_MAX_EXPR_DEPTH 0 + #define SQLITE_OMIT_LOAD_EXTENSION 1 +-#ifndef USE_EXTERNAL_SQLITE +-INCLUDE sqlite3.c +-#endif + INCLUDE $ROOT/src/tclsqlite.c + + const char *sqlite3_analyzer_init_proc(Tcl_Interp *interp){ +--- /tool/sqltclsh.c.in ++++ /tool/sqltclsh.c.in +@@ -27,21 +27,13 @@ + #define SQLITE_OMIT_SHARED_CACHE 1 + #define SQLITE_DEFAULT_MEMSTATUS 0 + #define SQLITE_MAX_EXPR_DEPTH 0 +-INCLUDE sqlite3.c +-INCLUDE $ROOT/ext/misc/appendvfs.c +-#ifdef SQLITE_HAVE_ZLIB +-INCLUDE $ROOT/ext/misc/zipfile.c +-INCLUDE $ROOT/ext/misc/sqlar.c +-#endif ++#include "sqlite3.h" + INCLUDE $ROOT/src/tclsqlite.c + + const char *sqlite3_tclapp_init_proc(Tcl_Interp *interp){ + (void)interp; ++ extern int sqlite3_appendvfs_init(sqlite3 *,char **, const sqlite3_api_routines *); + sqlite3_appendvfs_init(0,0,0); +-#ifdef SQLITE_HAVE_ZLIB +- sqlite3_auto_extension((void(*)(void))sqlite3_sqlar_init); +- sqlite3_auto_extension((void(*)(void))sqlite3_zipfile_init); +-#endif + + return + BEGIN_STRING diff --git a/dev-db/sqlite/sqlite-3.35.0.ebuild b/dev-db/sqlite/sqlite-3.35.0.ebuild new file mode 100644 index 00000000000..d04438ce2cb --- /dev/null +++ b/dev-db/sqlite/sqlite-3.35.0.ebuild @@ -0,0 +1,427 @@ +# Copyright 1999-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="7" + +inherit autotools flag-o-matic multilib-minimal toolchain-funcs + +if [[ "${PV}" != "9999" ]]; then + SRC_PV="$(printf "%u%02u%02u%02u" $(ver_rs 1- " "))" + DOC_PV="${SRC_PV}" + # DOC_PV="$(printf "%u%02u%02u00" $(ver_rs 1-3 " "))" +fi + +DESCRIPTION="SQL database engine" +HOMEPAGE="https://sqlite.org/" +if [[ "${PV}" == "9999" ]]; then + SRC_URI="" +else + SRC_URI="https://sqlite.org/2021/${PN}-src-${SRC_PV}.zip + doc? ( https://sqlite.org/2021/${PN}-doc-${DOC_PV}.zip )" +fi + +LICENSE="public-domain" +SLOT="3" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~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="app-arch/unzip + >=dev-lang/tcl-8.6:0" +fi +RDEPEND="sys-libs/zlib:0=[${MULTILIB_USEDEP}] + icu? ( dev-libs/icu:0=[${MULTILIB_USEDEP}] ) + readline? ( sys-libs/readline:0=[${MULTILIB_USEDEP}] ) + tcl? ( dev-lang/tcl:0=[${MULTILIB_USEDEP}] ) + tools? ( dev-lang/tcl:0=[${MULTILIB_USEDEP}] )" +DEPEND="${RDEPEND} + test? ( >=dev-lang/tcl-8.6:0[${MULTILIB_USEDEP}] )" + +if [[ "${PV}" == "9999" ]]; then + S="${WORKDIR}/${PN}" +else + S="${WORKDIR}/${PN}-src-${SRC_PV}" +fi + +_fossil_fetch() { + local distdir="${PORTAGE_ACTUAL_DISTDIR:-${DISTDIR}}" + local repo_id="${1}" + local repo_uri="${2}" + + local -x FOSSIL_HOME="${HOME}" + + mkdir -p "${T}/fossil/${repo_id}" || die + pushd "${T}/fossil/${repo_id}" > /dev/null || die + + if [[ -n "${EVCS_OFFLINE}" ]]; then + if [[ ! -f "${distdir}/fossil-src/${repo_id}/${repo_id}.fossil" ]]; then + die "Network activity disabled using EVCS_OFFLINE and clone of repository missing: \"${distdir}/fossil-src/${repo_id}/${repo_id}.fossil\"" + fi + else + if [[ ! -f "${distdir}/fossil-src/${repo_id}/${repo_id}.fossil" ]]; then + einfo fossil clone --verbose "${repo_uri}" "${repo_id}.fossil" + fossil clone --verbose "${repo_uri}" "${repo_id}.fossil" || die + echo + else + cp -p "${distdir}/fossil-src/${repo_id}/${repo_id}.fossil" . || die + einfo fossil pull --repository "${repo_id}.fossil" --verbose "${repo_uri}" + fossil pull --repository "${repo_id}.fossil" --verbose "${repo_uri}" || die + echo + fi + + ( + addwrite "${distdir}" + mkdir -p "${distdir}/fossil-src/${repo_id}" || die + cp -p "${repo_id}.fossil" "${distdir}/fossil-src/${repo_id}/${repo_id}.fossil" || die + ) + fi + + popd > /dev/null || die +} + +_fossil_checkout() { + local distdir="${PORTAGE_ACTUAL_DISTDIR:-${DISTDIR}}" + local repo_id="${1}" + local branch_or_commit="${2}" + local target_directory="${3}" + + local -x FOSSIL_HOME="${HOME}" + + if [[ ! -f "${distdir}/fossil-src/${repo_id}/${repo_id}.fossil" ]]; then + die "Clone of repository missing: \"${distdir}/fossil-src/${repo_id}/${repo_id}.fossil\"" + fi + + if [[ ! -f "${T}/fossil/${repo_id}/${repo_id}.fossil" ]]; then + mkdir -p "${T}/fossil/${repo_id}" || die + cp -p "${distdir}/fossil-src/${repo_id}/${repo_id}.fossil" "${T}/fossil/${repo_id}" || die + fi + + mkdir "${target_directory}" || die + pushd "${target_directory}" > /dev/null || die + + einfo fossil open --quiet "${T}/fossil/${repo_id}/${repo_id}.fossil" "${branch_or_commit}" + fossil open --quiet "${T}/fossil/${repo_id}/${repo_id}.fossil" "${branch_or_commit}" || die + echo + + popd > /dev/null || die +} + +fossil_fetch() { + local repo_id="${1}" + local repo_uri="${2}" + local target_directory="${3}" + + local branch_or_commit="${EFOSSIL_COMMIT:-${EFOSSIL_BRANCH:-trunk}}" + + _fossil_fetch "${repo_id}" "${repo_uri}" + _fossil_checkout "${repo_id}" "${branch_or_commit}" "${target_directory}" +} + +src_unpack() { + if [[ "${PV}" == "9999" ]]; then + fossil_fetch sqlite https://sqlite.org/src "${WORKDIR}/${PN}" + if use doc; then + fossil_fetch sqlite-doc https://sqlite.org/docsrc "${WORKDIR}/${PN}-doc" + fi + else + default + fi +} + +src_prepare() { + eapply "${FILESDIR}/"${PN}-3.35.0-build_{1.1,1.2,2.1,2.2}.patch + + eapply_user + + eautoreconf + + multilib_copy_sources +} + +multilib_src_configure() { + local -x CPPFLAGS="${CPPFLAGS}" CFLAGS="${CFLAGS}" + local options=() + + options+=( + --enable-load-extension + --enable-threadsafe + ) + + # Support detection of misuse of SQLite API. + # https://sqlite.org/compile.html#enable_api_armor + append-cppflags -DSQLITE_ENABLE_API_ARMOR + + # Support bytecode and tables_used virtual tables. + # https://sqlite.org/compile.html#enable_bytecode_vtab + # https://sqlite.org/bytecodevtab.html + append-cppflags -DSQLITE_ENABLE_BYTECODE_VTAB + + # Support column metadata functions. + # https://sqlite.org/compile.html#enable_column_metadata + # https://sqlite.org/c3ref/column_database_name.html + append-cppflags -DSQLITE_ENABLE_COLUMN_METADATA + + # Support sqlite_dbpage virtual table. + # https://sqlite.org/compile.html#enable_dbpage_vtab + # https://sqlite.org/dbpage.html + append-cppflags -DSQLITE_ENABLE_DBPAGE_VTAB + + # Support dbstat virtual table. + # https://sqlite.org/compile.html#enable_dbstat_vtab + # https://sqlite.org/dbstat.html + append-cppflags -DSQLITE_ENABLE_DBSTAT_VTAB + + # Support sqlite3_serialize() and sqlite3_deserialize() functions. + # https://sqlite.org/compile.html#enable_deserialize + # https://sqlite.org/c3ref/serialize.html + # https://sqlite.org/c3ref/deserialize.html + append-cppflags -DSQLITE_ENABLE_DESERIALIZE + + # Support comments in output of EXPLAIN. + # https://sqlite.org/compile.html#enable_explain_comments + append-cppflags -DSQLITE_ENABLE_EXPLAIN_COMMENTS + + # Support Full-Text Search versions 3, 4 and 5. + # https://sqlite.org/compile.html#enable_fts3 + # https://sqlite.org/compile.html#enable_fts3_parenthesis + # https://sqlite.org/compile.html#enable_fts4 + # https://sqlite.org/compile.html#enable_fts5 + # https://sqlite.org/fts3.html + # https://sqlite.org/fts5.html + append-cppflags -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_FTS3_PARENTHESIS -DSQLITE_ENABLE_FTS4 + options+=(--enable-fts5) + + # Support hidden columns. + append-cppflags -DSQLITE_ENABLE_HIDDEN_COLUMNS + + # Support JSON1 extension. + # https://sqlite.org/compile.html#enable_json1 + # https://sqlite.org/json1.html + append-cppflags -DSQLITE_ENABLE_JSON1 + + # Support memsys5 memory allocator. + # https://sqlite.org/compile.html#enable_memsys5 + # https://sqlite.org/malloc.html#memsys5 + append-cppflags -DSQLITE_ENABLE_MEMSYS5 + + # Support sqlite3_normalized_sql() function. + # https://sqlite.org/c3ref/expanded_sql.html + append-cppflags -DSQLITE_ENABLE_NORMALIZE + + # Support sqlite_offset() function. + # https://sqlite.org/compile.html#enable_offset_sql_func + # https://sqlite.org/lang_corefunc.html#sqlite_offset + append-cppflags -DSQLITE_ENABLE_OFFSET_SQL_FUNC + + # Support pre-update hook functions. + # https://sqlite.org/compile.html#enable_preupdate_hook + # https://sqlite.org/c3ref/preupdate_count.html + append-cppflags -DSQLITE_ENABLE_PREUPDATE_HOOK + + # Support Resumable Bulk Update extension. + # https://sqlite.org/compile.html#enable_rbu + # https://sqlite.org/rbu.html + append-cppflags -DSQLITE_ENABLE_RBU + + # Support R*Trees. + # https://sqlite.org/compile.html#enable_rtree + # https://sqlite.org/compile.html#enable_geopoly + # https://sqlite.org/rtree.html + # https://sqlite.org/geopoly.html + append-cppflags -DSQLITE_ENABLE_RTREE -DSQLITE_ENABLE_GEOPOLY + + # Support Session extension. + # https://sqlite.org/compile.html#enable_session + # https://sqlite.org/sessionintro.html + append-cppflags -DSQLITE_ENABLE_SESSION + + # Support scan status functions. + # https://sqlite.org/compile.html#enable_stmt_scanstatus + # https://sqlite.org/c3ref/stmt_scanstatus.html + # https://sqlite.org/c3ref/stmt_scanstatus_reset.html + append-cppflags -DSQLITE_ENABLE_STMT_SCANSTATUS + + # Support sqlite_stmt virtual table. + # https://sqlite.org/compile.html#enable_stmtvtab + # https://sqlite.org/stmt.html + append-cppflags -DSQLITE_ENABLE_STMTVTAB + + # Support unknown() function. + # https://sqlite.org/compile.html#enable_unknown_sql_function + append-cppflags -DSQLITE_ENABLE_UNKNOWN_SQL_FUNCTION + + # Support unlock notification. + # https://sqlite.org/compile.html#enable_unlock_notify + # https://sqlite.org/c3ref/unlock_notify.html + # https://sqlite.org/unlock_notify.html + append-cppflags -DSQLITE_ENABLE_UNLOCK_NOTIFY + + # Support LIMIT and ORDER BY clauses on DELETE and UPDATE statements. + # https://sqlite.org/compile.html#enable_update_delete_limit + # https://sqlite.org/lang_delete.html#optional_limit_and_order_by_clauses + # https://sqlite.org/lang_update.html#optional_limit_and_order_by_clauses + append-cppflags -DSQLITE_ENABLE_UPDATE_DELETE_LIMIT + + # Support soundex() function. + # https://sqlite.org/compile.html#soundex + # https://sqlite.org/lang_corefunc.html#soundex + append-cppflags -DSQLITE_SOUNDEX + + # Support URI filenames. + # https://sqlite.org/compile.html#use_uri + # https://sqlite.org/uri.html + append-cppflags -DSQLITE_USE_URI + + # debug USE flag. + options+=($(use_enable debug)) + + # icu USE flag. + if use icu; then + # Support ICU extension. + # https://sqlite.org/compile.html#enable_icu + append-cppflags -DSQLITE_ENABLE_ICU + sed -e "s/^TLIBS = @LIBS@/& -licui18n -licuuc/" -i Makefile.in || die "sed failed" + fi + + # readline USE flag. + options+=( + --disable-editline + $(use_enable readline) + ) + if use readline; then + options+=(--with-readline-inc="-I${ESYSROOT}/usr/include/readline") + fi + + # secure-delete USE flag. + if use secure-delete; then + # Enable secure_delete pragma by default. + # https://sqlite.org/compile.html#secure_delete + # https://sqlite.org/pragma.html#pragma_secure_delete + append-cppflags -DSQLITE_SECURE_DELETE + fi + + # static-libs USE flag. + options+=($(use_enable static-libs static)) + + # tcl, test, tools USE flags. + options+=(--enable-tcl) + + if [[ "${CHOST}" == *-mint* ]]; then + # sys/mman.h not available in MiNTLib. + # https://sqlite.org/compile.html#omit_wal + append-cppflags -DSQLITE_OMIT_WAL + fi + + if [[ "${ABI}" == "x86" ]]; then + if $(tc-getCC) ${CPPFLAGS} ${CFLAGS} -E -P -dM - < /dev/null 2> /dev/null | grep -q "^#define __SSE__ 1$"; then + append-cflags -mfpmath=sse + else + append-cflags -ffloat-store + fi + fi + + econf "${options[@]}" +} + +multilib_src_compile() { + emake HAVE_TCL="$(usex tcl 1 "")" TCLLIBDIR="${EPREFIX}/usr/$(get_libdir)/${P}" + + if use tools && multilib_is_native_abi; then + emake changeset dbdump dbhash dbtotxt index_usage rbu scrub showdb showjournal showshm showstat4 showwal sqldiff sqlite3_analyzer sqlite3_checker sqlite3_expert sqltclsh + fi + + if [[ "${PV}" == "9999" ]] && use doc && multilib_is_native_abi; then + emake tclsqlite3.c + + local build_directory="$(pwd)" + build_directory="${build_directory##*/}" + + mkdir "${WORKDIR}/${PN}-doc-build" || die + pushd "${WORKDIR}/${PN}-doc-build" > /dev/null || die + + emake -f "../${PN}-doc/Makefile" -j1 SRC="../${PN}" BLD="../${build_directory}" DOC="../${PN}-doc" CC="$(tc-getBUILD_CC)" TCLINC="" TCLFLAGS="$($(tc-getBUILD_PKG_CONFIG) --libs tcl) -ldl -lm" base doc + rmdir doc/matrix{/*,} || die + + popd > /dev/null || die + fi +} + +multilib_src_test() { + if [[ "${EUID}" -eq 0 ]]; then + ewarn "Skipping tests due to root permissions" + return + fi + + local -x SQLITE_HISTORY="${T}/sqlite_history_${ABI}" + + emake HAVE_TCL="$(usex tcl 1 "")" $(use debug && echo fulltest || echo test) +} + +multilib_src_install() { + emake DESTDIR="${D}" HAVE_TCL="$(usex tcl 1 "")" TCLLIBDIR="${EPREFIX}/usr/$(get_libdir)/${P}" install + + if use tools && multilib_is_native_abi; then + install_tool() { + if [[ -f ".libs/${1}" ]]; then + newbin ".libs/${1}" "${2}" + else + newbin "${1}" "${2}" + fi + } + + install_tool changeset sqlite3-changeset + install_tool dbdump sqlite3-db-dump + install_tool dbhash sqlite3-db-hash + install_tool dbtotxt sqlite3-db-to-txt + install_tool index_usage sqlite3-index-usage + install_tool rbu sqlite3-rbu + install_tool scrub sqlite3-scrub + install_tool showdb sqlite3-show-db + install_tool showjournal sqlite3-show-journal + install_tool showshm sqlite3-show-shm + install_tool showstat4 sqlite3-show-stat4 + install_tool showwal sqlite3-show-wal + install_tool sqldiff sqlite3-diff + install_tool sqlite3_analyzer sqlite3-analyzer + install_tool sqlite3_checker sqlite3-checker + install_tool sqlite3_expert sqlite3-expert + install_tool sqltclsh sqlite3-tclsh + + unset -f install_tool + fi +} + +multilib_src_install_all() { + find "${ED}" -name "*.la" -delete || die + + doman sqlite3.1 + + if use doc; then + if [[ "${PV}" == "9999" ]]; then + pushd "${WORKDIR}/${PN}-doc-build/doc" > /dev/null || die + else + pushd "${WORKDIR}/${PN}-doc-${DOC_PV}" > /dev/null || die + fi + + find "(" -name "*.db" -o -name "*.txt" ")" -delete || die + if [[ "${PV}" != "9999" ]]; then + rm search search.d/admin || die + rmdir search.d || die + find -name "*~" -delete || die + fi + + ( + docinto html + dodoc -r * + ) + + popd > /dev/null || die + fi +}