[gnome-builder] meson: remove get_targets_async from build system
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] meson: remove get_targets_async from build system
- Date: Mon, 20 Nov 2017 06:28:33 +0000 (UTC)
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]