summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon McVittie <smcv@collabora.com>2021-01-25 15:51:53 +0000
committerAlexander Larsson <alexander.larsson@gmail.com>2021-04-15 18:00:47 +0200
commit574ff50cf4e06747fa6494afeb8270645922c088 (patch)
tree61219af60d25301598f32b4cb24e97711f7953a9
parent5d50b77c37b021219cd9c5262bef166e42018f79 (diff)
downloadflatpak-574ff50cf4e06747fa6494afeb8270645922c088.tar.gz
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>
-rw-r--r--common/flatpak-context-private.h5
-rw-r--r--common/flatpak-context.c16
-rw-r--r--common/flatpak-run.c10
-rw-r--r--tests/test-exports.c28
4 files changed, 35 insertions, 24 deletions
diff --git a/common/flatpak-context-private.h b/common/flatpak-context-private.h
index 420393b4..1a35793a 100644
--- a/common/flatpak-context-private.h
+++ b/common/flatpak-context-private.h
@@ -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)
diff --git a/common/flatpak-context.c b/common/flatpak-context.c
index 66a6d0ae..bf693134 100644
--- a/common/flatpak-context.c
+++ b/common/flatpak-context.c
@@ -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);
}
diff --git a/common/flatpak-run.c b/common/flatpak-run.c
index a7c3deb3..65af230e 100644
--- a/common/flatpak-run.c
+++ b/common/flatpak-run.c
@@ -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)
{
diff --git a/tests/test-exports.c b/tests/test-exports.c
index f16565ed..8b714096 100644
--- a/tests/test-exports.c
+++ b/tests/test-exports.c
@@ -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 ();