Tristan Van Berkom pushed to branch master at BuildStream / buildstream
Commits:
-
727f2faa
by Tristan Van Berkom at 2018-09-18T07:43:07Z
-
ffa0bb36
by Tristan Van Berkom at 2018-09-18T07:47:44Z
-
f2ae46f8
by Tristan Van Berkom at 2018-09-18T08:14:23Z
4 changed files:
- buildstream/_project.py
- + tests/format/option-overrides/element.bst
- + tests/format/option-overrides/project.conf
- + tests/format/optionoverrides.py
Changes:
... | ... | @@ -598,7 +598,10 @@ class Project(): |
598 | 598 |
# any conditionals specified for project option declarations,
|
599 | 599 |
# or conditionally specifying the project name; will be ignored.
|
600 | 600 |
#
|
601 |
+ # Don't forget to also resolve options in the element and source overrides.
|
|
601 | 602 |
output.options.process_node(config)
|
603 |
+ output.options.process_node(output.element_overrides)
|
|
604 |
+ output.options.process_node(output.source_overrides)
|
|
602 | 605 |
|
603 | 606 |
# Load base variables
|
604 | 607 |
output.base_variables = _yaml.node_get(config, Mapping, 'variables')
|
1 |
+kind: autotools
|
1 |
+# Test case ensuring that we can use options
|
|
2 |
+# in the element overrides.
|
|
3 |
+#
|
|
4 |
+name: test
|
|
5 |
+ |
|
6 |
+options:
|
|
7 |
+ arch:
|
|
8 |
+ type: arch
|
|
9 |
+ description: architecture
|
|
10 |
+ values: [i686, x86_64]
|
|
11 |
+ |
|
12 |
+elements:
|
|
13 |
+ autotools:
|
|
14 |
+ variables:
|
|
15 |
+ (?):
|
|
16 |
+ - arch == 'i686':
|
|
17 |
+ conf-global: --host=i686-unknown-linux-gnu
|
|
18 |
+ - arch == 'x86_64':
|
|
19 |
+ conf-global: --host=x86_64-unknown-linux-gnu
|
1 |
+import os
|
|
2 |
+import pytest
|
|
3 |
+from buildstream import _yaml
|
|
4 |
+from tests.testutils.runcli import cli
|
|
5 |
+ |
|
6 |
+# Project directory
|
|
7 |
+DATA_DIR = os.path.dirname(os.path.realpath(__file__))
|
|
8 |
+ |
|
9 |
+ |
|
10 |
+@pytest.mark.datafiles(DATA_DIR)
|
|
11 |
+@pytest.mark.parametrize("arch", [('i686'), ('x86_64')])
|
|
12 |
+def test_override(cli, datafiles, arch):
|
|
13 |
+ project = os.path.join(datafiles.dirname, datafiles.basename, 'option-overrides')
|
|
14 |
+ |
|
15 |
+ bst_args = ['--option', 'arch', arch]
|
|
16 |
+ bst_args += [
|
|
17 |
+ 'show',
|
|
18 |
+ '--deps', 'none',
|
|
19 |
+ '--format', '%{vars}',
|
|
20 |
+ 'element.bst'
|
|
21 |
+ ]
|
|
22 |
+ result = cli.run(project=project, silent=True, args=bst_args)
|
|
23 |
+ result.assert_success()
|
|
24 |
+ |
|
25 |
+ # See the associated project.conf for the expected values
|
|
26 |
+ expected_value = '--host={}-unknown-linux-gnu'.format(arch)
|
|
27 |
+ |
|
28 |
+ loaded = _yaml.load_data(result.output)
|
|
29 |
+ assert loaded['conf-global'] == expected_value
|