[gnome-software/gnome-3-22] Treat install-bundles-system-wide as advisory, rather than policy
- From: Kalev Lember <klember src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-software/gnome-3-22] Treat install-bundles-system-wide as advisory, rather than policy
- Date: Thu, 1 Dec 2016 14:34:10 +0000 (UTC)
commit 08ac09ce857efd09e15ccfc5eef30125860a6287
Author: Richard Hughes <richard hughsie com>
Date: Tue Nov 15 18:57:52 2016 +0000
Treat install-bundles-system-wide as advisory, rather than policy
If we can't use the system flatpak plugin due to permissions then fall back to
the user plugin and treat the GSetting as best effort, rather than system
policy.
This is implemented by just raising the priority ordering of one of the plugins
above the over and then ignoring the request if a GsApp has already been added.
src/plugins/gs-plugin-flatpak-system.c | 16 +++++++++-------
src/plugins/gs-plugin-flatpak-user.c | 18 ++++++++++--------
2 files changed, 19 insertions(+), 15 deletions(-)
---
diff --git a/src/plugins/gs-plugin-flatpak-system.c b/src/plugins/gs-plugin-flatpak-system.c
index 7b9a2eb..3507c26 100644
--- a/src/plugins/gs-plugin-flatpak-system.c
+++ b/src/plugins/gs-plugin-flatpak-system.c
@@ -36,15 +36,15 @@
struct GsPluginData {
GsFlatpak *flatpak;
- GSettings *settings;
};
void
gs_plugin_initialize (GsPlugin *plugin)
{
GsPluginData *priv = gs_plugin_alloc_data (plugin, sizeof(GsPluginData));
+ g_autoptr(GSettings) settings = g_settings_new ("org.gnome.software");
+
priv->flatpak = gs_flatpak_new (plugin, AS_APP_SCOPE_SYSTEM);
- priv->settings = g_settings_new ("org.gnome.software");
/* set plugin flags */
gs_plugin_add_flags (plugin, GS_PLUGIN_FLAGS_GLOBAL_CACHE);
@@ -54,6 +54,10 @@ gs_plugin_initialize (GsPlugin *plugin)
/* prioritize over packages */
gs_plugin_add_rule (plugin, GS_PLUGIN_RULE_BETTER_THAN, "packagekit");
+
+ /* prefer system-wide handling of local files */
+ if (g_settings_get_boolean (settings, "install-bundles-system-wide"))
+ gs_plugin_add_rule (plugin, GS_PLUGIN_RULE_RUN_BEFORE, "flatpak-user");
}
void
@@ -61,7 +65,6 @@ gs_plugin_destroy (GsPlugin *plugin)
{
GsPluginData *priv = gs_plugin_get_data (plugin);
g_clear_object (&priv->flatpak);
- g_clear_object (&priv->settings);
}
void
@@ -214,10 +217,9 @@ gs_plugin_file_to_app (GsPlugin *plugin,
{
GsPluginData *priv = gs_plugin_get_data (plugin);
- /* only handle when installing bundles system-wide */
- if (!g_settings_get_boolean (priv->settings,
- "install-bundles-system-wide")) {
- g_debug ("not handling bundle as per-user specified");
+ /* only handle when nothing yet has added this */
+ if (gs_app_list_length (list) > 0) {
+ g_debug ("not handling bundle as already added");
return TRUE;
}
diff --git a/src/plugins/gs-plugin-flatpak-user.c b/src/plugins/gs-plugin-flatpak-user.c
index ee5e40c..dd11474 100644
--- a/src/plugins/gs-plugin-flatpak-user.c
+++ b/src/plugins/gs-plugin-flatpak-user.c
@@ -36,15 +36,15 @@
struct GsPluginData {
GsFlatpak *flatpak;
- GSettings *settings;
};
void
gs_plugin_initialize (GsPlugin *plugin)
{
GsPluginData *priv = gs_plugin_alloc_data (plugin, sizeof(GsPluginData));
+ g_autoptr(GSettings) settings = g_settings_new ("org.gnome.software");
+
priv->flatpak = gs_flatpak_new (plugin, AS_APP_SCOPE_USER);
- priv->settings = g_settings_new ("org.gnome.software");
/* set plugin flags */
gs_plugin_add_flags (plugin, GS_PLUGIN_FLAGS_GLOBAL_CACHE);
@@ -54,14 +54,18 @@ gs_plugin_initialize (GsPlugin *plugin)
/* prioritize over packages */
gs_plugin_add_rule (plugin, GS_PLUGIN_RULE_BETTER_THAN, "packagekit");
+
+ /* prefer user-specific handling of local files */
+ if (!g_settings_get_boolean (settings, "install-bundles-system-wide"))
+ gs_plugin_add_rule (plugin, GS_PLUGIN_RULE_RUN_BEFORE, "flatpak-system");
}
+
void
gs_plugin_destroy (GsPlugin *plugin)
{
GsPluginData *priv = gs_plugin_get_data (plugin);
g_clear_object (&priv->flatpak);
- g_clear_object (&priv->settings);
}
void
@@ -197,11 +201,9 @@ gs_plugin_file_to_app (GsPlugin *plugin,
{
GsPluginData *priv = gs_plugin_get_data (plugin);
- /* only handle when installing bundles user-wide */
- if (g_getenv ("GS_SELF_TEST_FLATPACK_DATADIR") == NULL &&
- g_settings_get_boolean (priv->settings,
- "install-bundles-system-wide")) {
- g_debug ("not handling bundle as per-system specified");
+ /* only handle when nothing yet has added this */
+ if (gs_app_list_length (list) > 0) {
+ g_debug ("not handling bundle as already added");
return TRUE;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]