[gnome-builder] configuration: add IdeBuildLocality
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] configuration: add IdeBuildLocality
- Date: Tue, 16 Jan 2018 08:50:24 +0000 (UTC)
commit b38b970f821fd79ecb81d8ea97bd80d05bd05546
Author: Christian Hergert <chergert redhat com>
Date: Tue Jan 16 00:38:38 2018 -0800
configuration: add IdeBuildLocality
This allows the build configuration to specify if it needs to
have in or out of tree builds. Flatpak can use this to propagate
the value of "builddir".
src/libide/buildsystem/ide-configuration.c | 48 ++++++++++++++++++++++++++++++
src/libide/buildsystem/ide-configuration.h | 12 ++++++++
src/libide/buildsystem/meson.build | 1 +
src/libide/ide-enums.c.in | 1 +
4 files changed, 62 insertions(+)
---
diff --git a/src/libide/buildsystem/ide-configuration.c b/src/libide/buildsystem/ide-configuration.c
index 8dcb29e89..10a875291 100644
--- a/src/libide/buildsystem/ide-configuration.c
+++ b/src/libide/buildsystem/ide-configuration.c
@@ -22,6 +22,7 @@
#include "ide-context.h"
#include "ide-debug.h"
+#include "ide-enums.h"
#include "buildsystem/ide-configuration.h"
#include "buildsystem/ide-configuration-manager.h"
@@ -63,6 +64,8 @@ typedef struct
*/
guint device_ready : 1;
guint runtime_ready : 1;
+
+ IdeBuildLocality locality : 3;
} IdeConfigurationPrivate;
G_DEFINE_TYPE_WITH_PRIVATE (IdeConfiguration, ide_configuration, IDE_TYPE_OBJECT)
@@ -79,6 +82,7 @@ enum {
PROP_DISPLAY_NAME,
PROP_ENVIRON,
PROP_ID,
+ PROP_LOCALITY,
PROP_PARALLELISM,
PROP_POST_INSTALL_COMMANDS,
PROP_PREFIX,
@@ -432,6 +436,10 @@ ide_configuration_get_property (GObject *object,
g_value_set_string (value, ide_configuration_get_append_path (self));
break;
+ case PROP_LOCALITY:
+ g_value_set_flags (value, ide_configuration_get_locality (self));
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
}
@@ -511,6 +519,10 @@ ide_configuration_set_property (GObject *object,
ide_configuration_set_append_path (self, g_value_get_string (value));
break;
+ case PROP_LOCALITY:
+ ide_configuration_set_locality (self, g_value_get_flags (value));
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
}
@@ -659,6 +671,14 @@ ide_configuration_class_init (IdeConfigurationClass *klass)
NULL,
(G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS));
+ properties [PROP_LOCALITY] =
+ g_param_spec_flags ("locality",
+ "Locality",
+ "Where the build may occur",
+ IDE_TYPE_BUILD_LOCALITY,
+ IDE_BUILD_LOCALITY_DEFAULT,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+
g_object_class_install_properties (object_class, N_PROPS, properties);
signals [CHANGED] =
@@ -678,6 +698,7 @@ ide_configuration_init (IdeConfiguration *self)
priv->debug = TRUE;
priv->environment = ide_environment_new ();
priv->parallelism = -1;
+ priv->locality = IDE_BUILD_LOCALITY_DEFAULT;
priv->internal = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, _value_free);
@@ -1714,3 +1735,30 @@ ide_configuration_set_append_path (IdeConfiguration *self,
g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_APPEND_PATH]);
}
}
+
+IdeBuildLocality
+ide_configuration_get_locality (IdeConfiguration *self)
+{
+ IdeConfigurationPrivate *priv = ide_configuration_get_instance_private (self);
+
+ g_return_val_if_fail (IDE_IS_CONFIGURATION (self), 0);
+
+ return priv->locality;
+}
+
+void
+ide_configuration_set_locality (IdeConfiguration *self,
+ IdeBuildLocality locality)
+{
+ IdeConfigurationPrivate *priv = ide_configuration_get_instance_private (self);
+
+ g_return_if_fail (IDE_IS_CONFIGURATION (self));
+ g_return_if_fail (locality > 0);
+ g_return_if_fail (locality <= IDE_BUILD_LOCALITY_DEFAULT);
+
+ if (priv->locality != locality)
+ {
+ priv->locality = locality;
+ g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_LOCALITY]);
+ }
+}
diff --git a/src/libide/buildsystem/ide-configuration.h b/src/libide/buildsystem/ide-configuration.h
index 9b56327be..b4ce5102a 100644
--- a/src/libide/buildsystem/ide-configuration.h
+++ b/src/libide/buildsystem/ide-configuration.h
@@ -31,6 +31,13 @@ G_BEGIN_DECLS
G_DECLARE_DERIVABLE_TYPE (IdeConfiguration, ide_configuration, IDE, CONFIGURATION, IdeObject)
+typedef enum
+{
+ IDE_BUILD_LOCALITY_IN_TREE = 1 << 0,
+ IDE_BUILD_LOCALITY_OUT_OF_TREE = 1 << 1,
+ IDE_BUILD_LOCALITY_DEFAULT = IDE_BUILD_LOCALITY_IN_TREE | IDE_BUILD_LOCALITY_OUT_OF_TREE,
+} IdeBuildLocality;
+
struct _IdeConfigurationClass
{
IdeObjectClass parent;
@@ -104,6 +111,11 @@ const gchar *ide_configuration_get_display_name (IdeConfigurat
IDE_AVAILABLE_IN_ALL
void ide_configuration_set_display_name (IdeConfiguration *self,
const gchar *display_name);
+IDE_AVAILABLE_IN_3_28
+IdeBuildLocality ide_configuration_get_locality (IdeConfiguration *self);
+IDE_AVAILABLE_IN_3_28
+void ide_configuration_set_locality (IdeConfiguration *self,
+ IdeBuildLocality locality);
IDE_AVAILABLE_IN_ALL
gboolean ide_configuration_get_ready (IdeConfiguration *self);
IDE_AVAILABLE_IN_ALL
diff --git a/src/libide/buildsystem/meson.build b/src/libide/buildsystem/meson.build
index 7abf12994..72cf254b9 100644
--- a/src/libide/buildsystem/meson.build
+++ b/src/libide/buildsystem/meson.build
@@ -52,6 +52,7 @@ buildsystem_private_sources = [
buildsystem_enums = [
'ide-build-log.h',
'ide-build-pipeline.h',
+ 'ide-configuration.h',
]
libide_enum_headers += files(buildsystem_enums)
diff --git a/src/libide/ide-enums.c.in b/src/libide/ide-enums.c.in
index 41d647134..42394ae51 100644
--- a/src/libide/ide-enums.c.in
+++ b/src/libide/ide-enums.c.in
@@ -7,6 +7,7 @@
#include "buffers/ide-buffer.h"
#include "buildsystem/ide-build-log.h"
#include "buildsystem/ide-build-pipeline.h"
+#include "buildsystem/ide-configuration.h"
#include "devices/ide-device.h"
#include "diagnostics/ide-diagnostic.h"
#include "doap/ide-doap.h"
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]