[PATCH v2 2/2] tools: binman: ti_board_cfg: Check for linting problems
Ryan Eatmon
reatmon at ti.com
Mon Jan 22 22:11:35 CET 2024
On 1/22/2024 6:59 AM, Max Krummenacher wrote:
> Hi
>
> On Fri, Jan 05, 2024 at 05:09:17PM +0530, Neha Malcom Francis wrote:
>> Use yamllint for checking whether YAML configuration files are adhering
>> to default yamllint rules.
>
> If I understand this correctly this patch now runs checks to verify
> that yaml files which are part of the U-Boot source tree are correct.
>
> Shouldn't this be done when one commits a yaml file, i.e. in U-Boot CI
> rather than repeating the process on every build and thus having an
> additional dependency to build U-Boot and additional build time?
>
> Note that in openembedded there is currently no python yamllint
> recipe providing the used python module in the regularly used layers.
> How do you plan to integrate the change in the OE U-Boot recipe?
> At least our OE CI of latest master now fails (for a TI AM62 based SoM)
> as the python module is missing.
I have submitted a patch to oe-core for this missing recipe.
https://lists.openembedded.org/g/openembedded-core/message/194192
Hopefully they accept it. Otherwise, we are going to "temporarily"
carrying the same recipe in meta-ti-extras until they accept it in oe-core.
> Regards
> Max
>
>>
>> Signed-off-by: Neha Malcom Francis <n-francis at ti.com>
>> Suggested-by: Nishanth Menon <nm at ti.com>
>> ---
>> Changes since v1:
>> - add yamllint to requirements.txt (Nishanth)
>>
>> tools/binman/etype/ti_board_config.py | 5 +++++
>> tools/binman/ftest.py | 6 ++++++
>> tools/binman/test/323_ti_board_cfg_phony.dts | 14 ++++++++++++++
>> tools/binman/test/yaml/config.yaml | 4 ++--
>> tools/binman/test/yaml/config_phony.yaml | 18 ++++++++++++++++++
>> tools/buildman/requirements.txt | 1 +
>> 6 files changed, 46 insertions(+), 2 deletions(-)
>> create mode 100644 tools/binman/test/323_ti_board_cfg_phony.dts
>> create mode 100644 tools/binman/test/yaml/config_phony.yaml
>>
>> diff --git a/tools/binman/etype/ti_board_config.py b/tools/binman/etype/ti_board_config.py
>> index 94f894c281..2c3bb8f7b5 100644
>> --- a/tools/binman/etype/ti_board_config.py
>> +++ b/tools/binman/etype/ti_board_config.py
>> @@ -9,6 +9,7 @@
>> import os
>> import struct
>> import yaml
>> +import yamllint
>>
>> from collections import OrderedDict
>> from jsonschema import validate
>> @@ -18,6 +19,7 @@ from binman.entry import Entry
>> from binman.etype.section import Entry_section
>> from dtoc import fdt_util
>> from u_boot_pylib import tools
>> +from yamllint import config
>>
>> BOARDCFG = 0xB
>> BOARDCFG_SEC = 0xD
>> @@ -244,6 +246,9 @@ class Entry_ti_board_config(Entry_section):
>> with open(self._schema_file, 'r') as sch:
>> self.schema_yaml = yaml.safe_load(sch)
>>
>> + yaml_config = config.YamlLintConfig("extends: default")
>> + for p in yamllint.linter.run(open(self._config_file, "r"), yaml_config):
>> + self.Raise(f"Yamllint error: {p.line}: {p.rule}")
>> try:
>> validate(self.file_yaml, self.schema_yaml)
>> except Exception as e:
>> diff --git a/tools/binman/ftest.py b/tools/binman/ftest.py
>> index a4ac520cbb..1fbb0fef1a 100644
>> --- a/tools/binman/ftest.py
>> +++ b/tools/binman/ftest.py
>> @@ -7030,6 +7030,12 @@ fdt fdtmap Extract the devicetree blob from the fdtmap
>> data = self._DoReadFile('293_ti_board_cfg.dts')
>> self.assertEqual(TI_BOARD_CONFIG_DATA, data)
>>
>> + def testTIBoardConfigLint(self):
>> + """Test that an incorrectly linted config file would generate error"""
>> + with self.assertRaises(ValueError) as e:
>> + data = self._DoReadFile('323_ti_board_cfg_phony.dts')
>> + self.assertIn("Yamllint error", str(e.exception))
>> +
>> def testTIBoardConfigCombined(self):
>> """Test that a schema validated combined board config file can be generated"""
>> data = self._DoReadFile('294_ti_board_cfg_combined.dts')
>> diff --git a/tools/binman/test/323_ti_board_cfg_phony.dts b/tools/binman/test/323_ti_board_cfg_phony.dts
>> new file mode 100644
>> index 0000000000..441296de4f
>> --- /dev/null
>> +++ b/tools/binman/test/323_ti_board_cfg_phony.dts
>> @@ -0,0 +1,14 @@
>> +// SPDX-License-Identifier: GPL-2.0+
>> +/dts-v1/;
>> +
>> +/ {
>> + #address-cells = <1>;
>> + #size-cells = <1>;
>> +
>> + binman {
>> + ti-board-config {
>> + config = "yaml/config_phony.yaml";
>> + schema = "yaml/schema.yaml";
>> + };
>> + };
>> +};
>> diff --git a/tools/binman/test/yaml/config.yaml b/tools/binman/test/yaml/config.yaml
>> index 5f799a6e3a..c2be32128b 100644
>> --- a/tools/binman/test/yaml/config.yaml
>> +++ b/tools/binman/test/yaml/config.yaml
>> @@ -10,9 +10,9 @@ main-branch:
>> b: 0
>> arr: [0, 0, 0, 0]
>> another-arr:
>> - - #1
>> + - # 1
>> c: 0
>> d: 0
>> - - #2
>> + - # 2
>> c: 0
>> d: 0
>> diff --git a/tools/binman/test/yaml/config_phony.yaml b/tools/binman/test/yaml/config_phony.yaml
>> new file mode 100644
>> index 0000000000..d76fcb3b82
>> --- /dev/null
>> +++ b/tools/binman/test/yaml/config_phony.yaml
>> @@ -0,0 +1,18 @@
>> +# SPDX-License-Identifier: GPL-2.0+
>> +#
>> +# Test config
>> +#
>> +---
>> +
>> +main-branch :
>> + obj :
>> + a : 0x0
>> + b: 0
>> + arr: [0, 0, 0, 0]
>> + another-arr:
>> + - # 1
>> + c: 0
>> + d: 0
>> + - # 2
>> + c: 0
>> + d: 0
>> diff --git a/tools/buildman/requirements.txt b/tools/buildman/requirements.txt
>> index a1efcb9d4b..4a31e69e4c 100644
>> --- a/tools/buildman/requirements.txt
>> +++ b/tools/buildman/requirements.txt
>> @@ -1,2 +1,3 @@
>> jsonschema==4.17.3
>> pyyaml==6.0
>> +yamllint==1.26.3
>> --
>> 2.34.1
>>
--
Ryan Eatmon reatmon at ti.com
-----------------------------------------
Texas Instruments, Inc. - LCPD - MGTS
More information about the U-Boot
mailing list