gnome-software/0002-rpm-ostree-Correctly-mark-layered-local-packages-as-.patch
2020-05-12 20:28:27 +02:00

65 lines
2.9 KiB
Diff

From 1d74bd249459f5a6768ce0642538f2ff395543c8 Mon Sep 17 00:00:00 2001
From: Kalev Lember <klember@redhat.com>
Date: Tue, 12 May 2020 15:13:41 +0200
Subject: [PATCH 2/3] rpm-ostree: Correctly mark layered local packages as
removable
Fixes https://gitlab.gnome.org/GNOME/gnome-software/issues/984
---
plugins/rpm-ostree/gs-plugin-rpm-ostree.c | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/plugins/rpm-ostree/gs-plugin-rpm-ostree.c b/plugins/rpm-ostree/gs-plugin-rpm-ostree.c
index f2c33484..e3824df1 100644
--- a/plugins/rpm-ostree/gs-plugin-rpm-ostree.c
+++ b/plugins/rpm-ostree/gs-plugin-rpm-ostree.c
@@ -1251,6 +1251,7 @@ static gboolean
resolve_installed_packages_app (GsPlugin *plugin,
GPtrArray *pkglist,
gchar **layered_packages,
+ gchar **layered_local_packages,
GsApp *app)
{
for (guint i = 0; i < pkglist->len; i++) {
@@ -1260,7 +1261,9 @@ resolve_installed_packages_app (GsPlugin *plugin,
if (gs_app_get_state (app) == AS_APP_STATE_UNKNOWN)
gs_app_set_state (app, AS_APP_STATE_INSTALLED);
if (g_strv_contains ((const gchar * const *) layered_packages,
- rpm_ostree_package_get_name (pkg))) {
+ rpm_ostree_package_get_name (pkg)) ||
+ g_strv_contains ((const gchar * const *) layered_local_packages,
+ rpm_ostree_package_get_nevra (pkg))) {
/* layered packages can always be removed */
gs_app_remove_quirk (app, GS_APP_QUIRK_COMPULSORY);
} else {
@@ -1389,6 +1392,7 @@ gs_plugin_refine (GsPlugin *plugin,
g_autoptr(GPtrArray) pkglist = NULL;
g_autoptr(GVariant) default_deployment = NULL;
g_auto(GStrv) layered_packages = NULL;
+ g_auto(GStrv) layered_local_packages = NULL;
g_autofree gchar *checksum = NULL;
locker = g_mutex_locker_new (&priv->mutex);
@@ -1403,6 +1407,9 @@ gs_plugin_refine (GsPlugin *plugin,
g_assert (g_variant_lookup (default_deployment,
"packages", "^as",
&layered_packages));
+ g_assert (g_variant_lookup (default_deployment,
+ "requested-local-packages", "^as",
+ &layered_local_packages));
g_assert (g_variant_lookup (default_deployment,
"checksum", "s",
&checksum));
@@ -1442,7 +1449,7 @@ gs_plugin_refine (GsPlugin *plugin,
continue;
/* first try to resolve from installed packages */
- found = resolve_installed_packages_app (plugin, pkglist, layered_packages, app);
+ found = resolve_installed_packages_app (plugin, pkglist, layered_packages, layered_local_packages, app);
/* if we didn't find anything, try resolving from available packages */
if (!found && priv->dnf_context != NULL)
--
2.26.2