[gnome-builder] meson: remove get_targets_async from build system



commit f591b9728833f76958cbdcd176c7215bb6ac2f0d
Author: Christian Hergert <chergert redhat com>
Date:   Sun Nov 19 20:56:54 2017 -0800

    meson: remove get_targets_async from build system
    
    Now that we have a build target provider for this, we can remove this
    code from the build system.

 src/plugins/meson/gbp-meson-build-system.c |  371 ----------------------------
 1 files changed, 0 insertions(+), 371 deletions(-)
---
diff --git a/src/plugins/meson/gbp-meson-build-system.c b/src/plugins/meson/gbp-meson-build-system.c
index b25b8f7..d5c0999 100644
--- a/src/plugins/meson/gbp-meson-build-system.c
+++ b/src/plugins/meson/gbp-meson-build-system.c
@@ -541,375 +541,6 @@ gbp_meson_build_system_get_build_flags_finish (IdeBuildSystem  *build_system,
 }
 
 static void
-gbp_meson_build_system_get_build_targets_communciate_cb2 (GObject      *object,
-                                                          GAsyncResult *result,
-                                                          gpointer      user_data)
-{
-  IdeSubprocess *subprocess = (IdeSubprocess *)object;
-  GbpMesonBuildSystem *self;
-  g_autoptr(GTask) task = user_data;
-  g_autoptr(GError) error = NULL;
-  g_autoptr(JsonParser) parser = NULL;
-  g_autofree gchar *stdout_buf = NULL;
-  JsonObjectIter iter;
-  const gchar *key;
-  IdeContext *context;
-  JsonObject *obj;
-  JsonNode *root;
-  JsonNode *value;
-
-  g_assert (IDE_IS_SUBPROCESS (subprocess));
-  g_assert (G_IS_ASYNC_RESULT (result));
-  g_assert (G_IS_TASK (task));
-
-  if (!ide_subprocess_communicate_utf8_finish (subprocess, result, &stdout_buf, NULL, &error))
-    {
-      g_task_return_error (task, g_steal_pointer (&error));
-      return;
-    }
-
-  self = g_task_get_source_object (task);
-  context = ide_object_get_context (IDE_OBJECT (self));
-
-  parser = json_parser_new ();
-
-  if (!json_parser_load_from_data (parser, stdout_buf, -1, &error))
-    {
-      g_task_return_error (task, g_steal_pointer (&error));
-      return;
-    }
-
-  if (NULL == (root = json_parser_get_root (parser)) ||
-      !JSON_NODE_HOLDS_OBJECT (root) ||
-      NULL == (obj = json_node_get_object (root)))
-    {
-      g_task_return_new_error (task,
-                               G_IO_ERROR,
-                               G_IO_ERROR_INVALID_DATA,
-                               "Invalid JSON received from meson introspect");
-      return;
-    }
-
-  json_object_iter_init (&iter, obj);
-
-  while (json_object_iter_next (&iter, &key, &value))
-    {
-      const gchar *path;
-      g_autofree gchar *dir = NULL;
-
-      if (!JSON_NODE_HOLDS_VALUE (value) ||
-          NULL == (path = json_node_get_string (value)))
-        continue;
-
-      dir = g_path_get_dirname (path);
-
-      if (dir != NULL && g_str_has_suffix (dir, "/bin"))
-        {
-          g_autofree gchar *name = NULL;
-          g_autoptr(GPtrArray) ret = NULL;
-          g_autoptr(GFile) gdir = NULL;
-
-          gdir = g_file_new_for_path (dir);
-          name = g_path_get_basename (path);
-
-          /* We only need one result */
-          ret = g_ptr_array_new_with_free_func (g_object_unref);
-          g_ptr_array_add (ret, gbp_meson_build_target_new (context, gdir, name));
-          g_task_return_pointer (task, g_steal_pointer (&ret), (GDestroyNotify)g_ptr_array_unref);
-
-          return;
-        }
-    }
-
-  g_task_return_new_error (task,
-                           G_IO_ERROR,
-                           G_IO_ERROR_FAILED,
-                           "Failed to locate any build targets");
-}
-
-static void
-gbp_meson_build_system_get_build_targets_communciate_cb (GObject      *object,
-                                                         GAsyncResult *result,
-                                                         gpointer      user_data)
-{
-  IdeSubprocess *subprocess = (IdeSubprocess *)object;
-  g_autofree gchar *stdout_buf = NULL;
-  g_autoptr(GTask) task = user_data;
-  g_autoptr(JsonParser) parser = NULL;
-  g_autoptr(IdeSubprocessLauncher) launcher = NULL;
-  g_autoptr(IdeSubprocess) all_subprocess = NULL;
-  g_autoptr(GError) error = NULL;
-  g_autoptr(GPtrArray) ret = NULL;
-  GbpMesonBuildSystem *self;
-  IdeBuildPipeline *pipeline;
-  IdeBuildManager *build_manager;
-  GCancellable *cancellable;
-  IdeContext *context;
-  JsonArray *array;
-  JsonNode *root;
-  gboolean found_bindir = FALSE;
-  guint len;
-
-  g_assert (IDE_IS_SUBPROCESS (subprocess));
-  g_assert (G_IS_ASYNC_RESULT (result));
-  g_assert (G_IS_TASK (task));
-
-  if (!ide_subprocess_communicate_utf8_finish (subprocess, result, &stdout_buf, NULL, &error))
-    {
-      g_task_return_error (task, g_steal_pointer (&error));
-      return;
-    }
-
-  /*
-   * The output from meson introspect --targets is a JSON formatted array
-   * of objects containing target information.
-   */
-
-  parser = json_parser_new ();
-
-  if (!json_parser_load_from_data (parser, stdout_buf, -1, &error))
-    {
-      g_task_return_error (task, g_steal_pointer (&error));
-      return;
-    }
-
-  if (NULL == (root = json_parser_get_root (parser)) ||
-      !JSON_NODE_HOLDS_ARRAY (root) ||
-      NULL == (array = json_node_get_array (root)))
-    {
-      g_task_return_new_error (task,
-                               G_IO_ERROR,
-                               G_IO_ERROR_INVALID_DATA,
-                               "Invalid JSON received from meson introspect");
-      return;
-    }
-
-  self = g_task_get_source_object (task);
-  context = ide_object_get_context (IDE_OBJECT (self));
-
-  len = json_array_get_length (array);
-  ret = g_ptr_array_new_with_free_func (g_object_unref);
-
-  for (guint i = 0; i < len; i++)
-    {
-      JsonNode *element = json_array_get_element (array, i);
-      const gchar *name;
-      const gchar *filename;
-      const gchar *type;
-      JsonObject *obj;
-      JsonNode *member;
-      gboolean installed;
-
-      if (JSON_NODE_HOLDS_OBJECT (element) &&
-          NULL != (obj = json_node_get_object (element)) &&
-          NULL != (member = json_object_get_member (obj, "name")) &&
-          JSON_NODE_HOLDS_VALUE (member) &&
-          NULL != (name = json_node_get_string (member)) &&
-          NULL != (member = json_object_get_member (obj, "install_filename")) &&
-          JSON_NODE_HOLDS_VALUE (member) &&
-          NULL != (filename = json_node_get_string (member)) &&
-          NULL != (member = json_object_get_member (obj, "type")) &&
-          JSON_NODE_HOLDS_VALUE (member) &&
-          NULL != (type = json_node_get_string (member)) &&
-          NULL != (member = json_object_get_member (obj, "installed")) &&
-          JSON_NODE_HOLDS_VALUE (member) &&
-          TRUE == (installed = json_node_get_boolean (member)))
-        {
-          g_autoptr(IdeBuildTarget) target = NULL;
-          g_autofree gchar *install_dir = NULL;
-          g_autofree gchar *base = NULL;
-          g_autofree gchar *name_of_dir = NULL;
-          g_autoptr(GFile) dir = NULL;
-
-          install_dir = g_path_get_dirname (filename);
-          name_of_dir = g_path_get_basename (install_dir);
-
-          g_debug ("Found target %s", name);
-
-          base = g_path_get_basename (filename);
-          dir = g_file_new_for_path (install_dir);
-
-          target = gbp_meson_build_target_new (context, dir, base);
-
-          found_bindir |= ide_str_equal0 (name_of_dir, "bin");
-
-          /*
-           * Until Builder supports selecting a target to run, we need to prefer
-           * bindir targets over other targets.
-           */
-          if (ide_str_equal0 (name_of_dir, "bin") && ide_str_equal0 (type, "executable"))
-            g_ptr_array_insert (ret, 0, g_steal_pointer (&target));
-          else
-            g_ptr_array_add (ret, g_steal_pointer (&target));
-        }
-    }
-
-  /*
-   * If we didn't find a target while processing the targets, we need to scan
-   * for all installed targets to locate a potential script such as python/gjs.
-   */
-
-  if (ret->len > 0 && found_bindir)
-    {
-      g_task_return_pointer (task, g_steal_pointer (&ret), (GDestroyNotify)g_ptr_array_unref);
-      return;
-    }
-
-  if (NULL == (launcher = gbp_meson_build_system_create_launcher (self, &error)))
-    {
-      g_task_return_error (task, g_steal_pointer (&error));
-      return;
-    }
-
-  context = ide_object_get_context (IDE_OBJECT (self));
-  build_manager = ide_context_get_build_manager (context);
-  pipeline = ide_build_manager_get_pipeline (build_manager);
-  cancellable = g_task_get_cancellable (task);
-
-  ide_subprocess_launcher_push_argv (launcher, "meson");
-  ide_subprocess_launcher_push_argv (launcher, "introspect");
-  ide_subprocess_launcher_push_argv (launcher, "--installed");
-  ide_subprocess_launcher_push_argv (launcher, ide_build_pipeline_get_builddir (pipeline));
-
-  if (NULL == (all_subprocess = ide_subprocess_launcher_spawn (launcher, cancellable, &error)))
-    {
-      g_task_return_error (task, g_steal_pointer (&error));
-      return;
-    }
-
-  ide_subprocess_communicate_utf8_async (all_subprocess,
-                                         NULL,
-                                         cancellable,
-                                         gbp_meson_build_system_get_build_targets_communciate_cb2,
-                                         g_steal_pointer (&task));
-}
-
-static void
-gbp_meson_build_system_get_build_targets_ensure_cb (GObject      *object,
-                                                    GAsyncResult *result,
-                                                    gpointer      user_data)
-{
-  GbpMesonBuildSystem *self = (GbpMesonBuildSystem *)object;
-  g_autoptr(IdeSubprocessLauncher) launcher = NULL;
-  g_autoptr(IdeSubprocess) subprocess = NULL;
-  g_autoptr(GTask) task = user_data;
-  g_autoptr(GError) error = NULL;
-  IdeBuildPipeline *pipeline;
-  IdeBuildManager *build_manager;
-  GCancellable *cancellable;
-  IdeContext *context;
-
-  g_assert (GBP_IS_MESON_BUILD_SYSTEM (self));
-  g_assert (G_IS_ASYNC_RESULT (result));
-  g_assert (G_IS_TASK (task));
-
-  if (!gbp_meson_build_system_ensure_config_finish (self, result, &error))
-    {
-      g_task_return_error (task, g_steal_pointer (&error));
-      return;
-    }
-
-  cancellable = g_task_get_cancellable (task);
-  context = ide_object_get_context (IDE_OBJECT (self));
-  build_manager = ide_context_get_build_manager (context);
-  pipeline = ide_build_manager_get_pipeline (build_manager);
-
-  if (pipeline == NULL)
-    {
-      g_task_return_new_error (task,
-                               G_IO_ERROR,
-                               G_IO_ERROR_FAILED,
-                               "Build pipeline is not ready, cannot extract targets");
-      return;
-    }
-
-  if (NULL == (launcher = gbp_meson_build_system_create_launcher (self, &error)))
-    {
-      g_task_return_error (task, g_steal_pointer (&error));
-      return;
-    }
-
-  ide_subprocess_launcher_push_argv (launcher, "meson");
-  ide_subprocess_launcher_push_argv (launcher, "introspect");
-  ide_subprocess_launcher_push_argv (launcher, "--targets");
-
-  if (NULL == (subprocess = ide_subprocess_launcher_spawn (launcher, cancellable, &error)))
-    {
-      g_task_return_error (task, g_steal_pointer (&error));
-      return;
-    }
-
-  ide_subprocess_communicate_utf8_async (subprocess,
-                                         NULL,
-                                         cancellable,
-                                         gbp_meson_build_system_get_build_targets_communciate_cb,
-                                         g_steal_pointer (&task));
-}
-
-static void
-gbp_meson_build_system_get_build_targets_async (IdeBuildSystem      *build_system,
-                                                GCancellable        *cancellable,
-                                                GAsyncReadyCallback  callback,
-                                                gpointer             user_data)
-{
-  GbpMesonBuildSystem *self = (GbpMesonBuildSystem *)build_system;
-  g_autoptr(GTask) task = NULL;
-
-  IDE_ENTRY;
-
-  g_assert (GBP_IS_MESON_BUILD_SYSTEM (self));
-  g_assert (!cancellable || G_IS_CANCELLABLE (cancellable));
-
-  task = g_task_new (self, cancellable, callback, user_data);
-  g_task_set_priority (task, G_PRIORITY_LOW);
-  g_task_set_source_tag (task, gbp_meson_build_system_get_build_targets_async);
-
-  gbp_meson_build_system_ensure_config_async (self,
-                                              cancellable,
-                                              gbp_meson_build_system_get_build_targets_ensure_cb,
-                                              g_steal_pointer (&task));
-
-  IDE_EXIT;
-}
-
-static GPtrArray *
-gbp_meson_build_system_get_build_targets_finish (IdeBuildSystem  *build_system,
-                                                 GAsyncResult    *result,
-                                                 GError         **error)
-{
-  GbpMesonBuildSystem *self = (GbpMesonBuildSystem *)build_system;
-  GPtrArray *ret;
-
-  IDE_ENTRY;
-
-  g_assert (GBP_IS_MESON_BUILD_SYSTEM (self));
-  g_assert (G_IS_TASK (result));
-
-  ret = g_task_propagate_pointer (G_TASK (result), error);
-
-#ifdef IDE_ENABLE_TRACE
-  if (ret != NULL)
-    {
-      IDE_TRACE_MSG ("Discovered %u targets", ret->len);
-
-      for (guint i = 0; i < ret->len; i++)
-        {
-          IdeBuildTarget *target = g_ptr_array_index (ret, i);
-          g_autofree gchar *name = NULL;
-
-          g_assert (GBP_IS_MESON_BUILD_TARGET (target));
-          g_assert (IDE_IS_BUILD_TARGET (target));
-
-          name = ide_build_target_get_name (target);
-          IDE_TRACE_MSG ("[%u]: %s", i, name);
-        }
-    }
-#endif
-
-  IDE_RETURN (ret);
-}
-
-static void
 build_system_iface_init (IdeBuildSystemInterface *iface)
 {
   iface->get_id = gbp_meson_build_system_get_id;
@@ -917,8 +548,6 @@ build_system_iface_init (IdeBuildSystemInterface *iface)
   iface->get_priority = gbp_meson_build_system_get_priority;
   iface->get_build_flags_async = gbp_meson_build_system_get_build_flags_async;
   iface->get_build_flags_finish = gbp_meson_build_system_get_build_flags_finish;
-  iface->get_build_targets_async = gbp_meson_build_system_get_build_targets_async;
-  iface->get_build_targets_finish = gbp_meson_build_system_get_build_targets_finish;
 }
 
 static void


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