# SPDX-License-Identifier: Apache-2.0 # # Copyright (c) 2023, Nordic Semiconductor ASA ## A pykwalify schema for basic validation of the structure of a ## board metadata YAML file. ## # The board.yml file is a simple list of key value pairs containing board # information like: name, vendor, socs, variants. schema;variant-schema: required: false type: seq sequence: - type: map mapping: name: required: true type: str cpucluster: required: false type: str variants: required: false include: variant-schema schema;extend-variant-schema: required: false type: seq sequence: - type: map mapping: name: required: true type: str qualifier: required: true type: str schema;board-schema: type: map mapping: name: required: false # Note: either name or extend is required, but that is handled in python type: str desc: Name of the board full_name: required: false type: str desc: Full name of the board. Typically set to the commercial name of the board. extend: required: false # Note: either name or extend is required, but that is handled in python type: str vendor: required: false type: str desc: SoC family of the SoC on the board. revision: required: false type: map mapping: format: required: true type: str enum: ["major.minor.patch", "letter", "number", "custom"] default: required: false # This field is required when 'format' != 'custom' type: str exact: required: false type: bool revisions: required: false # This field is required when 'format' != 'custom' type: seq sequence: - type: map mapping: name: required: true type: str socs: required: false # Required for name:, but not for extend. type: seq sequence: - type: map mapping: name: required: true type: str variants: include: variant-schema variants: include: extend-variant-schema type: map mapping: board: include: board-schema boards: type: seq sequence: - include: board-schema runners: type: map mapping: priority: type: int desc: | Priority of this flash run once configuration. The highest value data will be used instead of any with lower priorities. If omitted, will default to 10. run_once: type: map desc: | Allows for restricting west flash commands when using sysbuild to run once per given grouping of board targets. This is to allow for future image program cycles to not erase the flash of a device which has just been programmed by another image. mapping: regex;(.*): type: seq desc: | A dictionary of commands which should be limited to running once per invocation of west flash for a given set of flash runners and board targets. sequence: - type: map mapping: run: required: true type: str enum: ['first', 'last'] desc: | If first, will run this command once when the first image is flashed, if last, will run this command once when the final image is flashed. runners: required: true type: seq sequence: - type: str desc: | A list of flash runners that this applies to, can use `all` to apply to all runners. groups: required: true type: seq sequence: - type: map desc: | A grouping of board targets which the command should apply to. Can be used multiple times to have multiple groups. mapping: boards: required: true type: seq sequence: - type: str desc: | A board target to match against in regex. Must be one entry per board target, a single regex entry will not match two board targets even if they both match.