forked from Mirrors/flatpak-builder
BuilderOptions: Added 'config-opts' option.
Allows conditional configure arguments. https://bugs.freedesktop.org/show_bug.cgi?id=94940tingping/wmclass
parent
3d7d9ece93
commit
17ec9ef3b0
|
@ -42,6 +42,7 @@ struct BuilderOptions {
|
|||
char *prefix;
|
||||
char **env;
|
||||
char **build_args;
|
||||
char **config_opts;
|
||||
GHashTable *arch;
|
||||
};
|
||||
|
||||
|
@ -64,6 +65,7 @@ enum {
|
|||
PROP_NO_DEBUGINFO,
|
||||
PROP_ARCH,
|
||||
PROP_BUILD_ARGS,
|
||||
PROP_CONFIG_OPTS,
|
||||
LAST_PROP
|
||||
};
|
||||
|
||||
|
@ -78,6 +80,7 @@ builder_options_finalize (GObject *object)
|
|||
g_free (self->prefix);
|
||||
g_strfreev (self->env);
|
||||
g_strfreev (self->build_args);
|
||||
g_strfreev (self->config_opts);
|
||||
|
||||
G_OBJECT_CLASS (builder_options_parent_class)->finalize (object);
|
||||
}
|
||||
|
@ -116,6 +119,10 @@ builder_options_get_property (GObject *object,
|
|||
g_value_set_boxed (value, self->build_args);
|
||||
break;
|
||||
|
||||
case PROP_CONFIG_OPTS:
|
||||
g_value_set_boxed (value, self->config_opts);
|
||||
break;
|
||||
|
||||
case PROP_STRIP:
|
||||
g_value_set_boolean (value, self->strip);
|
||||
break;
|
||||
|
@ -173,6 +180,12 @@ builder_options_set_property (GObject *object,
|
|||
g_strfreev (tmp);
|
||||
break;
|
||||
|
||||
case PROP_CONFIG_OPTS:
|
||||
tmp = self->config_opts;
|
||||
self->config_opts = g_strdupv (g_value_get_boxed (value));
|
||||
g_strfreev (tmp);
|
||||
break;
|
||||
|
||||
case PROP_STRIP:
|
||||
self->strip = g_value_get_boolean (value);
|
||||
break;
|
||||
|
@ -237,6 +250,13 @@ builder_options_class_init (BuilderOptionsClass *klass)
|
|||
"",
|
||||
G_TYPE_STRV,
|
||||
G_PARAM_READWRITE));
|
||||
g_object_class_install_property (object_class,
|
||||
PROP_CONFIG_OPTS,
|
||||
g_param_spec_boxed ("config-opts",
|
||||
"",
|
||||
"",
|
||||
G_TYPE_STRV,
|
||||
G_PARAM_READWRITE));
|
||||
g_object_class_install_property (object_class,
|
||||
PROP_STRIP,
|
||||
g_param_spec_boolean ("strip",
|
||||
|
@ -619,6 +639,42 @@ builder_options_get_build_args (BuilderOptions *self,
|
|||
return (char **)g_ptr_array_free (g_steal_pointer (&array), FALSE);
|
||||
}
|
||||
|
||||
char **
|
||||
builder_options_get_config_opts (BuilderOptions *self,
|
||||
BuilderContext *context,
|
||||
char **base_opts)
|
||||
{
|
||||
g_autoptr(GList) options = get_all_options (self, context);
|
||||
GList *l;
|
||||
int i;
|
||||
g_autoptr(GPtrArray) array = g_ptr_array_new_with_free_func (g_free);
|
||||
|
||||
/* Last argument wins, so reverse the list for per-module to win */
|
||||
options = g_list_reverse (options);
|
||||
|
||||
/* Start by adding the base options */
|
||||
if (base_opts)
|
||||
{
|
||||
for (i = 0; base_opts[i] != NULL; i++)
|
||||
g_ptr_array_add (array, g_strdup (base_opts[i]));
|
||||
}
|
||||
|
||||
for (l = options; l != NULL; l = l->next)
|
||||
{
|
||||
BuilderOptions *o = l->data;
|
||||
|
||||
if (o->config_opts)
|
||||
{
|
||||
for (i = 0; o->config_opts[i] != NULL; i++)
|
||||
g_ptr_array_add (array, g_strdup (o->config_opts[i]));
|
||||
}
|
||||
}
|
||||
|
||||
g_ptr_array_add (array, NULL);
|
||||
|
||||
return (char **)g_ptr_array_free (g_steal_pointer (&array), FALSE);
|
||||
}
|
||||
|
||||
void
|
||||
builder_options_checksum (BuilderOptions *self,
|
||||
BuilderCache *cache,
|
||||
|
@ -632,6 +688,7 @@ builder_options_checksum (BuilderOptions *self,
|
|||
builder_cache_checksum_str (cache, self->prefix);
|
||||
builder_cache_checksum_strv (cache, self->env);
|
||||
builder_cache_checksum_strv (cache, self->build_args);
|
||||
builder_cache_checksum_strv (cache, self->config_opts);
|
||||
builder_cache_checksum_boolean (cache, self->strip);
|
||||
builder_cache_checksum_boolean (cache, self->no_debuginfo);
|
||||
|
||||
|
|
|
@ -48,6 +48,9 @@ char ** builder_options_get_env (BuilderOptions *self,
|
|||
BuilderContext *context);
|
||||
char ** builder_options_get_build_args (BuilderOptions *self,
|
||||
BuilderContext *context);
|
||||
char ** builder_options_get_config_opts (BuilderOptions *self,
|
||||
BuilderContext *context,
|
||||
char **base_opts);
|
||||
void builder_options_checksum (BuilderOptions *self,
|
||||
BuilderCache *cache,
|
||||
BuilderContext *context);
|
||||
|
|
Loading…
Reference in New Issue