static void builder_source_git_checksum (BuilderSource *source, BuilderCache *cache, BuilderContext *context) { BuilderSourceGit *self = BUILDER_SOURCE_GIT (source); g_autoptr(GFile) mirror_dir = NULL; g_autofree char *current_commit = NULL; g_autoptr(GError) error = NULL; g_autofree char *location = NULL; builder_cache_checksum_str (cache, self->url); builder_cache_checksum_str (cache, self->path); builder_cache_checksum_str (cache, self->branch); location = get_url_or_path (self, context, &error); if (location != NULL) { mirror_dir = git_get_mirror_dir (location, context); current_commit = git_get_current_commit (mirror_dir, get_branch (self), context, &error); if (current_commit) builder_cache_checksum_str (cache, current_commit); else if (error) g_warning ("Failed to get current git checksum: %s", error->message); } else { g_warning ("No url or path"); } }
static void builder_source_script_checksum (BuilderSource *source, BuilderCache *cache, BuilderContext *context) { BuilderSourceScript *self = BUILDER_SOURCE_SCRIPT (source); builder_cache_checksum_strv (cache, self->commands); builder_cache_checksum_str (cache, self->dest_filename); }
void builder_options_checksum (BuilderOptions *self, BuilderCache *cache, BuilderContext *context) { BuilderOptions *arch_options; builder_cache_checksum_str (cache, BUILDER_OPTION_CHECKSUM_VERSION); builder_cache_checksum_str (cache, self->cflags); builder_cache_checksum_str (cache, self->cxxflags); builder_cache_checksum_str (cache, self->prefix); builder_cache_checksum_strv (cache, self->env); builder_cache_checksum_strv (cache, self->build_args); builder_cache_checksum_boolean (cache, self->strip); builder_cache_checksum_boolean (cache, self->no_debuginfo); arch_options = g_hash_table_lookup (self->arch, builder_context_get_arch (context)); if (arch_options) builder_options_checksum (arch_options, cache, context); }
static void builder_source_file_checksum (BuilderSource *source, BuilderCache *cache, BuilderContext *context) { BuilderSourceFile *self = BUILDER_SOURCE_FILE (source); g_autoptr(GFile) src = NULL; g_autofree char *data = NULL; gsize len; gboolean is_local, is_inline; src = get_source_file (self, context, &is_local, &is_inline, NULL); if (src == NULL) return; if (is_local && g_file_load_contents (src, NULL, &data, &len, NULL, NULL)) builder_cache_checksum_data (cache, (guchar *)data, len); builder_cache_checksum_str (cache, self->path); builder_cache_checksum_str (cache, self->url); builder_cache_checksum_str (cache, self->sha256); builder_cache_checksum_str (cache, self->dest_filename); }