diff options
author | Xavier Claessens <xavier.claessens@collabora.com> | 2018-09-21 14:18:31 -0400 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2018-10-08 21:03:32 +0300 |
commit | 38a65821454495cb48ceeb6446de46805fcd2d41 (patch) | |
tree | f032c3db9f2aa4c650cace21609e8d3b8a8b9358 /mesonbuild/interpreter.py | |
parent | 1e7aea65e68a43b0319a4a28908daddfec621548 (diff) | |
download | meson-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.py | 22 |
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: |