mirror of
https://github.com/flatpak/flatpak.git
synced 2026-05-24 08:51:27 -04:00
common: Separate creation of FlatpakExports from append_bwrap_filesystem
A subsequent commit will need to look at the FlatpakExports before we are ready to append their arguments to the FlatpakBwrap. Signed-off-by: Simon McVittie <smcv@collabora.com>
This commit is contained in:
committed by
Alexander Larsson
parent
5d50b77c37
commit
574ff50cf4
@@ -145,8 +145,9 @@ void flatpak_context_append_bwrap_filesystem (FlatpakContext *context,
|
||||
FlatpakBwrap *bwrap,
|
||||
const char *app_id,
|
||||
GFile *app_id_dir,
|
||||
GPtrArray *extra_app_id_dirs,
|
||||
FlatpakExports **exports_out);
|
||||
FlatpakExports *exports,
|
||||
const char *xdg_dirs_conf,
|
||||
gboolean home_access);
|
||||
|
||||
G_DEFINE_AUTOPTR_CLEANUP_FUNC (FlatpakContext, flatpak_context_free)
|
||||
|
||||
|
||||
@@ -2501,20 +2501,13 @@ flatpak_context_append_bwrap_filesystem (FlatpakContext *context,
|
||||
FlatpakBwrap *bwrap,
|
||||
const char *app_id,
|
||||
GFile *app_id_dir,
|
||||
GPtrArray *extra_app_id_dirs,
|
||||
FlatpakExports **exports_out)
|
||||
FlatpakExports *exports,
|
||||
const char *xdg_dirs_conf,
|
||||
gboolean home_access)
|
||||
{
|
||||
g_autoptr(FlatpakExports) exports = NULL;
|
||||
g_autofree char *xdg_dirs_conf = NULL;
|
||||
gboolean home_access = FALSE;
|
||||
GHashTableIter iter;
|
||||
gpointer key, value;
|
||||
|
||||
exports = flatpak_context_get_exports_full (context,
|
||||
app_id_dir, extra_app_id_dirs,
|
||||
TRUE, TRUE,
|
||||
&xdg_dirs_conf, &home_access);
|
||||
|
||||
if (app_id_dir != NULL)
|
||||
flatpak_run_apply_env_appid (bwrap, app_id_dir);
|
||||
|
||||
@@ -2610,7 +2603,4 @@ flatpak_context_append_bwrap_filesystem (FlatpakContext *context,
|
||||
flatpak_bwrap_add_args_data (bwrap, "xdg-config-dirs",
|
||||
xdg_dirs_conf, strlen (xdg_dirs_conf), path, NULL);
|
||||
}
|
||||
|
||||
if (exports_out)
|
||||
*exports_out = g_steal_pointer (&exports);
|
||||
}
|
||||
|
||||
@@ -1352,8 +1352,10 @@ flatpak_run_add_environment_args (FlatpakBwrap *bwrap,
|
||||
g_autoptr(GError) my_error = NULL;
|
||||
g_autoptr(FlatpakExports) exports = NULL;
|
||||
g_autoptr(FlatpakBwrap) proxy_arg_bwrap = flatpak_bwrap_new (flatpak_bwrap_empty_env);
|
||||
g_autofree char *xdg_dirs_conf = NULL;
|
||||
gboolean has_wayland = FALSE;
|
||||
gboolean allow_x11 = FALSE;
|
||||
gboolean home_access = FALSE;
|
||||
|
||||
if ((context->shares & FLATPAK_CONTEXT_SHARED_IPC) == 0)
|
||||
{
|
||||
@@ -1460,7 +1462,13 @@ flatpak_run_add_environment_args (FlatpakBwrap *bwrap,
|
||||
}
|
||||
}
|
||||
|
||||
flatpak_context_append_bwrap_filesystem (context, bwrap, app_id, app_id_dir, previous_app_id_dirs, &exports);
|
||||
|
||||
exports = flatpak_context_get_exports_full (context,
|
||||
app_id_dir, previous_app_id_dirs,
|
||||
TRUE, TRUE,
|
||||
&xdg_dirs_conf, &home_access);
|
||||
flatpak_context_append_bwrap_filesystem (context, bwrap, app_id, app_id_dir,
|
||||
exports, xdg_dirs_conf, home_access);
|
||||
|
||||
if (context->sockets & FLATPAK_CONTEXT_SOCKET_WAYLAND)
|
||||
{
|
||||
|
||||
@@ -167,6 +167,8 @@ test_empty_context (void)
|
||||
g_autoptr(FlatpakBwrap) bwrap = flatpak_bwrap_new (NULL);
|
||||
g_autoptr(FlatpakContext) context = flatpak_context_new ();
|
||||
g_autoptr(FlatpakExports) exports = NULL;
|
||||
g_autofree char *xdg_dirs_conf = NULL;
|
||||
gboolean home_access = FALSE;
|
||||
|
||||
g_assert_cmpuint (g_hash_table_size (context->env_vars), ==, 0);
|
||||
g_assert_cmpuint (g_hash_table_size (context->persistent), ==, 0);
|
||||
@@ -188,13 +190,17 @@ test_empty_context (void)
|
||||
g_assert_nonnull (exports);
|
||||
|
||||
g_clear_pointer (&exports, flatpak_exports_free);
|
||||
exports = flatpak_context_get_exports_full (context,
|
||||
NULL, NULL,
|
||||
TRUE, TRUE,
|
||||
&xdg_dirs_conf, &home_access);
|
||||
g_assert_nonnull (exports);
|
||||
g_assert_nonnull (xdg_dirs_conf);
|
||||
flatpak_context_append_bwrap_filesystem (context, bwrap,
|
||||
"com.example.App",
|
||||
NULL,
|
||||
NULL,
|
||||
&exports);
|
||||
NULL, exports, xdg_dirs_conf,
|
||||
home_access);
|
||||
print_bwrap (bwrap);
|
||||
g_assert_nonnull (exports);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -206,8 +212,10 @@ test_full_context (void)
|
||||
g_autoptr(GError) error = NULL;
|
||||
g_autoptr(GKeyFile) keyfile = g_key_file_new ();
|
||||
g_autofree gchar *text = NULL;
|
||||
g_autofree char *xdg_dirs_conf = NULL;
|
||||
g_auto(GStrv) strv = NULL;
|
||||
gsize i, n;
|
||||
gboolean home_access = FALSE;
|
||||
|
||||
g_key_file_set_value (keyfile,
|
||||
FLATPAK_METADATA_GROUP_CONTEXT,
|
||||
@@ -306,13 +314,17 @@ test_full_context (void)
|
||||
g_assert_nonnull (exports);
|
||||
|
||||
g_clear_pointer (&exports, flatpak_exports_free);
|
||||
exports = flatpak_context_get_exports_full (context,
|
||||
NULL, NULL,
|
||||
TRUE, TRUE,
|
||||
&xdg_dirs_conf, &home_access);
|
||||
g_assert_nonnull (exports);
|
||||
g_assert_nonnull (xdg_dirs_conf);
|
||||
flatpak_context_append_bwrap_filesystem (context, bwrap,
|
||||
"com.example.App",
|
||||
NULL,
|
||||
NULL,
|
||||
&exports);
|
||||
NULL, exports, xdg_dirs_conf,
|
||||
home_access);
|
||||
print_bwrap (bwrap);
|
||||
g_assert_nonnull (exports);
|
||||
|
||||
g_clear_pointer (&keyfile, g_key_file_unref);
|
||||
keyfile = g_key_file_new ();
|
||||
|
||||
Reference in New Issue
Block a user