common: Add and use constants for flatpak-metadata(5) groups and keys

This makes it easier to avoid typos, and also makes it easier to see
what groups and keys are in use. In the header file, they are
clustered according to the group in which the keys are used.

Signed-off-by: Simon McVittie <smcv@collabora.com>
tingping/wmclass
Simon McVittie 2017-07-07 16:02:19 +01:00
parent a80a1b9bb2
commit 489bfddfb3
8 changed files with 226 additions and 99 deletions

View File

@ -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;

View File

@ -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)
{

View File

@ -2221,7 +2221,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;
@ -2240,9 +2242,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,
@ -2565,7 +2571,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,
@ -2577,7 +2583,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++)

View File

@ -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;

View File

@ -3489,30 +3489,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 +4621,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 +4761,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));

View File

@ -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[];

View File

@ -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;

View File

@ -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);