forked from Mirrors/flatpak-builder
extensions: Support multiple versions
This means an extension point can include extensions of multiple (specified) versions. This is useful for e.g. the GL extensions, where we want a single extension for all the essentially unversioned GL extensions (like the nvidia one) that is used by all the runtimes.tingping/wmclass
parent
3122d1c014
commit
640a02315b
|
@ -3854,7 +3854,7 @@ flatpak_list_extensions (GKeyFile *metakey,
|
||||||
const char *default_branch)
|
const char *default_branch)
|
||||||
{
|
{
|
||||||
g_auto(GStrv) groups = NULL;
|
g_auto(GStrv) groups = NULL;
|
||||||
int i;
|
int i, j;
|
||||||
GList *res;
|
GList *res;
|
||||||
|
|
||||||
res = NULL;
|
res = NULL;
|
||||||
|
@ -3871,14 +3871,21 @@ flatpak_list_extensions (GKeyFile *metakey,
|
||||||
*(extension = (groups[i] + strlen ("Extension "))) != 0)
|
*(extension = (groups[i] + strlen ("Extension "))) != 0)
|
||||||
{
|
{
|
||||||
g_autofree char *version = g_key_file_get_string (metakey, groups[i], "version", NULL);
|
g_autofree char *version = g_key_file_get_string (metakey, groups[i], "version", NULL);
|
||||||
const char *branch;
|
g_auto(GStrv) versions = g_key_file_get_string_list (metakey, groups[i], "versions", NULL, NULL);
|
||||||
|
const char *default_branches[] = { default_branch, NULL};
|
||||||
|
const char **branches;
|
||||||
|
|
||||||
if (version)
|
if (versions)
|
||||||
branch = version;
|
branches = (const char **)versions;
|
||||||
else
|
else
|
||||||
branch = default_branch;
|
{
|
||||||
|
if (version)
|
||||||
|
default_branches[0] = version;
|
||||||
|
branches = default_branches;
|
||||||
|
}
|
||||||
|
|
||||||
res = add_extension (metakey, groups[i], extension, arch, branch, res);
|
for (j = 0; branches[j] != NULL; j++)
|
||||||
|
res = add_extension (metakey, groups[i], extension, arch, branches[j], res);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue