[gnome-builder/wip/gtk4-port: 1660/1774] plugins/meson: attach introspection as a pipeline stage




commit 1f10ab800e15b0b88d320f6fefb40533ec6be32d
Author: Christian Hergert <chergert redhat com>
Date:   Fri Jun 24 16:52:00 2022 -0700

    plugins/meson: attach introspection as a pipeline stage

 src/plugins/meson/gbp-meson-pipeline-addin.c | 36 ++++++++++++++++++++++++++--
 src/plugins/meson/gbp-meson-pipeline-addin.h |  4 ++++
 2 files changed, 38 insertions(+), 2 deletions(-)
---
diff --git a/src/plugins/meson/gbp-meson-pipeline-addin.c b/src/plugins/meson/gbp-meson-pipeline-addin.c
index 281273016..361ccb536 100644
--- a/src/plugins/meson/gbp-meson-pipeline-addin.c
+++ b/src/plugins/meson/gbp-meson-pipeline-addin.c
@@ -29,11 +29,13 @@
 #include "gbp-meson-build-stage-cross-file.h"
 #include "gbp-meson-build-system.h"
 #include "gbp-meson-build-target.h"
+#include "gbp-meson-introspection.h"
 #include "gbp-meson-pipeline-addin.h"
 
 struct _GbpMesonPipelineAddin
 {
-  IdeObject parent_instance;
+  IdeObject              parent_instance;
+  GbpMesonIntrospection *introspection;
 };
 
 static const gchar *ninja_names[] = { "ninja", "ninja-build", NULL };
@@ -205,6 +207,7 @@ gbp_meson_pipeline_addin_load (IdePipelineAddin *addin,
   const char *prefix;
   const char *srcdir;
   IdeConfig *config;
+  guint id;
   int parallel;
 
   IDE_ENTRY;
@@ -239,7 +242,7 @@ gbp_meson_pipeline_addin_load (IdePipelineAddin *addin,
   else if (g_strcmp0 (ide_toolchain_get_id (toolchain), "default") != 0)
     {
       g_autoptr(GbpMesonBuildStageCrossFile) cross_file_stage = gbp_meson_build_stage_cross_file_new 
(toolchain);
-      guint id = ide_pipeline_attach (pipeline, IDE_PIPELINE_PHASE_PREPARE, 0, IDE_PIPELINE_STAGE 
(cross_file_stage));
+      id = ide_pipeline_attach (pipeline, IDE_PIPELINE_PHASE_PREPARE, 0, IDE_PIPELINE_STAGE 
(cross_file_stage));
       crossbuild_file = gbp_meson_build_stage_cross_file_get_path (cross_file_stage, pipeline);
       ide_pipeline_addin_track (addin, id);
     }
@@ -271,6 +274,14 @@ gbp_meson_pipeline_addin_load (IdePipelineAddin *addin,
                               _("Install project"), IDE_PIPELINE_PHASE_INSTALL);
   g_signal_connect (stage, "query", G_CALLBACK (on_install_stage_query), NULL);
 
+  /* Setup our introspection stage */
+  self->introspection = gbp_meson_introspection_new ();
+  id = ide_pipeline_attach (pipeline,
+                            IDE_PIPELINE_PHASE_CONFIGURE | IDE_PIPELINE_PHASE_AFTER,
+                            0,
+                            IDE_PIPELINE_STAGE (self->introspection));
+  ide_pipeline_addin_track (addin, id);
+
   IDE_EXIT;
 }
 
@@ -283,12 +294,33 @@ pipeline_addin_iface_init (IdePipelineAddinInterface *iface)
 G_DEFINE_FINAL_TYPE_WITH_CODE (GbpMesonPipelineAddin, gbp_meson_pipeline_addin, IDE_TYPE_OBJECT,
                                G_IMPLEMENT_INTERFACE (IDE_TYPE_PIPELINE_ADDIN, pipeline_addin_iface_init))
 
+static void
+gbp_meson_pipeline_addin_dispose (GObject *object)
+{
+  GbpMesonPipelineAddin *self = (GbpMesonPipelineAddin *)object;
+
+  g_clear_object (&self->introspection);
+
+  G_OBJECT_CLASS (gbp_meson_pipeline_addin_parent_class)->dispose (object);
+}
+
 static void
 gbp_meson_pipeline_addin_class_init (GbpMesonPipelineAddinClass *klass)
 {
+  GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+  object_class->dispose = gbp_meson_pipeline_addin_dispose;
 }
 
 static void
 gbp_meson_pipeline_addin_init (GbpMesonPipelineAddin *self)
 {
 }
+
+GbpMesonIntrospection *
+gbp_meson_pipeline_addin_get_introspection (GbpMesonPipelineAddin *self)
+{
+  g_return_val_if_fail (GBP_IS_MESON_PIPELINE_ADDIN (self), NULL);
+
+  return self->introspection;
+}
diff --git a/src/plugins/meson/gbp-meson-pipeline-addin.h b/src/plugins/meson/gbp-meson-pipeline-addin.h
index f2b24093e..cefda157d 100644
--- a/src/plugins/meson/gbp-meson-pipeline-addin.h
+++ b/src/plugins/meson/gbp-meson-pipeline-addin.h
@@ -22,10 +22,14 @@
 
 #include <libide-foundry.h>
 
+#include "gbp-meson-introspection.h"
+
 G_BEGIN_DECLS
 
 #define GBP_TYPE_MESON_PIPELINE_ADDIN (gbp_meson_pipeline_addin_get_type())
 
 G_DECLARE_FINAL_TYPE (GbpMesonPipelineAddin, gbp_meson_pipeline_addin, GBP, MESON_PIPELINE_ADDIN, IdeObject)
 
+GbpMesonIntrospection *gbp_meson_pipeline_addin_get_introspection (GbpMesonPipelineAddin *self);
+
 G_END_DECLS


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]