From 1b2ed4fe09bdde0c46ef447f1a5e2058e87fb051 Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Mon, 11 Jan 2016 10:36:58 +0100 Subject: [PATCH] builder: Pass down global cleanups via BuildContext --- builder/builder-context.c | 16 ++++++++++++ builder/builder-context.h | 36 +++++++++++++++------------ builder/builder-manifest.c | 3 ++- builder/builder-module.c | 3 ++- builder/builder-module.h | 50 ++++++++++++++++++-------------------- 5 files changed, 64 insertions(+), 44 deletions(-) diff --git a/builder/builder-context.c b/builder/builder-context.c index b0f697713..cbfe9883e 100644 --- a/builder/builder-context.c +++ b/builder/builder-context.c @@ -44,6 +44,7 @@ struct BuilderContext { BuilderOptions *options; gboolean keep_build_dirs; + char **cleanup; }; typedef struct { @@ -70,6 +71,7 @@ builder_context_finalize (GObject *object) g_clear_object (&self->soup_session); g_clear_object (&self->options); g_free (self->arch); + g_strfreev (self->cleanup); G_OBJECT_CLASS (builder_context_parent_class)->finalize (object); } @@ -261,6 +263,20 @@ builder_context_set_keep_build_dirs (BuilderContext *self, self->keep_build_dirs = keep_build_dirs; } +void +builder_context_set_global_cleanup (BuilderContext *self, + const char **cleanup) +{ + g_strfreev (self->cleanup); + self->cleanup = g_strdupv ((char **)cleanup); +} + +const char ** +builder_context_get_global_cleanup (BuilderContext *self) +{ + return (const char **)self->cleanup; +} + gboolean builder_context_get_keep_build_dirs (BuilderContext *self) { diff --git a/builder/builder-context.h b/builder/builder-context.h index 0da823c92..ba954bc56 100644 --- a/builder/builder-context.h +++ b/builder/builder-context.h @@ -35,22 +35,26 @@ G_BEGIN_DECLS GType builder_context_get_type (void); -GFile * builder_context_get_app_dir (BuilderContext *self); -GFile * builder_context_get_base_dir (BuilderContext *self); -GFile * builder_context_get_state_dir (BuilderContext *self); -GFile * builder_context_get_cache_dir (BuilderContext *self); -GFile * builder_context_get_download_dir (BuilderContext *self); -SoupSession * builder_context_get_soup_session (BuilderContext *self); -const char * builder_context_get_arch (BuilderContext *self); -void builder_context_set_arch (BuilderContext *self, - const char *arch); -int builder_context_get_n_cpu (BuilderContext *self); -void builder_context_set_keep_build_dirs (BuilderContext *self, - gboolean keep_build_dirs); -gboolean builder_context_get_keep_build_dirs (BuilderContext *self); -BuilderOptions *builder_context_get_options (BuilderContext *self); -void builder_context_set_options (BuilderContext *self, - BuilderOptions *option); +GFile * builder_context_get_app_dir (BuilderContext *self); +GFile * builder_context_get_base_dir (BuilderContext *self); +GFile * builder_context_get_state_dir (BuilderContext *self); +GFile * builder_context_get_cache_dir (BuilderContext *self); +GFile * builder_context_get_download_dir (BuilderContext *self); +SoupSession * builder_context_get_soup_session (BuilderContext *self); +const char * builder_context_get_arch (BuilderContext *self); +void builder_context_set_arch (BuilderContext *self, + const char *arch); +int builder_context_get_n_cpu (BuilderContext *self); +void builder_context_set_keep_build_dirs (BuilderContext *self, + gboolean keep_build_dirs); +gboolean builder_context_get_keep_build_dirs (BuilderContext *self); +void builder_context_set_global_cleanup (BuilderContext *self, + const char **cleanup); +const char ** builder_context_get_global_cleanup (BuilderContext *self); +BuilderOptions *builder_context_get_options (BuilderContext *self); +void builder_context_set_options (BuilderContext *self, + BuilderOptions *option); + BuilderContext *builder_context_new (GFile *base_dir, GFile *app_dir); diff --git a/builder/builder-manifest.c b/builder/builder-manifest.c index 650a057bb..b27ef667b 100644 --- a/builder/builder-manifest.c +++ b/builder/builder-manifest.c @@ -682,6 +682,7 @@ builder_manifest_build (BuilderManifest *self, GList *l; builder_context_set_options (context, self->build_options); + builder_context_set_global_cleanup (context, (const char **)self->cleanup); g_print ("Starting build of %s\n", self->app_id ? self->app_id : "app"); for (l = self->modules; l != NULL; l = l->next) @@ -926,7 +927,7 @@ builder_manifest_cleanup (BuilderManifest *self, { BuilderModule *m = l->data; - builder_module_cleanup_collect (m, self->cleanup, to_remove_ht); + builder_module_cleanup_collect (m, context, to_remove_ht); } keys = (char **)g_hash_table_get_keys_as_array (to_remove_ht, &n_keys); diff --git a/builder/builder-module.c b/builder/builder-module.c index a4997584f..a5e490b9d 100644 --- a/builder/builder-module.c +++ b/builder/builder-module.c @@ -1034,11 +1034,12 @@ builder_module_set_changes (BuilderModule *self, void builder_module_cleanup_collect (BuilderModule *self, - char **global_patterns, + BuilderContext *context, GHashTable *to_remove_ht) { GPtrArray *changed_files; int i, j; + const char **global_patterns = builder_context_get_global_cleanup (context); changed_files = self->changes; for (i = 0; i < changed_files->len; i++) diff --git a/builder/builder-module.h b/builder/builder-module.h index 91d3871be..31554b008 100644 --- a/builder/builder-module.h +++ b/builder/builder-module.h @@ -45,32 +45,30 @@ GPtrArray * builder_module_get_changes (BuilderModule *self); void builder_module_set_changes (BuilderModule *self, GPtrArray *changes); -gboolean builder_module_download_sources (BuilderModule *self, - gboolean update_vcs, - BuilderContext *context, - GError **error); -gboolean builder_module_extract_sources (BuilderModule *self, - GFile *dest, - BuilderContext *context, - GError **error); -gboolean builder_module_build (BuilderModule *self, - BuilderCache *cache, - BuilderContext *context, - GError **error); -gboolean builder_module_update (BuilderModule *self, - BuilderContext *context, - GError **error); - -void builder_module_checksum (BuilderModule *self, - BuilderCache *cache, - BuilderContext *context); -void builder_module_checksum_for_cleanup (BuilderModule *self, - BuilderCache *cache, - BuilderContext *context); -void builder_module_cleanup_collect (BuilderModule *self, - char **global_patterns, - GHashTable *to_remove_ht); - +gboolean builder_module_download_sources (BuilderModule *self, + gboolean update_vcs, + BuilderContext *context, + GError **error); +gboolean builder_module_extract_sources (BuilderModule *self, + GFile *dest, + BuilderContext *context, + GError **error); +gboolean builder_module_build (BuilderModule *self, + BuilderCache *cache, + BuilderContext *context, + GError **error); +gboolean builder_module_update (BuilderModule *self, + BuilderContext *context, + GError **error); +void builder_module_checksum (BuilderModule *self, + BuilderCache *cache, + BuilderContext *context); +void builder_module_checksum_for_cleanup (BuilderModule *self, + BuilderCache *cache, + BuilderContext *context); +void builder_module_cleanup_collect (BuilderModule *self, + BuilderContext *context, + GHashTable *to_remove_ht); G_DEFINE_AUTOPTR_CLEANUP_FUNC(BuilderModule, g_object_unref)