mirror of
https://github.com/flatpak/flatpak.git
synced 2026-04-28 02:58:03 -04:00
BuilderOptions: Added 'config-opts' option.
Allows conditional configure arguments. https://bugs.freedesktop.org/show_bug.cgi?id=94940
This commit is contained in:
committed by
Alexander Larsson
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);
|
||||
|
||||
Reference in New Issue
Block a user