diff options
author | Alexander Larsson <alexl@redhat.com> | 2017-12-12 09:36:08 +0100 |
---|---|---|
committer | Atomic Bot <atomic-devel@projectatomic.io> | 2017-12-14 09:27:21 +0000 |
commit | cd0230e117163b8b6a8291139985e5d86df319b4 (patch) | |
tree | e2fee853fa99145ccd3a9f46e47d49394667930d | |
parent | b00e6b661f080c8c2b43d3fbe35a4094b9ccab04 (diff) | |
download | flatpak-cd0230e117163b8b6a8291139985e5d86df319b4.tar.gz |
common: Expose flatpak_dir_prune_origin_remote
Also make it work with the system helper.
Closes: #1244
Approved by: alexlarsson
-rw-r--r-- | common/flatpak-dir.c | 34 | ||||
-rw-r--r-- | common/flatpak-dir.h | 2 |
2 files changed, 30 insertions, 6 deletions
diff --git a/common/flatpak-dir.c b/common/flatpak-dir.c index 3c3b542c..67ba2a2b 100644 --- a/common/flatpak-dir.c +++ b/common/flatpak-dir.c @@ -5599,15 +5599,37 @@ flatpak_dir_deploy (FlatpakDir *self, } /* -origin remotes are deleted when the last ref refering to it is undeployed */ -static void -maybe_prune_remote (FlatpakDir *self, - const char *remote) +void +flatpak_dir_prune_origin_remote (FlatpakDir *self, + const char *remote) { if (remote != NULL && g_str_has_suffix (remote, "-origin") && flatpak_dir_get_remote_noenumerate (self, remote) && !flatpak_dir_remote_has_deploys (self, remote)) - ostree_repo_remote_delete (self->repo, remote, NULL, NULL); + { + if (flatpak_dir_use_system_helper (self, NULL)) + { + FlatpakSystemHelper *system_helper; + const char *installation = flatpak_dir_get_id (self); + g_autoptr(GVariant) gpg_data_v = NULL; + + system_helper = flatpak_dir_get_system_helper (self); + g_assert (system_helper != NULL); + + gpg_data_v = g_variant_ref_sink (g_variant_new_from_data (G_VARIANT_TYPE ("ay"), "", 0, TRUE, NULL, NULL)); + + g_debug ("Calling system helper: ConfigureRemote"); + flatpak_system_helper_call_configure_remote_sync (system_helper, + 0, remote, + "", + gpg_data_v, + installation ? installation : "", + NULL, NULL); + } + else + ostree_repo_remote_delete (self->repo, remote, NULL, NULL); + } } gboolean @@ -5696,7 +5718,7 @@ flatpak_dir_deploy_install (FlatpakDir *self, if (!flatpak_dir_remove_ref (self, remove_ref_from_remote, ref, cancellable, error)) goto out; - maybe_prune_remote (self, remove_ref_from_remote); + flatpak_dir_prune_origin_remote (self, remove_ref_from_remote); } /* Release lock before doing possibly slow prune */ @@ -6851,7 +6873,7 @@ flatpak_dir_uninstall (FlatpakDir *self, glnx_release_lock_file (&lock); - maybe_prune_remote (self, repository); + flatpak_dir_prune_origin_remote (self, repository); if (!keep_ref) flatpak_dir_prune (self, cancellable, NULL); diff --git a/common/flatpak-dir.h b/common/flatpak-dir.h index 19dc0ad8..a029f93d 100644 --- a/common/flatpak-dir.h +++ b/common/flatpak-dir.h @@ -549,6 +549,8 @@ char *flatpak_dir_create_origin_remote (FlatpakDir *self, const char *collection_id, GCancellable *cancellable, GError **error); +void flatpak_dir_prune_origin_remote (FlatpakDir *self, + const char *remote); gboolean flatpak_dir_create_remote_for_ref_file (FlatpakDir *self, GBytes *data, const char *default_arch, |