diff --git a/doc/flatpak-manifest.xml b/doc/flatpak-manifest.xml index 8755e3bb..b617b969 100644 --- a/doc/flatpak-manifest.xml +++ b/doc/flatpak-manifest.xml @@ -58,7 +58,24 @@ (string) - The branch of the application, defaults to master. + The branch to use when exporting + the application. If this is unset the defaults + come from the default-branch option. + This key overrides both the default-branch + key, and the --default-branch commandline + option. Unless you need a very specific branchname + (like for a runtime or an extension) it is + recommended to use the default-branch key instead, because + you can then override the default using --default-branch when + building for instance a test build. + + + (string) + The default branch to use when + exporting the application. Defaults to master. + This key can be overriden by the + --default-branch commandline + option. (string) diff --git a/src/builder-context.c b/src/builder-context.c index 07d7dc69..a9b7733e 100644 --- a/src/builder-context.c +++ b/src/builder-context.c @@ -48,6 +48,7 @@ struct BuilderContext SoupSession *soup_session; CURL *curl_session; char *arch; + char *default_branch; char *stop_at; gint64 source_date_epoch; @@ -119,6 +120,7 @@ builder_context_finalize (GObject *object) g_clear_object (&self->options); g_clear_object (&self->sdk_config); g_free (self->arch); + g_free (self->default_branch); g_free (self->state_subdir); g_free (self->stop_at); g_strfreev (self->cleanup); @@ -566,6 +568,20 @@ builder_context_set_arch (BuilderContext *self, self->arch = g_strdup (arch); } +const char * +builder_context_get_default_branch (BuilderContext *self) +{ + return (const char *) self->default_branch; +} + +void +builder_context_set_default_branch (BuilderContext *self, + const char *default_branch) +{ + g_free (self->default_branch); + self->default_branch = g_strdup (default_branch); +} + void builder_context_set_source_date_epoch (BuilderContext *self, gint64 source_date_epoch) diff --git a/src/builder-context.h b/src/builder-context.h index 58120630..c5cba81d 100644 --- a/src/builder-context.h +++ b/src/builder-context.h @@ -74,6 +74,9 @@ CURL * builder_context_get_curl_session (BuilderContext *self); const char * builder_context_get_arch (BuilderContext *self); void builder_context_set_arch (BuilderContext *self, const char *arch); +const char * builder_context_get_default_branch (BuilderContext *self); +void builder_context_set_default_branch (BuilderContext *self, + const char *default_branch); void builder_context_set_source_date_epoch (BuilderContext *self, gint64 source_date_epoch); const char * builder_context_get_stop_at (BuilderContext *self); diff --git a/src/builder-main.c b/src/builder-main.c index 06bd941a..51325514 100644 --- a/src/builder-main.c +++ b/src/builder-main.c @@ -690,7 +690,7 @@ main (int argc, } if (opt_default_branch) - builder_manifest_set_default_branch (manifest, opt_default_branch); + builder_context_set_default_branch (build_context, opt_default_branch); if (opt_collection_id) builder_manifest_set_default_collection_id (manifest, opt_collection_id); @@ -928,7 +928,7 @@ main (int argc, if (opt_mirror_screenshots_url && !opt_export_only) { g_autofree char *screenshot_subdir = g_strdup_printf ("%s-%s", builder_manifest_get_id (manifest), - builder_manifest_get_branch (manifest)); + builder_manifest_get_branch (manifest, build_context)); g_autofree char *url = g_build_filename (opt_mirror_screenshots_url, screenshot_subdir, NULL); g_autofree char *xml_relpath = g_strdup_printf ("files/share/app-info/xmls/%s.xml.gz", builder_manifest_get_id (manifest)); g_autoptr(GFile) xml = g_file_resolve_relative_path (app_dir, xml_relpath); @@ -1010,7 +1010,7 @@ main (int argc, if (!do_export (build_context, &error, FALSE, flatpak_file_get_path_cached (export_repo), - app_dir_path, exclude_dirs, builder_manifest_get_branch (manifest), + app_dir_path, exclude_dirs, builder_manifest_get_branch (manifest, build_context), builder_manifest_get_collection_id (manifest), "--exclude=/lib/debug/*", "--include=/lib/debug/app", @@ -1044,7 +1044,7 @@ main (int argc, "/share/runtime/locale/", NULL); if (!do_export (build_context, &error, TRUE, flatpak_file_get_path_cached (export_repo), - app_dir_path, NULL, builder_manifest_get_branch (manifest), + app_dir_path, NULL, builder_manifest_get_branch (manifest, build_context), builder_manifest_get_collection_id (manifest), metadata_arg, files_arg, @@ -1064,7 +1064,7 @@ main (int argc, if (!do_export (build_context, &error, TRUE, flatpak_file_get_path_cached (export_repo), - app_dir_path, NULL, builder_manifest_get_branch (manifest), + app_dir_path, NULL, builder_manifest_get_branch (manifest, build_context), builder_manifest_get_collection_id (manifest), "--metadata=metadata.debuginfo", builder_context_get_build_runtime (build_context) ? "--files=usr/lib/debug" : "--files=files/lib/debug", @@ -1095,7 +1095,7 @@ main (int argc, if (!do_export (build_context, &error, TRUE, flatpak_file_get_path_cached (export_repo), - app_dir_path, NULL, builder_manifest_get_branch (manifest), + app_dir_path, NULL, builder_manifest_get_branch (manifest, build_context), builder_manifest_get_collection_id (manifest), metadata_arg, files_arg, NULL)) @@ -1114,7 +1114,7 @@ main (int argc, if (!do_export (build_context, &error, TRUE, flatpak_file_get_path_cached (export_repo), - app_dir_path, NULL, builder_manifest_get_branch (manifest), + app_dir_path, NULL, builder_manifest_get_branch (manifest, build_context), builder_manifest_get_collection_id (manifest), "--metadata=metadata.sources", "--files=sources", @@ -1134,7 +1134,7 @@ main (int argc, if (!do_export (build_context, &error, TRUE, flatpak_file_get_path_cached (export_repo), - app_dir_path, NULL, builder_manifest_get_branch (manifest), + app_dir_path, NULL, builder_manifest_get_branch (manifest, build_context), builder_manifest_get_collection_id (manifest), "--metadata=metadata.platform", "--files=platform", @@ -1168,7 +1168,7 @@ main (int argc, files_arg = g_strconcat ("--files=platform/share/runtime/locale/", NULL); if (!do_export (build_context, &error, TRUE, flatpak_file_get_path_cached (export_repo), - app_dir_path, NULL, builder_manifest_get_branch (manifest), + app_dir_path, NULL, builder_manifest_get_branch (manifest, build_context), builder_manifest_get_collection_id (manifest), metadata_arg, files_arg, @@ -1188,7 +1188,7 @@ main (int argc, g_printerr ("NOTE: No export due to --require-changes, ignoring --install\n"); else if (!do_install (build_context, flatpak_file_get_path_cached (export_repo), builder_manifest_get_id (manifest), - builder_manifest_get_branch (manifest), + builder_manifest_get_branch (manifest, build_context), &error)) { g_printerr ("Install failed: %s\n", error->message); diff --git a/src/builder-manifest.c b/src/builder-manifest.c index ed3253f6..f38a91d1 100644 --- a/src/builder-manifest.c +++ b/src/builder-manifest.c @@ -61,6 +61,7 @@ struct BuilderManifest char *id; char *id_platform; char *branch; + char *default_branch; char *collection_id; char *extension_tag; char *type; @@ -123,6 +124,7 @@ enum { PROP_ID, PROP_ID_PLATFORM, PROP_BRANCH, + PROP_DEFAULT_BRANCH, PROP_RUNTIME, PROP_RUNTIME_VERSION, PROP_RUNTIME_COMMIT, @@ -175,6 +177,7 @@ builder_manifest_finalize (GObject *object) g_free (self->id); g_free (self->branch); + g_free (self->default_branch); g_free (self->collection_id); g_free (self->extension_tag); g_free (self->runtime); @@ -284,6 +287,10 @@ builder_manifest_get_property (GObject *object, g_value_set_string (value, self->branch); break; + case PROP_DEFAULT_BRANCH: + g_value_set_string (value, self->default_branch); + break; + case PROP_RUNTIME: g_value_set_string (value, self->runtime); break; @@ -488,6 +495,11 @@ builder_manifest_set_property (GObject *object, self->branch = g_value_dup_string (value); break; + case PROP_DEFAULT_BRANCH: + g_free (self->default_branch); + self->default_branch = g_value_dup_string (value); + break; + case PROP_RUNTIME: g_free (self->runtime); self->runtime = g_value_dup_string (value); @@ -748,6 +760,13 @@ builder_manifest_class_init (BuilderManifestClass *klass) "", NULL, G_PARAM_READWRITE)); + g_object_class_install_property (object_class, + PROP_DEFAULT_BRANCH, + g_param_spec_string ("default-branch", + "", + "", + NULL, + G_PARAM_READWRITE)); g_object_class_install_property (object_class, PROP_RUNTIME, g_param_spec_string ("runtime", @@ -1366,20 +1385,20 @@ builder_manifest_get_runtime_version (BuilderManifest *self) } const char * -builder_manifest_get_branch (BuilderManifest *self) +builder_manifest_get_branch (BuilderManifest *self, + BuilderContext *context) { if (self->branch) return self->branch; - return "master"; -} + if (context && + builder_context_get_default_branch (context)) + return builder_context_get_default_branch (context); -void -builder_manifest_set_default_branch (BuilderManifest *self, - const char *default_branch) -{ - if (self->branch == NULL) - self->branch = g_strdup (default_branch); + if (self->default_branch) + return self->default_branch; + + return "master"; } const char * @@ -1405,7 +1424,7 @@ builder_manifest_get_extension_tag (BuilderManifest *self) static const char * builder_manifest_get_base_version (BuilderManifest *self) { - return self->base_version ? self->base_version : builder_manifest_get_branch (self); + return self->base_version ? self->base_version : builder_manifest_get_branch (self, NULL); } G_GNUC_NULL_TERMINATED @@ -2713,7 +2732,7 @@ builder_manifest_finish (BuilderManifest *self, ref = flatpak_compose_ref (!self->build_runtime && !self->build_extension, builder_manifest_get_id (self), - builder_manifest_get_branch (self), + builder_manifest_get_branch (self, context), builder_context_get_arch (context)); if (self->metadata) @@ -3132,7 +3151,7 @@ builder_manifest_create_platform (BuilderManifest *self, ref = flatpak_compose_ref (!self->build_runtime && !self->build_extension, builder_manifest_get_id_platform (self), - builder_manifest_get_branch (self), + builder_manifest_get_branch (self, context), builder_context_get_arch (context)); platform_dir = g_file_get_child (app_dir, "platform"); diff --git a/src/builder-manifest.h b/src/builder-manifest.h index d66d2252..8deb5f54 100644 --- a/src/builder-manifest.h +++ b/src/builder-manifest.h @@ -59,9 +59,8 @@ BuilderOptions *builder_manifest_get_build_options (BuilderManifest *self); GList * builder_manifest_get_modules (BuilderManifest *self); GList * builder_manifest_get_add_extensions (BuilderManifest *self); GList * builder_manifest_get_add_build_extensions (BuilderManifest *self); -const char * builder_manifest_get_branch (BuilderManifest *self); -void builder_manifest_set_default_branch (BuilderManifest *self, - const char *default_branch); +const char * builder_manifest_get_branch (BuilderManifest *self, + BuilderContext *context); const char * builder_manifest_get_collection_id (BuilderManifest *self); const char * builder_manifest_get_extension_tag (BuilderManifest *self); void builder_manifest_set_default_collection_id (BuilderManifest *self,