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,