Backport a number of rpm-ostree fixes
This commit is contained in:
parent
f4969a0858
commit
2eca76c09d
534
gnome-software-rpm-ostree-fixes.patch
Normal file
534
gnome-software-rpm-ostree-fixes.patch
Normal file
@ -0,0 +1,534 @@
|
|||||||
|
From bc561b63748bc6d62841a392903974703f59cea7 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Kalev Lember <klember@redhat.com>
|
||||||
|
Date: Fri, 19 Apr 2019 07:14:02 +0200
|
||||||
|
Subject: [PATCH 1/8] GsApp: Add recently added quirks to
|
||||||
|
gs_app_quirk_to_string
|
||||||
|
|
||||||
|
---
|
||||||
|
lib/gs-app.c | 8 ++++++++
|
||||||
|
1 file changed, 8 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/lib/gs-app.c b/lib/gs-app.c
|
||||||
|
index 17a546731..d5a30927a 100644
|
||||||
|
--- a/lib/gs-app.c
|
||||||
|
+++ b/lib/gs-app.c
|
||||||
|
@@ -235,6 +235,14 @@ _as_app_quirk_flag_to_string (GsAppQuirk quirk)
|
||||||
|
return "is-proxy";
|
||||||
|
if (quirk == GS_APP_QUIRK_REMOVABLE_HARDWARE)
|
||||||
|
return "removable-hardware";
|
||||||
|
+ if (quirk == GS_APP_QUIRK_DEVELOPER_VERIFIED)
|
||||||
|
+ return "developer-verified";
|
||||||
|
+ if (quirk == GS_APP_QUIRK_PARENTAL_FILTER)
|
||||||
|
+ return "parental-filter";
|
||||||
|
+ if (quirk == GS_APP_QUIRK_NEW_PERMISSIONS)
|
||||||
|
+ return "new-permissions";
|
||||||
|
+ if (quirk == GS_APP_QUIRK_PARENTAL_NOT_LAUNCHABLE)
|
||||||
|
+ return "parental-not-launchable";
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
2.21.0
|
||||||
|
|
||||||
|
|
||||||
|
From c21b68f47169e01f0c053b18d44aaef5fe948602 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Kalev Lember <klember@redhat.com>
|
||||||
|
Date: Wed, 24 Apr 2019 09:48:11 +0200
|
||||||
|
Subject: [PATCH 2/8] rpm-ostree: Implement provides search
|
||||||
|
|
||||||
|
---
|
||||||
|
plugins/rpm-ostree/gs-plugin-rpm-ostree.c | 64 +++++++++++++++++++++++
|
||||||
|
1 file changed, 64 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/plugins/rpm-ostree/gs-plugin-rpm-ostree.c b/plugins/rpm-ostree/gs-plugin-rpm-ostree.c
|
||||||
|
index b6b7fbd3f..b47a66a39 100644
|
||||||
|
--- a/plugins/rpm-ostree/gs-plugin-rpm-ostree.c
|
||||||
|
+++ b/plugins/rpm-ostree/gs-plugin-rpm-ostree.c
|
||||||
|
@@ -1099,6 +1099,21 @@ find_package_by_name (DnfSack *sack,
|
||||||
|
return g_object_ref (pkgs->pdata[pkgs->len-1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
+static GPtrArray *
|
||||||
|
+find_packages_by_provides (DnfSack *sack,
|
||||||
|
+ gchar **search)
|
||||||
|
+{
|
||||||
|
+ g_autoptr(GPtrArray) pkgs = NULL;
|
||||||
|
+ hy_autoquery HyQuery query = hy_query_create (sack);
|
||||||
|
+
|
||||||
|
+ hy_query_filter_provides_in (query, search);
|
||||||
|
+ hy_query_filter_latest_per_arch (query, TRUE);
|
||||||
|
+
|
||||||
|
+ pkgs = hy_query_run (query);
|
||||||
|
+
|
||||||
|
+ return g_steal_pointer (&pkgs);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
static gboolean
|
||||||
|
resolve_installed_packages_app (GsPlugin *plugin,
|
||||||
|
GPtrArray *pkglist,
|
||||||
|
@@ -1148,6 +1163,10 @@ resolve_available_packages_app (GsPlugin *plugin,
|
||||||
|
gs_app_set_origin (app, reponame);
|
||||||
|
}
|
||||||
|
|
||||||
|
+ /* set more metadata for packages that don't have appstream data */
|
||||||
|
+ gs_app_set_name (app, GS_APP_QUALITY_LOWEST, dnf_package_get_name (pkg));
|
||||||
|
+ gs_app_set_summary (app, GS_APP_QUALITY_LOWEST, dnf_package_get_summary (pkg));
|
||||||
|
+
|
||||||
|
return TRUE /* found */;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -1496,3 +1515,48 @@ out:
|
||||||
|
(void) Fclose (rpmfd);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+gboolean
|
||||||
|
+gs_plugin_add_search_what_provides (GsPlugin *plugin,
|
||||||
|
+ gchar **search,
|
||||||
|
+ GsAppList *list,
|
||||||
|
+ GCancellable *cancellable,
|
||||||
|
+ GError **error)
|
||||||
|
+{
|
||||||
|
+ GsPluginData *priv = gs_plugin_get_data (plugin);
|
||||||
|
+ g_autoptr(GMutexLocker) locker = NULL;
|
||||||
|
+ g_autoptr(GPtrArray) pkglist = NULL;
|
||||||
|
+
|
||||||
|
+ locker = g_mutex_locker_new (&priv->mutex);
|
||||||
|
+
|
||||||
|
+ if (priv->dnf_context == NULL)
|
||||||
|
+ return TRUE;
|
||||||
|
+
|
||||||
|
+ pkglist = find_packages_by_provides (dnf_context_get_sack (priv->dnf_context), search);
|
||||||
|
+ for (guint i = 0; i < pkglist->len; i++) {
|
||||||
|
+ DnfPackage *pkg = g_ptr_array_index (pkglist, i);
|
||||||
|
+ g_autoptr(GsApp) app = NULL;
|
||||||
|
+
|
||||||
|
+ app = gs_plugin_cache_lookup (plugin, dnf_package_get_nevra (pkg));
|
||||||
|
+ if (app != NULL) {
|
||||||
|
+ gs_app_list_add (list, app);
|
||||||
|
+ continue;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ /* create new app */
|
||||||
|
+ app = gs_app_new (NULL);
|
||||||
|
+ gs_app_set_metadata (app, "GnomeSoftware::Creator", gs_plugin_get_name (plugin));
|
||||||
|
+ gs_app_set_management_plugin (app, gs_plugin_get_name (plugin));
|
||||||
|
+ gs_app_add_quirk (app, GS_APP_QUIRK_NEEDS_REBOOT);
|
||||||
|
+ app_set_rpm_ostree_packaging_format (app);
|
||||||
|
+ gs_app_set_kind (app, AS_APP_KIND_GENERIC);
|
||||||
|
+ gs_app_set_bundle_kind (app, AS_BUNDLE_KIND_PACKAGE);
|
||||||
|
+ gs_app_set_scope (app, AS_APP_SCOPE_SYSTEM);
|
||||||
|
+ gs_app_add_source (app, dnf_package_get_name (pkg));
|
||||||
|
+
|
||||||
|
+ gs_plugin_cache_add (plugin, dnf_package_get_nevra (pkg), app);
|
||||||
|
+ gs_app_list_add (list, app);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return TRUE;
|
||||||
|
+}
|
||||||
|
--
|
||||||
|
2.21.0
|
||||||
|
|
||||||
|
|
||||||
|
From 03feb124bed19417796642d45aa883b14d21f145 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Kalev Lember <klember@redhat.com>
|
||||||
|
Date: Tue, 30 Apr 2019 14:02:21 +0200
|
||||||
|
Subject: [PATCH 3/8] plugin event: trivial: Try harder to avoid returning NULL
|
||||||
|
unique ID
|
||||||
|
|
||||||
|
---
|
||||||
|
lib/gs-plugin-event.c | 8 ++++++--
|
||||||
|
1 file changed, 6 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/lib/gs-plugin-event.c b/lib/gs-plugin-event.c
|
||||||
|
index 2e292c0a8..cf122561d 100644
|
||||||
|
--- a/lib/gs-plugin-event.c
|
||||||
|
+++ b/lib/gs-plugin-event.c
|
||||||
|
@@ -157,10 +157,14 @@ const gchar *
|
||||||
|
gs_plugin_event_get_unique_id (GsPluginEvent *event)
|
||||||
|
{
|
||||||
|
/* just proxy */
|
||||||
|
- if (event->origin != NULL)
|
||||||
|
+ if (event->origin != NULL &&
|
||||||
|
+ gs_app_get_unique_id (event->origin) != NULL) {
|
||||||
|
return gs_app_get_unique_id (event->origin);
|
||||||
|
- if (event->app != NULL)
|
||||||
|
+ }
|
||||||
|
+ if (event->app != NULL &&
|
||||||
|
+ gs_app_get_unique_id (event->app) != NULL) {
|
||||||
|
return gs_app_get_unique_id (event->app);
|
||||||
|
+ }
|
||||||
|
|
||||||
|
/* generate from error */
|
||||||
|
if (event->error != NULL) {
|
||||||
|
--
|
||||||
|
2.21.0
|
||||||
|
|
||||||
|
|
||||||
|
From 8915ad5da1a2a7661c211561250a56dc23f6b8ff Mon Sep 17 00:00:00 2001
|
||||||
|
From: Kalev Lember <klember@redhat.com>
|
||||||
|
Date: Tue, 30 Apr 2019 15:02:05 +0200
|
||||||
|
Subject: [PATCH 4/8] rpm-ostree: trivial: Update rpmostree1 dbus interface
|
||||||
|
description
|
||||||
|
|
||||||
|
---
|
||||||
|
plugins/rpm-ostree/org.projectatomic.rpmostree1.xml | 9 ++++++++-
|
||||||
|
1 file changed, 8 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/plugins/rpm-ostree/org.projectatomic.rpmostree1.xml b/plugins/rpm-ostree/org.projectatomic.rpmostree1.xml
|
||||||
|
index 077002e38..6ae04a459 100644
|
||||||
|
--- a/plugins/rpm-ostree/org.projectatomic.rpmostree1.xml
|
||||||
|
+++ b/plugins/rpm-ostree/org.projectatomic.rpmostree1.xml
|
||||||
|
@@ -281,6 +281,13 @@
|
||||||
|
<arg type="s" name="transaction_address" direction="out"/>
|
||||||
|
</method>
|
||||||
|
|
||||||
|
+ <!-- Set options in yum .repo files -->
|
||||||
|
+ <method name="ModifyYumRepo">
|
||||||
|
+ <arg type="s" name="repo_id" direction="in"/>
|
||||||
|
+ <arg type="a{ss}" name="settings" direction="in"/>
|
||||||
|
+ <arg type="s" name="transaction_address" direction="out"/>
|
||||||
|
+ </method>
|
||||||
|
+
|
||||||
|
<!-- Available modifiers:
|
||||||
|
"set-refspec" (type 's')
|
||||||
|
"set-revision" (type 's')
|
||||||
|
@@ -430,7 +437,7 @@
|
||||||
|
|
||||||
|
<!--
|
||||||
|
transfer data, format is:
|
||||||
|
- (bytes transferred, bytes/s)
|
||||||
|
+ (bytes transfered, bytes/s)
|
||||||
|
-->
|
||||||
|
<arg name="transfer" type="(tt)" direction="out"/>
|
||||||
|
</signal>
|
||||||
|
--
|
||||||
|
2.21.0
|
||||||
|
|
||||||
|
|
||||||
|
From 3541297e9f69c1bee0e7ed416fbe9d55e918d0e0 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Kalev Lember <klember@redhat.com>
|
||||||
|
Date: Tue, 30 Apr 2019 15:11:24 +0200
|
||||||
|
Subject: [PATCH 5/8] rpm-ostree: Implement getting the repo list, and enabling
|
||||||
|
and disabling repos
|
||||||
|
|
||||||
|
This also bumps the required rpm-ostree version to 2019.3 for the
|
||||||
|
required rpm-ostree DBus API.
|
||||||
|
---
|
||||||
|
meson.build | 2 +-
|
||||||
|
plugins/rpm-ostree/gs-plugin-rpm-ostree.c | 110 ++++++++++++++++++++++
|
||||||
|
2 files changed, 111 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/meson.build b/meson.build
|
||||||
|
index c08bf4901..f71ad139b 100644
|
||||||
|
--- a/meson.build
|
||||||
|
+++ b/meson.build
|
||||||
|
@@ -161,7 +161,7 @@ if get_option('rpm_ostree')
|
||||||
|
libdnf = dependency('libdnf')
|
||||||
|
ostree = dependency('ostree-1')
|
||||||
|
rpm = dependency('rpm')
|
||||||
|
- rpm_ostree = dependency('rpm-ostree-1', version : '>= 2018.4')
|
||||||
|
+ rpm_ostree = dependency('rpm-ostree-1', version : '>= 2019.3')
|
||||||
|
endif
|
||||||
|
|
||||||
|
if get_option('gudev')
|
||||||
|
diff --git a/plugins/rpm-ostree/gs-plugin-rpm-ostree.c b/plugins/rpm-ostree/gs-plugin-rpm-ostree.c
|
||||||
|
index b47a66a39..ae2f2435f 100644
|
||||||
|
--- a/plugins/rpm-ostree/gs-plugin-rpm-ostree.c
|
||||||
|
+++ b/plugins/rpm-ostree/gs-plugin-rpm-ostree.c
|
||||||
|
@@ -928,6 +928,60 @@ gs_plugin_update_app (GsPlugin *plugin,
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
+static gboolean
|
||||||
|
+gs_plugin_repo_enable (GsPlugin *plugin,
|
||||||
|
+ GsApp *app,
|
||||||
|
+ gboolean enable,
|
||||||
|
+ GCancellable *cancellable,
|
||||||
|
+ GError **error)
|
||||||
|
+{
|
||||||
|
+ GsPluginData *priv = gs_plugin_get_data (plugin);
|
||||||
|
+ g_autofree gchar *transaction_address = NULL;
|
||||||
|
+ g_autoptr(GVariantBuilder) options_builder = NULL;
|
||||||
|
+ g_autoptr(TransactionProgress) tp = NULL;
|
||||||
|
+
|
||||||
|
+ if (enable)
|
||||||
|
+ gs_app_set_state (app, AS_APP_STATE_INSTALLING);
|
||||||
|
+ else
|
||||||
|
+ gs_app_set_state (app, AS_APP_STATE_REMOVING);
|
||||||
|
+
|
||||||
|
+ options_builder = g_variant_builder_new (G_VARIANT_TYPE ("a{ss}"));
|
||||||
|
+ g_variant_builder_add (options_builder, "{ss}", "enabled", enable ? "1" : "0");
|
||||||
|
+ if (!gs_rpmostree_os_call_modify_yum_repo_sync (priv->os_proxy,
|
||||||
|
+ gs_app_get_id (app),
|
||||||
|
+ g_variant_builder_end (options_builder),
|
||||||
|
+ &transaction_address,
|
||||||
|
+ cancellable,
|
||||||
|
+ error)) {
|
||||||
|
+ gs_rpmostree_error_convert (error);
|
||||||
|
+ gs_app_set_state_recover (app);
|
||||||
|
+ gs_utils_error_add_origin_id (error, app);
|
||||||
|
+ return FALSE;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ tp = transaction_progress_new ();
|
||||||
|
+ tp->app = g_object_ref (app);
|
||||||
|
+ if (!gs_rpmostree_transaction_get_response_sync (priv->sysroot_proxy,
|
||||||
|
+ transaction_address,
|
||||||
|
+ tp,
|
||||||
|
+ cancellable,
|
||||||
|
+ error)) {
|
||||||
|
+ gs_rpmostree_error_convert (error);
|
||||||
|
+ gs_app_set_state_recover (app);
|
||||||
|
+ gs_utils_error_add_origin_id (error, app);
|
||||||
|
+ return FALSE;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+ /* state is known */
|
||||||
|
+ if (enable)
|
||||||
|
+ gs_app_set_state (app, AS_APP_STATE_INSTALLED);
|
||||||
|
+ else
|
||||||
|
+ gs_app_set_state (app, AS_APP_STATE_AVAILABLE);
|
||||||
|
+
|
||||||
|
+ return TRUE;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
gboolean
|
||||||
|
gs_plugin_app_install (GsPlugin *plugin,
|
||||||
|
GsApp *app,
|
||||||
|
@@ -945,6 +999,10 @@ gs_plugin_app_install (GsPlugin *plugin,
|
||||||
|
if (g_strcmp0 (gs_app_get_management_plugin (app), gs_plugin_get_name (plugin)) != 0)
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
|
+ /* enable repo */
|
||||||
|
+ if (gs_app_get_kind (app) == AS_APP_KIND_SOURCE)
|
||||||
|
+ return gs_plugin_repo_enable (plugin, app, TRUE, cancellable, error);
|
||||||
|
+
|
||||||
|
switch (gs_app_get_state (app)) {
|
||||||
|
case AS_APP_STATE_AVAILABLE:
|
||||||
|
if (gs_app_get_source_default (app) == NULL) {
|
||||||
|
@@ -1041,6 +1099,10 @@ gs_plugin_app_remove (GsPlugin *plugin,
|
||||||
|
if (g_strcmp0 (gs_app_get_management_plugin (app), gs_plugin_get_name (plugin)) != 0)
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
|
+ /* disable repo */
|
||||||
|
+ if (gs_app_get_kind (app) == AS_APP_KIND_SOURCE)
|
||||||
|
+ return gs_plugin_repo_enable (plugin, app, FALSE, cancellable, error);
|
||||||
|
+
|
||||||
|
gs_app_set_state (app, AS_APP_STATE_REMOVING);
|
||||||
|
tp->app = g_object_ref (app);
|
||||||
|
|
||||||
|
@@ -1560,3 +1622,51 @@ gs_plugin_add_search_what_provides (GsPlugin *plugin,
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+gboolean
|
||||||
|
+gs_plugin_add_sources (GsPlugin *plugin,
|
||||||
|
+ GsAppList *list,
|
||||||
|
+ GCancellable *cancellable,
|
||||||
|
+ GError **error)
|
||||||
|
+{
|
||||||
|
+ GsPluginData *priv = gs_plugin_get_data (plugin);
|
||||||
|
+ g_autoptr(GMutexLocker) locker = NULL;
|
||||||
|
+ GPtrArray *repos;
|
||||||
|
+
|
||||||
|
+ locker = g_mutex_locker_new (&priv->mutex);
|
||||||
|
+
|
||||||
|
+ if (priv->dnf_context == NULL)
|
||||||
|
+ return TRUE;
|
||||||
|
+
|
||||||
|
+ repos = dnf_context_get_repos (priv->dnf_context);
|
||||||
|
+ if (repos == NULL)
|
||||||
|
+ return TRUE;
|
||||||
|
+
|
||||||
|
+ for (guint i = 0; i < repos->len; i++) {
|
||||||
|
+ DnfRepo *repo = g_ptr_array_index (repos, i);
|
||||||
|
+ g_autofree gchar *description = NULL;
|
||||||
|
+ g_autoptr(GsApp) app = NULL;
|
||||||
|
+ gboolean enabled;
|
||||||
|
+
|
||||||
|
+ /* hide these from the user */
|
||||||
|
+ if (dnf_repo_is_devel (repo) || dnf_repo_is_source (repo))
|
||||||
|
+ continue;
|
||||||
|
+
|
||||||
|
+ app = gs_app_new (dnf_repo_get_id (repo));
|
||||||
|
+ gs_app_set_management_plugin (app, gs_plugin_get_name (plugin));
|
||||||
|
+ gs_app_set_kind (app, AS_APP_KIND_SOURCE);
|
||||||
|
+ gs_app_set_bundle_kind (app, AS_BUNDLE_KIND_PACKAGE);
|
||||||
|
+ gs_app_add_quirk (app, GS_APP_QUIRK_NOT_LAUNCHABLE);
|
||||||
|
+
|
||||||
|
+ enabled = (dnf_repo_get_enabled (repo) & DNF_REPO_ENABLED_PACKAGES) > 0;
|
||||||
|
+ gs_app_set_state (app, enabled ? AS_APP_STATE_INSTALLED : AS_APP_STATE_AVAILABLE);
|
||||||
|
+
|
||||||
|
+ description = dnf_repo_get_description (repo);
|
||||||
|
+ gs_app_set_name (app, GS_APP_QUALITY_LOWEST, description);
|
||||||
|
+ gs_app_set_summary (app, GS_APP_QUALITY_LOWEST, description);
|
||||||
|
+
|
||||||
|
+ gs_app_list_add (list, app);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return TRUE;
|
||||||
|
+}
|
||||||
|
--
|
||||||
|
2.21.0
|
||||||
|
|
||||||
|
|
||||||
|
From 8e661a5d4a6d390be8eaff57acae649918c6bf81 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Kalev Lember <klember@redhat.com>
|
||||||
|
Date: Tue, 30 Apr 2019 15:18:37 +0200
|
||||||
|
Subject: [PATCH 6/8] repos dialog: trivial: Special-case rpm-ostree repos the
|
||||||
|
same as packagekit
|
||||||
|
|
||||||
|
---
|
||||||
|
src/gs-repo-row.c | 1 +
|
||||||
|
src/gs-repos-dialog.c | 1 +
|
||||||
|
2 files changed, 2 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/gs-repo-row.c b/src/gs-repo-row.c
|
||||||
|
index f3d091183..7ce7e618a 100644
|
||||||
|
--- a/src/gs-repo-row.c
|
||||||
|
+++ b/src/gs-repo-row.c
|
||||||
|
@@ -68,6 +68,7 @@ repo_supports_removal (GsApp *repo)
|
||||||
|
/* can't remove a repo, only enable/disable existing ones */
|
||||||
|
if (g_strcmp0 (management_plugin, "fwupd") == 0 ||
|
||||||
|
g_strcmp0 (management_plugin, "packagekit") == 0 ||
|
||||||
|
+ g_strcmp0 (management_plugin, "rpm-ostree") == 0 ||
|
||||||
|
g_strcmp0 (management_plugin, "shell-extensions") == 0)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
diff --git a/src/gs-repos-dialog.c b/src/gs-repos-dialog.c
|
||||||
|
index 3d9f7f578..478acb7d2 100644
|
||||||
|
--- a/src/gs-repos-dialog.c
|
||||||
|
+++ b/src/gs-repos-dialog.c
|
||||||
|
@@ -135,6 +135,7 @@ repo_supports_removal (GsApp *repo)
|
||||||
|
/* can't remove a repo, only enable/disable existing ones */
|
||||||
|
if (g_strcmp0 (management_plugin, "fwupd") == 0 ||
|
||||||
|
g_strcmp0 (management_plugin, "packagekit") == 0 ||
|
||||||
|
+ g_strcmp0 (management_plugin, "rpm-ostree") == 0 ||
|
||||||
|
g_strcmp0 (management_plugin, "shell-extensions") == 0)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
--
|
||||||
|
2.21.0
|
||||||
|
|
||||||
|
|
||||||
|
From d8ebbe420d5d0642987c6c6b799f108c7b4ce709 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Kalev Lember <klember@redhat.com>
|
||||||
|
Date: Fri, 19 Apr 2019 07:17:00 +0200
|
||||||
|
Subject: [PATCH 7/8] Add HIDE_FROM_SEARCH quirk
|
||||||
|
|
||||||
|
This allows plugins to control if apps are discoverable or not.
|
||||||
|
|
||||||
|
Discoverable here means that they get hidden from search results and
|
||||||
|
category views, unless they are already installed. This makes it
|
||||||
|
possible to launch and remove and update already installed apps, but
|
||||||
|
hides them otherwise.
|
||||||
|
|
||||||
|
This is going to be used in the rpm-ostree plugin to hide package-based
|
||||||
|
desktop apps on Fedora Silverblue and only show flatpak apps by default.
|
||||||
|
---
|
||||||
|
lib/gs-app.c | 2 ++
|
||||||
|
lib/gs-app.h | 2 ++
|
||||||
|
lib/gs-plugin-loader.c | 8 ++++++++
|
||||||
|
3 files changed, 12 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/lib/gs-app.c b/lib/gs-app.c
|
||||||
|
index d5a30927a..186ceb549 100644
|
||||||
|
--- a/lib/gs-app.c
|
||||||
|
+++ b/lib/gs-app.c
|
||||||
|
@@ -243,6 +243,8 @@ _as_app_quirk_flag_to_string (GsAppQuirk quirk)
|
||||||
|
return "new-permissions";
|
||||||
|
if (quirk == GS_APP_QUIRK_PARENTAL_NOT_LAUNCHABLE)
|
||||||
|
return "parental-not-launchable";
|
||||||
|
+ if (quirk == GS_APP_QUIRK_HIDE_FROM_SEARCH)
|
||||||
|
+ return "hide-from-search";
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/lib/gs-app.h b/lib/gs-app.h
|
||||||
|
index f6421f0b4..cd185154e 100644
|
||||||
|
--- a/lib/gs-app.h
|
||||||
|
+++ b/lib/gs-app.h
|
||||||
|
@@ -85,6 +85,7 @@ typedef enum {
|
||||||
|
* @GS_APP_QUIRK_PARENTAL_FILTER: The app has been filtered by parental controls, and should be hidden
|
||||||
|
* @GS_APP_QUIRK_NEW_PERMISSIONS: The update requires new permissions
|
||||||
|
* @GS_APP_QUIRK_PARENTAL_NOT_LAUNCHABLE: The app cannot be run by the current user due to parental controls, and should not be launchable
|
||||||
|
+ * @GS_APP_QUIRK_HIDE_FROM_SEARCH: The app should not be shown in search results
|
||||||
|
*
|
||||||
|
* The application attributes.
|
||||||
|
**/
|
||||||
|
@@ -105,6 +106,7 @@ typedef enum {
|
||||||
|
GS_APP_QUIRK_PARENTAL_FILTER = 1 << 12, /* Since: 3.32 */
|
||||||
|
GS_APP_QUIRK_NEW_PERMISSIONS = 1 << 13, /* Since: 3.32 */
|
||||||
|
GS_APP_QUIRK_PARENTAL_NOT_LAUNCHABLE = 1 << 14, /* Since: 3.32 */
|
||||||
|
+ GS_APP_QUIRK_HIDE_FROM_SEARCH = 1 << 15, /* Since: 3.32 */
|
||||||
|
/*< private >*/
|
||||||
|
GS_APP_QUIRK_LAST
|
||||||
|
} GsAppQuirk;
|
||||||
|
diff --git a/lib/gs-plugin-loader.c b/lib/gs-plugin-loader.c
|
||||||
|
index ca0504a34..aa775e9ef 100644
|
||||||
|
--- a/lib/gs-plugin-loader.c
|
||||||
|
+++ b/lib/gs-plugin-loader.c
|
||||||
|
@@ -1226,6 +1226,14 @@ gs_plugin_loader_app_is_valid (GsApp *app, gpointer user_data)
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ /* don't show apps with hide-from-search quirk, unless they are already installed */
|
||||||
|
+ if (!gs_app_is_installed (app) &&
|
||||||
|
+ gs_app_has_quirk (app, GS_APP_QUIRK_HIDE_FROM_SEARCH)) {
|
||||||
|
+ g_debug ("app invalid as hide-from-search quirk set %s",
|
||||||
|
+ gs_plugin_loader_get_app_str (app));
|
||||||
|
+ return FALSE;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
/* don't show sources */
|
||||||
|
if (gs_app_get_kind (app) == AS_APP_KIND_SOURCE) {
|
||||||
|
g_debug ("app invalid as source %s",
|
||||||
|
--
|
||||||
|
2.21.0
|
||||||
|
|
||||||
|
|
||||||
|
From 159adb8ead57b5d117e03965d280864ef8aa9014 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Kalev Lember <klember@redhat.com>
|
||||||
|
Date: Fri, 19 Apr 2019 07:31:56 +0200
|
||||||
|
Subject: [PATCH 8/8] rpm-ostree: Set HIDE_FROM_SEARCH quirk
|
||||||
|
|
||||||
|
---
|
||||||
|
plugins/rpm-ostree/gs-plugin-rpm-ostree.c | 18 +++++++++++++++++-
|
||||||
|
1 file changed, 17 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/plugins/rpm-ostree/gs-plugin-rpm-ostree.c b/plugins/rpm-ostree/gs-plugin-rpm-ostree.c
|
||||||
|
index ae2f2435f..eadb9c047 100644
|
||||||
|
--- a/plugins/rpm-ostree/gs-plugin-rpm-ostree.c
|
||||||
|
+++ b/plugins/rpm-ostree/gs-plugin-rpm-ostree.c
|
||||||
|
@@ -1364,8 +1364,24 @@ gs_plugin_refine (GsPlugin *plugin,
|
||||||
|
|
||||||
|
/* if we still didn't find anything then it's likely a package
|
||||||
|
* that is still in appstream data, but removed from the repos */
|
||||||
|
- if (!found)
|
||||||
|
+ if (!found) {
|
||||||
|
g_debug ("failed to resolve %s", gs_app_get_unique_id (app));
|
||||||
|
+ return TRUE;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ /* hide all layered apps from search */
|
||||||
|
+ if (!gs_app_is_installed (app)) {
|
||||||
|
+ switch (gs_app_get_kind (app)) {
|
||||||
|
+ case AS_APP_KIND_DESKTOP:
|
||||||
|
+ case AS_APP_KIND_WEB_APP:
|
||||||
|
+ case AS_APP_KIND_CONSOLE:
|
||||||
|
+ gs_app_add_quirk (app, GS_APP_QUIRK_HIDE_FROM_SEARCH);
|
||||||
|
+ break;
|
||||||
|
+ default:
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
--
|
||||||
|
2.21.0
|
||||||
|
|
@ -14,13 +14,15 @@
|
|||||||
|
|
||||||
Name: gnome-software
|
Name: gnome-software
|
||||||
Version: 3.32.1
|
Version: 3.32.1
|
||||||
Release: 2%{?dist}
|
Release: 3%{?dist}
|
||||||
Summary: A software center for GNOME
|
Summary: A software center for GNOME
|
||||||
|
|
||||||
License: GPLv2+
|
License: GPLv2+
|
||||||
URL: https://wiki.gnome.org/Apps/Software
|
URL: https://wiki.gnome.org/Apps/Software
|
||||||
Source0: https://download.gnome.org/sources/gnome-software/3.32/%{name}-%{version}.tar.xz
|
Source0: https://download.gnome.org/sources/gnome-software/3.32/%{name}-%{version}.tar.xz
|
||||||
|
|
||||||
|
Patch0: gnome-software-rpm-ostree-fixes.patch
|
||||||
|
|
||||||
BuildRequires: gcc
|
BuildRequires: gcc
|
||||||
BuildRequires: gettext
|
BuildRequires: gettext
|
||||||
BuildRequires: libxslt
|
BuildRequires: libxslt
|
||||||
@ -245,6 +247,9 @@ desktop-file-validate %{buildroot}%{_datadir}/applications/*.desktop
|
|||||||
%{_mandir}/man1/gnome-software-editor.1*
|
%{_mandir}/man1/gnome-software-editor.1*
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Tue Apr 30 2019 Kalev Lember <klember@redhat.com> - 3.32.1-3
|
||||||
|
- Backport a number of rpm-ostree fixes
|
||||||
|
|
||||||
* Tue Apr 16 2019 Adam Williamson <awilliam@redhat.com> - 3.32.1-2
|
* Tue Apr 16 2019 Adam Williamson <awilliam@redhat.com> - 3.32.1-2
|
||||||
- Rebuild with Meson fix for #1699099
|
- Rebuild with Meson fix for #1699099
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user