SHA256
1
0
forked from pool/tracker

Accepting request 1158704 from GNOME:Next

GNOME 46

OBS-URL: https://build.opensuse.org/request/show/1158704
OBS-URL: https://build.opensuse.org/package/show/GNOME:Factory/tracker?expand=0&rev=263
This commit is contained in:
Dominique Leuenberger 2024-03-19 13:31:23 +00:00 committed by Git OBS Bridge
parent f5145e69b9
commit 593e6e482b
8 changed files with 86 additions and 378 deletions

View File

@ -1,313 +0,0 @@
From 26c69a82ceb44d0f4311cb04d38bcd44b94634e2 Mon Sep 17 00:00:00 2001
From: Carlos Garnacho <carlosg@gnome.org>
Date: Thu, 7 Dec 2023 09:33:44 +0100
Subject: [PATCH] libtracker-sparql: Decouple FTS initialization from
ontologies
Since we just need the FTS properties for fts:offsets being called
at runtime, we can pass the TrackerDataManager (that we know early
in startup) and let it figure out the FTS properties from there
when it's actually needed.
This is just the refactor to make that possible, there's no
functional changes in this commit.
---
.../core/tracker-data-manager.c | 13 +++--
.../core/tracker-db-interface-sqlite.c | 29 ++++++-----
.../core/tracker-db-interface-sqlite.h | 5 +-
.../core/tracker-fts-tokenizer.c | 48 +++++++++++++++++--
.../core/tracker-fts-tokenizer.h | 4 +-
src/libtracker-sparql/core/tracker-fts.c | 40 ----------------
src/libtracker-sparql/core/tracker-fts.h | 5 --
7 files changed, 75 insertions(+), 69 deletions(-)
diff --git a/src/libtracker-sparql/core/tracker-data-manager.c b/src/libtracker-sparql/core/tracker-data-manager.c
index ef3497a834..f0797d642d 100644
--- a/src/libtracker-sparql/core/tracker-data-manager.c
+++ b/src/libtracker-sparql/core/tracker-data-manager.c
@@ -3863,11 +3863,14 @@ tracker_data_manager_init_fts (TrackerDataManager *manager,
gboolean create,
GError **error)
{
- return tracker_db_interface_sqlite_fts_init (iface,
- database,
- manager->ontologies,
- create,
- error);
+ if (!tracker_db_interface_sqlite_fts_init (iface, manager->flags, error))
+ return FALSE;
+ if (!create)
+ return TRUE;
+ return tracker_db_interface_sqlite_fts_create_table (iface,
+ database,
+ manager->ontologies,
+ error);
}
static gboolean
diff --git a/src/libtracker-sparql/core/tracker-db-interface-sqlite.c b/src/libtracker-sparql/core/tracker-db-interface-sqlite.c
index c001c9aafc..05773bd3e5 100644
--- a/src/libtracker-sparql/core/tracker-db-interface-sqlite.c
+++ b/src/libtracker-sparql/core/tracker-db-interface-sqlite.c
@@ -37,6 +37,7 @@
#include <libtracker-sparql/tracker-private.h>
#include "tracker-fts.h"
+#include "tracker-fts-tokenizer.h"
#include "tracker-collation.h"
#include "tracker-db-interface-sqlite.h"
#include "tracker-db-manager.h"
@@ -2027,20 +2028,26 @@ close_database (TrackerDBInterface *db_interface)
}
gboolean
-tracker_db_interface_sqlite_fts_init (TrackerDBInterface *db_interface,
- const gchar *database,
- TrackerOntologies *ontologies,
- gboolean create,
- GError **error)
+tracker_db_interface_sqlite_fts_init (TrackerDBInterface *db_interface,
+ TrackerDBManagerFlags fts_flags,
+ GError **error)
{
- GError *inner_error = NULL;
+ return tracker_tokenizer_initialize (db_interface->db,
+ db_interface,
+ fts_flags,
+ db_interface->user_data,
+ error);
+}
- if (!tracker_fts_init_db (db_interface->db, db_interface,
- db_interface->flags, ontologies, error))
- return FALSE;
+gboolean
+tracker_db_interface_sqlite_fts_create_table (TrackerDBInterface *db_interface,
+ const gchar *database,
+ TrackerOntologies *ontologies,
+ GError **error)
+{
+ GError *inner_error = NULL;
- if (create &&
- !tracker_fts_create_table (db_interface->db, database, "fts5",
+ if (!tracker_fts_create_table (db_interface->db, database, "fts5",
ontologies,
&inner_error)) {
g_propagate_prefixed_error (error,
diff --git a/src/libtracker-sparql/core/tracker-db-interface-sqlite.h b/src/libtracker-sparql/core/tracker-db-interface-sqlite.h
index 64b0be2a78..cb779ea3c7 100644
--- a/src/libtracker-sparql/core/tracker-db-interface-sqlite.h
+++ b/src/libtracker-sparql/core/tracker-db-interface-sqlite.h
@@ -23,6 +23,7 @@
#include "config.h"
#include "tracker-db-interface.h"
+#include "tracker-db-manager.h"
G_BEGIN_DECLS
@@ -46,9 +47,11 @@ TrackerDBInterface *tracker_db_interface_sqlite_new (const gc
gint64 tracker_db_interface_sqlite_get_last_insert_id (TrackerDBInterface *interface);
void tracker_db_interface_sqlite_enable_shared_cache (void);
gboolean tracker_db_interface_sqlite_fts_init (TrackerDBInterface *interface,
+ TrackerDBManagerFlags fts_flags,
+ GError **error);
+gboolean tracker_db_interface_sqlite_fts_create_table (TrackerDBInterface *interface,
const gchar *database,
TrackerOntologies *ontologies,
- gboolean create,
GError **error);
void tracker_db_interface_sqlite_reset_collator (TrackerDBInterface *interface);
gboolean tracker_db_interface_sqlite_wal_checkpoint (TrackerDBInterface *interface,
diff --git a/src/libtracker-sparql/core/tracker-fts-tokenizer.c b/src/libtracker-sparql/core/tracker-fts-tokenizer.c
index 9cf71b99f0..2e6dd0591c 100644
--- a/src/libtracker-sparql/core/tracker-fts-tokenizer.c
+++ b/src/libtracker-sparql/core/tracker-fts-tokenizer.c
@@ -48,6 +48,7 @@ struct TrackerTokenizer {
struct TrackerTokenizerFunctionData {
TrackerDBInterface *interface;
+ TrackerDataManager *data_manager;
gchar **property_names;
};
@@ -169,6 +170,37 @@ offsets_tokenizer_func (void *data,
return SQLITE_OK;
}
+static gboolean
+ensure_fts_properties (TrackerTokenizerFunctionData *data)
+{
+ TrackerOntologies *ontologies;
+ TrackerProperty **properties;
+ GArray *property_names;
+ guint i, len;
+
+ if (data->property_names)
+ return data->property_names[0] != NULL;
+
+ ontologies = tracker_data_manager_get_ontologies (data->data_manager);
+
+ property_names = g_array_new (TRUE, FALSE, sizeof (gchar *));
+ properties = tracker_ontologies_get_properties (ontologies, &len);
+
+ for (i = 0; i < len; i++) {
+ gchar *column;
+
+ if (!tracker_property_get_fulltext_indexed (properties[i]))
+ continue;
+
+ column = g_strdup (tracker_property_get_name (properties[i]));
+ g_array_append_val (property_names, column);
+ }
+
+ data->property_names = (gchar **) g_array_free (property_names, FALSE);
+
+ return data->property_names[0] != NULL;
+}
+
static void
tracker_offsets_function (const Fts5ExtensionApi *api,
Fts5Context *fts_ctx,
@@ -189,6 +221,12 @@ tracker_offsets_function (const Fts5ExtensionApi *api,
}
data = api->xUserData (fts_ctx);
+
+ if (!ensure_fts_properties (data)) {
+ sqlite3_result_null (ctx);
+ return;
+ }
+
rc = api->xInstCount (fts_ctx, &n_hits);
if (rc != SQLITE_OK) {
@@ -296,14 +334,14 @@ error:
}
static TrackerTokenizerFunctionData *
-tracker_tokenizer_function_data_new (TrackerDBInterface *interface,
- const gchar **property_names)
+tracker_tokenizer_function_data_new (TrackerDBInterface *interface,
+ TrackerDataManager *data_manager)
{
TrackerTokenizerFunctionData *data;
data = g_new0 (TrackerTokenizerFunctionData, 1);
data->interface = interface;
- data->property_names = g_strdupv ((gchar **) property_names);
+ data->data_manager = data_manager;
return data;
}
@@ -319,7 +357,7 @@ gboolean
tracker_tokenizer_initialize (sqlite3 *db,
TrackerDBInterface *interface,
TrackerDBManagerFlags flags,
- const gchar **property_names,
+ TrackerDataManager *data_manager,
GError **error)
{
TrackerTokenizerData *data;
@@ -338,7 +376,7 @@ tracker_tokenizer_initialize (sqlite3 *db,
tracker_tokenizer_data_free);
/* Offsets */
- func_data = tracker_tokenizer_function_data_new (interface, property_names);
+ func_data = tracker_tokenizer_function_data_new (interface, data_manager);
api->xCreateFunction (api, "tracker_offsets", func_data,
&tracker_offsets_function,
(GDestroyNotify) tracker_tokenizer_function_data_free);
diff --git a/src/libtracker-sparql/core/tracker-fts-tokenizer.h b/src/libtracker-sparql/core/tracker-fts-tokenizer.h
index 57bca46a56..76e0bbcbb9 100644
--- a/src/libtracker-sparql/core/tracker-fts-tokenizer.h
+++ b/src/libtracker-sparql/core/tracker-fts-tokenizer.h
@@ -22,7 +22,7 @@
#include <sqlite3.h>
#include <glib.h>
-#include "tracker-db-manager.h"
+#include "tracker-data-manager.h"
#ifndef __TRACKER_FTS_TOKENIZER_H__
#define __TRACKER_FTS_TOKENIZER_H__
@@ -30,7 +30,7 @@
gboolean tracker_tokenizer_initialize (sqlite3 *db,
TrackerDBInterface *interface,
TrackerDBManagerFlags flags,
- const gchar **property_names,
+ TrackerDataManager *data_manager,
GError **error);
#endif /* __TRACKER_FTS_TOKENIZER_H__ */
diff --git a/src/libtracker-sparql/core/tracker-fts.c b/src/libtracker-sparql/core/tracker-fts.c
index 96ec9e9e76..f622855ee4 100644
--- a/src/libtracker-sparql/core/tracker-fts.c
+++ b/src/libtracker-sparql/core/tracker-fts.c
@@ -43,46 +43,6 @@ has_fts_properties (TrackerOntologies *ontologies)
return FALSE;
}
-static gchar **
-get_fts_properties (TrackerOntologies *ontologies)
-{
- TrackerProperty **properties;
- GArray *property_names;
- guint i, len;
-
- property_names = g_array_new (TRUE, FALSE, sizeof (gchar *));
- properties = tracker_ontologies_get_properties (ontologies, &len);
-
- for (i = 0; i < len; i++) {
- gchar *column;
-
- if (!tracker_property_get_fulltext_indexed (properties[i]))
- continue;
-
- column = g_strdup (tracker_property_get_name (properties[i]));
- g_array_append_val (property_names, column);
- }
-
- return (gchar **) g_array_free (property_names, FALSE);
-}
-
-gboolean
-tracker_fts_init_db (sqlite3 *db,
- TrackerDBInterface *interface,
- TrackerDBManagerFlags flags,
- TrackerOntologies *ontologies,
- GError **error)
-{
- gchar **property_names;
- gboolean retval;
-
- property_names = get_fts_properties (ontologies);
- retval = tracker_tokenizer_initialize (db, interface, flags, (const gchar **) property_names, error);
- g_strfreev (property_names);
-
- return retval;
-}
-
gboolean
tracker_fts_create_table (sqlite3 *db,
const gchar *database,
diff --git a/src/libtracker-sparql/core/tracker-fts.h b/src/libtracker-sparql/core/tracker-fts.h
index 4370d3f667..cf3e1d9cbd 100644
--- a/src/libtracker-sparql/core/tracker-fts.h
+++ b/src/libtracker-sparql/core/tracker-fts.h
@@ -30,11 +30,6 @@
G_BEGIN_DECLS
-gboolean tracker_fts_init_db (sqlite3 *db,
- TrackerDBInterface *interface,
- TrackerDBManagerFlags flags,
- TrackerOntologies *ontologies,
- GError **error);
gboolean tracker_fts_create_table (sqlite3 *db,
const gchar *database,
gchar *table_name,
--
GitLab

View File

@ -1,49 +0,0 @@
From 373535883c5b89fa1b3cd958274c36bdaf543db6 Mon Sep 17 00:00:00 2001
From: Carlos Garnacho <carlosg@gnome.org>
Date: Thu, 7 Dec 2023 10:16:16 +0100
Subject: [PATCH] libtracker-sparql: Move FTS initialization to an earlier
stage
With SQLite >= 3.44.x, the check_integrity pragma may involve existing
virtual tables and their xIntegrity vmethod. This includes FTS5 tables,
so we need to set up the FTS5 tokenizer at an earlier stage, so that
possible integrity checks happening on startup have everything set up.
Closes: https://gitlab.gnome.org/GNOME/tracker/-/issues/418
---
src/libtracker-sparql/core/tracker-data-manager.c | 2 --
src/libtracker-sparql/core/tracker-db-manager.c | 5 +++++
2 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/src/libtracker-sparql/core/tracker-data-manager.c b/src/libtracker-sparql/core/tracker-data-manager.c
index f0797d642d..dff6b66542 100644
--- a/src/libtracker-sparql/core/tracker-data-manager.c
+++ b/src/libtracker-sparql/core/tracker-data-manager.c
@@ -3863,8 +3863,6 @@ tracker_data_manager_init_fts (TrackerDataManager *manager,
gboolean create,
GError **error)
{
- if (!tracker_db_interface_sqlite_fts_init (iface, manager->flags, error))
- return FALSE;
if (!create)
return TRUE;
return tracker_db_interface_sqlite_fts_create_table (iface,
diff --git a/src/libtracker-sparql/core/tracker-db-manager.c b/src/libtracker-sparql/core/tracker-db-manager.c
index 6952af082b..8427ed71b7 100644
--- a/src/libtracker-sparql/core/tracker-db-manager.c
+++ b/src/libtracker-sparql/core/tracker-db-manager.c
@@ -783,6 +783,11 @@ tracker_db_manager_create_db_interface (TrackerDBManager *db_manager,
return NULL;
}
+ if (!tracker_db_interface_sqlite_fts_init (connection,
+ db_manager->flags,
+ error))
+ return FALSE;
+
tracker_db_interface_set_max_stmt_cache_size (connection,
TRACKER_DB_STATEMENT_CACHE_TYPE_SELECT,
db_manager->s_cache_size);
--
GitLab

19
_service Normal file
View File

@ -0,0 +1,19 @@
<?xml version="1.0"?>
<services>
<service name="obs_scm" mode="manual">
<param name="scm">git</param>
<param name="url">https://gitlab.gnome.org/GNOME/tracker.git</param>
<param name="revision">3.7.0</param>
<param name="versionformat">@PARENT_TAG@+@TAG_OFFSET@</param>
<param name="versionrewrite-pattern">v?(.*)\+0</param>
<param name="versionrewrite-replacement">\1</param>
<!-- <param name="changesgenerate">enable</param> -->
</service>
<service name="tar" mode="buildtime"/>
<service name="recompress" mode="buildtime">
<param name="file">*.tar</param>
<param name="compression">zst</param>
</service>
<service name="set_version" mode="manual" />
</services>

BIN
tracker-3.6.0.tar.xz (Stored with Git LFS)

Binary file not shown.

3
tracker-3.7.0.obscpio Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ee1098ce36d1b15e225fee87c6a1244864e5da2e74403deda773ca8c6398fb28
size 10335245

View File

@ -1,9 +1,56 @@
-------------------------------------------------------------------
Sun Mar 17 09:39:44 UTC 2024 - Dominique Leuenberger <dimstar@opensuse.org>
- Update to version 3.7.0:
+ Handle POST requests in HTTP endpoints.
+ Fix a number of Coverity and static scan reports.
+ Drop deprecated SQLite API.
+ Test improvements.
+ Updated translations.
-------------------------------------------------------------------
Thu Mar 7 08:07:16 UTC 2024 - Dominique Leuenberger <dimstar@opensuse.org>
- Update to version 3.7.rc:
+ Improve database integrity checks so they don't necessarily
happen after unclean exit, and so there are greater guarantees
to repair the damage.
+ Handle HTTPS in SERVICE syntax.
+ Fixes for 32-bit platforms.
+ Fixes to bash completion.
+ Updated translations.
-------------------------------------------------------------------
Thu Mar 7 06:43:30 UTC 2024 - Dominique Leuenberger <dimstar@opensuse.org>
- Update to version 3.7.beta:
+ Add Avahi support to the TrackerEndpointHttp API object.
+ There is now an --arg argument in `tracker3 sparql` subcommand
to assign values to parameters in queries.
+ CLI subcommands are now split into their own executables.
+ Improvements in SPARQL handling.
+ Code cleanups and refactors.
- Changes from version 3.7.alpha:
+ New TrackerEndpoint access control API.
+ New API to map language tagged strings to rdf:langString.
+ Embed Nepomuk ontology as a GResource.
+ Allow using TrackerEndpoint on private D-Bus connections.
+ Cache SPARQL statements in D-Bus endpoints.
+ Reduce heap memory usage in large transactions over D-Bus
endpoints.
+ Make internals future proof wrt handling of string literals
in SQLite.
+ Threading improvements for direct connection SELECT queries.
- Add pkgconfig(avahi-glib) BuildRequires: new dependency.
- Drop 0001-decouple-fts-initialization-from-ontologies.patch and
0002-early-fts-initialization.patch: fixed upstream.
-------------------------------------------------------------------
Wed Mar 6 10:50:26 UTC 2024 - Yifan Jiang <yfjiang@suse.com>
- Add patches to adapt SQLite 3.44 (glgo#GNOME/tracker#418):
+ 0001-decouple-fts-initialization-from-ontologies.patch
+ 0002-early-fts-initialization.patch
+ 0002-early-fts-initialization.patch
-------------------------------------------------------------------
Mon Sep 18 11:50:17 UTC 2023 - Marcus Meissner <meissner@suse.com>

4
tracker.obsinfo Normal file
View File

@ -0,0 +1,4 @@
name: tracker
version: 3.7.0
mtime: 1710625708
commit: 86ebd86cb4e51dfd9ab702911dd2e99f7128046b

View File

@ -21,17 +21,13 @@
%define RPMTrackerAPI 3_0
Name: tracker
Version: 3.6.0
Version: 3.7.0
Release: 0
Summary: Object database, tag/metadata database, search tool and indexer
License: GPL-2.0-or-later
Group: Productivity/Other
URL: https://wiki.gnome.org/Projects/Tracker
Source0: https://download.gnome.org/sources/tracker/3.6/%{name}-%{version}.tar.xz
# PATCH-FIX-UPSTREAM 0001-decouple-fts-initialization-from-ontologies.patch glgo#GNOME/tracker#418 yfjiang@suse.com -- Decouple FTS initialization from ongologies
Patch0: 0001-decouple-fts-initialization-from-ontologies.patch
# PATCH-FIX-UPSTREAM 0002-early-fts-initialization.patch glgo#GNOME/tracker#418 yfjiang@suse.com -- Move FTS initialization to an earlier stage
Patch1: 0002-early-fts-initialization.patch
Source0: %{name}-%{version}.tar.zst
BuildRequires: asciidoc
BuildRequires: fdupes
@ -47,6 +43,7 @@ BuildRequires: python3-gobject
BuildRequires: sqlite3-devel >= 3.35.2
BuildRequires: vala >= 0.18.0
BuildRequires: zlib-devel
BuildRequires: pkgconfig(avahi-glib)
BuildRequires: pkgconfig(dbus-1)
BuildRequires: pkgconfig(gdk-pixbuf-2.0)
BuildRequires: pkgconfig(gi-docgen)
@ -180,12 +177,18 @@ mkdir %{buildroot}%{_datadir}/tracker3/domain-ontologies
%files
%license COPYING
%{_bindir}/tracker3
%{_bindir}/tracker3-endpoint
%{_bindir}/tracker3-export
%{_bindir}/tracker3-help
%{_bindir}/tracker3-import
%{_bindir}/tracker3-sparql
%{_bindir}/tracker3-sql
%{_datadir}/bash-completion/completions/tracker3
%dir %{_datadir}/tracker3
%{_datadir}/tracker3/commands/
%dir %{_libdir}/tracker-%{TrackerAPI}/
%{_libdir}/tracker-%{TrackerAPI}/libtracker-http-soup3.so
%{_libdir}/tracker-%{TrackerAPI}/libtracker-parser-libicu.so
%{_datadir}/bash-completion/completions/tracker3
%dir %{_datadir}/tracker3/
%{_libexecdir}/tracker3/
%{_libexecdir}/tracker-xdg-portal-3
%{_mandir}/man1/tracker3-endpoint.1.gz
%{_mandir}/man1/tracker3-export.1.gz
@ -198,7 +201,6 @@ mkdir %{buildroot}%{_datadir}/tracker3/domain-ontologies
%files -n tracker-data-files
%dir %{_datadir}/tracker3/domain-ontologies
%{_datadir}/tracker3/ontologies/
%files -n libtracker-sparql-%{RPMTrackerAPI}-0
%{_libdir}/libtracker-sparql*.so.*
@ -210,8 +212,6 @@ mkdir %{buildroot}%{_datadir}/tracker3/domain-ontologies
%doc AUTHORS README.md NEWS
%doc %{_datadir}/doc/Tracker-%{TrackerAPI}
%{_datadir}/gir-1.0/*.gir
%dir %{_datadir}/tracker3
%dir %{_datadir}/tracker3/domain-ontologies
%dir %{_datadir}/vala
%dir %{_datadir}/vala/vapi
%{_datadir}/vala/vapi/*.deps