diff options
author | Tristan Van Berkom <tristan.van.berkom@gmail.com> | 2018-09-18 08:15:52 +0000 |
---|---|---|
committer | Tristan Van Berkom <tristan.van.berkom@gmail.com> | 2018-09-18 08:15:52 +0000 |
commit | c8c51231481d2c881e5cffc2b400a95bb43184fa (patch) | |
tree | 4e063158f2c01331dfccb279d131e7a53c5907f3 | |
parent | 045797661e914f66d72cdd3c4186d255f001d6dd (diff) | |
parent | 758dbece739606669fb5e1beb45a3e9c0ef7f10c (diff) | |
download | buildstream-c8c51231481d2c881e5cffc2b400a95bb43184fa.tar.gz |
Merge branch 'tristan/fix-override-options-1.2' into 'bst-1.2'
Fix override options 1.2
See merge request BuildStream/buildstream!803
-rw-r--r-- | buildstream/_project.py | 3 | ||||
-rw-r--r-- | tests/format/option-overrides/element.bst | 1 | ||||
-rw-r--r-- | tests/format/option-overrides/project.conf | 19 | ||||
-rw-r--r-- | tests/format/optionoverrides.py | 29 |
4 files changed, 52 insertions, 0 deletions
diff --git a/buildstream/_project.py b/buildstream/_project.py index d5504e201..4a3c075e0 100644 --- a/buildstream/_project.py +++ b/buildstream/_project.py @@ -572,7 +572,10 @@ class Project(): # any conditionals specified for project option declarations, # or conditionally specifying the project name; will be ignored. # + # Don't forget to also resolve options in the element and source overrides. output.options.process_node(config) + output.options.process_node(output.element_overrides) + output.options.process_node(output.source_overrides) # Load base variables output.base_variables = _yaml.node_get(config, Mapping, 'variables') diff --git a/tests/format/option-overrides/element.bst b/tests/format/option-overrides/element.bst new file mode 100644 index 000000000..3c29b4ea1 --- /dev/null +++ b/tests/format/option-overrides/element.bst @@ -0,0 +1 @@ +kind: autotools diff --git a/tests/format/option-overrides/project.conf b/tests/format/option-overrides/project.conf new file mode 100644 index 000000000..c8058f076 --- /dev/null +++ b/tests/format/option-overrides/project.conf @@ -0,0 +1,19 @@ +# Test case ensuring that we can use options +# in the element overrides. +# +name: test + +options: + arch: + type: arch + description: architecture + values: [i686, x86_64] + +elements: + autotools: + variables: + (?): + - arch == 'i686': + conf-global: --host=i686-unknown-linux-gnu + - arch == 'x86_64': + conf-global: --host=x86_64-unknown-linux-gnu diff --git a/tests/format/optionoverrides.py b/tests/format/optionoverrides.py new file mode 100644 index 000000000..e5c37b3a5 --- /dev/null +++ b/tests/format/optionoverrides.py @@ -0,0 +1,29 @@ +import os +import pytest +from buildstream import _yaml +from tests.testutils.runcli import cli + +# Project directory +DATA_DIR = os.path.dirname(os.path.realpath(__file__)) + + +@pytest.mark.datafiles(DATA_DIR) +@pytest.mark.parametrize("arch", [('i686'), ('x86_64')]) +def test_override(cli, datafiles, arch): + project = os.path.join(datafiles.dirname, datafiles.basename, 'option-overrides') + + bst_args = ['--option', 'arch', arch] + bst_args += [ + 'show', + '--deps', 'none', + '--format', '%{vars}', + 'element.bst' + ] + result = cli.run(project=project, silent=True, args=bst_args) + result.assert_success() + + # See the associated project.conf for the expected values + expected_value = '--host={}-unknown-linux-gnu'.format(arch) + + loaded = _yaml.load_data(result.output) + assert loaded['conf-global'] == expected_value |