[gnome-builder] flatpak: resolve extension before finding FlatpakRef
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] flatpak: resolve extension before finding FlatpakRef
- Date: Fri, 30 Apr 2021 23:27:02 +0000 (UTC)
commit 2a26d13af9aac44f8199c11b39a10c8ab02d904e
Author: Christian Hergert <chergert redhat com>
Date: Fri Apr 30 15:53:07 2021 -0700
flatpak: resolve extension before finding FlatpakRef
This still needs further work to remove the bits that use flatpak from
the application UI itself, but this should now resolve the correct
extension Ref when looking for binaries.
src/plugins/flatpak/gbp-flatpak-manifest.c | 25 +++++++++++++++++--------
1 file changed, 17 insertions(+), 8 deletions(-)
---
diff --git a/src/plugins/flatpak/gbp-flatpak-manifest.c b/src/plugins/flatpak/gbp-flatpak-manifest.c
index 26c0e186f..4ec0a325e 100644
--- a/src/plugins/flatpak/gbp-flatpak-manifest.c
+++ b/src/plugins/flatpak/gbp-flatpak-manifest.c
@@ -25,10 +25,13 @@
#include <json-glib/json-glib.h>
#include "gbp-flatpak-application-addin.h"
+#include "gbp-flatpak-client.h"
#include "gbp-flatpak-manifest.h"
#include "gbp-flatpak-runtime.h"
#include "gbp-flatpak-util.h"
+#include "ipc-flatpak-service.h"
+
struct _GbpFlatpakManifest
{
IdeConfig parent_instance;
@@ -551,21 +554,27 @@ find_extension (GbpFlatpakManifest *self,
const gchar *name)
{
g_autoptr(FlatpakInstalledRef) ref = NULL;
+ g_autofree char *resolved = NULL;
GbpFlatpakApplicationAddin *addin;
GbpFlatpakRuntime *ret = NULL;
+ IpcFlatpakService *service;
+ GbpFlatpakClient *client;
+ IdeContext *context;
g_assert (GBP_IS_FLATPAK_MANIFEST (self));
g_assert (name != NULL);
- /* TODO: This doesn't allow pinning to the right version
- * of extension because we need to know the right parent
- * version of the extension.
- */
- addin = gbp_flatpak_application_addin_get_default ();
- ref = gbp_flatpak_application_addin_find_extension (addin, self->sdk, name);
+ context = ide_object_get_context (IDE_OBJECT (self));
- if (ref != NULL)
- ret = gbp_flatpak_runtime_new (ref, TRUE, NULL, NULL);
+ if ((client = gbp_flatpak_client_from_context (context)) &&
+ (service = gbp_flatpak_client_get_service (client, NULL, NULL)) &&
+ ipc_flatpak_service_call_resolve_extension_sync (service, self->sdk, name, &resolved, NULL, NULL))
+ {
+ addin = gbp_flatpak_application_addin_get_default ();
+ ref = gbp_flatpak_application_addin_find_extension (addin, self->sdk, name);
+ if (ref != NULL)
+ ret = gbp_flatpak_runtime_new (ref, TRUE, NULL, NULL);
+ }
return IDE_RUNTIME (g_steal_pointer (&ret));
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]