diff options
author | Richard Hughes <richard@hughsie.com> | 2016-07-29 09:33:08 +0100 |
---|---|---|
committer | Richard Hughes <richard@hughsie.com> | 2016-07-29 10:30:27 +0100 |
commit | 2ca0db0bd06d7d3823005eb5aefd6423f8d48c99 (patch) | |
tree | 51d5d639f0805a589822b8386702ae4bb70ac35a /libappstream-glib | |
parent | 285fdc7e51ba51d7ff09748f3adeddc0a061a412 (diff) | |
download | appstream-glib-2ca0db0bd06d7d3823005eb5aefd6423f8d48c99.tar.gz |
Remove specific support for flatpak
It's expected something will create the required symlinks at user-runtime.
Diffstat (limited to 'libappstream-glib')
-rw-r--r-- | libappstream-glib/as-store.c | 232 | ||||
-rw-r--r-- | libappstream-glib/as-store.h | 4 |
2 files changed, 4 insertions, 232 deletions
diff --git a/libappstream-glib/as-store.c b/libappstream-glib/as-store.c index 7926ad2..c15744d 100644 --- a/libappstream-glib/as-store.c +++ b/libappstream-glib/as-store.c @@ -69,7 +69,6 @@ typedef struct AsMonitor *monitor; GHashTable *metadata_indexes; /* GHashTable{key} */ GHashTable *appinfo_dirs; /* GHashTable{path:AsStorePathData} */ - GHashTable *flatpak_dirs; /* GHashTable{path:id_prefix} */ AsStoreAddFlags add_flags; AsStoreWatchFlags watch_flags; AsStoreProblems problems; @@ -104,12 +103,6 @@ static guint signals [SIGNAL_LAST] = { 0 }; **/ G_DEFINE_QUARK (as-store-error-quark, as_store_error) -static gboolean as_store_search_flatpaks (AsStore *store, - AsStoreLoadFlags flags, - const gchar *id_prefix, - const gchar *path, - GCancellable *cancellable, - GError **error); static gboolean as_store_from_file_internal (AsStore *store, GFile *file, const gchar *id_prefix, @@ -133,7 +126,6 @@ as_store_finalize (GObject *object) g_hash_table_unref (priv->hash_pkgname); g_hash_table_unref (priv->metadata_indexes); g_hash_table_unref (priv->appinfo_dirs); - g_hash_table_unref (priv->flatpak_dirs); G_OBJECT_CLASS (as_store_parent_class)->finalize (object); } @@ -950,16 +942,6 @@ as_store_match_addons (AsStore *store) } } -static gchar * -as_store_get_origin_for_flatpak (const gchar *fn) -{ - g_auto(GStrv) split = g_strsplit (fn, "/", -1); - guint chunks = g_strv_length (split); - if (chunks < 5) - return NULL; - return g_strdup (split[chunks - 4]); -} - /** * as_store_fixup_id_prefix: * @@ -1080,14 +1062,6 @@ as_store_from_root (AsStore *store, } } - /* FIXME: we can remove this helper when nuking FLATPAK */ - if (origin_app == NULL && - source_filename != NULL && - g_strcmp0 (priv->origin, "flatpak") == 0) { - id_prefix_app = g_strdup (id_prefix); - origin_app = as_store_get_origin_for_flatpak (source_filename); - } - /* fallback */ if (origin_app == NULL) { id_prefix_app = g_strdup (id_prefix); @@ -1269,31 +1243,6 @@ as_store_load_yaml_file (AsStore *store, } static void -as_store_rescan_flatpak_dir (AsStore *store, const gchar *filename) -{ - AsStorePrivate *priv = GET_PRIVATE (store); - const gchar *id_prefix; - g_autofree gchar *dest = NULL; - g_autoptr(GError) error = NULL; - - /* we helpfully saved this */ - id_prefix = g_hash_table_lookup (priv->flatpak_dirs, filename); - - g_debug ("rescanning flatpak dir %s", filename); - dest = g_build_filename (priv->destdir ? priv->destdir : "/", filename, NULL); - if (!g_file_test (dest, G_FILE_TEST_EXISTS)) - return; - if (!as_store_search_flatpaks (store, - AS_STORE_LOAD_FLAG_IGNORE_INVALID, - id_prefix, - dest, - NULL, - &error)) { - g_warning ("Can't load app info: %s", error->message); - } -} - -static void as_store_remove_by_source_file (AsStore *store, const gchar *filename) { AsApp *app; @@ -1377,11 +1326,8 @@ as_store_monitor_changed_cb (AsMonitor *monitor, /* reload, or emit a signal */ tok = as_store_changed_inhibit (store); - if (priv->watch_flags & AS_STORE_WATCH_FLAG_ADDED) { + if (priv->watch_flags & AS_STORE_WATCH_FLAG_ADDED) as_store_watch_source_changed (store, filename); - if (g_hash_table_contains (priv->flatpak_dirs, filename)) - as_store_rescan_flatpak_dir (store, filename); - } as_store_changed_uninhibit (&tok); as_store_perhaps_emit_changed (store, "file changed"); } @@ -1396,11 +1342,8 @@ as_store_monitor_added_cb (AsMonitor *monitor, /* reload, or emit a signal */ tok = as_store_changed_inhibit (store); - if (priv->watch_flags & AS_STORE_WATCH_FLAG_ADDED) { + if (priv->watch_flags & AS_STORE_WATCH_FLAG_ADDED) as_store_watch_source_added (store, filename); - if (g_hash_table_contains (priv->flatpak_dirs, filename)) - as_store_rescan_flatpak_dir (store, filename); - } as_store_changed_uninhibit (&tok); as_store_perhaps_emit_changed (store, "file added"); } @@ -2460,79 +2403,6 @@ as_store_search_app_info (AsStore *store, return TRUE; } -static void -as_store_monitor_flatpak_dir (AsStore *store, - const gchar *path, - const gchar *id_prefix) -{ - AsStorePrivate *priv = GET_PRIVATE (store); - g_autoptr(GError) error = NULL; - - /* mark and monitor directory so we can pick up later added remotes */ - g_hash_table_insert (priv->flatpak_dirs, g_strdup (path), g_strdup (id_prefix)); - as_store_add_path_data (store, path, id_prefix, NULL); - if (!as_monitor_add_file (priv->monitor, - path, NULL, &error)) { - g_warning ("Can't monitor dir %s: %s", - path, error->message); - } -} - -static gboolean -as_store_search_flatpak_arch (AsStore *store, - AsStoreLoadFlags flags, - const gchar *id_prefix, - const gchar *path, - GCancellable *cancellable, - GError **error) -{ - const gchar *fn; - g_autoptr(GDir) dir = NULL; - - dir = g_dir_open (path, 0, NULL); - if (dir == NULL) - return TRUE; - while ((fn = g_dir_read_name (dir)) != NULL) { - g_autofree gchar *dest = NULL; - dest = g_build_filename (path, fn, "active", NULL); - g_debug ("searching path %s", dest); - if (!g_file_test (dest, G_FILE_TEST_EXISTS)) - continue; - if (!as_store_load_app_info (store, id_prefix, dest, fn, - flags | AS_STORE_LOAD_FLAG_IGNORE_INVALID, - cancellable, error)) - return FALSE; - } - return TRUE; -} - -static gboolean -as_store_search_flatpaks (AsStore *store, - AsStoreLoadFlags flags, - const gchar *id_prefix, - const gchar *path, - GCancellable *cancellable, - GError **error) -{ - const gchar *fn; - g_autoptr(GDir) dir = NULL; - - dir = g_dir_open (path, 0, NULL); - if (dir == NULL) - return TRUE; - while ((fn = g_dir_read_name (dir)) != NULL) { - g_autofree gchar *dest = NULL; - dest = g_build_filename (path, fn, NULL); - g_debug ("searching path for architectures: %s", dest); - if (!g_file_test (dest, G_FILE_TEST_EXISTS)) - continue; - if (!as_store_search_flatpak_arch (store, flags, id_prefix, - dest, cancellable, error)) - return FALSE; - } - return TRUE; -} - static gboolean as_store_search_per_system (AsStore *store, AsStoreLoadFlags flags, @@ -2547,53 +2417,6 @@ as_store_search_per_system (AsStore *store, /* profile */ ptask = as_profile_start_literal (priv->profile, "AsStore:load{per-system}"); - /* flatpak */ - if ((flags & AS_STORE_LOAD_FLAG_FLATPAK_SYSTEM) > 0) { - if ((flags & AS_STORE_LOAD_FLAG_APPDATA) > 0) { - g_autofree gchar *dest = NULL; - dest = g_build_filename (LOCALSTATEDIR, - "flatpak", - "exports", - "share", - "applications", - NULL); - if (!as_store_search_installed (store, flags, "flatpak", - dest, cancellable, error)) - return FALSE; - } - if ((flags & AS_STORE_LOAD_FLAG_DESKTOP) > 0) { - g_autofree gchar *dest = NULL; - dest = g_build_filename (LOCALSTATEDIR, - "flatpak", - "exports", - "share", - "appdata", - NULL); - if (!as_store_search_installed (store, flags, "flatpak", - dest, cancellable, error)) - return FALSE; - } - if (TRUE) { - g_autofree gchar *dest = NULL; - dest = g_build_filename (LOCALSTATEDIR, - "lib", - "flatpak", - "appstream", - NULL); - if (!as_store_search_flatpaks (store, flags, "flatpak", - dest, cancellable, error)) - return FALSE; - as_store_monitor_flatpak_dir (store, dest, "flatpak"); - } - if (g_strcmp0 (LOCALSTATEDIR, "/var") != 0) { - const gchar *dest = "/var/lib/flatpak/appstream"; - if (!as_store_search_flatpaks (store, flags, "flatpak", - dest, cancellable, error)) - return FALSE; - as_store_monitor_flatpak_dir (store, dest, "flatpak"); - } - } - /* datadir AppStream, AppData and desktop */ data_dirs = g_get_system_data_dirs (); for (i = 0; data_dirs[i] != NULL; i++) { @@ -2673,53 +2496,6 @@ as_store_search_per_user (AsStore *store, /* profile */ ptask = as_profile_start_literal (priv->profile, "AsStore:load{per-user}"); - /* flatpak */ - if ((flags & AS_STORE_LOAD_FLAG_FLATPAK_USER) > 0) { - - /* installed AppData and desktop */ - if ((flags & AS_STORE_LOAD_FLAG_APPDATA) > 0) { - g_autofree gchar *dest = NULL; - dest = g_build_filename (g_get_user_data_dir (), - "flatpak", - "exports", - "share", - "applications", - NULL); - if (!as_store_search_installed (store, flags, "user-flatpak", - dest, cancellable, error)) - return FALSE; - } - if ((flags & AS_STORE_LOAD_FLAG_DESKTOP) > 0) { - g_autofree gchar *dest = NULL; - dest = g_build_filename (g_get_user_data_dir (), - "flatpak", - "exports", - "share", - "appdata", - NULL); - if (!as_store_search_installed (store, flags, "user-flatpak", - dest, cancellable, error)) - return FALSE; - } - - /* If we're running INSIDE the flatpak environment we'll have the - * env var XDG_DATA_HOME set to "~/.var/app/org.gnome.Software/data" - * so specify the path manually to get the real data */ - if (TRUE) { - g_autofree gchar *dest = NULL; - dest = g_build_filename (g_get_home_dir (), - ".local", - "share", - "flatpak", - "appstream", - NULL); - if (!as_store_search_flatpaks (store, flags, "user-flatpak", - dest, cancellable, error)) - return FALSE; - as_store_monitor_flatpak_dir (store, dest, "user-flatpak"); - } - } - /* AppStream */ if ((flags & AS_STORE_LOAD_FLAG_APP_INFO_USER) > 0) { g_autofree gchar *dest = NULL; @@ -3115,10 +2891,6 @@ as_store_init (AsStore *store) g_str_equal, g_free, (GDestroyNotify) as_store_path_data_free); - priv->flatpak_dirs = g_hash_table_new_full (g_str_hash, - g_str_equal, - g_free, - g_free); priv->monitor = as_monitor_new (); g_signal_connect (priv->monitor, "changed", G_CALLBACK (as_store_monitor_changed_cb), diff --git a/libappstream-glib/as-store.h b/libappstream-glib/as-store.h index d69f254..efb1b1b 100644 --- a/libappstream-glib/as-store.h +++ b/libappstream-glib/as-store.h @@ -60,8 +60,8 @@ struct _AsStoreClass * @AS_STORE_LOAD_FLAG_APPDATA: The installed AppData files * @AS_STORE_LOAD_FLAG_DESKTOP: The installed desktop files * @AS_STORE_LOAD_FLAG_ALLOW_VETO: Add vetoed applications - * @AS_STORE_LOAD_FLAG_FLATPAK_USER: Add flatpak user applications - * @AS_STORE_LOAD_FLAG_FLATPAK_SYSTEM: Add flatpak system applications + * @AS_STORE_LOAD_FLAG_FLATPAK_USER: Add flatpak user applications (obsolete) + * @AS_STORE_LOAD_FLAG_FLATPAK_SYSTEM: Add flatpak system applications (obsolete) * @AS_STORE_LOAD_FLAG_IGNORE_INVALID: Ignore invalid files * * The flags to use when loading the store. |