mirror of
https://github.com/flatpak/flatpak.git
synced 2026-01-26 22:22:22 +00:00
extensions: Always create a tmpfs for subdirectory extensions.
This makes sure we can actually create a directory as needed, and not having to have every subdirectory pre-created in the runtime.
This commit is contained in:
parent
f1a2f30e41
commit
0be93ed1dc
@ -1717,6 +1717,14 @@ flatpak_run_add_extension_args (GPtrArray *argv_array,
|
||||
g_autofree char *ref = g_build_filename (full_directory, ".ref", NULL);
|
||||
g_autofree char *real_ref = g_build_filename (ext->files_path, ext->directory, ".ref", NULL);
|
||||
|
||||
if (ext->needs_tmpfs)
|
||||
{
|
||||
g_autofree char *parent = g_path_get_dirname (full_directory);
|
||||
add_args (argv_array,
|
||||
"--tmpfs", parent,
|
||||
NULL);
|
||||
}
|
||||
|
||||
add_args (argv_array,
|
||||
"--bind", ext->files_path, full_directory,
|
||||
NULL);
|
||||
|
||||
@ -2491,6 +2491,7 @@ flatpak_list_extensions (GKeyFile *metakey,
|
||||
g_autofree char *prefix = g_strconcat (extension, ".", NULL);
|
||||
g_auto(GStrv) refs = NULL;
|
||||
int j;
|
||||
gboolean needs_tmpfs = TRUE;
|
||||
|
||||
refs = flatpak_list_deployed_refs ("runtime", prefix, arch, branch,
|
||||
NULL, NULL);
|
||||
@ -2503,6 +2504,8 @@ flatpak_list_extensions (GKeyFile *metakey,
|
||||
if (subdir_files)
|
||||
{
|
||||
ext = flatpak_extension_new (extension, refs[j], dir_ref, extended_dir, subdir_files);
|
||||
ext->needs_tmpfs = needs_tmpfs;
|
||||
needs_tmpfs = FALSE; /* Only first subdir needs a tmpfs */
|
||||
res = g_list_prepend (res, ext);
|
||||
}
|
||||
}
|
||||
@ -2510,7 +2513,7 @@ flatpak_list_extensions (GKeyFile *metakey,
|
||||
}
|
||||
}
|
||||
|
||||
return res;
|
||||
return g_list_reverse (res);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -232,6 +232,7 @@ typedef struct
|
||||
char *ref;
|
||||
char *directory;
|
||||
char *files_path;
|
||||
gboolean needs_tmpfs;
|
||||
} FlatpakExtension;
|
||||
|
||||
void flatpak_extension_free (FlatpakExtension *extension);
|
||||
|
||||
@ -53,9 +53,7 @@ add_extensions () {
|
||||
mkdir -p $DIR/files/foo/ext4
|
||||
mkdir -p $DIR/files/foo/none
|
||||
mkdir -p $DIR/files/foo/dir
|
||||
mkdir -p $DIR/files/foo/dir/foo
|
||||
mkdir -p $DIR/files/foo/dir2
|
||||
mkdir -p $DIR/files/foo/dir2/foo
|
||||
|
||||
cat >> $DIR/metadata <<EOF
|
||||
[Extension org.test.Extension1]
|
||||
@ -109,6 +107,7 @@ make_extension org.test.Extension3 master
|
||||
make_extension org.test.Extension3 not-master
|
||||
make_extension org.test.Extension4 master
|
||||
make_extension org.test.Dir.foo master
|
||||
make_extension org.test.Dir.bar master
|
||||
|
||||
assert_has_extension_file () {
|
||||
local prefix=$1
|
||||
@ -134,6 +133,7 @@ assert_has_extension_file /usr ext3/extension-org.test.Extension3:not-master
|
||||
assert_not_has_extension_file /usr ext4/exists
|
||||
assert_has_extension_file /usr dir/foo/exists
|
||||
assert_has_extension_file /usr dir/foo/extension-org.test.Dir.foo:master
|
||||
assert_has_extension_file /usr dir/bar/extension-org.test.Dir.bar:master
|
||||
assert_not_has_extension_file /usr dir2/foo/exists
|
||||
|
||||
echo "ok runtime extensions"
|
||||
@ -155,6 +155,7 @@ assert_has_extension_file /app ext3/extension-org.test.Extension3:not-master
|
||||
assert_not_has_extension_file /app ext4/exists
|
||||
assert_has_extension_file /app dir/foo/exists
|
||||
assert_has_extension_file /app dir/foo/extension-org.test.Dir.foo:master
|
||||
assert_has_extension_file /app dir/bar/extension-org.test.Dir.bar:master
|
||||
assert_not_has_extension_file /app dir2/foo/exists
|
||||
|
||||
echo "ok app extensions"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user