commit:     6ffec1b3f3ab908f2e6c7bd7cb2d3f47c56c06c6
Author:     Pacho Ramos <pacho <AT> gentoo <DOT> org>
AuthorDate: Sat May  8 09:06:37 2021 +0000
Commit:     Pacho Ramos <pacho <AT> gentoo <DOT> org>
CommitDate: Sat May  8 09:27:34 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=6ffec1b3

app-cdr/brasero: Port to tracker-3

Use patch from Fedora to port to tracker-3 (they also sent it to upstream)

Package-Manager: Portage-3.0.18, Repoman-3.0.3
Signed-off-by: Pacho Ramos <pacho <AT> gentoo.org>

 app-cdr/brasero/brasero-3.12.2-r3.ebuild           |  87 ++++++++
 .../brasero/files/brasero-3.12.2-tracker3.patch    | 240 +++++++++++++++++++++
 2 files changed, 327 insertions(+)

diff --git a/app-cdr/brasero/brasero-3.12.2-r3.ebuild 
b/app-cdr/brasero/brasero-3.12.2-r3.ebuild
new file mode 100644
index 00000000000..d0279920f1a
--- /dev/null
+++ b/app-cdr/brasero/brasero-3.12.2-r3.ebuild
@@ -0,0 +1,87 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+GNOME2_LA_PUNT="yes"
+GNOME2_EAUTORECONF="yes"
+
+inherit gnome2
+
+DESCRIPTION="CD/DVD burning application for the GNOME desktop"
+HOMEPAGE="https://wiki.gnome.org/Apps/Brasero";
+
+LICENSE="GPL-2+ CC-BY-SA-3.0"
+SLOT="0/3.1" # subslot is 3.suffix of libbrasero-burn3
+IUSE="+css +introspection +libburn mp3 nautilus packagekit playlist test 
tracker"
+RESTRICT="!test? ( test )"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~ia64 ~ppc ~ppc64 ~sparc ~x86"
+
+COMMON_DEPEND="
+       >=dev-libs/glib-2.29.14:2
+       >=x11-libs/gtk+-3:3[introspection?]
+       media-libs/gstreamer:1.0
+       media-libs/gst-plugins-base:1.0
+       >=dev-libs/libxml2-2.6:2
+       >=x11-libs/libnotify-0.6.1:=
+
+       media-libs/libcanberra[gtk3]
+       x11-libs/libICE
+       x11-libs/libSM
+
+       introspection? ( >=dev-libs/gobject-introspection-1.30:= )
+       libburn? (
+               >=dev-libs/libburn-0.4:=
+               >=dev-libs/libisofs-0.6.4:= )
+       nautilus? ( >=gnome-base/nautilus-2.91.90 )
+       playlist? ( >=dev-libs/totem-pl-parser-2.29.1:= )
+       tracker? ( app-misc/tracker:3= )
+"
+RDEPEND="${COMMON_DEPEND}
+       media-libs/gst-plugins-good:1.0
+       media-plugins/gst-plugins-meta:1.0[mp3?]
+       x11-themes/hicolor-icon-theme
+       css? ( media-libs/libdvdcss:1.2 )
+       !libburn? (
+               app-cdr/cdrdao
+               app-cdr/cdrtools
+               app-cdr/dvd+rw-tools
+       )
+       packagekit? ( app-admin/packagekit-base )
+"
+DEPEND="${COMMON_DEPEND}
+       >=dev-util/intltool-0.50
+       dev-util/itstool
+       >=dev-util/gtk-doc-am-1.12
+       sys-devel/gettext
+       virtual/pkgconfig
+       test? ( app-text/docbook-xml-dtd:4.3 )
+"
+# eautoreconf deps
+#      app-text/yelp-tools
+#      gnome-base/gnome-common
+
+PDEPEND="gnome-base/gvfs"
+
+PATCHES=(
+       # https://gitlab.gnome.org/GNOME/brasero/-/merge_requests/10
+       "${FILESDIR}"/${P}-tracker3.patch
+)
+
+src_configure() {
+       gnome2_src_configure \
+               --disable-caches \
+               $(use_enable !libburn cdrtools) \
+               $(use_enable !libburn cdrkit) \
+               $(use_enable !libburn cdrdao) \
+               $(use_enable !libburn growisofs) \
+               $(use_enable introspection) \
+               $(use_enable libburn libburnia) \
+               $(use_enable nautilus) \
+               $(use_enable playlist) \
+               $(use_enable tracker search)
+}
+
+src_install() {
+       gnome2_src_install
+       mv "${ED}"/usr/share/{appdata,metainfo} || die
+}

diff --git a/app-cdr/brasero/files/brasero-3.12.2-tracker3.patch 
b/app-cdr/brasero/files/brasero-3.12.2-tracker3.patch
new file mode 100644
index 00000000000..7a98f336cc1
--- /dev/null
+++ b/app-cdr/brasero/files/brasero-3.12.2-tracker3.patch
@@ -0,0 +1,240 @@
+From ca0d487aac3b9cf21e520a00b94cb3eaf833b9a3 Mon Sep 17 00:00:00 2001
+From: Carlos Garnacho <[email protected]>
+Date: Thu, 24 Dec 2020 12:19:49 +0100
+Subject: [PATCH 1/5] Obtain TrackerSparqlConnection in a single point
+
+The is_available vmethod tries to create a connection if it's not
+there. But the BraseroSearchTracker initialization already tries to
+obtain the SPARQL connection. Let this method return wether
+initialiation was successful.
+---
+ src/brasero-search-tracker.c | 6 ------
+ 1 file changed, 6 deletions(-)
+
+diff --git a/src/brasero-search-tracker.c b/src/brasero-search-tracker.c
+index fe7be2bd..f8c29c0d 100644
+--- a/src/brasero-search-tracker.c
++++ b/src/brasero-search-tracker.c
+@@ -56,12 +56,6 @@ brasero_search_tracker_is_available (BraseroSearchEngine 
*engine)
+       BraseroSearchTrackerPrivate *priv;
+ 
+       priv = BRASERO_SEARCH_TRACKER_PRIVATE (engine);
+-      GError *error = NULL;
+-      if (priv->connection)
+-              return TRUE;
+-      
+-      priv->cancellable = g_cancellable_new ();
+-      priv->connection = tracker_sparql_connection_get (priv->cancellable, 
&error);
+       return (priv->connection != NULL);
+ }
+ 
+-- 
+GitLab
+
+
+From c0dace005ec34b345845aacd1f929fd618b199af Mon Sep 17 00:00:00 2001
+From: Carlos Garnacho <[email protected]>
+Date: Thu, 24 Dec 2020 12:37:13 +0100
+Subject: [PATCH 2/5] Fix ORDER BY clauses in Tracker search
+
+The ?urn variable is not defined anywhere else in the query, so
+ordering is left undefined. Access the url/filename properly here.
+---
+ src/brasero-search-tracker.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/brasero-search-tracker.c b/src/brasero-search-tracker.c
+index f8c29c0d..94085070 100644
+--- a/src/brasero-search-tracker.c
++++ b/src/brasero-search-tracker.c
+@@ -307,7 +307,7 @@ brasero_search_tracker_query_start_real 
(BraseroSearchEngine *search,
+       g_string_append (query, ")");
+ 
+       g_string_append (query,
+-                       "} ORDER BY DESC(nie:url(?urn)) 
DESC(nfo:fileName(?urn))");
++                       "} ORDER BY DESC(?url) DESC(nfo:fileName(?file))");
+ 
+       tracker_sparql_connection_query_async (priv->connection,
+                                              query->str,
+-- 
+GitLab
+
+
+From f7181445bf9c88b7fab1bb5237d602b491694a9e Mon Sep 17 00:00:00 2001
+From: Carlos Garnacho <[email protected]>
+Date: Thu, 24 Dec 2020 13:04:03 +0100
+Subject: [PATCH 3/5] Only use fts:rank with FTS searches
+
+This fixes two things:
+- The use of fts:match depends on priv->keywords being set, but
+  fts:rank() has undefined behavior if fts:match is not present.
+  Its value is returned in the cursor, but fortunately unused,
+  so it can go away.
+
+- Fixes "garbage" being added at the end of the query, concretely
+  ") } ORDER BY ... " is appended at the supposed end of the query
+  string. Older SPARQL parser implementations would allow garbage
+  at the end of its parsing state, I suspect "LIMIT 0 OFFSET 10000"
+  was just a mean to push it to that state that it'd allow the
+  remaining string, so that is gone too.
+---
+ src/brasero-search-tracker.c | 21 +++++++++------------
+ 1 file changed, 9 insertions(+), 12 deletions(-)
+
+diff --git a/src/brasero-search-tracker.c b/src/brasero-search-tracker.c
+index 94085070..ae1d388a 100644
+--- a/src/brasero-search-tracker.c
++++ b/src/brasero-search-tracker.c
+@@ -234,7 +234,7 @@ brasero_search_tracker_query_start_real 
(BraseroSearchEngine *search,
+ 
+       priv = BRASERO_SEARCH_TRACKER_PRIVATE (search);
+ 
+-      query = g_string_new ("SELECT ?file ?url ?mime fts:rank(?file) "        
/* Which variables should be returned */
++      query = g_string_new ("SELECT ?file ?url ?mime "                        
/* Which variables should be returned */
+                             "WHERE {"                                         
/* Start defining the search and its scope */
+                             "  ?file a nfo:FileDataObject . "                 
/* File must be a file (not a stream, ...) */
+                             "  ?file nie:url ?url . "                         
/* Get the url of the file */
+@@ -293,21 +293,18 @@ brasero_search_tracker_query_start_real 
(BraseroSearchEngine *search,
+                                " ) ");
+       }
+ 
+-      if (priv->keywords)
++      if (priv->keywords) {
+               g_string_append_printf (query,
+                                       "  ?file fts:match \"%s\" ",            
/* File must match possible keywords */
+                                       priv->keywords);
+ 
+-      g_string_append (query,
+-                       " } "
+-                       "ORDER BY ASC(fts:rank(?file)) "
+-                       "OFFSET 0 "
+-                       "LIMIT 10000");
+-
+-      g_string_append (query, ")");
+-
+-      g_string_append (query,
+-                       "} ORDER BY DESC(?url) DESC(nfo:fileName(?file))");
++              g_string_append (query,
++                               " } "
++                               "ORDER BY ASC(fts:rank(?file))");
++      } else {
++              g_string_append (query,
++                               "} ORDER BY DESC(?url) 
DESC(nfo:fileName(?file))");
++      }
+ 
+       tracker_sparql_connection_query_async (priv->connection,
+                                              query->str,
+-- 
+GitLab
+
+
+From ede7758e2fae487d57be641a120c4c02bfd249f1 Mon Sep 17 00:00:00 2001
+From: Carlos Garnacho <[email protected]>
+Date: Thu, 24 Dec 2020 13:15:21 +0100
+Subject: [PATCH 4/5] Observe nfo:FileDataObject/nie:InformationElement split
+
+These resources are interpreted differently in Tracker 3.0 compared
+to older versions, the newer version makes those 2 different resources
+(one representing the "file", other the "content) that relate to each
+other. In older tracker versions, these 2 aspects were conflated in
+a single resource.
+
+The query is implicitly crossing that barrier, so make it explicit.
+With this change, the query may run with either version.
+---
+ src/brasero-search-tracker.c | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/src/brasero-search-tracker.c b/src/brasero-search-tracker.c
+index ae1d388a..9aa06289 100644
+--- a/src/brasero-search-tracker.c
++++ b/src/brasero-search-tracker.c
+@@ -238,7 +238,8 @@ brasero_search_tracker_query_start_real 
(BraseroSearchEngine *search,
+                             "WHERE {"                                         
/* Start defining the search and its scope */
+                             "  ?file a nfo:FileDataObject . "                 
/* File must be a file (not a stream, ...) */
+                             "  ?file nie:url ?url . "                         
/* Get the url of the file */
+-                            "  ?file nie:mimeType ?mime . ");                 
/* Get its mime */
++                            "  ?file nie:mimeType ?mime . "                   
/* Get its mime */
++                            "  ?content nie:isStoredAs ?file . ");            
/* Get the resource representing the content */
+ 
+       if (priv->mimes) {
+               int i;
+@@ -259,7 +260,7 @@ brasero_search_tracker_query_start_real 
(BraseroSearchEngine *search,
+               gboolean param_added = FALSE;
+ 
+               g_string_append (query,
+-                               "  ?file a ?type . "
++                               "  ?content a ?type . "
+                                "  FILTER ( ");
+ 
+               if (priv->scope & BRASERO_SEARCH_SCOPE_MUSIC) {
+-- 
+GitLab
+
+
+From 05589be7da3a0dfb00617df049d129abba703c36 Mon Sep 17 00:00:00 2001
+From: Carlos Garnacho <[email protected]>
+Date: Thu, 24 Dec 2020 13:22:43 +0100
+Subject: [PATCH 5/5] Support Tracker 3.0
+
+Add the compile-time checks, and add the minimal code catering for
+the API changes. In 3.0 connections are no longer singletons.
+---
+ configure.ac                 | 6 +++++-
+ src/brasero-search-tracker.c | 8 ++++++++
+ 2 files changed, 13 insertions(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index d0c7a870..96afc551 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -388,7 +388,7 @@ AC_ARG_ENABLE(search,
+ if test x"$enable_search" != "xno"; then
+         # Try to figure out the tracker API version to use
+         tracker_api="0.10"
+-        m4_foreach([VERSION], [[0.10], [0.12], [0.14], [0.16], [0.18], [1.0], 
[2.0]],
++        m4_foreach([VERSION], [[0.10], [0.12], [0.14], [0.16], [0.18], [1.0], 
[2.0], [3.0]],
+                               [PKG_CHECK_EXISTS([tracker-sparql-VERSION >= 
$TRACKER_REQUIRED],
+                                                 [tracker_api="VERSION"])
+                               ])
+@@ -408,6 +408,10 @@ if test x"$enable_search" = "xyes"; then
+       AC_SUBST(BRASERO_SEARCH_LIBS)
+       build_tracker="yes"
+       build_search="yes"
++
++      if test x"$tracker_api" = x"3.0"; then
++              AC_DEFINE(HAVE_TRACKER3, 1, [define if tracker3 is available])
++      fi
+ else
+       build_search="no"
+ fi
+diff --git a/src/brasero-search-tracker.c b/src/brasero-search-tracker.c
+index 9aa06289..40c5f1ac 100644
+--- a/src/brasero-search-tracker.c
++++ b/src/brasero-search-tracker.c
+@@ -17,6 +17,8 @@
+  * with this program.  If not, see <http://www.gnu.org/licenses/>.
+  */
+ 
++#include "config.h"
++
+ #include <stdlib.h>
+ 
+ #include <libtracker-sparql/tracker-sparql.h>
+@@ -444,7 +446,13 @@ brasero_search_tracker_init (BraseroSearchTracker *object)
+ 
+       priv = BRASERO_SEARCH_TRACKER_PRIVATE (object);
+       priv->cancellable = g_cancellable_new ();
++
++#ifdef HAVE_TRACKER3
++      priv->connection = tracker_sparql_connection_bus_new 
("org.freedesktop.Tracker3.Miner.Files",
++                                                            NULL, NULL, 
&error);
++#else
+       priv->connection = tracker_sparql_connection_get (priv->cancellable, 
&error);
++#endif
+ 
+       if (error) {
+               g_warning ("Could not establish a connection to Tracker: %s", 
error->message);
+-- 
+GitLab
+

Reply via email to