scripts: rework edtlib warnings-turned-errors
Create a "global" gen_defines.py option and edtlib.EDT constructor kwarg that turns edtlib-specific warnings into errors. This applies to edtlib-specific warnings only. Warnings that are just dupes of dtc warnings are not affected. Use it from twister to increase DT testing coverage in upstream zephyr. Signed-off-by: Martí Bolívar <marti.bolivar@nordicsemi.no>
This commit is contained in:
parent
f261d77c75
commit
c4079e4be2
3 changed files with 20 additions and 14 deletions
|
@ -69,8 +69,7 @@ def main():
|
||||||
"-Wno-simple_bus_reg" not in args.dtc_flags,
|
"-Wno-simple_bus_reg" not in args.dtc_flags,
|
||||||
default_prop_types=True,
|
default_prop_types=True,
|
||||||
infer_binding_for_paths=["/zephyr,user"],
|
infer_binding_for_paths=["/zephyr,user"],
|
||||||
err_on_deprecated_properties=
|
werror=args.edtlib_Werror,
|
||||||
args.err_on_deprecated_properties,
|
|
||||||
vendor_prefixes=vendor_prefixes)
|
vendor_prefixes=vendor_prefixes)
|
||||||
except edtlib.EDTError as e:
|
except edtlib.EDTError as e:
|
||||||
sys.exit(f"devicetree error: {e}")
|
sys.exit(f"devicetree error: {e}")
|
||||||
|
@ -217,8 +216,10 @@ def parse_args():
|
||||||
help="path to write pickled edtlib.EDT object to")
|
help="path to write pickled edtlib.EDT object to")
|
||||||
parser.add_argument("--vendor-prefixes",
|
parser.add_argument("--vendor-prefixes",
|
||||||
help="vendor-prefixes.txt path; used for validation")
|
help="vendor-prefixes.txt path; used for validation")
|
||||||
parser.add_argument("--err-on-deprecated-properties", action="store_true",
|
parser.add_argument("--edtlib-Werror", action="store_true",
|
||||||
help="if set, deprecated property usage is an error")
|
help="if set, edtlib-specific warnings become errors. "
|
||||||
|
"(this does not apply to warnings shared "
|
||||||
|
"with dtc.)")
|
||||||
|
|
||||||
return parser.parse_args()
|
return parser.parse_args()
|
||||||
|
|
||||||
|
|
|
@ -150,8 +150,8 @@ class EDT:
|
||||||
default_prop_types=True,
|
default_prop_types=True,
|
||||||
support_fixed_partitions_on_any_bus=True,
|
support_fixed_partitions_on_any_bus=True,
|
||||||
infer_binding_for_paths=None,
|
infer_binding_for_paths=None,
|
||||||
err_on_deprecated_properties=False,
|
vendor_prefixes=None,
|
||||||
vendor_prefixes=None):
|
werror=False):
|
||||||
"""EDT constructor.
|
"""EDT constructor.
|
||||||
|
|
||||||
dts:
|
dts:
|
||||||
|
@ -180,20 +180,22 @@ class EDT:
|
||||||
should be inferred from the node content. (Child nodes are not
|
should be inferred from the node content. (Child nodes are not
|
||||||
processed.) Pass none if no nodes should support inferred bindings.
|
processed.) Pass none if no nodes should support inferred bindings.
|
||||||
|
|
||||||
err_on_deprecated_properties (default: False):
|
|
||||||
If True and 'dts' has any deprecated properties set, raise an error.
|
|
||||||
|
|
||||||
vendor_prefixes (default: None):
|
vendor_prefixes (default: None):
|
||||||
A dict mapping vendor prefixes in compatible properties to their
|
A dict mapping vendor prefixes in compatible properties to their
|
||||||
descriptions. If given, compatibles in the form "manufacturer,device"
|
descriptions. If given, compatibles in the form "manufacturer,device"
|
||||||
for which "manufacturer" is neither a key in the dict nor a specially
|
for which "manufacturer" is neither a key in the dict nor a specially
|
||||||
exempt set of grandfathered-in cases will cause warnings.
|
exempt set of grandfathered-in cases will cause warnings.
|
||||||
|
|
||||||
|
werror (default: False):
|
||||||
|
If True, some edtlib specific warnings become errors. This currently
|
||||||
|
errors out if 'dts' has any deprecated properties set, or an unknown
|
||||||
|
vendor prefix is used.
|
||||||
"""
|
"""
|
||||||
self._warn_reg_unit_address_mismatch = warn_reg_unit_address_mismatch
|
self._warn_reg_unit_address_mismatch = warn_reg_unit_address_mismatch
|
||||||
self._default_prop_types = default_prop_types
|
self._default_prop_types = default_prop_types
|
||||||
self._fixed_partitions_no_bus = support_fixed_partitions_on_any_bus
|
self._fixed_partitions_no_bus = support_fixed_partitions_on_any_bus
|
||||||
self._infer_binding_for_paths = set(infer_binding_for_paths or [])
|
self._infer_binding_for_paths = set(infer_binding_for_paths or [])
|
||||||
self._err_on_deprecated_properties = bool(err_on_deprecated_properties)
|
self._werror = bool(werror)
|
||||||
self._vendor_prefixes = vendor_prefixes
|
self._vendor_prefixes = vendor_prefixes
|
||||||
|
|
||||||
self.dts_path = dts
|
self.dts_path = dts
|
||||||
|
@ -426,8 +428,7 @@ class EDT:
|
||||||
# they (either always or sometimes) reference other nodes, so we
|
# they (either always or sometimes) reference other nodes, so we
|
||||||
# run them separately
|
# run them separately
|
||||||
node._init_props(default_prop_types=self._default_prop_types,
|
node._init_props(default_prop_types=self._default_prop_types,
|
||||||
err_on_deprecated=
|
err_on_deprecated=self._werror)
|
||||||
self._err_on_deprecated_properties)
|
|
||||||
node._init_interrupts()
|
node._init_interrupts()
|
||||||
node._init_pinctrls()
|
node._init_pinctrls()
|
||||||
|
|
||||||
|
@ -519,7 +520,11 @@ class EDT:
|
||||||
vendor = compat.split(',', 1)[0]
|
vendor = compat.split(',', 1)[0]
|
||||||
if vendor not in self._vendor_prefixes and \
|
if vendor not in self._vendor_prefixes and \
|
||||||
vendor not in _VENDOR_PREFIX_ALLOWED:
|
vendor not in _VENDOR_PREFIX_ALLOWED:
|
||||||
_LOG.warning(
|
if self._werror:
|
||||||
|
log_fn = _LOG.error
|
||||||
|
else:
|
||||||
|
log_fn = _LOG.warning
|
||||||
|
log_fn(
|
||||||
f"node '{node.path}' compatible '{compat}' "
|
f"node '{node.path}' compatible '{compat}' "
|
||||||
f"has unknown vendor prefix '{vendor}'")
|
f"has unknown vendor prefix '{vendor}'")
|
||||||
|
|
||||||
|
|
|
@ -2008,7 +2008,7 @@ class CMake():
|
||||||
ldflags = "-Wl,--fatal-warnings"
|
ldflags = "-Wl,--fatal-warnings"
|
||||||
cflags = "-Werror"
|
cflags = "-Werror"
|
||||||
aflags = "-Wa,--fatal-warnings"
|
aflags = "-Wa,--fatal-warnings"
|
||||||
gen_defines_args = "--err-on-deprecated-properties"
|
gen_defines_args = "--edtlib-Werror"
|
||||||
else:
|
else:
|
||||||
ldflags = cflags = aflags = ""
|
ldflags = cflags = aflags = ""
|
||||||
gen_defines_args = ""
|
gen_defines_args = ""
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue