Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
Please login to access the resource
home:Thaodan:mozilla
MozillaFirefox
0022-Bug-1611386-Reenable-support-for-enable-sy...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0022-Bug-1611386-Reenable-support-for-enable-system-sqlit.patch of Package MozillaFirefox
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Bidar?= <bjorn.bidar@jolla.com> Date: Mon, 6 Mar 2023 05:17:15 +0200 Subject: [PATCH] Bug 1611386 - Reenable support for --enable-system-sqlite MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Revert "Bug 1611386 - Drop support for --enable-system-sqlite. r=asuth,glandium" This reverts commit b5b6473a6d6d59e1361e529db9b8b6e1f7448f29. Improt changes from: https://phabricator.services.mozilla.com/D18049 Signed-off-by: Björn Bidar <bjorn.bidar@jolla.com> --- browser/installer/package-manifest.in | 2 ++ config/external/sqlite/moz.build | 22 ++++++++++++--------- dom/indexedDB/moz.build | 8 +++++++- storage/SQLiteMutex.h | 6 +++--- storage/moz.build | 7 ++++++- storage/mozStorageConnection.cpp | 4 ++++ storage/mozStorageService.cpp | 27 ++++++++++++++++++++++++++ third_party/sqlite3/src/moz.build | 2 ++ third_party/sqlite3/src/sqlite.symbols | 2 -- toolkit/moz.configure | 14 +++++++++++++ 10 files changed, 78 insertions(+), 16 deletions(-) diff --git a/browser/installer/package-manifest.in b/browser/installer/package-manifest.in index da760e143740a166df14d055cf3ec7b095b93d10..ef250a811fee49391ba31ce3775fdff64332b1b1 100644 --- a/browser/installer/package-manifest.in +++ b/browser/installer/package-manifest.in @@ -148,9 +148,11 @@ #endif #endif @RESPATH@/platform.ini +#ifndef MOZ_SYSTEM_SQLITE #ifndef MOZ_FOLD_LIBS @BINPATH@/@DLL_PREFIX@mozsqlite3@DLL_SUFFIX@ #endif +#endif @BINPATH@/@DLL_PREFIX@lgpllibs@DLL_SUFFIX@ @BINPATH@/@DLL_PREFIX@gkcodecs@DLL_SUFFIX@ @BINPATH@/@DLL_PREFIX@mozavutil@DLL_SUFFIX@ diff --git a/config/external/sqlite/moz.build b/config/external/sqlite/moz.build index 6294924c564ae8c2ebc0033895be91069179fcd2..b978fd9caba375242de1be25072b251461010044 100644 --- a/config/external/sqlite/moz.build +++ b/config/external/sqlite/moz.build @@ -4,15 +4,19 @@ # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. -DIRS += ["../../../third_party/sqlite3/src"] -if CONFIG["MOZ_FOLD_LIBS"]: +if CONFIG["MOZ_SYSTEM_SQLITE"]: Library("sqlite") - # When folding libraries, sqlite is actually in the nss library. - USE_LIBS += [ - "nss", - ] + OS_LIBS += CONFIG["SQLITE_LIBS"] else: - SharedLibrary("sqlite") - SHARED_LIBRARY_NAME = "mozsqlite3" + DIRS += ["../../../third_party/sqlite3/src"] + if CONFIG["MOZ_FOLD_LIBS"]: + Library("sqlite") + # When folding libraries, sqlite is actually in the nss library. + USE_LIBS += [ + "nss", + ] + else: + SharedLibrary("sqlite") + SHARED_LIBRARY_NAME = "mozsqlite3" - SYMBOLS_FILE = "/third_party/sqlite3/src/sqlite.symbols" + SYMBOLS_FILE = "/third_party/sqlite3/src/sqlite.symbols" diff --git a/dom/indexedDB/moz.build b/dom/indexedDB/moz.build index 27e59029e54f9d63c823dc95630d542d1c0936ae..af2bf4cf7aca769e130549448f550286879845b6 100644 --- a/dom/indexedDB/moz.build +++ b/dom/indexedDB/moz.build @@ -120,10 +120,16 @@ LOCAL_INCLUDES += [ "/dom/base", "/dom/storage", "/ipc/glue", - "/third_party/sqlite3/src", "/xpcom/build", ] +if not CONFIG["MOZ_SYSTEM_SQLITE"]: + LOCAL_INCLUDES += ["/third_party/sqlite3/src"] +else: + CXXFLAGS += CONFIG["MOZ_SYSTEM_SQLITE_FCLAGS"] + OS_LIBS += CONFIG["MOZ_SYSTEM_SQLITE_LIBS"] + + XPIDL_SOURCES += [ "nsIIDBPermissionsRequest.idl", ] diff --git a/storage/SQLiteMutex.h b/storage/SQLiteMutex.h index b7198b1912fdc8d1182a445421aec3450474c23d..3ecc0bb997cf376e996bff2d9c184ecffc78b4be 100644 --- a/storage/SQLiteMutex.h +++ b/storage/SQLiteMutex.h @@ -56,7 +56,7 @@ class SQLiteMutex : private BlockingResourceBase { */ void lock() { MOZ_ASSERT(mMutex, "No mutex associated with this wrapper!"); -#if defined(DEBUG) +#if defined(DEBUG) && !defined(MOZ_SYSTEM_SQLITE) // While SQLite Mutexes may be recursive, in our own code we do not want to // treat them as such. CheckAcquire(); @@ -64,7 +64,7 @@ class SQLiteMutex : private BlockingResourceBase { ::sqlite3_mutex_enter(mMutex); -#if defined(DEBUG) +#if defined(DEBUG) && !defined(MOZ_SYSTEM_SQLITE) Acquire(); // Call is protected by us holding the mutex. #endif } @@ -74,7 +74,7 @@ class SQLiteMutex : private BlockingResourceBase { */ void unlock() { MOZ_ASSERT(mMutex, "No mutex associated with this wrapper!"); -#if defined(DEBUG) +#if defined(DEBUG) && !defined(MOZ_SYSTEM_SQLITE) // While SQLite Mutexes may be recursive, in our own code we do not want to // treat them as such. Release(); // Call is protected by us holding the mutex. diff --git a/storage/moz.build b/storage/moz.build index 7f4c75730ef51aa1c5d8ccdb2d4369d6f8e128b4..d0f6fc833e5d4ee14474711e6d78fb2dae02ea17 100644 --- a/storage/moz.build +++ b/storage/moz.build @@ -103,9 +103,14 @@ if not CONFIG["MOZ_AVOID_DISK_REMNANT_ON_CLOSE"]: LOCAL_INCLUDES += [ "/dom/base", - "/third_party/sqlite3/src", ] +if not CONFIG["MOZ_SYSTEM_SQLITE"]: + LOCAL_INCLUDES += ["/third_party/sqlite3/src"] +else: + CXXFLAGS += CONFIG["MOZ_SYSTEM_SQLITE_FCLAGS"] + OS_LIBS += CONFIG["MOZ_SYSTEM_SQLITE_LIBS"] + if CONFIG["MOZ_FOLD_LIBS"]: DEFINES["MOZ_FOLD_LIBS"] = True diff --git a/storage/mozStorageConnection.cpp b/storage/mozStorageConnection.cpp index 775cddbfdb8d1c12edb31c4cde69501f7830ee41..44f9cbdb928b66d9e2179b19d3e61d6c3744c751 100644 --- a/storage/mozStorageConnection.cpp +++ b/storage/mozStorageConnection.cpp @@ -1244,6 +1244,10 @@ nsresult Connection::initializeInternal() { return convertResultCode(srv); } +#if defined(MOZ_MEMORY_TEMP_STORE_PRAGMA) + (void)ExecuteSimpleSQL("PRAGMA temp_store = 2;"_ns); +#endif + // Register our built-in SQL functions. srv = registerFunctions(mDBConn); if (srv != SQLITE_OK) { diff --git a/storage/mozStorageService.cpp b/storage/mozStorageService.cpp index 3f6891dda4922f5dc8a3bb5bce013a3c7264d413..e1776c6ace73c1d78583df3e273493883366ab8e 100644 --- a/storage/mozStorageService.cpp +++ b/storage/mozStorageService.cpp @@ -21,6 +21,7 @@ #include "nsIPropertyBag2.h" #include "ObfuscatingVFS.h" #include "QuotaVFS.h" +#include "nsIPromptService.h" #include "mozilla/Services.h" #include "mozilla/LateWriteChecks.h" #include "mozIStorageCompletionCallback.h" @@ -170,6 +171,32 @@ already_AddRefed<Service> Service::getSingleton() { return do_AddRef(gService); } + // Ensure that we are using the same version of SQLite that we compiled with + // or newer. Our configure check ensures we are using a new enough version + // at compile time. + if (SQLITE_VERSION_NUMBER > ::sqlite3_libversion_number() || + !::sqlite3_compileoption_used("SQLITE_SECURE_DELETE") || + !::sqlite3_compileoption_used("SQLITE_THREADSAFE=1") || + !::sqlite3_compileoption_used("SQLITE_ENABLE_FTS3") || + !::sqlite3_compileoption_used("SQLITE_ENABLE_UNLOCK_NOTIFY") || + !::sqlite3_compileoption_used("SQLITE_ENABLE_DBSTAT_VTAB")) + { + nsCOMPtr<nsIPromptService> ps(do_GetService(NS_PROMPTSERVICE_CONTRACTID)); + if (ps) { + nsAutoString title, message; + title.AppendLiteral("SQLite Version Error"); + message.AppendLiteral( + "The application has been updated, but the SQLite " + "library wasn't updated properly and the application " + "cannot run. Please try to launch the application again. " + "If that should still fail, please try reinstalling " + "it, or contact the support of where you got the " + "application from."); + (void)ps->Alert(nullptr, title.get(), message.get()); + } + MOZ_CRASH("SQLite Version Error"); + } + // The first reference to the storage service must be obtained on the // main thread. NS_ENSURE_TRUE(NS_IsMainThread(), nullptr); diff --git a/third_party/sqlite3/src/moz.build b/third_party/sqlite3/src/moz.build index abbd23887d533f8a0523d7bfd3639af19cd0cb66..df1750b9acbc3fc24aba785ea353610448c69d1e 100644 --- a/third_party/sqlite3/src/moz.build +++ b/third_party/sqlite3/src/moz.build @@ -84,6 +84,7 @@ DEFINES['SQLITE_OMIT_BUILTIN_TEST'] = True # Try to use a MEMORY temp store when possible. That allows for better # performance and doesn't suffer from a full separate tmp partition. # Exclude 32bit platforms due to address space fragmentation issues. +# System Sqlite is managed through a PRAGMA instead. if CONFIG['OS_TARGET'] == 'Android': # On Android there's no tmp partition, so always use a MEMORY temp store. DEFINES['SQLITE_TEMP_STORE'] = 3 @@ -93,6 +94,7 @@ elif CONFIG['HAVE_64BIT_BUILD']: # Change the default temp files prefix, to easily distinguish files we created # vs files created by other Sqlite instances in the system. +# This has obviously no effect in case of System Sqlite. DEFINES['SQLITE_TEMP_FILE_PREFIX'] = '"mz_etilqs_"' # Enabling sqlite math functions diff --git a/third_party/sqlite3/src/sqlite.symbols b/third_party/sqlite3/src/sqlite.symbols index 6cfe0f9f8814a5045762d6e984ceb1794de3f550..5b1fccd1ec8ff2b3b949199fd22c9e764f2d6eb8 100644 --- a/third_party/sqlite3/src/sqlite.symbols +++ b/third_party/sqlite3/src/sqlite.symbols @@ -43,9 +43,7 @@ sqlite3_column_text16 sqlite3_column_type sqlite3_column_value sqlite3_commit_hook -#ifdef DEBUG sqlite3_compileoption_used -#endif sqlite3_complete sqlite3_complete16 sqlite3_config diff --git a/toolkit/moz.configure b/toolkit/moz.configure index 03cf56a7fb4b5636dd919ef86aadbb313b99ab5c..10cbc731126e133ef80063e39ac7b6825c062aed 100644 --- a/toolkit/moz.configure +++ b/toolkit/moz.configure @@ -517,6 +517,20 @@ sndio = pkg_check_modules("MOZ_SNDIO", "sndio", when="--enable-sndio") set_config("MOZ_SNDIO", depends_if(sndio)(lambda _: True)) +# SQLite +# ============================================================== +option('--with-system-sqlite', help="Use system sqlite (located with pkgconfig") + +@depends('--with-system-sqlite') +def check_for_sqlite(value): + return bool(value) + +system_sqlite = pkg_check_modules('SQLITE', 'sqlite3', + when=check_for_sqlite) + +set_config('MOZ_SYSTEM_SQLITE', depends_if(system_sqlite)(lambda _: True)) +set_define('MOZ_SYSTEM_SQLITE', depends_if(system_sqlite)(lambda _: True)) + # Javascript engine # ============================================================== include("../js/moz.configure")
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor