[totem/sam/tracker3-flatpak-bundle: 1/2] Run Tracker Miners inside the Flatpak sandbox




commit 3f0bca9c8d6a36fd5f0d2b67e78dac461bc35fa9
Author: Sam Thursfield <sam afuera me uk>
Date:   Sun Aug 2 12:28:11 2020 +0200

    Run Tracker Miners inside the Flatpak sandbox
    
    The Flatpak version of Totem will now run a local tracker-miner-fs-3
    instance instead of using the host instance, in all cases.
    
    For background, see:
    https://gitlab.gnome.org/GNOME/totem/-/merge_requests/154#note_881125

 flatpak/org.gnome.Totem.Devel.json                 | 33 +++++++++++++++++++---
 ...nome.Totem.Devel.Tracker3.Miner.Extract.service |  7 +++++
 ....gnome.Totem.Devel.Tracker3.Miner.Files.service |  7 +++++
 flatpak/tracker/org.gnome.Totem.Devel.domain.rule  | 20 +++++++++++++
 src/totem-grilo.c                                  |  6 ++++
 5 files changed, 69 insertions(+), 4 deletions(-)
---
diff --git a/flatpak/org.gnome.Totem.Devel.json b/flatpak/org.gnome.Totem.Devel.json
index 5f6550080..516d48e78 100644
--- a/flatpak/org.gnome.Totem.Devel.json
+++ b/flatpak/org.gnome.Totem.Devel.json
@@ -44,9 +44,7 @@
         /* MPRIS plugin */
         "--own-name=org.mpris.MediaPlayer2.totem",
         /* im-status plugin */
-        "--talk-name=org.gnome.SessionManager",
-        /* Tracker 3 policy */
-        "--add-policy=Tracker3.dbus:org.freedesktop.Tracker3.Miner.Files=tracker:Video"
+        "--talk-name=org.gnome.SessionManager"
     ],
     "cleanup": [ "/include", "/share/bash-completion" ],
     "modules": [
@@ -165,6 +163,24 @@
                 }
             ]
         },
+        {
+            "name": "tracker-miners",
+            "cleanup": [ "/bin", "/etc", "/share/dbus-1/services" ],
+            "buildsystem": "meson",
+            "config-opts" : [
+                "-Dman=false",
+                "-Dminer_fs=true",
+                "-Dminer_rss=false",
+                "-Dsystemd_user_services=false",
+                "-Dwriteback=false"
+            ],
+            "sources": [
+                {
+                    "type": "git",
+                    "url": "https://gitlab.gnome.org/GNOME/tracker-miners.git";
+                }
+            ]
+        },
         {
             "name": "libmediaart",
             "cleanup": [ "/bin", "/etc", "/libexec" ],
@@ -213,7 +229,7 @@
                 "-Denable-lua-factory=yes",
                 "-Denable-metadata-store=yes",
                 "-Denable-vimeo=yes",
-                "-Denable-tracker=yes",
+                "-Denable-tracker3=yes",
                 "-Denable-local-metadata=yes",
                 "-Denable-dleyna=yes",
                 "-Denable-thetvdb=yes",
@@ -286,10 +302,19 @@
                 "-Denable-easy-codec-installation=no",
                 "-Dprofile=development"
             ],
+            "post-install": [
+                "install --mode=644 -D --target-directory=/app/share/tracker3/domain-ontologies 
../org.gnome.Totem.Devel.domain.rule",
+                "install --mode=644 -D --target-directory=/app/share/dbus-1/services 
../org.gnome.Totem.Devel.Tracker3.Miner.Files.service",
+                "install --mode=644 -D --target-directory=/app/share/dbus-1/services 
../org.gnome.Totem.Devel.Tracker3.Miner.Extract.service"
+            ],
             "sources": [
                 {
                     "type": "git",
                     "url": "https://gitlab.gnome.org/GNOME/totem.git";
+                },
+                {
+                    "type": "dir",
+                    "path": "./tracker"
                 }
             ]
         }
diff --git a/flatpak/tracker/org.gnome.Totem.Devel.Tracker3.Miner.Extract.service 
b/flatpak/tracker/org.gnome.Totem.Devel.Tracker3.Miner.Extract.service
new file mode 100644
index 000000000..1ae09f351
--- /dev/null
+++ b/flatpak/tracker/org.gnome.Totem.Devel.Tracker3.Miner.Extract.service
@@ -0,0 +1,7 @@
+[D-BUS Service]
+Name=org.gnome.Totem.Devel.Tracker3.Miner.Extract
+Exec=/app/libexec/tracker-extract-3 --domain-ontology 
/app/share/tracker3/domain-ontologies/org.gnome.Totem.Devel.domain.rule
+
+# Miner details needed for tracker-control
+Path=/org/freedesktop/Tracker3/Miner/Extract
+NameSuffix=Miner.Files
diff --git a/flatpak/tracker/org.gnome.Totem.Devel.Tracker3.Miner.Files.service 
b/flatpak/tracker/org.gnome.Totem.Devel.Tracker3.Miner.Files.service
new file mode 100644
index 000000000..89ae7063c
--- /dev/null
+++ b/flatpak/tracker/org.gnome.Totem.Devel.Tracker3.Miner.Files.service
@@ -0,0 +1,7 @@
+[D-BUS Service]
+Name=org.gnome.Totem.Devel.Tracker3.Miner.Files
+Exec=/app/libexec/tracker-miner-fs-3 --domain-ontology 
/app/share/tracker3/domain-ontologies/org.gnome.Totem.Devel.domain.rule --initial-sleep 0
+
+# Miner details needed for tracker-control
+Path=/org/freedesktop/Tracker3/Miner/Files
+NameSuffix=Miner.Files
diff --git a/flatpak/tracker/org.gnome.Totem.Devel.domain.rule 
b/flatpak/tracker/org.gnome.Totem.Devel.domain.rule
new file mode 100644
index 000000000..2529fae53
--- /dev/null
+++ b/flatpak/tracker/org.gnome.Totem.Devel.domain.rule
@@ -0,0 +1,20 @@
+# This defines a private Tracker domain for Totem.
+#
+# It's used to run the Tracker indexer inside a Flatpak sandbox, when Totem is
+# running on a host that doesn't have a suitable version of Tracker installed.
+
+[DomainOntology]
+# Location for the Tracker database
+CacheLocation=$XDG_CACHE_HOME/totem/miner/files
+
+# Name of the ontology to use, must be one located in
+# $(sharedir)/tracker/ontologies
+OntologyName=nepomuk
+
+# DBus name for the owner (not optional). Tracker will use
+# the domain as the prefix of the DBus name for all the
+# services related to this domain ontology.
+Domain=org.gnome.Totem.Devel
+
+# List of miners we expect to run in this domain.
+Miners=Miner.Files;Miner.Extract
diff --git a/src/totem-grilo.c b/src/totem-grilo.c
index ec0b68041..4e24ce6aa 100644
--- a/src/totem-grilo.c
+++ b/src/totem-grilo.c
@@ -1484,6 +1484,12 @@ load_grilo_plugins (TotemGrilo *self)
                return;
        }
 
+       if (grl_registry_activate_plugin_by_id (registry, "grl-tracker3", NULL)) {
+               config = grl_config_new ("grl-tracker3", NULL);
+               grl_config_set_string (config, "miner-service", APPLICATION_ID ".Tracker3.Miner.Files");
+               grl_registry_add_config (registry, config, NULL);
+       }
+
        for (i = 0; i < G_N_ELEMENTS(required_plugins); i++) {
                if (!grl_registry_activate_plugin_by_id (registry, required_plugins[i], &error)) {
                        g_warning ("Failed to load %s plugin: %s", required_plugins[i], error->message);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]