diff --git a/app/flatpak-builtins-build-finish.c b/app/flatpak-builtins-build-finish.c
index 8cc7be1c..eb5fb5d9 100644
--- a/app/flatpak-builtins-build-finish.c
+++ b/app/flatpak-builtins-build-finish.c
@@ -258,9 +258,9 @@ update_metadata (GFile *base, FlatpakContext *arg_context, gboolean is_runtime,
goto out;
if (is_runtime)
- group = "Runtime";
+ group = FLATPAK_METADATA_GROUP_RUNTIME;
else
- group = "Application";
+ group = FLATPAK_METADATA_GROUP_APPLICATION;
path = g_file_get_path (metadata);
keyfile = g_key_file_new ();
@@ -269,8 +269,13 @@ update_metadata (GFile *base, FlatpakContext *arg_context, gboolean is_runtime,
if (opt_sdk != NULL || opt_runtime != NULL)
{
- g_autofree char *old_runtime = g_key_file_get_string (keyfile, group, "runtime", NULL);
- g_autofree char *old_sdk = g_key_file_get_string (keyfile, group, "sdk", NULL);
+ g_autofree char *old_runtime = g_key_file_get_string (keyfile,
+ group,
+ FLATPAK_METADATA_KEY_RUNTIME, NULL);
+ g_autofree char *old_sdk = g_key_file_get_string (keyfile,
+ group,
+ FLATPAK_METADATA_KEY_SDK,
+ NULL);
const char *old_sdk_arch = NULL;
const char *old_runtime_arch = NULL;
const char *old_sdk_branch = NULL;
@@ -316,7 +321,7 @@ update_metadata (GFile *base, FlatpakContext *arg_context, gboolean is_runtime,
return FALSE;
ref = flatpak_build_untyped_ref (id, branch, arch);
- g_key_file_set_string (keyfile, group, "sdk", ref);
+ g_key_file_set_string (keyfile, group, FLATPAK_METADATA_KEY_SDK, ref);
}
if (opt_runtime)
@@ -333,24 +338,24 @@ update_metadata (GFile *base, FlatpakContext *arg_context, gboolean is_runtime,
return FALSE;
ref = flatpak_build_untyped_ref (id, branch, arch);
- g_key_file_set_string (keyfile, group, "runtime", ref);
+ g_key_file_set_string (keyfile, group, FLATPAK_METADATA_KEY_RUNTIME, ref);
}
}
if (!is_runtime)
{
- if (g_key_file_has_key (keyfile, group, "command", NULL))
+ if (g_key_file_has_key (keyfile, group, FLATPAK_METADATA_KEY_COMMAND, NULL))
{
g_debug ("Command key is present");
if (opt_command)
- g_key_file_set_string (keyfile, group, "command", opt_command);
+ g_key_file_set_string (keyfile, group, FLATPAK_METADATA_KEY_COMMAND, opt_command);
}
else if (opt_command)
{
g_debug ("Using explicitly provided command %s", opt_command);
- g_key_file_set_string (keyfile, group, "command", opt_command);
+ g_key_file_set_string (keyfile, group, FLATPAK_METADATA_KEY_COMMAND, opt_command);
}
else
{
@@ -386,7 +391,7 @@ update_metadata (GFile *base, FlatpakContext *arg_context, gboolean is_runtime,
if (command)
{
g_print ("Using %s as command\n", command);
- g_key_file_set_string (keyfile, group, "command", command);
+ g_key_file_set_string (keyfile, group, FLATPAK_METADATA_KEY_COMMAND, command);
}
else
{
@@ -427,19 +432,26 @@ update_metadata (GFile *base, FlatpakContext *arg_context, gboolean is_runtime,
goto out;
}
- uri_key = g_strconcat ("uri", suffix, NULL);
- name_key = g_strconcat ("name", suffix, NULL);
- checksum_key = g_strconcat ("checksum", suffix, NULL);
- size_key = g_strconcat ("size", suffix, NULL);
- installed_size_key = g_strconcat ("installed-size", suffix, NULL);
+ uri_key = g_strconcat (FLATPAK_METADATA_KEY_EXTRA_DATA_URI, suffix, NULL);
+ name_key = g_strconcat (FLATPAK_METADATA_KEY_EXTRA_DATA_NAME, suffix, NULL);
+ checksum_key = g_strconcat (FLATPAK_METADATA_KEY_EXTRA_DATA_CHECKSUM,
+ suffix, NULL);
+ size_key = g_strconcat (FLATPAK_METADATA_KEY_EXTRA_DATA_SIZE, suffix, NULL);
+ installed_size_key = g_strconcat (FLATPAK_METADATA_KEY_EXTRA_DATA_INSTALLED_SIZE,
+ suffix, NULL);
if (strlen (elements[0]) > 0)
- g_key_file_set_string (keyfile, "Extra Data", name_key, elements[0]);
- g_key_file_set_string (keyfile, "Extra Data", checksum_key, elements[1]);
- g_key_file_set_string (keyfile, "Extra Data", size_key, elements[2]);
+ g_key_file_set_string (keyfile, FLATPAK_METADATA_GROUP_EXTRA_DATA,
+ name_key, elements[0]);
+ g_key_file_set_string (keyfile, FLATPAK_METADATA_GROUP_EXTRA_DATA,
+ checksum_key, elements[1]);
+ g_key_file_set_string (keyfile, FLATPAK_METADATA_GROUP_EXTRA_DATA,
+ size_key, elements[2]);
if (strlen (elements[3]) > 0)
- g_key_file_set_string (keyfile, "Extra Data", installed_size_key, elements[3]);
- g_key_file_set_string (keyfile, "Extra Data", uri_key, elements[4]);
+ g_key_file_set_string (keyfile, FLATPAK_METADATA_GROUP_EXTRA_DATA,
+ installed_size_key, elements[3]);
+ g_key_file_set_string (keyfile, FLATPAK_METADATA_GROUP_EXTRA_DATA,
+ uri_key, elements[4]);
}
for (i = 0; opt_metadata != NULL && opt_metadata[i] != NULL; i++)
@@ -467,7 +479,8 @@ update_metadata (GFile *base, FlatpakContext *arg_context, gboolean is_runtime,
goto out;
}
- groupname = g_strdup_printf ("Extension %s", elements[0]);
+ groupname = g_strconcat (FLATPAK_METADATA_GROUP_PREFIX_EXTENSION,
+ elements[0], NULL);
g_key_file_set_string (keyfile, groupname, elements[1], elements[2] ? elements[2] : "true");
}
@@ -531,10 +544,12 @@ flatpak_builtin_build_finish (int argc, char **argv, GCancellable *cancellable,
if (!g_key_file_load_from_data (metakey, metadata_contents, metadata_size, 0, error))
return FALSE;
- id = g_key_file_get_string (metakey, "Application", "name", NULL);
+ id = g_key_file_get_string (metakey, FLATPAK_METADATA_GROUP_APPLICATION,
+ FLATPAK_METADATA_KEY_NAME, NULL);
if (id == NULL)
{
- id = g_key_file_get_string (metakey, "Runtime", "name", NULL);
+ id = g_key_file_get_string (metakey, FLATPAK_METADATA_GROUP_RUNTIME,
+ FLATPAK_METADATA_KEY_NAME, NULL);
if (id == NULL)
return flatpak_fail (error, _("No name specified in the metadata"));
is_runtime = TRUE;
diff --git a/app/flatpak-builtins-build.c b/app/flatpak-builtins-build.c
index ff82f489..e1939271 100644
--- a/app/flatpak-builtins-build.c
+++ b/app/flatpak-builtins-build.c
@@ -97,6 +97,7 @@ flatpak_builtin_build (int argc, char **argv, GCancellable *cancellable, GError
g_auto(GStrv) runtime_ref_parts = NULL;
FlatpakRunFlags run_flags;
const char *group = NULL;
+ const char *runtime_key = NULL;
const char *dest = NULL;
gboolean is_app = FALSE;
gboolean is_extension = FALSE;
@@ -146,19 +147,21 @@ flatpak_builtin_build (int argc, char **argv, GCancellable *cancellable, GError
if (!g_key_file_load_from_data (metakey, metadata_contents, metadata_size, 0, error))
return FALSE;
- if (g_key_file_has_group (metakey, "Application"))
+ if (g_key_file_has_group (metakey, FLATPAK_METADATA_GROUP_APPLICATION))
{
- group = "Application";
+ group = FLATPAK_METADATA_GROUP_APPLICATION;
is_app = TRUE;
}
- else if (g_key_file_has_group (metakey, "Runtime"))
+ else if (g_key_file_has_group (metakey, FLATPAK_METADATA_GROUP_RUNTIME))
{
- group = "Runtime";
+ group = FLATPAK_METADATA_GROUP_RUNTIME;
}
else
return flatpak_fail (error, _("metadata invalid, not application or runtime"));
- extensionof_ref = g_key_file_get_string (metakey, "ExtensionOf", "ref", NULL);
+ extensionof_ref = g_key_file_get_string (metakey,
+ FLATPAK_METADATA_GROUP_EXTENSION_OF,
+ FLATPAK_METADATA_KEY_REF, NULL);
if (extensionof_ref != NULL)
{
is_extension = TRUE;
@@ -167,11 +170,16 @@ flatpak_builtin_build (int argc, char **argv, GCancellable *cancellable, GError
}
- id = g_key_file_get_string (metakey, group, "name", error);
+ id = g_key_file_get_string (metakey, group, FLATPAK_METADATA_KEY_NAME, error);
if (id == NULL)
return FALSE;
- runtime = g_key_file_get_string (metakey, group, opt_runtime ? "runtime" : "sdk", error);
+ if (opt_runtime)
+ runtime_key = FLATPAK_METADATA_KEY_RUNTIME;
+ else
+ runtime_key = FLATPAK_METADATA_KEY_SDK;
+
+ runtime = g_key_file_get_string (metakey, group, runtime_key, error);
if (runtime == NULL)
return FALSE;
@@ -222,7 +230,7 @@ flatpak_builtin_build (int argc, char **argv, GCancellable *cancellable, GError
x_metakey = flatpak_deploy_get_metadata (extensionof_deploy);
- x_group = g_strdup_printf ("Extension %s", id);
+ x_group = g_strconcat (FLATPAK_METADATA_GROUP_PREFIX_EXTENSION, id, NULL);
if (!g_key_file_has_group (x_metakey, x_group))
{
/* Failed, look for subdirectories=true parent */
@@ -232,8 +240,11 @@ flatpak_builtin_build (int argc, char **argv, GCancellable *cancellable, GError
{
char *parent_id = g_strndup (id, last_dot - id);
g_free (x_group);
- x_group = g_strdup_printf ("Extension %s", parent_id);
- if (g_key_file_get_boolean (x_metakey, x_group, "subdirectories", NULL))
+ x_group = g_strconcat (FLATPAK_METADATA_GROUP_PREFIX_EXTENSION,
+ parent_id, NULL);
+ if (g_key_file_get_boolean (x_metakey, x_group,
+ FLATPAK_METADATA_KEY_SUBDIRECTORIES,
+ NULL))
x_subdir = last_dot + 1;
}
@@ -241,12 +252,14 @@ flatpak_builtin_build (int argc, char **argv, GCancellable *cancellable, GError
return flatpak_fail (error, _("No extension point matching %s in %s"), id, extensionof_ref);
}
- x_dir = g_key_file_get_string (x_metakey, x_group, "directory", error);
+ x_dir = g_key_file_get_string (x_metakey, x_group,
+ FLATPAK_METADATA_KEY_DIRECTORY, error);
if (x_dir == NULL)
return FALSE;
x_subdir_suffix = g_key_file_get_string (x_metakey, x_group,
- "subdirectory-suffix", NULL);
+ FLATPAK_METADATA_KEY_SUBDIRECTORY_SUFFIX,
+ NULL);
if (is_app_extension)
{
diff --git a/builder/builder-manifest.c b/builder/builder-manifest.c
index e9f585ee..d9fec7ac 100644
--- a/builder/builder-manifest.c
+++ b/builder/builder-manifest.c
@@ -2220,7 +2220,9 @@ builder_manifest_finish (BuilderManifest *self,
for (i = 0; self->inherit_extensions[i] != NULL; i++)
{
- g_autofree char *group = g_strdup_printf ("Extension %s", self->inherit_extensions[i]);
+ g_autofree char *group = g_strconcat (FLATPAK_METADATA_GROUP_PREFIX_EXTENSION,
+ self->inherit_extensions[i],
+ NULL);
g_auto(GStrv) keys = NULL;
int j;
@@ -2239,9 +2241,13 @@ builder_manifest_finish (BuilderManifest *self,
g_key_file_set_value (keyfile, group, keys[j], value);
}
- if (!g_key_file_has_key (keyfile, group, "version", NULL) &&
- !g_key_file_has_key (keyfile, group, "versions", NULL))
- g_key_file_set_value (keyfile, group, "version", parent_version);
+ if (!g_key_file_has_key (keyfile, group,
+ FLATPAK_METADATA_KEY_VERSION, NULL) &&
+ !g_key_file_has_key (keyfile, group,
+ FLATPAK_METADATA_KEY_VERSIONS, NULL))
+ g_key_file_set_value (keyfile, group,
+ FLATPAK_METADATA_KEY_VERSION,
+ parent_version);
}
if (!g_key_file_save_to_file (keyfile,
@@ -2564,7 +2570,7 @@ builder_manifest_create_platform (BuilderManifest *self,
g_autoptr(GFile) dest_metadata = g_file_get_child (app_dir, "metadata.platform");
g_autoptr(GKeyFile) keyfile = g_key_file_new ();
g_auto(GStrv) groups = NULL;
- g_autofree char *sdk_group_prefix = g_strdup_printf ("Extension %s.", self->id);
+ g_autofree char *sdk_group_prefix = g_strconcat (FLATPAK_METADATA_GROUP_PREFIX_EXTENSION, self->id, NULL);
int j;
if (!g_key_file_load_from_file (keyfile,
@@ -2576,7 +2582,8 @@ builder_manifest_create_platform (BuilderManifest *self,
return FALSE;
}
- g_key_file_set_string (keyfile, "Runtime", "name", self->id_platform);
+ g_key_file_set_string (keyfile, FLATPAK_METADATA_GROUP_RUNTIME,
+ FLATPAK_METADATA_KEY_NAME, self->id_platform);
groups = g_key_file_get_groups (keyfile, NULL);
for (j = 0; groups[j] != NULL; j++)
diff --git a/common/flatpak-dir.c b/common/flatpak-dir.c
index 45c938d1..746837a7 100644
--- a/common/flatpak-dir.c
+++ b/common/flatpak-dir.c
@@ -4307,7 +4307,7 @@ apply_extra_data (FlatpakDir *self,
g_autoptr(GArray) fd_array = NULL;
g_auto(GStrv) envp = NULL;
int exit_status;
- const char *group = "Application";
+ const char *group = FLATPAK_METADATA_GROUP_APPLICATION;
g_autoptr(GError) local_error = NULL;
apply_extra_file = g_file_resolve_relative_path (checkoutdir, "files/bin/apply_extra");
@@ -4323,11 +4323,13 @@ apply_extra_data (FlatpakDir *self,
if (!g_key_file_load_from_data (metakey, metadata_contents, metadata_size, 0, error))
return FALSE;
- id = g_key_file_get_string (metakey, group, "name", &local_error);
+ id = g_key_file_get_string (metakey, group, FLATPAK_METADATA_KEY_NAME,
+ &local_error);
if (id == NULL)
{
- group = "Runtime";
- id = g_key_file_get_string (metakey, group, "name", NULL);
+ group = FLATPAK_METADATA_GROUP_RUNTIME;
+ id = g_key_file_get_string (metakey, group, FLATPAK_METADATA_KEY_NAME,
+ NULL);
if (id == NULL)
{
g_propagate_error (error, g_steal_pointer (&local_error));
@@ -4336,7 +4338,8 @@ apply_extra_data (FlatpakDir *self,
g_clear_error (&local_error);
}
- runtime = g_key_file_get_string (metakey, group, "runtime", error);
+ runtime = g_key_file_get_string (metakey, group,
+ FLATPAK_METADATA_KEY_RUNTIME, error);
if (runtime == NULL)
return FALSE;
@@ -4346,7 +4349,8 @@ apply_extra_data (FlatpakDir *self,
if (runtime_ref_parts == NULL)
return FALSE;
- if (!g_key_file_get_boolean (metakey, "Extra Data", "NoRuntime", NULL))
+ if (!g_key_file_get_boolean (metakey, FLATPAK_METADATA_GROUP_EXTRA_DATA,
+ FLATPAK_METADATA_KEY_NO_RUNTIME, NULL))
{
runtime_deploy = flatpak_find_deploy_for_ref (runtime_ref, cancellable, error);
if (runtime_deploy == NULL)
@@ -8649,19 +8653,19 @@ flatpak_dir_find_remote_related (FlatpakDir *self,
{
char *extension;
- if (g_str_has_prefix (groups[i], "Extension ") &&
- *(extension = (groups[i] + strlen ("Extension "))) != 0)
+ if (g_str_has_prefix (groups[i], FLATPAK_METADATA_GROUP_PREFIX_EXTENSION) &&
+ *(extension = (groups[i] + strlen (FLATPAK_METADATA_GROUP_PREFIX_EXTENSION))) != 0)
{
g_autofree char *version = g_key_file_get_string (metakey, groups[i],
- "version", NULL);
+ FLATPAK_METADATA_KEY_VERSION, NULL);
gboolean subdirectories = g_key_file_get_boolean (metakey, groups[i],
- "subdirectories", NULL);
+ FLATPAK_METADATA_KEY_SUBDIRECTORIES, NULL);
gboolean no_autodownload = g_key_file_get_boolean (metakey, groups[i],
- "no-autodownload", NULL);
+ FLATPAK_METADATA_KEY_NO_AUTODOWNLOAD, NULL);
g_autofree char *download_if = g_key_file_get_string (metakey, groups[i],
- "download-if", NULL);
+ FLATPAK_METADATA_KEY_DOWNLOAD_IF, NULL);
gboolean autodelete = g_key_file_get_boolean (metakey, groups[i],
- "autodelete", NULL);
+ FLATPAK_METADATA_KEY_AUTODELETE, NULL);
const char *branch;
g_autofree char *extension_ref = NULL;
g_autofree char *checksum = NULL;
@@ -8781,19 +8785,19 @@ flatpak_dir_find_local_related (FlatpakDir *self,
{
char *extension;
- if (g_str_has_prefix (groups[i], "Extension ") &&
- *(extension = (groups[i] + strlen ("Extension "))) != 0)
+ if (g_str_has_prefix (groups[i], FLATPAK_METADATA_GROUP_PREFIX_EXTENSION) &&
+ *(extension = (groups[i] + strlen (FLATPAK_METADATA_GROUP_PREFIX_EXTENSION))) != 0)
{
g_autofree char *version = g_key_file_get_string (metakey, groups[i],
- "version", NULL);
+ FLATPAK_METADATA_KEY_VERSION, NULL);
gboolean subdirectories = g_key_file_get_boolean (metakey, groups[i],
- "subdirectories", NULL);
+ FLATPAK_METADATA_KEY_SUBDIRECTORIES, NULL);
gboolean no_autodownload = g_key_file_get_boolean (metakey, groups[i],
- "no-autodownload", NULL);
+ FLATPAK_METADATA_KEY_NO_AUTODOWNLOAD, NULL);
g_autofree char *download_if = g_key_file_get_string (metakey, groups[i],
- "download-if", NULL);
+ FLATPAK_METADATA_KEY_DOWNLOAD_IF, NULL);
gboolean autodelete = g_key_file_get_boolean (metakey, groups[i],
- "autodelete", NULL);
+ FLATPAK_METADATA_KEY_AUTODELETE, NULL);
const char *branch;
g_autofree char *extension_ref = NULL;
g_autofree char *prefixed_extension_ref = NULL;
diff --git a/common/flatpak-run.c b/common/flatpak-run.c
index 70cb5b7f..e3cdadd6 100644
--- a/common/flatpak-run.c
+++ b/common/flatpak-run.c
@@ -1233,7 +1233,15 @@ parse_negated (const char *option, gboolean *negated)
return option;
}
-/* This is a merge, not a replace */
+/*
+ * Merge the FLATPAK_METADATA_GROUP_CONTEXT,
+ * FLATPAK_METADATA_GROUP_SESSION_BUS_POLICY,
+ * FLATPAK_METADATA_GROUP_SYSTEM_BUS_POLICY and
+ * FLATPAK_METADATA_GROUP_ENVIRONMENT groups, and all groups starting
+ * with FLATPAK_METADATA_GROUP_PREFIX_POLICY, from metakey into context.
+ *
+ * This is a merge, not a replace!
+ */
gboolean
flatpak_context_load_metadata (FlatpakContext *context,
GKeyFile *metakey,
@@ -1444,6 +1452,13 @@ flatpak_context_load_metadata (FlatpakContext *context,
return TRUE;
}
+/*
+ * Save the FLATPAK_METADATA_GROUP_CONTEXT,
+ * FLATPAK_METADATA_GROUP_SESSION_BUS_POLICY,
+ * FLATPAK_METADATA_GROUP_SYSTEM_BUS_POLICY and
+ * FLATPAK_METADATA_GROUP_ENVIRONMENT groups, and all groups starting
+ * with FLATPAK_METADATA_GROUP_PREFIX_POLICY, into metakey
+ */
void
flatpak_context_save_metadata (FlatpakContext *context,
gboolean flatten,
@@ -3489,30 +3504,37 @@ flatpak_run_add_app_info_args (GPtrArray *argv_array,
keyfile = g_key_file_new ();
if (app_files)
- group = "Application";
+ group = FLATPAK_METADATA_GROUP_APPLICATION;
else
- group = "Runtime";
+ group = FLATPAK_METADATA_GROUP_RUNTIME;
- g_key_file_set_string (keyfile, group, "name", app_id);
- g_key_file_set_string (keyfile, group, "runtime", runtime_ref);
+ g_key_file_set_string (keyfile, group, FLATPAK_METADATA_KEY_NAME, app_id);
+ g_key_file_set_string (keyfile, group, FLATPAK_METADATA_KEY_RUNTIME,
+ runtime_ref);
if (app_files)
{
g_autofree char *app_path = g_file_get_path (app_files);
- g_key_file_set_string (keyfile, "Instance", "app-path", app_path);
+ g_key_file_set_string (keyfile, FLATPAK_METADATA_GROUP_INSTANCE,
+ FLATPAK_METADATA_KEY_APP_PATH, app_path);
}
runtime_path = g_file_get_path (runtime_files);
- g_key_file_set_string (keyfile, "Instance", "runtime-path", runtime_path);
+ g_key_file_set_string (keyfile, FLATPAK_METADATA_GROUP_INSTANCE,
+ FLATPAK_METADATA_KEY_RUNTIME_PATH, runtime_path);
if (app_branch != NULL)
- g_key_file_set_string (keyfile, "Instance", "branch", app_branch);
+ g_key_file_set_string (keyfile, FLATPAK_METADATA_GROUP_INSTANCE,
+ FLATPAK_METADATA_KEY_BRANCH, app_branch);
- g_key_file_set_string (keyfile, "Instance", "flatpak-version", PACKAGE_VERSION);
+ g_key_file_set_string (keyfile, FLATPAK_METADATA_GROUP_INSTANCE,
+ FLATPAK_METADATA_KEY_FLATPAK_VERSION, PACKAGE_VERSION);
if ((final_app_context->sockets & FLATPAK_CONTEXT_SOCKET_SESSION_BUS) == 0)
- g_key_file_set_boolean (keyfile, "Instance", "session-bus-proxy", TRUE);
+ g_key_file_set_boolean (keyfile, FLATPAK_METADATA_GROUP_INSTANCE,
+ FLATPAK_METADATA_KEY_SESSION_BUS_PROXY, TRUE);
if ((final_app_context->sockets & FLATPAK_CONTEXT_SOCKET_SYSTEM_BUS) == 0)
- g_key_file_set_boolean (keyfile, "Instance", "system-bus-proxy", TRUE);
+ g_key_file_set_boolean (keyfile, FLATPAK_METADATA_GROUP_INSTANCE,
+ FLATPAK_METADATA_KEY_SYSTEM_BUS_PROXY, TRUE);
flatpak_context_save_metadata (final_app_context, TRUE, keyfile);
@@ -4614,10 +4636,17 @@ flatpak_run_app (const char *app_ref,
}
else
{
+ const gchar *key;
+
+ if ((flags & FLATPAK_RUN_FLAG_DEVEL) != 0)
+ key = FLATPAK_METADATA_KEY_SDK;
+ else
+ key = FLATPAK_METADATA_KEY_RUNTIME,
+
metakey = flatpak_deploy_get_metadata (app_deploy);
- default_runtime = g_key_file_get_string (metakey, "Application",
- (flags & FLATPAK_RUN_FLAG_DEVEL) != 0 ? "sdk" : "runtime",
- &my_error);
+ default_runtime = g_key_file_get_string (metakey,
+ FLATPAK_METADATA_GROUP_APPLICATION,
+ key, &my_error);
if (my_error)
{
g_propagate_error (error, g_steal_pointer (&my_error));
@@ -4747,7 +4776,10 @@ flatpak_run_app (const char *app_ref,
}
else if (metakey)
{
- default_command = g_key_file_get_string (metakey, "Application", "command", &my_error);
+ default_command = g_key_file_get_string (metakey,
+ FLATPAK_METADATA_GROUP_APPLICATION,
+ FLATPAK_METADATA_KEY_COMMAND,
+ &my_error);
if (my_error)
{
g_propagate_error (error, g_steal_pointer (&my_error));
diff --git a/common/flatpak-run.h b/common/flatpak-run.h
index c196c883..8aecc5e4 100644
--- a/common/flatpak-run.h
+++ b/common/flatpak-run.h
@@ -29,11 +29,18 @@
gboolean flatpak_run_in_transient_unit (const char *app_id,
GError **error);
+/* See flatpak-metadata(5) */
+
+#define FLATPAK_METADATA_GROUP_APPLICATION "Application"
+#define FLATPAK_METADATA_GROUP_RUNTIME "Runtime"
+#define FLATPAK_METADATA_KEY_COMMAND "command"
+#define FLATPAK_METADATA_KEY_NAME "name"
+#define FLATPAK_METADATA_KEY_REQUIRED_FLATPAK "required-flatpak"
+#define FLATPAK_METADATA_KEY_RUNTIME "runtime"
+#define FLATPAK_METADATA_KEY_SDK "sdk"
+#define FLATPAK_METADATA_KEY_TAGS "tags"
+
#define FLATPAK_METADATA_GROUP_CONTEXT "Context"
-#define FLATPAK_METADATA_GROUP_SESSION_BUS_POLICY "Session Bus Policy"
-#define FLATPAK_METADATA_GROUP_SYSTEM_BUS_POLICY "System Bus Policy"
-#define FLATPAK_METADATA_GROUP_PREFIX_POLICY "Policy "
-#define FLATPAK_METADATA_GROUP_ENVIRONMENT "Environment"
#define FLATPAK_METADATA_KEY_SHARED "shared"
#define FLATPAK_METADATA_KEY_SOCKETS "sockets"
#define FLATPAK_METADATA_KEY_FILESYSTEMS "filesystems"
@@ -41,6 +48,44 @@ gboolean flatpak_run_in_transient_unit (const char *app_id,
#define FLATPAK_METADATA_KEY_DEVICES "devices"
#define FLATPAK_METADATA_KEY_FEATURES "features"
+#define FLATPAK_METADATA_GROUP_INSTANCE "Instance"
+#define FLATPAK_METADATA_KEY_APP_PATH "app-path"
+#define FLATPAK_METADATA_KEY_BRANCH "branch"
+#define FLATPAK_METADATA_KEY_FLATPAK_VERSION "flatpak-version"
+#define FLATPAK_METADATA_KEY_RUNTIME_PATH "runtime-path"
+#define FLATPAK_METADATA_KEY_SESSION_BUS_PROXY "session-bus-proxy"
+#define FLATPAK_METADATA_KEY_SYSTEM_BUS_PROXY "system-bus-proxy"
+
+#define FLATPAK_METADATA_GROUP_SESSION_BUS_POLICY "Session Bus Policy"
+#define FLATPAK_METADATA_GROUP_SYSTEM_BUS_POLICY "System Bus Policy"
+#define FLATPAK_METADATA_GROUP_PREFIX_POLICY "Policy "
+#define FLATPAK_METADATA_GROUP_ENVIRONMENT "Environment"
+
+#define FLATPAK_METADATA_GROUP_PREFIX_EXTENSION "Extension "
+#define FLATPAK_METADATA_KEY_ADD_LD_PATH "add-ld-path"
+#define FLATPAK_METADATA_KEY_AUTODELETE "autodelete"
+#define FLATPAK_METADATA_KEY_DIRECTORY "directory"
+#define FLATPAK_METADATA_KEY_DOWNLOAD_IF "download-if"
+#define FLATPAK_METADATA_KEY_ENABLE_IF "enable-if"
+#define FLATPAK_METADATA_KEY_MERGE_DIRS "merge-dirs"
+#define FLATPAK_METADATA_KEY_NO_AUTODOWNLOAD "no-autodownload"
+#define FLATPAK_METADATA_KEY_SUBDIRECTORIES "subdirectories"
+#define FLATPAK_METADATA_KEY_SUBDIRECTORY_SUFFIX "subdirectory-suffix"
+#define FLATPAK_METADATA_KEY_VERSION "version"
+#define FLATPAK_METADATA_KEY_VERSIONS "versions"
+
+#define FLATPAK_METADATA_GROUP_EXTRA_DATA "Extra Data"
+#define FLATPAK_METADATA_KEY_EXTRA_DATA_CHECKSUM "checksum"
+#define FLATPAK_METADATA_KEY_EXTRA_DATA_INSTALLED_SIZE "installed-size"
+#define FLATPAK_METADATA_KEY_EXTRA_DATA_NAME "name"
+#define FLATPAK_METADATA_KEY_EXTRA_DATA_SIZE "size"
+#define FLATPAK_METADATA_KEY_EXTRA_DATA_URI "uri"
+#define FLATPAK_METADATA_KEY_NO_RUNTIME "NoRuntime"
+
+#define FLATPAK_METADATA_GROUP_EXTENSION_OF "ExtensionOf"
+#define FLATPAK_METADATA_KEY_PRIORITY "priority"
+#define FLATPAK_METADATA_KEY_REF "ref"
+
extern const char *flatpak_context_sockets[];
extern const char *flatpak_context_devices[];
extern const char *flatpak_context_features[];
diff --git a/common/flatpak-utils.c b/common/flatpak-utils.c
index 7253880f..282d4fd7 100644
--- a/common/flatpak-utils.c
+++ b/common/flatpak-utils.c
@@ -1676,7 +1676,8 @@ parse_app_id_from_fileinfo (int pid)
if (errno == ENOENT)
{
/* No file => on the host */
- g_key_file_set_string (metadata, "Application", "name", "");
+ g_key_file_set_string (metadata, FLATPAK_METADATA_GROUP_APPLICATION,
+ FLATPAK_METADATA_KEY_NAME, "");
return g_steal_pointer (&metadata);
}
@@ -3351,13 +3352,15 @@ flatpak_appstream_xml_migrate (FlatpakXml *source,
return FALSE;
if (g_str_has_prefix (ref, "app/"))
- group = "Application";
+ group = FLATPAK_METADATA_GROUP_APPLICATION;
else
- group = "Runtime";
+ group = FLATPAK_METADATA_GROUP_RUNTIME;
- tags = g_key_file_get_string_list (metadata, group, "tags", NULL, NULL);
- runtime = g_key_file_get_string (metadata, group, "runtime", NULL);
- sdk = g_key_file_get_string (metadata, group, "sdk", NULL);
+ tags = g_key_file_get_string_list (metadata, group, FLATPAK_METADATA_KEY_TAGS,
+ NULL, NULL);
+ runtime = g_key_file_get_string (metadata, group,
+ FLATPAK_METADATA_KEY_RUNTIME, NULL);
+ sdk = g_key_file_get_string (metadata, group, FLATPAK_METADATA_KEY_SDK, NULL);
source_components = source->first_child;
dest_components = dest->first_child;
@@ -3831,7 +3834,10 @@ flatpak_extension_new (const char *id,
g_autofree char *metadata_path = g_build_filename (ext->files_path, "../metadata", NULL);
if (g_key_file_load_from_file (keyfile, metadata_path, G_KEY_FILE_NONE, NULL))
- ext->priority = g_key_file_get_integer (keyfile, "ExtensionOf", "priority", NULL);
+ ext->priority = g_key_file_get_integer (keyfile,
+ FLATPAK_METADATA_GROUP_EXTENSION_OF,
+ FLATPAK_METADATA_KEY_PRIORITY,
+ NULL);
}
return ext;
@@ -3879,11 +3885,21 @@ add_extension (GKeyFile *metakey,
GList *res)
{
FlatpakExtension *ext;
- g_autofree char *directory = g_key_file_get_string (metakey, group, "directory", NULL);
- g_autofree char *add_ld_path = g_key_file_get_string (metakey, group, "add-ld-path", NULL);
- g_auto(GStrv) merge_dirs = g_key_file_get_string_list (metakey, group, "merge-dirs", NULL, NULL);
- g_autofree char *enable_if = g_key_file_get_string (metakey, group, "enable-if", NULL);
- g_autofree char *subdir_suffix = g_key_file_get_string (metakey, group, "subdirectory-suffix", NULL);
+ g_autofree char *directory = g_key_file_get_string (metakey, group,
+ FLATPAK_METADATA_KEY_DIRECTORY,
+ NULL);
+ g_autofree char *add_ld_path = g_key_file_get_string (metakey, group,
+ FLATPAK_METADATA_KEY_ADD_LD_PATH,
+ NULL);
+ g_auto(GStrv) merge_dirs = g_key_file_get_string_list (metakey, group,
+ FLATPAK_METADATA_KEY_MERGE_DIRS,
+ NULL, NULL);
+ g_autofree char *enable_if = g_key_file_get_string (metakey, group,
+ FLATPAK_METADATA_KEY_ENABLE_IF,
+ NULL);
+ g_autofree char *subdir_suffix = g_key_file_get_string (metakey, group,
+ FLATPAK_METADATA_KEY_SUBDIRECTORY_SUFFIX,
+ NULL);
g_autofree char *ref = NULL;
gboolean is_unmaintained = FALSE;
g_autoptr(GFile) files = NULL;
@@ -3910,7 +3926,7 @@ add_extension (GKeyFile *metakey,
}
}
else if (g_key_file_get_boolean (metakey, group,
- "subdirectories", NULL))
+ FLATPAK_METADATA_KEY_SUBDIRECTORIES, NULL))
{
g_autofree char *prefix = g_strconcat (extension, ".", NULL);
g_auto(GStrv) refs = NULL;
@@ -3973,11 +3989,15 @@ flatpak_list_extensions (GKeyFile *metakey,
{
char *extension;
- if (g_str_has_prefix (groups[i], "Extension ") &&
- *(extension = (groups[i] + strlen ("Extension "))) != 0)
+ if (g_str_has_prefix (groups[i], FLATPAK_METADATA_GROUP_PREFIX_EXTENSION) &&
+ *(extension = (groups[i] + strlen (FLATPAK_METADATA_GROUP_PREFIX_EXTENSION))) != 0)
{
- g_autofree char *version = g_key_file_get_string (metakey, groups[i], "version", NULL);
- g_auto(GStrv) versions = g_key_file_get_string_list (metakey, groups[i], "versions", NULL, NULL);
+ g_autofree char *version = g_key_file_get_string (metakey, groups[i],
+ FLATPAK_METADATA_KEY_VERSION,
+ NULL);
+ g_auto(GStrv) versions = g_key_file_get_string_list (metakey, groups[i],
+ FLATPAK_METADATA_KEY_VERSIONS,
+ NULL, NULL);
const char *default_branches[] = { default_branch, NULL};
const char **branches;
diff --git a/doc/flatpak-metadata.xml b/doc/flatpak-metadata.xml
index 180880a6..131a1a1b 100644
--- a/doc/flatpak-metadata.xml
+++ b/doc/flatpak-metadata.xml
@@ -48,7 +48,10 @@
A metadata file describing the effective configuration is available
- inside the running sandbox at /run/user/$UID/flatpak-info.
+ inside the running sandbox at /.flatpak-info.
+ For compatibility with older Flatpak versions,
+ /run/user/$UID/flatpak-info is a symbolic
+ link to the same file.
@@ -87,6 +90,21 @@
(string)
The command to run. Only relevant for applications.
+
+ (string)
+
+ The required version of Flatpak to run this application
+ or runtime.
+
+
+
+ (string list)
+
+ Tags to include in AppStream XML.
+
+
+
@@ -155,6 +173,77 @@
the per-application location.
+
+ (list)
+
+ List of features available or unavailable to the
+ application, currently from the following list:
+ devel, multiarch.
+ A feature can be prefixed with ! to indicate the absence
+ of that feature, for example !devel if development and
+ debugging are not allowed.
+
+
+
+
+
+ [Instance]
+
+ This group only appears in /.flatpak-info
+ for a running app, and not in the metadata files written by
+ application authors. It is filled in by Flatpak itself.
+
+
+
+ (string)
+
+ The absolute path on the host system of the app's
+ app files, as mounted at /app
+ inside the container
+
+
+
+ (string)
+
+ The branch of the app, for example
+ stable
+
+
+
+ (string)
+
+ The version number of the Flatpak version that ran
+ this app
+
+
+
+ (string)
+
+ The absolute path on the host system of the app's
+ runtime files, as mounted at /usr
+ inside the container
+
+
+
+ (boolean)
+
+ True if this app cannot access the D-Bus session bus
+ directly (either it goes via a proxy, or it cannot
+ access the session bus at all)
+
+
+
+
+ (boolean)
+
+ True if this app cannot access the D-Bus system bus
+ directly (either it goes via a proxy, or it cannot
+ access the system bus at all)
+
+
+
@@ -407,6 +496,16 @@
+
+ [Policy SUBSYSTEM]
+
+ Subsystems can define their own policies to be placed in a group
+ whose name has this form. Their values are treated as lists,
+ in which items can have their meaning negated by prepending !
+ to the value. They are not otherwise parsed by Flatpak.
+
+
+
diff --git a/document-portal/xdp-main.c b/document-portal/xdp-main.c
index f2640ee7..5d679d2c 100644
--- a/document-portal/xdp-main.c
+++ b/document-portal/xdp-main.c
@@ -422,8 +422,12 @@ validate_fd (int fd,
/* For apps we translate /app and /usr to the installed locations.
Also, we need to rewrite to drop the /newroot prefix added by
bubblewrap for other files to work. */
- app_path = g_key_file_get_string (app_info, "Instance", "app-path", NULL);
- runtime_path = g_key_file_get_string (app_info, "Instance", "runtime-path", NULL);
+ app_path = g_key_file_get_string (app_info, FLATPAK_METADATA_GROUP_INSTANCE,
+ FLATPAK_METADATA_KEY_APP_PATH, NULL);
+ runtime_path = g_key_file_get_string (app_info,
+ FLATPAK_METADATA_GROUP_INSTANCE,
+ FLATPAK_METADATA_KEY_RUNTIME_PATH,
+ NULL);
if (app_path != NULL || runtime_path != NULL)
{
if (app_path != NULL &&
@@ -824,7 +828,9 @@ got_app_id_cb (GObject *source_object,
app_info = flatpak_invocation_lookup_app_info_finish (invocation, res, &error);
if (app_info != NULL)
- app_id = g_key_file_get_string (app_info, "Application", "name", &error);
+ app_id = g_key_file_get_string (app_info,
+ FLATPAK_METADATA_GROUP_APPLICATION,
+ FLATPAK_METADATA_KEY_NAME, &error);
if (app_id == NULL)
g_dbus_method_invocation_return_gerror (invocation, error);