From a5157d445b312130518e700a1e1c2bd76a4f672e Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Mon, 24 Apr 2017 08:59:25 +0200 Subject: [PATCH] builder: Use context_find_in_sources_dirs to simplify code Instead of open-coding the search everywhere. Also some places are changed to use flatpak_build_file to further simplify the code. --- builder/builder-git.c | 27 ++++++++++++--------------- builder/builder-source-archive.c | 31 ++++++++++++------------------- builder/builder-source-bzr.c | 22 +++++++++------------- builder/builder-source-file.c | 30 ++++++++++++------------------ builder/builder-source-patch.c | 17 ++++++----------- 5 files changed, 51 insertions(+), 76 deletions(-) diff --git a/builder/builder-git.c b/builder/builder-git.c index af3f6428..1472b7de 100644 --- a/builder/builder-git.c +++ b/builder/builder-git.c @@ -55,23 +55,22 @@ git_get_mirror_dir (const char *url_or_path, BuilderContext *context) { g_autoptr(GFile) git_dir = NULL; + g_autoptr(GFile) dir = NULL; g_autofree char *filename = NULL; g_autofree char *git_dir_path = NULL; - GPtrArray *sources_dirs = NULL; - int i; - sources_dirs = builder_context_get_sources_dirs (context); - for (i = 0; sources_dirs != NULL && i < sources_dirs->len; i++) + /* Technically a path isn't a uri but if it's absolute it should still be unique. */ + filename = builder_uri_to_filename (url_or_path); + + dir = builder_context_find_in_sources_dirs (context, + "git", + filename, + NULL); + if (dir) { - GFile* sources_root = g_ptr_array_index (sources_dirs, i); - g_autoptr(GFile) local_git_dir = g_file_get_child (sources_root, "git"); - g_autofree char *local_filename = builder_uri_to_filename (url_or_path); - g_autoptr(GFile) file = g_file_get_child (local_git_dir, local_filename); - if (g_file_query_exists (file, NULL)) { - if (is_local != NULL) - *is_local = TRUE; - return g_steal_pointer (&file); - } + if (is_local != NULL) + *is_local = TRUE; + return g_steal_pointer (&dir); } git_dir = g_file_get_child (builder_context_get_state_dir (context), @@ -82,8 +81,6 @@ git_get_mirror_dir (const char *url_or_path, if (is_local != NULL) *is_local = FALSE; - /* Technically a path isn't a uri but if it's absolute it should still be unique. */ - filename = builder_uri_to_filename (url_or_path); return g_file_get_child (git_dir, filename); } diff --git a/builder/builder-source-archive.c b/builder/builder-source-archive.c index 68ad7f45..3dcdc5b9 100644 --- a/builder/builder-source-archive.c +++ b/builder/builder-source-archive.c @@ -217,11 +217,7 @@ get_download_location (BuilderSourceArchive *self, g_autoptr(SoupURI) uri = NULL; const char *path; g_autofree char *base_name = NULL; - GFile *download_dir = NULL; - g_autoptr(GFile) sha256_dir = NULL; g_autoptr(GFile) file = NULL; - GPtrArray *sources_dirs = NULL; - int i; uri = get_uri (self, error); if (uri == NULL) @@ -237,24 +233,21 @@ get_download_location (BuilderSourceArchive *self, return FALSE; } - sources_dirs = builder_context_get_sources_dirs (context); - for (i = 0; sources_dirs != NULL && i < sources_dirs->len; i++) + file = builder_context_find_in_sources_dirs (context, + "downloads", + self->sha256, + base_name, + NULL); + if (file) { - GFile* sources_root = g_ptr_array_index (sources_dirs, i); - g_autoptr(GFile) local_download_dir = g_file_get_child (sources_root, "downloads"); - g_autoptr(GFile) local_sha256_dir = g_file_get_child (local_download_dir, self->sha256); - g_autoptr(GFile) local_file = g_file_get_child (local_sha256_dir, base_name); - if (g_file_query_exists (local_file, NULL)) { - *is_local = TRUE; - return g_steal_pointer (&local_file); - } + *is_local = TRUE; + return g_steal_pointer (&file); } - download_dir = builder_context_get_download_dir (context); - sha256_dir = g_file_get_child (download_dir, self->sha256); - file = g_file_get_child (sha256_dir, base_name); - - return g_steal_pointer (&file); + return flatpak_build_file (builder_context_get_download_dir (context), + self->sha256, + base_name, + NULL); } static GFile * diff --git a/builder/builder-source-bzr.c b/builder/builder-source-bzr.c index 5d1dae5a..ca9e92df 100644 --- a/builder/builder-source-bzr.c +++ b/builder/builder-source-bzr.c @@ -134,21 +134,18 @@ static GFile * get_mirror_dir (BuilderSourceBzr *self, BuilderContext *context) { g_autoptr(GFile) bzr_dir = NULL; + g_autoptr(GFile) dir = NULL; g_autofree char *filename = NULL; g_autofree char *bzr_dir_path = NULL; - GPtrArray *sources_dirs = NULL; - int i; - sources_dirs = builder_context_get_sources_dirs (context); - for (i = 0; sources_dirs != NULL && i < sources_dirs->len; i++) - { - GFile* sources_root = g_ptr_array_index (sources_dirs, i); - g_autoptr(GFile) local_bzr_dir = g_file_get_child (sources_root, "bzr"); - g_autofree char *local_filename = builder_uri_to_filename (self->url); - g_autoptr(GFile) file = g_file_get_child (local_bzr_dir, local_filename); - if (g_file_query_exists (file, NULL)) - return g_steal_pointer (&file); - } + filename = builder_uri_to_filename (self->url); + + dir = builder_context_find_in_sources_dirs (context, + "bzr", + filename, + NULL); + if (dir) + return g_steal_pointer (&dir); bzr_dir = g_file_get_child (builder_context_get_state_dir (context), "bzr"); @@ -156,7 +153,6 @@ get_mirror_dir (BuilderSourceBzr *self, BuilderContext *context) bzr_dir_path = g_file_get_path (bzr_dir); g_mkdir_with_parents (bzr_dir_path, 0755); - filename = builder_uri_to_filename (self->url); return g_file_get_child (bzr_dir, filename); } diff --git a/builder/builder-source-file.c b/builder/builder-source-file.c index 3de98f86..e691dfca 100644 --- a/builder/builder-source-file.c +++ b/builder/builder-source-file.c @@ -168,11 +168,7 @@ get_download_location (BuilderSourceFile *self, g_autoptr(SoupURI) uri = NULL; const char *path; g_autofree char *base_name = NULL; - GFile *download_dir = NULL; - g_autoptr(GFile) sha256_dir = NULL; g_autoptr(GFile) file = NULL; - GPtrArray *sources_dirs = NULL; - int i; uri = get_uri (self, error); if (uri == NULL) @@ -194,23 +190,21 @@ get_download_location (BuilderSourceFile *self, return FALSE; } - sources_dirs = builder_context_get_sources_dirs (context); - for (i = 0; sources_dirs != NULL && i < sources_dirs->len; i++) + file = builder_context_find_in_sources_dirs (context, + "downloads", + self->sha256, + base_name, + NULL); + if (file != NULL) { - GFile* sources_root = g_ptr_array_index (sources_dirs, i); - g_autoptr(GFile) local_download_dir = g_file_get_child (sources_root, "downloads"); - g_autoptr(GFile) local_sha256_dir = g_file_get_child (local_download_dir, self->sha256); - g_autoptr(GFile) local_file = g_file_get_child (local_sha256_dir, base_name); - if (g_file_query_exists (local_file, NULL)) { - *is_local = TRUE; - return g_steal_pointer (&local_file); - } + *is_local = TRUE; + return g_steal_pointer (&file); } - download_dir = builder_context_get_download_dir (context); - sha256_dir = g_file_get_child (download_dir, self->sha256); - file = g_file_get_child (sha256_dir, base_name); - + file = flatpak_build_file (builder_context_get_download_dir (context), + self->sha256, + base_name, + NULL); *is_inline = FALSE; return g_steal_pointer (&file); } diff --git a/builder/builder-source-patch.c b/builder/builder-source-patch.c index b43bba5c..4431abbf 100644 --- a/builder/builder-source-patch.c +++ b/builder/builder-source-patch.c @@ -143,8 +143,6 @@ get_source_file (BuilderSourcePatch *self, g_autoptr(GFile) patch = NULL; g_autoptr(GFile) file = NULL; g_autofree char *base_name = NULL; - GPtrArray *sources_dirs = NULL; - int i; GFile *base_dir = BUILDER_SOURCE (self)->base_dir; @@ -157,15 +155,12 @@ get_source_file (BuilderSourcePatch *self, patch = g_file_new_for_path (self->path); base_name = g_file_get_basename (patch); - sources_dirs = builder_context_get_sources_dirs (context); - for (i = 0; sources_dirs != NULL && i < sources_dirs->len; i++) - { - GFile* sources_root = g_ptr_array_index (sources_dirs, i); - g_autoptr(GFile) patches_dir = g_file_get_child (sources_root, "patches"); - g_autoptr(GFile) file = g_file_get_child (patches_dir, base_name); - if (g_file_query_exists (file, NULL)) - return g_steal_pointer (&file); - } + file = builder_context_find_in_sources_dirs (context, + "patches", + base_name, + NULL); + if (file) + return g_steal_pointer (&file); return g_file_resolve_relative_path (base_dir, self->path); }