[gnome-software/wip/ubuntu-3-26: 35/37] snap: Install classic snaps
- From: Iain Lane <iainl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-software/wip/ubuntu-3-26: 35/37] snap: Install classic snaps
- Date: Wed, 4 Oct 2017 16:37:11 +0000 (UTC)
commit 0a2deb0035a88d10f87d9a467ceadba5f9503b44
Author: Robert Ancell <robert ancell canonical com>
Date: Thu Aug 24 14:26:16 2017 +1200
snap: Install classic snaps
plugins/snap/gs-plugin-snap.c | 15 +++++++++++++--
1 files changed, 13 insertions(+), 2 deletions(-)
---
diff --git a/plugins/snap/gs-plugin-snap.c b/plugins/snap/gs-plugin-snap.c
index ae3ae27..9114176 100644
--- a/plugins/snap/gs-plugin-snap.c
+++ b/plugins/snap/gs-plugin-snap.c
@@ -277,6 +277,8 @@ snap_to_app (GsPlugin *plugin, SnapdSnap *snap)
g_autofree gchar *unique_id = NULL;
GsApp *cached_app;
g_autoptr(GsApp) app = NULL;
+ SnapdConfinement confinement;
+ GEnumClass *enum_class;
switch (snapd_snap_get_snap_type (snap)) {
case SNAPD_SNAP_TYPE_APP:
@@ -307,7 +309,13 @@ snap_to_app (GsPlugin *plugin, SnapdSnap *snap)
gs_app_add_quirk (app, AS_APP_QUIRK_NOT_LAUNCHABLE);
if (gs_plugin_check_distro_id (plugin, "ubuntu"))
gs_app_add_quirk (app, AS_APP_QUIRK_PROVENANCE);
- if (priv->system_confinement == SNAPD_SYSTEM_CONFINEMENT_STRICT && snapd_snap_get_confinement (snap)
== SNAPD_CONFINEMENT_STRICT)
+
+ confinement = snapd_snap_get_confinement (snap);
+ enum_class = g_type_class_ref (SNAPD_TYPE_CONFINEMENT);
+ gs_app_set_metadata (app, "snap::confinement", g_enum_get_value (enum_class,
confinement)->value_nick);
+ g_type_class_unref (enum_class);
+
+ if (priv->system_confinement == SNAPD_SYSTEM_CONFINEMENT_STRICT && confinement ==
SNAPD_CONFINEMENT_STRICT)
gs_app_add_kudo (app, GS_APP_KUDO_SANDBOXED);
return g_steal_pointer (&app);
@@ -790,6 +798,7 @@ gs_plugin_app_install (GsPlugin *plugin,
GError **error)
{
g_autoptr(SnapdClient) client = NULL;
+ SnapdInstallFlags flags = SNAPD_INSTALL_FLAGS_NONE;
/* We can only install apps we know of */
if (g_strcmp0 (gs_app_get_management_plugin (app), "snap") != 0)
@@ -800,7 +809,9 @@ gs_plugin_app_install (GsPlugin *plugin,
return FALSE;
gs_app_set_state (app, AS_APP_STATE_INSTALLING);
- if (!snapd_client_install2_sync (client, SNAPD_INSTALL_FLAGS_NONE, gs_app_get_id (app), NULL, NULL,
progress_cb, app, cancellable, error)) {
+ if (g_strcmp0 (gs_app_get_metadata_item (app, "snap::confinement"), "classic") == 0)
+ flags |= SNAPD_INSTALL_FLAGS_CLASSIC;
+ if (!snapd_client_install2_sync (client, flags, gs_app_get_id (app), NULL, NULL, progress_cb, app,
cancellable, error)) {
gs_app_set_state_recover (app);
snapd_error_convert (error);
return FALSE;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]