builder: Support cleanup-platform-commands

tingping/wmclass
Alexander Larsson 2017-02-06 10:09:41 +01:00
parent 193a88e171
commit 69235eeb77
2 changed files with 44 additions and 1 deletions

View File

@ -59,6 +59,7 @@ struct BuilderManifest
char **cleanup;
char **cleanup_commands;
char **cleanup_platform;
char **cleanup_platform_commands;
char **finish_args;
char **tags;
char *rename_desktop_file;
@ -112,6 +113,7 @@ enum {
PROP_MODULES,
PROP_CLEANUP,
PROP_CLEANUP_COMMANDS,
PROP_CLEANUP_PLATFORM_COMMANDS,
PROP_CLEANUP_PLATFORM,
PROP_BUILD_RUNTIME,
PROP_BUILD_EXTENSION,
@ -156,6 +158,7 @@ builder_manifest_finalize (GObject *object)
g_strfreev (self->cleanup);
g_strfreev (self->cleanup_commands);
g_strfreev (self->cleanup_platform);
g_strfreev (self->cleanup_platform_commands);
g_strfreev (self->finish_args);
g_strfreev (self->tags);
g_free (self->rename_desktop_file);
@ -309,6 +312,10 @@ builder_manifest_get_property (GObject *object,
g_value_set_boxed (value, self->cleanup_platform);
break;
case PROP_CLEANUP_PLATFORM_COMMANDS:
g_value_set_boxed (value, self->cleanup_platform_commands);
break;
case PROP_FINISH_ARGS:
g_value_set_boxed (value, self->finish_args);
break;
@ -499,6 +506,12 @@ builder_manifest_set_property (GObject *object,
g_strfreev (tmp);
break;
case PROP_CLEANUP_PLATFORM_COMMANDS:
tmp = self->cleanup_platform_commands;
self->cleanup_platform_commands = g_strdupv (g_value_get_boxed (value));
g_strfreev (tmp);
break;
case PROP_FINISH_ARGS:
tmp = self->finish_args;
self->finish_args = g_strdupv (g_value_get_boxed (value));
@ -739,6 +752,13 @@ builder_manifest_class_init (BuilderManifestClass *klass)
"",
G_TYPE_STRV,
G_PARAM_READWRITE));
g_object_class_install_property (object_class,
PROP_CLEANUP_PLATFORM_COMMANDS,
g_param_spec_boxed ("cleanup-platform-commands",
"",
"",
G_TYPE_STRV,
G_PARAM_READWRITE));
g_object_class_install_property (object_class,
PROP_FINISH_ARGS,
g_param_spec_boxed ("finish-args",
@ -1332,6 +1352,7 @@ builder_manifest_checksum_for_platform (BuilderManifest *self,
builder_cache_checksum_str (cache, self->runtime_commit);
builder_cache_checksum_str (cache, self->metadata_platform);
builder_cache_checksum_strv (cache, self->cleanup_platform);
builder_cache_checksum_strv (cache, self->cleanup_platform_commands);
builder_cache_checksum_strv (cache, self->platform_extensions);
if (self->metadata_platform)
@ -1451,6 +1472,7 @@ builder_manifest_build (BuilderManifest *self,
static gboolean
command (GFile *app_dir,
char **env_vars,
char **extra_args,
const char *commandline,
GError **error)
{
@ -1462,6 +1484,11 @@ command (GFile *app_dir,
g_ptr_array_add (args, g_strdup ("build"));
g_ptr_array_add (args, g_strdup ("--nofilesystem=host"));
if (extra_args)
{
for (i = 0; extra_args[i] != NULL; i++)
g_ptr_array_add (args, g_strdup (extra_args[i]));
}
if (env_vars)
{
@ -1672,7 +1699,7 @@ builder_manifest_cleanup (BuilderManifest *self,
env = builder_options_get_env (self->build_options, context);
for (i = 0; self->cleanup_commands[i] != NULL; i++)
{
if (!command (app_dir, env, self->cleanup_commands[i], error))
if (!command (app_dir, env, NULL, self->cleanup_commands[i], error))
return FALSE;
}
}
@ -2309,6 +2336,18 @@ builder_manifest_create_platform (BuilderManifest *self,
}
}
if (self->cleanup_platform_commands)
{
g_auto(GStrv) env = builder_options_get_env (self->build_options, context);
char *extra_args[] = { "--sdk-dir=platform", "--metadata=metadata.platform", NULL};
for (i = 0; self->cleanup_platform_commands[i] != NULL; i++)
{
if (!command (app_dir, env, extra_args, self->cleanup_platform_commands[i], error))
return FALSE;
}
}
if (self->separate_locales && locale_dir && g_file_query_exists (locale_dir, NULL))
{
g_autoptr(GFile) metadata_file = NULL;

View File

@ -224,6 +224,10 @@
<listitem><para>Extra files to clean up in the platform.</para></listitem>
</varlistentry>
<varlistentry>
<term><option>cleanup-platform-commands</option> (array of strings)</term>
<listitem><para>An array of commandlines that are run during the cleanup phase of the platform.</para></listitem>
</varlistentry>
<varlistentry>
<term><option>finish-args</option> (array of strings)</term>
<listitem><para>An array of arguments passed to the <command>flatpak build-finish</command> command.</para></listitem>
</varlistentry>