aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/interpreter.py
diff options
context:
space:
mode:
authorXavier Claessens <xavier.claessens@collabora.com>2018-09-21 14:18:31 -0400
committerJussi Pakkanen <jpakkane@gmail.com>2018-10-08 21:03:32 +0300
commit38a65821454495cb48ceeb6446de46805fcd2d41 (patch)
treef032c3db9f2aa4c650cace21609e8d3b8a8b9358 /mesonbuild/interpreter.py
parent1e7aea65e68a43b0319a4a28908daddfec621548 (diff)
downloadmeson-38a65821454495cb48ceeb6446de46805fcd2d41.zip
meson-38a65821454495cb48ceeb6446de46805fcd2d41.tar.gz
meson-38a65821454495cb48ceeb6446de46805fcd2d41.tar.bz2
configure_file: Support taking values from a dict
Closes #4218
Diffstat (limited to 'mesonbuild/interpreter.py')
-rw-r--r--mesonbuild/interpreter.py22
1 files changed, 18 insertions, 4 deletions
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py
index 2d5dd92..9a41fab 100644
--- a/mesonbuild/interpreter.py
+++ b/mesonbuild/interpreter.py
@@ -2372,9 +2372,18 @@ external dependencies (including libraries) must go to "dependencies".''')
@noKwargs
def func_configuration_data(self, node, args, kwargs):
- if args:
- raise InterpreterException('configuration_data takes no arguments')
- return ConfigurationDataHolder(self.subproject)
+ if len(args) > 1:
+ raise InterpreterException('configuration_data takes only one optional positional arguments')
+ elif len(args) == 1:
+ initial_values = args[0]
+ if not isinstance(initial_values, dict):
+ raise InterpreterException('configuration_data first argument must be a dictionary')
+ else:
+ initial_values = {}
+ cdata = ConfigurationDataHolder(self.subproject)
+ for k, v in initial_values.items():
+ cdata.set_method([k, v], {})
+ return cdata
def set_options(self, default_options):
# Set default options as if they were passed to the command line.
@@ -3552,7 +3561,12 @@ root and issuing %s.
# Perform the appropriate action
if 'configuration' in kwargs:
conf = kwargs['configuration']
- if not isinstance(conf, ConfigurationDataHolder):
+ if isinstance(conf, dict):
+ cdata = ConfigurationDataHolder(self.subproject)
+ for k, v in conf.items():
+ cdata.set_method([k, v], {})
+ conf = cdata
+ elif not isinstance(conf, ConfigurationDataHolder):
raise InterpreterException('Argument "configuration" is not of type configuration_data')
mlog.log('Configuring', mlog.bold(output), 'using configuration')
if inputfile is not None: