From 9ee6d97c2883d42f204a533a8bc1f4562df778fb Mon Sep 17 00:00:00 2001 From: V3n3RiX Date: Wed, 16 Sep 2020 09:32:48 +0100 Subject: gentoo resync : 16.09.2020 --- dev-db/sqlite/Manifest | 9 +- .../files/sqlite-3.32.3-security_fixes.patch | 146 ------- dev-db/sqlite/files/sqlite-3.33.0-build_1.1.patch | 413 ++++++++++++++++++++ dev-db/sqlite/files/sqlite-3.33.0-build_1.2.patch | 422 ++++++++++++++++++++ dev-db/sqlite/files/sqlite-3.33.0-build_2.1.patch | 286 ++++++++++++++ dev-db/sqlite/files/sqlite-3.33.0-build_2.2.patch | 434 +++++++++++++++++++++ dev-db/sqlite/sqlite-3.32.3.ebuild | 340 ---------------- dev-db/sqlite/sqlite-3.33.0.ebuild | 367 +++++++++++++++++ 8 files changed, 1929 insertions(+), 488 deletions(-) delete mode 100644 dev-db/sqlite/files/sqlite-3.32.3-security_fixes.patch create mode 100644 dev-db/sqlite/files/sqlite-3.33.0-build_1.1.patch create mode 100644 dev-db/sqlite/files/sqlite-3.33.0-build_1.2.patch create mode 100644 dev-db/sqlite/files/sqlite-3.33.0-build_2.1.patch create mode 100644 dev-db/sqlite/files/sqlite-3.33.0-build_2.2.patch delete mode 100644 dev-db/sqlite/sqlite-3.32.3.ebuild create mode 100644 dev-db/sqlite/sqlite-3.33.0.ebuild (limited to 'dev-db/sqlite') diff --git a/dev-db/sqlite/Manifest b/dev-db/sqlite/Manifest index c3cac931bf93..45e1eb59a16d 100644 --- a/dev-db/sqlite/Manifest +++ b/dev-db/sqlite/Manifest @@ -3,9 +3,14 @@ AUX sqlite-3.32.1-full_archive-build_2.patch 20259 BLAKE2B 851918379951943ac02fc AUX sqlite-3.32.3-backports_1.patch 17914 BLAKE2B cca0c1d7e1bcccbf9042725f7df32359c954725e4a13e6956dc642aa082abe85953df98f4d3ba59c11599c3a9595126da78600ad0d4a66dce987be45f17c582e SHA512 44f91b92d6c8086b10cd96a382ea391108bde5a2e48f2b9ae43e97fe9fa9d5f4c64ee500bb8ed4414dd519f85823121265c450e92898d13468297d7bf9d28ddc AUX sqlite-3.32.3-backports_2.patch 18056 BLAKE2B 60be3513c3cc687e8fac5689f096a8e543904dfd8f5e3f01f92245de963cc01b7f02774b0a60b2ca3fe3415d0eb3615f65e8756e174efccc98dc5438dbf2189c SHA512 4bb01074417f3e3af6bdf619c0ccc61fe54f4e926a1dd31a57e1a595cc713e58ee52cac7baa11ffa271ed434a8bb645be7fd25a9fa93cc596707f2e503fe87a1 AUX sqlite-3.32.3-backports_3.patch 9059 BLAKE2B 4c36eafca13eab04bfb0ce871458d12925b225f05edce785f7f86650de31808179d8bebeffcc23ca8f68069fa2854b7a042ef91e85705b27e85af1b3c424ced8 SHA512 c897d7ebc9b8b5f29c8ed27e76bdeeb3a0bde62fcd4f5398deca2f97c99cc2ef5556389b0c79dced64982fbde2a6322abd91e134255156b572bca476e2a7c050 -AUX sqlite-3.32.3-security_fixes.patch 4850 BLAKE2B 0dad99a14909c85f5f8b31d74dd1d63a5be7d3c6499bba788a2ff09dd1d6bb9badce57499c99c9c6fdc5b7177204452a2e14214748931ccf502154c44e3c29a8 SHA512 5845368e63676fb050618ca923b5c8348d17e003e4735f36bef17b185f434348708ce3e05be76e7c661eb5321a199364c9ba06492f71a9921b30c00255b55766 +AUX sqlite-3.33.0-build_1.1.patch 10634 BLAKE2B a0e1ae459a164174a08a434dbb9a5248f01097b71c5d6b332a171d06692aaec25ec0a3cfaa584dbdc0551ce4ce2d354d521b1fa610bedd15cd16c3aca988fe0f SHA512 74faa564b7c4eef810a27850bdd96d87577bd9c0fa627de31021cb9974e03805f3d1bf85f86780aff1c9dfa6351a9af37081d4f3776c08d0e6cfbcbd6a452426 +AUX sqlite-3.33.0-build_1.2.patch 12113 BLAKE2B f2fee819a5fe4ebc485c15a93072a280b3cb76c609dc9b5b6eeb2c9fb7210e9f4ac67018e2dc8fd3b345e7d7c9a4093b54839d280ab8d113e55db4c94055143b SHA512 92eaee1bb1d6a452b583855df03f7314907467d95000deb0177f4073e36c9b49aaafb10b137fcd5aad45eac20bf667849e005da26698df328ee9ec0e342bce92 +AUX sqlite-3.33.0-build_2.1.patch 10889 BLAKE2B 93c1ce843e636cf495c184c0e50b695308123280cdddac4c1b1e7fa53c37db96c3760e814751fa45531862901d1d60512fa47cccb338c96a0d4519312d08eda0 SHA512 43946c58b90160f706ae66fe3af2881d22e0985d1eccef9389b72695311b06631a9cd5fdf267e077c8070906eecb78ccc3a4e5774890f4f54fbf9e2343fb7dd5 +AUX sqlite-3.33.0-build_2.2.patch 11986 BLAKE2B 27cd42308436d5708771c11d085464350307d0c052e8df4175442ed6f3e412622eb42bf252538244f8b64164466b9d238194130d580ce75c2bbad84fb2552431 SHA512 a958ba2dbb16db0999cbd2a5d0427159c8ef186e461169b96a12c974caf6c353c8fd1522b4d9f52e1ce5b5eddd8d0fd658fef0eabd14465b2598cc974d8785d1 DIST sqlite-doc-3320300.zip 9772933 BLAKE2B efd72c18d0398c103e3f9c4cfeb03e7794fd69691b1bcea95b74a0c5d8af22aa13abc84ce8dc5864b5f4cb79be239433933b4daca34d1adfcc6f31ce2cde66bf SHA512 af9dca970b4c03c058d7d1cd55a3d11fa4b112dccac942b8660d82a7e9ba2956963fcb429eedfdc85915637c102e1f904ace98c8e0455c4120422bbd9f2f3cd0 +DIST sqlite-doc-3330000.zip 9834159 BLAKE2B f67155a8ce8e46c2fbc0a4e35722d1fcad86e905a15230adc70732cee267b6b2002c7499883b938129aaa908b99634e4214360e9d1dbdae333b09060de24530e SHA512 14a3cccb4ff6af57738990eeadd37a1b827f89c9c1b16201c62ca5bb9301d39223d48677b9c269ce332210e5c9ae3f42aa0f9de7d79b38acb9809c732d038368 DIST sqlite-src-3320300.zip 12461750 BLAKE2B 59cce74d284191cfc69ac09b6014701ddd2b7b3d7ebaad5da4ad71cc200e70285b3b201ff174819aa8dde5f610589d7947f547450334f0f17149014078316185 SHA512 7e027c7163a760fb9b6dbfd2e4ccffb39d4972280583fb0d7f8390017101dfed3b12a36653b3130a548ae4d04c6abb11c0a1921b6f09c54c6ae1e72fbdcb2fd4 +DIST sqlite-src-3330000.zip 12591089 BLAKE2B 14888bca229683e97c4666f8efb535be5bd3e322de0089f0175ba15e038016be3a3cc00b5bfa8c111538116914cf6d8439839ca5d1e20339b184e547ddf260a4 SHA512 3260e3e03ee2f6a4ff2bc4ea4bada5a1497afeca33878c155a8005824970c6c1eb8a2db58eb3023cab084af475fadb81d1c3c9892ae92c07f884881e6602e173 EBUILD sqlite-3.32.3-r1.ebuild 10369 BLAKE2B c997121e13e1f2b86128e18a86d7260f340f4a1be42b8ff2c02a34b13689f883572352e4e3c9ada1dbfccd2e215d8d1e6b18e912a6d966bb76112aaba241bb53 SHA512 39c97994f1f8d505055701173ebdf41732dbce2b4071c5a4b2e17a8d29f09ae92a2b731521fcf2a33ad5821cb18e9bd790dd1789d4fe9e3e9002786e34caf8ca -EBUILD sqlite-3.32.3.ebuild 10424 BLAKE2B abfa3de0889bd3931678ffd3a0c8c8d5814a7a673f922965484a2d3c85c3a7203f17ff53dcb2cf2dd4866b1936920b084c856909803fd7f828efab6c52b1446f SHA512 2f74dbdb11ca5d9ed8989ef86cac2d087b7f5e420031b69dac5bdafdd6887e739adbb88f9159082cd2a787cce9923b33bb1bd497e0f7900eca6af18b1a3b79d1 +EBUILD sqlite-3.33.0.ebuild 11478 BLAKE2B fb14a0169ca4e8db8d48dfb4787bf9700012474f2e3310b067b4431e147957bf1c60e1b891bbc6cf16f8a0f7fc3ae9dfffa60ca875929344f500fbad7c0cc947 SHA512 3acc03c4d6390b254c53eb358de40f5be83ecaf28ac31596d43105de279ae94b8533f3469987fcc970a734e82bd64b2fa55116a12cc9b9898cb33747389e85f5 MISC metadata.xml 748 BLAKE2B c58da3e33e12b7747bbadacfd1a6137cf847fd5bd0525fc02ef854eb5bcad7bad0b29739257b632e19190995659768fdea418ffa7e485e55ef15f40f58b8382c SHA512 66f3f134065f76229b74a7ab7b469066a93da737a9037435e6fe78e85f45c980ec561537f2bb9b95db9de026bad025d8b06682187c97dedd2741717e893d43da diff --git a/dev-db/sqlite/files/sqlite-3.32.3-security_fixes.patch b/dev-db/sqlite/files/sqlite-3.32.3-security_fixes.patch deleted file mode 100644 index ad2a3bfe16d0..000000000000 --- a/dev-db/sqlite/files/sqlite-3.32.3-security_fixes.patch +++ /dev/null @@ -1,146 +0,0 @@ -https://sqlite.org/src/info/cc888878ea8d5bc7 -https://sqlite.org/src/info/be545f85a6ef09cc -https://sqlite.org/src/info/6e0ffa2053124168 -https://sqlite.org/src/info/4d0cfb1236884349 - ---- /ext/fts3/fts3.c -+++ /ext/fts3/fts3.c -@@ -5208,10 +5208,12 @@ - ); - if( res ){ - nNew = (int)(pOut - pPhrase->doclist.pList) - 1; -- assert( pPhrase->doclist.pList[nNew]=='\0' ); -- assert( nNew<=pPhrase->doclist.nList && nNew>0 ); -- memset(&pPhrase->doclist.pList[nNew], 0, pPhrase->doclist.nList - nNew); -- pPhrase->doclist.nList = nNew; -+ if( nNew>=0 ){ -+ assert( pPhrase->doclist.pList[nNew]=='\0' ); -+ assert( nNew<=pPhrase->doclist.nList && nNew>0 ); -+ memset(&pPhrase->doclist.pList[nNew], 0, pPhrase->doclist.nList - nNew); -+ pPhrase->doclist.nList = nNew; -+ } - *paPoslist = pPhrase->doclist.pList; - *pnToken = pPhrase->nToken; - } ---- /ext/fts3/fts3_write.c -+++ /ext/fts3/fts3_write.c -@@ -341,7 +341,9 @@ - ** created by merging the oldest :2 segments from absolute level :1. See - ** function sqlite3Fts3Incrmerge() for details. */ - /* 29 */ "SELECT 2 * total(1 + leaves_end_block - start_block) " -- " FROM %Q.'%q_segdir' WHERE level = ? AND idx < ?", -+ " FROM (SELECT * FROM %Q.'%q_segdir' " -+ " WHERE level = ? ORDER BY idx ASC LIMIT ?" -+ " )", - - /* SQL_DELETE_SEGDIR_ENTRY - ** Delete the %_segdir entry on absolute level :1 with index :2. */ -@@ -2853,6 +2855,19 @@ - return SQLITE_OK; - } - -+static int fts3GrowSegReaderBuffer(Fts3MultiSegReader *pCsr, int nReq){ -+ if( nReq>pCsr->nBuffer ){ -+ char *aNew; -+ pCsr->nBuffer = nReq*2; -+ aNew = sqlite3_realloc(pCsr->aBuffer, pCsr->nBuffer); -+ if( !aNew ){ -+ return SQLITE_NOMEM; -+ } -+ pCsr->aBuffer = aNew; -+ } -+ return SQLITE_OK; -+} -+ - - int sqlite3Fts3SegReaderStep( - Fts3Table *p, /* Virtual table handle */ -@@ -2987,15 +3002,9 @@ - } - - nByte = sqlite3Fts3VarintLen(iDelta) + (isRequirePos?nList+1:0); -- if( nDoclist+nByte>pCsr->nBuffer ){ -- char *aNew; -- pCsr->nBuffer = (nDoclist+nByte)*2; -- aNew = sqlite3_realloc(pCsr->aBuffer, pCsr->nBuffer); -- if( !aNew ){ -- return SQLITE_NOMEM; -- } -- pCsr->aBuffer = aNew; -- } -+ -+ rc = fts3GrowSegReaderBuffer(pCsr, nByte+nDoclist); -+ if( rc ) return rc; - - if( isFirst ){ - char *a = &pCsr->aBuffer[nDoclist]; -@@ -3020,6 +3029,9 @@ - fts3SegReaderSort(apSegment, nMerge, j, xCmp); - } - if( nDoclist>0 ){ -+ rc = fts3GrowSegReaderBuffer(pCsr, nDoclist+FTS3_NODE_PADDING); -+ if( rc ) return rc; -+ memset(&pCsr->aBuffer[nDoclist], 0, FTS3_NODE_PADDING); - pCsr->aDoclist = pCsr->aBuffer; - pCsr->nDoclist = nDoclist; - rc = SQLITE_ROW; ---- /src/expr.c -+++ /src/expr.c -@@ -4272,7 +4272,9 @@ - int nCol; - testcase( op==TK_EXISTS ); - testcase( op==TK_SELECT ); -- if( op==TK_SELECT && (nCol = pExpr->x.pSelect->pEList->nExpr)!=1 ){ -+ if( pParse->db->mallocFailed ){ -+ return 0; -+ }else if( op==TK_SELECT && (nCol = pExpr->x.pSelect->pEList->nExpr)!=1 ){ - sqlite3SubselectError(pParse, nCol, 1); - }else{ - return sqlite3CodeSubselect(pParse, pExpr); ---- /test/fts3corrupt4.test -+++ /test/fts3corrupt4.test -@@ -6123,4 +6123,44 @@ - SELECT offsets(t1) FROM t1 WHERE t1 MATCH 'rtree ner "json1^enable"'; - } - -+#------------------------------------------------------------------------- -+do_execsql_test 42.1 { -+ CREATE VIRTUAL TABLE f USING fts3(a, b); -+} -+do_execsql_test 42.2 { -+ INSERT INTO f_segdir VALUES(0,2,1111,0,0,X'00'); -+ INSERT INTO f_segdir VALUES(0,3,0 ,0,0,X'00013003010200'); -+} -+do_execsql_test 42.3 { -+ INSERT INTO f(f) VALUES ('merge=107,2'); -+} -+ -+#------------------------------------------------------------------------- -+reset_db -+set saved $sqlite_fts3_enable_parentheses -+set sqlite_fts3_enable_parentheses 1 -+do_execsql_test 43.1 { -+ CREATE VIRTUAL TABLE def USING fts3(xyz); -+ INSERT INTO def_segdir VALUES(0,0,0,0,0, X'0001310301c9000103323334050d81'); -+} {} -+ -+do_execsql_test 43.2 { -+ SELECT rowid FROM def WHERE def MATCH '1 NEAR 1' -+} {1} -+ -+set sqlite_fts3_enable_parentheses $saved -+ -+#------------------------------------------------------------------------- -+reset_db -+do_execsql_test 44.1 { -+ CREATE VIRTUAL TABLE t0 USING fts3(col0 INTEGER PRIMARY KEY,col1 VARCHAR(8),col2 BINARY,col3 BINARY); -+ INSERT INTO t0_content VALUES(0,NULL,NULL,NULL,NULL); -+ INSERT INTO t0_segdir VALUES(0,0,0,0,'0 42',X'00013103010200010332333405010201ba00000461616161050101020200000462626262050101030200'); -+} -+ -+do_execsql_test 44.2 { -+ SELECT matchinfo(t0, t0) IS NULL FROM t0 WHERE t0 MATCH '1*' -+} {0} -+ -+ - finish_test diff --git a/dev-db/sqlite/files/sqlite-3.33.0-build_1.1.patch b/dev-db/sqlite/files/sqlite-3.33.0-build_1.1.patch new file mode 100644 index 000000000000..6ee7396223d0 --- /dev/null +++ b/dev-db/sqlite/files/sqlite-3.33.0-build_1.1.patch @@ -0,0 +1,413 @@ +Add initialization functions for internal usage in libsqlite3.so. + +--- /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 +@@ -383,16 +383,8 @@ + + #endif /* SQLITE_OMIT_VIRTUALTABLE */ + +-#ifdef _WIN32 +-__declspec(dllexport) +-#endif +-int sqlite3_carray_init( +- sqlite3 *db, +- char **pzErrMsg, +- const sqlite3_api_routines *pApi +-){ ++int sqlite3CarrayInit(sqlite3 *db){ + int rc = SQLITE_OK; +- SQLITE_EXTENSION_INIT2(pApi); + #ifndef SQLITE_OMIT_VIRTUALTABLE + rc = sqlite3_create_module(db, "carray", &carrayModule, 0); + #ifdef SQLITE_TEST +@@ -404,3 +396,18 @@ + #endif /* SQLITE_OMIT_VIRTUALTABLE */ + return rc; + } ++ ++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST) ++#ifdef _WIN32 ++__declspec(dllexport) ++#endif ++int sqlite3_carray_init( ++ sqlite3 *db, ++ char **pzErrMsg, ++ const sqlite3_api_routines *pApi ++){ ++ SQLITE_EXTENSION_INIT2(pApi); ++ (void)pzErrMsg; /* Unused parameter */ ++ return sqlite3CarrayInit(db); ++} ++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */ +--- /ext/misc/completion.c ++++ /ext/misc/completion.c +@@ -483,12 +483,13 @@ + return rc; + } + ++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST) + #ifdef _WIN32 + __declspec(dllexport) + #endif + int sqlite3_completion_init( +- sqlite3 *db, +- char **pzErrMsg, ++ sqlite3 *db, ++ char **pzErrMsg, + const sqlite3_api_routines *pApi + ){ + int rc = SQLITE_OK; +@@ -499,3 +500,4 @@ + #endif + return rc; + } ++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */ +--- /ext/misc/csv.c ++++ /ext/misc/csv.c +@@ -928,6 +928,22 @@ + #endif /* !defined(SQLITE_OMIT_VIRTUALTABLE) */ + + ++int sqlite3CsvInit(sqlite3 *db){ ++#ifndef SQLITE_OMIT_VIRTUALTABLE ++ int rc; ++ rc = sqlite3_create_module(db, "csv", &CsvModule, 0); ++#ifdef SQLITE_TEST ++ if( rc==SQLITE_OK ){ ++ rc = sqlite3_create_module(db, "csv_wr", &CsvModuleFauxWrite, 0); ++ } ++#endif ++ return rc; ++#else ++ return SQLITE_OK; ++#endif ++} ++ ++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST) + #ifdef _WIN32 + __declspec(dllexport) + #endif +@@ -941,17 +957,8 @@ + char **pzErrMsg, + const sqlite3_api_routines *pApi + ){ +-#ifndef SQLITE_OMIT_VIRTUALTABLE +- int rc; + SQLITE_EXTENSION_INIT2(pApi); +- rc = sqlite3_create_module(db, "csv", &CsvModule, 0); +-#ifdef SQLITE_TEST +- if( rc==SQLITE_OK ){ +- rc = sqlite3_create_module(db, "csv_wr", &CsvModuleFauxWrite, 0); +- } +-#endif +- return rc; +-#else +- return SQLITE_OK; +-#endif ++ (void)pzErrMsg; /* Unused parameter */ ++ return sqlite3CsvInit(db); + } ++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */ +--- /ext/misc/dbdata.c ++++ /ext/misc/dbdata.c +@@ -803,7 +803,7 @@ + /* + ** Invoke this routine to register the "sqlite_dbdata" virtual table module + */ +-static int sqlite3DbdataRegister(sqlite3 *db){ ++int sqlite3DbdataRegister(sqlite3 *db){ + static sqlite3_module dbdata_module = { + 0, /* iVersion */ + 0, /* xCreate */ +@@ -838,6 +838,7 @@ + return rc; + } + ++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST) + #ifdef _WIN32 + __declspec(dllexport) + #endif +@@ -849,3 +850,4 @@ + SQLITE_EXTENSION_INIT2(pApi); + return sqlite3DbdataRegister(db); + } ++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */ +--- /ext/misc/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 +@@ -2137,7 +2139,7 @@ + /* + ** Register the "zipfile" virtual table. + */ +-static int zipfileRegister(sqlite3 *db){ ++int sqlite3ZipfileInit(sqlite3 *db){ + static sqlite3_module zipfileModule = { + 1, /* iVersion */ + zipfileConnect, /* xCreate */ +@@ -2171,9 +2173,10 @@ + return rc; + } + #else /* SQLITE_OMIT_VIRTUALTABLE */ +-# define zipfileRegister(x) SQLITE_OK ++# define sqlite3ZipfileInit(x) SQLITE_OK + #endif + ++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST) + #ifdef _WIN32 + __declspec(dllexport) + #endif +@@ -2184,5 +2187,8 @@ + ){ + SQLITE_EXTENSION_INIT2(pApi); + (void)pzErrMsg; /* Unused parameter */ +- return zipfileRegister(db); ++ return sqlite3ZipfileInit(db); + } ++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */ ++ ++#endif /* SQLITE_HAVE_ZLIB */ diff --git a/dev-db/sqlite/files/sqlite-3.33.0-build_2.1.patch b/dev-db/sqlite/files/sqlite-3.33.0-build_2.1.patch new file mode 100644 index 000000000000..290405261502 --- /dev/null +++ b/dev-db/sqlite/files/sqlite-3.33.0-build_2.1.patch @@ -0,0 +1,286 @@ +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. + +--- /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,28 @@ + $(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/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,34 +460,21 @@ + # Statically linked extensions + # + TESTSRC += \ +- $(TOP)/ext/expert/sqlite3expert.c \ + $(TOP)/ext/expert/test_expert.c \ +- $(TOP)/ext/misc/amatch.c \ +- $(TOP)/ext/misc/carray.c \ + $(TOP)/ext/misc/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 +@@ -646,25 +656,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 +@@ -775,7 +785,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 + # +@@ -1081,17 +1091,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/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 + +@@ -1260,11 +1259,11 @@ + + # Fuzz testing + fuzztest: fuzzcheck$(TEXE) $(FUZZDATA) sessionfuzz$(TEXE) $(TOP)/test/sessionfuzz-data1.db +- ./fuzzcheck$(TEXE) $(FUZZDATA) ++ ./fuzzcheck$(TEXE) --timeout 3600 $(FUZZDATA) + ./sessionfuzz$(TEXE) run $(TOP)/test/sessionfuzz-data1.db + + valgrindfuzz: fuzzcheck$(TEXT) $(FUZZDATA) sessionfuzz$(TEXE) $(TOP)/test/sessionfuzz-data1.db +- valgrind ./fuzzcheck$(TEXE) --cell-size-check --limit-mem 10M --timeout 600 $(FUZZDATA) ++ valgrind ./fuzzcheck$(TEXE) --cell-size-check --limit-mem 10M --timeout 3600 $(FUZZDATA) + valgrind ./sessionfuzz$(TEXE) run $(TOP)/test/sessionfuzz-data1.db + + # The veryquick.test TCL tests. +@@ -1298,24 +1297,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 \ +@@ -1326,36 +1324,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) +@@ -1380,11 +1378,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.33.0-build_2.2.patch b/dev-db/sqlite/files/sqlite-3.33.0-build_2.2.patch new file mode 100644 index 000000000000..3aa75bcab85e --- /dev/null +++ b/dev-db/sqlite/files/sqlite-3.33.0-build_2.2.patch @@ -0,0 +1,434 @@ +Move some code to libsqlite3.so to avoid duplication. +Initialize some extensions in libsqlite3.so. +Update test suite. + +--- /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,35 @@ + #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 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 +106,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 +122,26 @@ + #ifdef SQLITE_ENABLE_BYTECODE_VTAB + sqlite3VdbeBytecodeVtabInit, + #endif ++ sqlite3AmatchInit, ++ sqlite3CarrayInit, ++ sqlite3CompletionVtabInit, ++ sqlite3CsvInit, ++ sqlite3DecimalInit, ++ sqlite3EvalInit, ++ sqlite3FileioInit, ++ sqlite3IeeeInit, ++ sqlite3NextcharInit, ++ sqlite3PercentileInit, ++ sqlite3RegexpInit, ++ sqlite3ShaInit, ++ sqlite3ShathreeInit, ++ sqlite3TotypeInit, ++ sqlite3UintInit, ++ sqlite3UuidInit, ++#if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_HAVE_ZLIB) ++ sqlite3ZipfileInit, ++ sqlite3SqlarInit, ++#endif + }; + + #ifndef SQLITE_AMALGAMATION +--- /src/shell.c.in ++++ /src/shell.c.in +@@ -69,6 +69,7 @@ + #include + #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 +@@ -1020,24 +1025,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 +-#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) + /* +@@ -4584,19 +4572,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); +-#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, +@@ -6617,8 +6592,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); + +@@ -10981,6 +10954,7 @@ + #endif + } + data.out = stdout; ++ extern int sqlite3_appendvfs_init(sqlite3 *, char **, const sqlite3_api_routines *); + sqlite3_appendvfs_init(0,0,0); + + /* Go ahead and open the database file if it already exists. If the +--- /src/test_config.c ++++ /src/test_config.c +@@ -353,6 +353,8 @@ + Tcl_SetVar2(interp, "sqlite_options", "datetime", "1", TCL_GLOBAL_ONLY); + #endif + ++ Tcl_SetVar2(interp, "sqlite_options", "decimal", "1", TCL_GLOBAL_ONLY); ++ + #ifdef SQLITE_OMIT_DECLTYPE + Tcl_SetVar2(interp, "sqlite_options", "decltype", "0", TCL_GLOBAL_ONLY); + #else +@@ -540,6 +542,8 @@ + Tcl_SetVar2(interp, "sqlite_options", "progress", "1", TCL_GLOBAL_ONLY); + #endif + ++ Tcl_SetVar2(interp, "sqlite_options", "regexp", "1", TCL_GLOBAL_ONLY); ++ + #ifdef SQLITE_OMIT_REINDEX + Tcl_SetVar2(interp, "sqlite_options", "reindex", "0", TCL_GLOBAL_ONLY); + #else +@@ -662,6 +666,8 @@ + Tcl_SetVar2(interp, "sqlite_options", "truncate_opt", "1", TCL_GLOBAL_ONLY); + #endif + ++ Tcl_SetVar2(interp, "sqlite_options", "uint", "1", TCL_GLOBAL_ONLY); ++ + #ifdef SQLITE_OMIT_UTF16 + Tcl_SetVar2(interp, "sqlite_options", "utf16", "0", TCL_GLOBAL_ONLY); + #else +--- /test/e_expr.test ++++ /test/e_expr.test +@@ -1078,7 +1078,7 @@ + # + # There is a regexp function if ICU is enabled though. + # +-ifcapable !icu { ++ifcapable !icu&&!regexp { + do_catchsql_test e_expr-18.1.1 { + SELECT regexp('abc', 'def') + } {1 {no such function: regexp}} +--- /test/icu.test ++++ /test/icu.test +@@ -41,7 +41,7 @@ + # + test_expr icu-1.1 {i1='hello'} {i1 REGEXP 'hello'} 1 + test_expr icu-1.2 {i1='hello'} {i1 REGEXP '.ello'} 1 +- test_expr icu-1.3 {i1='hello'} {i1 REGEXP '.ell'} 0 ++ test_expr icu-1.3 {i1='hello'} {i1 REGEXP '.ell$'} 0 + test_expr icu-1.4 {i1='hello'} {i1 REGEXP '.ell.*'} 1 + test_expr icu-1.5 {i1=NULL} {i1 REGEXP '.ell.*'} {} + +--- /test/pragma.test ++++ /test/pragma.test +@@ -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 +@@ -117,6 +117,7 @@ + rtree.h + sqlite3session.h + sqlite3.h ++ sqlite3expert.h + sqlite3ext.h + sqlite3rbu.h + sqliteicu.h +@@ -404,6 +405,27 @@ + 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 ++ sha1.c ++ shathree.c ++ sqlar.c ++ sqlite3expert.c ++ totype.c ++ uint.c ++ uuid.c ++ zipfile.c + } { + copy_file tsrc/$file + } +--- /tool/sqlite3_analyzer.c.in ++++ /tool/sqlite3_analyzer.c.in +@@ -14,9 +14,6 @@ + #define SQLITE_DEFAULT_MEMSTATUS 0 + #define SQLITE_MAX_EXPR_DEPTH 0 + #define SQLITE_OMIT_LOAD_EXTENSION 1 +-#ifndef USE_EXTERNAL_SQLITE +-INCLUDE sqlite3.c +-#endif + INCLUDE $ROOT/src/tclsqlite.c + + const char *sqlite3_analyzer_init_proc(Tcl_Interp *interp){ +--- /tool/sqltclsh.c.in ++++ /tool/sqltclsh.c.in +@@ -27,21 +27,13 @@ + #define SQLITE_OMIT_SHARED_CACHE 1 + #define SQLITE_DEFAULT_MEMSTATUS 0 + #define SQLITE_MAX_EXPR_DEPTH 0 +-INCLUDE sqlite3.c +-INCLUDE $ROOT/ext/misc/appendvfs.c +-#ifdef SQLITE_HAVE_ZLIB +-INCLUDE $ROOT/ext/misc/zipfile.c +-INCLUDE $ROOT/ext/misc/sqlar.c +-#endif ++#include "sqlite3.h" + INCLUDE $ROOT/src/tclsqlite.c + + const char *sqlite3_tclapp_init_proc(Tcl_Interp *interp){ + (void)interp; ++ extern int sqlite3_appendvfs_init(sqlite3 *,char **, const sqlite3_api_routines *); + sqlite3_appendvfs_init(0,0,0); +-#ifdef SQLITE_HAVE_ZLIB +- sqlite3_auto_extension((void(*)(void))sqlite3_sqlar_init); +- sqlite3_auto_extension((void(*)(void))sqlite3_zipfile_init); +-#endif + + return + BEGIN_STRING diff --git a/dev-db/sqlite/sqlite-3.32.3.ebuild b/dev-db/sqlite/sqlite-3.32.3.ebuild deleted file mode 100644 index fd258a4bd4c0..000000000000 --- a/dev-db/sqlite/sqlite-3.32.3.ebuild +++ /dev/null @@ -1,340 +0,0 @@ -# Copyright 1999-2020 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI="7" - -inherit autotools flag-o-matic multilib-minimal toolchain-funcs - -if [[ "${PV}" != "9999" ]]; then - SRC_PV="$(printf "%u%02u%02u%02u" $(ver_rs 1- " "))" - DOC_PV="${SRC_PV}" - # DOC_PV="$(printf "%u%02u%02u00" $(ver_rs 1-3 " "))" -fi - -DESCRIPTION="SQL database engine" -HOMEPAGE="https://sqlite.org/" -if [[ "${PV}" == "9999" ]]; then - SRC_URI="" -else - SRC_URI="https://sqlite.org/2020/${PN}-src-${SRC_PV}.zip - doc? ( https://sqlite.org/2020/${PN}-doc-${DOC_PV}.zip )" -fi - -LICENSE="public-domain" -SLOT="3" -KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~m68k ~mips ppc ppc64 ~riscv s390 sparc x86 ~ppc-aix ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~m68k-mint ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris" -IUSE="debug doc icu +readline secure-delete static-libs tcl test tools" -if [[ "${PV}" == "9999" ]]; then - PROPERTIES="live" -fi -RESTRICT="!test? ( test )" - -if [[ "${PV}" == "9999" ]]; then - BDEPEND=">=dev-lang/tcl-8.6:0 - dev-vcs/fossil" -else - BDEPEND="app-arch/unzip - >=dev-lang/tcl-8.6:0" -fi -RDEPEND="sys-libs/zlib:0=[${MULTILIB_USEDEP}] - icu? ( dev-libs/icu:0=[${MULTILIB_USEDEP}] ) - readline? ( sys-libs/readline:0=[${MULTILIB_USEDEP}] ) - tcl? ( dev-lang/tcl:0=[${MULTILIB_USEDEP}] ) - tools? ( dev-lang/tcl:0=[${MULTILIB_USEDEP}] )" -DEPEND="${RDEPEND} - test? ( >=dev-lang/tcl-8.6:0[${MULTILIB_USEDEP}] )" - -if [[ "${PV}" == "9999" ]]; then - S="${WORKDIR}/${PN}" -else - S="${WORKDIR}/${PN}-src-${SRC_PV}" -fi - -src_unpack() { - if [[ "${PV}" == "9999" ]]; then - local distdir="${PORTAGE_ACTUAL_DISTDIR:-${DISTDIR}}" - addwrite "${distdir}" - mkdir -p "${distdir}/fossil-src/${PN}" || die - - mkdir "${WORKDIR}/${PN}" || die - pushd "${WORKDIR}/${PN}" > /dev/null || die - if [[ ! -f "${distdir}/fossil-src/${PN}/sqlite.fossil" ]]; then - einfo fossil clone --verbose https://sqlite.org/src sqlite.fossil - fossil clone --verbose https://sqlite.org/src sqlite.fossil || die - echo - else - cp -p "${distdir}/fossil-src/${PN}/sqlite.fossil" . || die - einfo fossil pull --repository sqlite.fossil --verbose https://sqlite.org/src - fossil pull --repository sqlite.fossil --verbose https://sqlite.org/src || die - echo - fi - cp -p sqlite.fossil "${distdir}/fossil-src/${PN}" || die - einfo fossil open --quiet sqlite.fossil - fossil open --quiet sqlite.fossil || die - echo - popd > /dev/null || die - - if use doc; then - mkdir "${WORKDIR}/${PN}-doc" || die - pushd "${WORKDIR}/${PN}-doc" > /dev/null || die - if [[ ! -f "${distdir}/fossil-src/${PN}/sqlite-doc.fossil" ]]; then - einfo fossil clone --verbose https://sqlite.org/docsrc sqlite-doc.fossil - fossil clone --verbose https://sqlite.org/docsrc sqlite-doc.fossil || die - echo - else - cp -p "${distdir}/fossil-src/${PN}/sqlite-doc.fossil" . || die - einfo fossil pull --repository sqlite-doc.fossil --verbose https://sqlite.org/docsrc - fossil pull --repository sqlite-doc.fossil --verbose https://sqlite.org/docsrc || die - echo - fi - cp -p sqlite-doc.fossil "${distdir}/fossil-src/${PN}" || die - einfo fossil open --quiet sqlite-doc.fossil - fossil open --quiet sqlite-doc.fossil || die - echo - popd > /dev/null || die - fi - else - default - fi -} - -src_prepare() { - eapply "${FILESDIR}/${PN}-3.32.1-full_archive-build_1.patch" - eapply "${FILESDIR}/${PN}-3.32.1-full_archive-build_2.patch" - eapply "${FILESDIR}/${PN}-3.32.3-security_fixes.patch" - - eapply_user - - # Fix AC_CHECK_FUNCS. - # https://mailinglists.sqlite.org/cgi-bin/mailman/private/sqlite-dev/2016-March/002762.html - sed -e "s/AC_CHECK_FUNCS(.*)/AC_CHECK_FUNCS([fdatasync fullfsync gmtime_r isnan localtime_r localtime_s malloc_usable_size posix_fallocate pread pread64 pwrite pwrite64 strchrnul usleep utime])/" -i configure.ac || die "sed failed" - - eautoreconf - - multilib_copy_sources -} - -multilib_src_configure() { - local -x CPPFLAGS="${CPPFLAGS}" CFLAGS="${CFLAGS}" - local options=() - - options+=( - --enable-load-extension - --enable-threadsafe - ) - - # Support detection of misuse of SQLite API. - # https://sqlite.org/compile.html#enable_api_armor - append-cppflags -DSQLITE_ENABLE_API_ARMOR - - # Support bytecode and tables_used virtual tables. - # https://sqlite.org/bytecodevtab.html - append-cppflags -DSQLITE_ENABLE_BYTECODE_VTAB - - # Support column metadata functions. - # https://sqlite.org/c3ref/column_database_name.html - append-cppflags -DSQLITE_ENABLE_COLUMN_METADATA - - # Support sqlite_dbpage virtual table. - # https://sqlite.org/dbpage.html - append-cppflags -DSQLITE_ENABLE_DBPAGE_VTAB - - # Support dbstat virtual table. - # https://sqlite.org/dbstat.html - append-cppflags -DSQLITE_ENABLE_DBSTAT_VTAB - - # Support sqlite3_serialize() and sqlite3_deserialize() functions. - # https://sqlite.org/c3ref/serialize.html - # https://sqlite.org/c3ref/deserialize.html - append-cppflags -DSQLITE_ENABLE_DESERIALIZE - - # Support comments in output of EXPLAIN. - # https://sqlite.org/compile.html#enable_explain_comments - append-cppflags -DSQLITE_ENABLE_EXPLAIN_COMMENTS - - # Support Full-Text Search versions 3, 4 and 5. - # https://sqlite.org/fts3.html - # https://sqlite.org/fts5.html - append-cppflags -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_FTS3_PARENTHESIS -DSQLITE_ENABLE_FTS4 - options+=(--enable-fts5) - - # Support hidden columns. - append-cppflags -DSQLITE_ENABLE_HIDDEN_COLUMNS - - # Support JSON1 extension. - # https://sqlite.org/json1.html - append-cppflags -DSQLITE_ENABLE_JSON1 - - # Support memsys5 memory allocator. - # https://sqlite.org/malloc.html#memsys5 - append-cppflags -DSQLITE_ENABLE_MEMSYS5 - - # Support sqlite3_normalized_sql() function. - # https://sqlite.org/c3ref/expanded_sql.html - append-cppflags -DSQLITE_ENABLE_NORMALIZE - - # Support sqlite_offset() function. - # https://sqlite.org/lang_corefunc.html#sqlite_offset - append-cppflags -DSQLITE_ENABLE_OFFSET_SQL_FUNC - - # Support pre-update hook functions. - # https://sqlite.org/c3ref/preupdate_count.html - append-cppflags -DSQLITE_ENABLE_PREUPDATE_HOOK - - # Support Resumable Bulk Update extension. - # https://sqlite.org/rbu.html - append-cppflags -DSQLITE_ENABLE_RBU - - # Support R*Trees. - # https://sqlite.org/rtree.html - # https://sqlite.org/geopoly.html - append-cppflags -DSQLITE_ENABLE_RTREE -DSQLITE_ENABLE_GEOPOLY - - # Support scan status functions. - # https://sqlite.org/c3ref/stmt_scanstatus.html - # https://sqlite.org/c3ref/stmt_scanstatus_reset.html - append-cppflags -DSQLITE_ENABLE_STMT_SCANSTATUS - - # Support sqlite_stmt virtual table. - # https://sqlite.org/stmt.html - append-cppflags -DSQLITE_ENABLE_STMTVTAB - - # Support Session extension. - # https://sqlite.org/sessionintro.html - options+=(--enable-session) - - # Support unknown() function. - # https://sqlite.org/compile.html#enable_unknown_sql_function - append-cppflags -DSQLITE_ENABLE_UNKNOWN_SQL_FUNCTION - - # Support unlock notification. - # https://sqlite.org/unlock_notify.html - append-cppflags -DSQLITE_ENABLE_UNLOCK_NOTIFY - - # Support LIMIT and ORDER BY clauses on DELETE and UPDATE statements. - # https://sqlite.org/lang_delete.html#optional_limit_and_order_by_clauses - # https://sqlite.org/lang_update.html#optional_limit_and_order_by_clauses - append-cppflags -DSQLITE_ENABLE_UPDATE_DELETE_LIMIT - - # Support soundex() function. - # https://sqlite.org/lang_corefunc.html#soundex - append-cppflags -DSQLITE_SOUNDEX - - # Support URI filenames. - # https://sqlite.org/uri.html - append-cppflags -DSQLITE_USE_URI - - # debug USE flag. - options+=($(use_enable debug)) - - # icu USE flag. - if use icu; then - # Support ICU extension. - # https://sqlite.org/compile.html#enable_icu - append-cppflags -DSQLITE_ENABLE_ICU - sed -e "s/^TLIBS = @LIBS@/& -licui18n -licuuc/" -i Makefile.in || die "sed failed" - fi - - # readline USE flag. - options+=( - --disable-editline - $(use_enable readline) - ) - if use readline; then - options+=(--with-readline-inc="-I${ESYSROOT}/usr/include/readline") - fi - - # secure-delete USE flag. - if use secure-delete; then - # Enable secure_delete pragma by default. - # https://sqlite.org/pragma.html#pragma_secure_delete - append-cppflags -DSQLITE_SECURE_DELETE - fi - - # static-libs USE flag. - options+=($(use_enable static-libs static)) - - # tcl, test, tools USE flags. - options+=(--enable-tcl) - - if [[ "${CHOST}" == *-mint* ]]; then - append-cppflags -DSQLITE_OMIT_WAL - fi - - if [[ "${ABI}" == "x86" ]]; then - if $(tc-getCC) ${CPPFLAGS} ${CFLAGS} -E -P -dM - < /dev/null 2> /dev/null | grep -q "^#define __SSE__ 1$"; then - append-cflags -mfpmath=sse - else - append-cflags -ffloat-store - fi - fi - - econf "${options[@]}" -} - -multilib_src_compile() { - emake HAVE_TCL="$(usex tcl 1 "")" TCLLIBDIR="${EPREFIX}/usr/$(get_libdir)/${P}" - - if use tools && multilib_is_native_abi; then - emake changeset dbdump dbhash dbtotxt index_usage rbu scrub showdb showjournal showshm showstat4 showwal sqldiff sqlite3_analyzer sqlite3_checker sqlite3_expert sqltclsh - fi -} - -multilib_src_test() { - if [[ "${EUID}" -eq 0 ]]; then - ewarn "Skipping tests due to root permissions" - return - fi - - local -x SQLITE_HISTORY="${T}/sqlite_history_${ABI}" - - emake HAVE_TCL="$(usex tcl 1 "")" $(use debug && echo fulltest || echo test) -} - -multilib_src_install() { - emake DESTDIR="${D}" HAVE_TCL="$(usex tcl 1 "")" TCLLIBDIR="${EPREFIX}/usr/$(get_libdir)/${P}" install - - if use tools && multilib_is_native_abi; then - install_tool() { - if [[ -f ".libs/${1}" ]]; then - newbin ".libs/${1}" "${2}" - else - newbin "${1}" "${2}" - fi - } - - install_tool changeset sqlite3-changeset - install_tool dbdump sqlite3-db-dump - install_tool dbhash sqlite3-db-hash - install_tool dbtotxt sqlite3-db-to-txt - install_tool index_usage sqlite3-index-usage - install_tool rbu sqlite3-rbu - install_tool scrub sqlite3-scrub - install_tool showdb sqlite3-show-db - install_tool showjournal sqlite3-show-journal - install_tool showshm sqlite3-show-shm - install_tool showstat4 sqlite3-show-stat4 - install_tool showwal sqlite3-show-wal - install_tool sqldiff sqlite3-diff - install_tool sqlite3_analyzer sqlite3-analyzer - install_tool sqlite3_checker sqlite3-checker - install_tool sqlite3_expert sqlite3-expert - install_tool sqltclsh sqlite3-tclsh - - unset -f install_tool - fi -} - -multilib_src_install_all() { - find "${D}" -name "*.la" -type f -delete || die - - doman sqlite3.1 - - if use doc; then - rm "${WORKDIR}/${PN}-doc-${DOC_PV}/"*.{db,txt} || die - ( - docinto html - dodoc -r "${WORKDIR}/${PN}-doc-${DOC_PV}/"* - ) - fi -} diff --git a/dev-db/sqlite/sqlite-3.33.0.ebuild b/dev-db/sqlite/sqlite-3.33.0.ebuild new file mode 100644 index 000000000000..f4c16d01b362 --- /dev/null +++ b/dev-db/sqlite/sqlite-3.33.0.ebuild @@ -0,0 +1,367 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="7" + +inherit autotools flag-o-matic multilib-minimal toolchain-funcs + +if [[ "${PV}" != "9999" ]]; then + SRC_PV="$(printf "%u%02u%02u%02u" $(ver_rs 1- " "))" + DOC_PV="${SRC_PV}" + # DOC_PV="$(printf "%u%02u%02u00" $(ver_rs 1-3 " "))" +fi + +DESCRIPTION="SQL database engine" +HOMEPAGE="https://sqlite.org/" +if [[ "${PV}" == "9999" ]]; then + SRC_URI="" +else + SRC_URI="https://sqlite.org/2020/${PN}-src-${SRC_PV}.zip + doc? ( https://sqlite.org/2020/${PN}-doc-${DOC_PV}.zip )" +fi + +LICENSE="public-domain" +SLOT="3" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~ppc-aix ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~m68k-mint ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris" +IUSE="debug doc icu +readline secure-delete static-libs tcl test tools" +if [[ "${PV}" == "9999" ]]; then + PROPERTIES="live" +fi +RESTRICT="!test? ( test )" + +if [[ "${PV}" == "9999" ]]; then + BDEPEND=">=dev-lang/tcl-8.6:0 + dev-vcs/fossil" +else + BDEPEND="app-arch/unzip + >=dev-lang/tcl-8.6:0" +fi +RDEPEND="sys-libs/zlib:0=[${MULTILIB_USEDEP}] + icu? ( dev-libs/icu:0=[${MULTILIB_USEDEP}] ) + readline? ( sys-libs/readline:0=[${MULTILIB_USEDEP}] ) + tcl? ( dev-lang/tcl:0=[${MULTILIB_USEDEP}] ) + tools? ( dev-lang/tcl:0=[${MULTILIB_USEDEP}] )" +DEPEND="${RDEPEND} + test? ( >=dev-lang/tcl-8.6:0[${MULTILIB_USEDEP}] )" + +if [[ "${PV}" == "9999" ]]; then + S="${WORKDIR}/${PN}" +else + S="${WORKDIR}/${PN}-src-${SRC_PV}" +fi + +src_unpack() { + if [[ "${PV}" == "9999" ]]; then + local distdir="${PORTAGE_ACTUAL_DISTDIR:-${DISTDIR}}" + addwrite "${distdir}" + mkdir -p "${distdir}/fossil-src/${PN}" || die + + mkdir "${WORKDIR}/${PN}" || die + pushd "${WORKDIR}/${PN}" > /dev/null || die + if [[ ! -f "${distdir}/fossil-src/${PN}/sqlite.fossil" ]]; then + einfo fossil clone --verbose https://sqlite.org/src sqlite.fossil + fossil clone --verbose https://sqlite.org/src sqlite.fossil || die + echo + else + cp -p "${distdir}/fossil-src/${PN}/sqlite.fossil" . || die + einfo fossil pull --repository sqlite.fossil --verbose https://sqlite.org/src + fossil pull --repository sqlite.fossil --verbose https://sqlite.org/src || die + echo + fi + cp -p sqlite.fossil "${distdir}/fossil-src/${PN}" || die + einfo fossil open --quiet sqlite.fossil + fossil open --quiet sqlite.fossil || die + echo + popd > /dev/null || die + + if use doc; then + mkdir "${WORKDIR}/${PN}-doc" || die + pushd "${WORKDIR}/${PN}-doc" > /dev/null || die + if [[ ! -f "${distdir}/fossil-src/${PN}/sqlite-doc.fossil" ]]; then + einfo fossil clone --verbose https://sqlite.org/docsrc sqlite-doc.fossil + fossil clone --verbose https://sqlite.org/docsrc sqlite-doc.fossil || die + echo + else + cp -p "${distdir}/fossil-src/${PN}/sqlite-doc.fossil" . || die + einfo fossil pull --repository sqlite-doc.fossil --verbose https://sqlite.org/docsrc + fossil pull --repository sqlite-doc.fossil --verbose https://sqlite.org/docsrc || die + echo + fi + cp -p sqlite-doc.fossil "${distdir}/fossil-src/${PN}" || die + einfo fossil open --quiet sqlite-doc.fossil + fossil open --quiet sqlite-doc.fossil || die + echo + popd > /dev/null || die + fi + else + default + fi +} + +src_prepare() { + eapply "${FILESDIR}/"${PN}-3.33.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 +} + +multilib_src_test() { + if [[ "${EUID}" -eq 0 ]]; then + ewarn "Skipping tests due to root permissions" + return + fi + + local -x SQLITE_HISTORY="${T}/sqlite_history_${ABI}" + + emake HAVE_TCL="$(usex tcl 1 "")" $(use debug && echo fulltest || echo test) +} + +multilib_src_install() { + emake DESTDIR="${D}" HAVE_TCL="$(usex tcl 1 "")" TCLLIBDIR="${EPREFIX}/usr/$(get_libdir)/${P}" install + + if use tools && multilib_is_native_abi; then + install_tool() { + if [[ -f ".libs/${1}" ]]; then + newbin ".libs/${1}" "${2}" + else + newbin "${1}" "${2}" + fi + } + + install_tool changeset sqlite3-changeset + install_tool dbdump sqlite3-db-dump + install_tool dbhash sqlite3-db-hash + install_tool dbtotxt sqlite3-db-to-txt + install_tool index_usage sqlite3-index-usage + install_tool rbu sqlite3-rbu + install_tool scrub sqlite3-scrub + install_tool showdb sqlite3-show-db + install_tool showjournal sqlite3-show-journal + install_tool showshm sqlite3-show-shm + install_tool showstat4 sqlite3-show-stat4 + install_tool showwal sqlite3-show-wal + install_tool sqldiff sqlite3-diff + install_tool sqlite3_analyzer sqlite3-analyzer + install_tool sqlite3_checker sqlite3-checker + install_tool sqlite3_expert sqlite3-expert + install_tool sqltclsh sqlite3-tclsh + + unset -f install_tool + fi +} + +multilib_src_install_all() { + find "${D}" -name "*.la" -type f -delete || die + + doman sqlite3.1 + + if use doc; then + if [[ "${PV}" == "9999" ]]; then + pushd "${WORKDIR}/${PN}-doc" > /dev/null || die + else + pushd "${WORKDIR}/${PN}-doc-${DOC_PV}" > /dev/null || die + fi + rm *.db *.txt || die + ( + docinto html + dodoc -r * + ) + popd > /dev/null || die + fi +} -- cgit v1.2.3