Commit graph zephyr/scripts
Author SHA1 Message Date
Graham Roff
8894dc67b9 scripts: footprint: Optimize speed of generate_any_tree
The generate_any_tree function finds all matching nodes when inserting
into the tree, but only actually needs the first match. It also does
this search multiple times for the same node as it traverses the tree.
Optimize this in two ways: first, use an iterator that stops
after the first match, and second, cache matching nodes to avoid
repeat searches.

Signed-off-by: Graham Roff <grahamr@qti.qualcomm.com>
2026-02-27 15:30:49 +01:00
Alexey Nikolaev
d739a4d0ab scripts: build: emitting syscall/subsystem metadata to JSON if commented
Strip comments from the source files before the parser extracts syscall
and subsystem metadata. The comment removal is performed directly inside
scripts/build/parse_syscalls.py, after which the filtered source is
processed with the existing regular‑expression based parser.

The underlying problem is that metadata for syscalls and subsystem that
has been commented‑out is still extracted and written to the generated
JSON file.

Signed-off-by: Alexey Nikolaev <alexeynikzzz@gmail.com>
2026-02-27 11:51:00 +01:00
Benjamin Cabé
2c8957fa0a doc: build: ci: twister: Zephyr now requires Python 3.12 or higher
Update getting started guide, release notes, CI actions, ruff,
build system, and Python version compliance check to use Python
3.12 as minimum supported version.

Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
2026-02-26 21:25:03 +00:00
Benjamin Cabé
6f14a1daae scripts: ci: refresh requirements*.txt pinned versions and SHAs
This commit refreshes the pinned versions and SHAs for the
requirements.txt files and requirements-actions.txt files.

Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
2026-02-26 21:25:03 +00:00
Thomas Stranger
81c2b3ed0f scripts: kconfig: hardend: remove TEST_SHELL from file
The TEST_SHELL config was removed in commit be0dff6844
("test: remove TEST_SHELL") a while ago.

Signed-off-by: Thomas Stranger <thomas.stranger@outlook.com>
2026-02-25 13:20:19 +01:00
Thomas Stranger
6044651979 scripts: kconfig: hardened: rename ATMEL_SAME70
The config options have been renamed in commit 8dc3f85622
("hwmv2: Introduce Hardware model version 2 and convert devices"),
therefore update them in the hardend file.

Signed-off-by: Thomas Stranger <thomas.stranger@outlook.com>
2026-02-25 13:20:19 +01:00
Jan Gałda
818d9dffe0 compliance: Fix inefficient regular expression
This part of the regular expression may cause exponential backtracking
on strings containing many repetitions of '\n\r'.

Signed-off-by: Jan Gałda <jan.galda@nordicsemi.no>
2026-02-25 13:09:59 +01:00
Aksel Skauge Mellbye
a6432d7426 west: blobs: Add git lfs http(s) fetcher
Add support for fetching blobs from Git LFS HTTP(s) servers using
the LFS API to discover the blob URL.

This fetcher relies on the `sha256` and `size` fields in the blob
metadata to perform an API request to the LFS API in `url` to
get the download URL for the blob.

Signed-off-by: Aksel Skauge Mellbye <aksel.mellbye@silabs.com>
2026-02-24 13:51:20 +01:00
Aksel Skauge Mellbye
faf4ba3041 west: blobs: Allow explicit fetcher selection
Decouple fetcher selection from the URL by adding a new field
`fetcher` to the blob metadata. If not set, fall back to parsing
the schema from the URL.

Add an optional field `size` to declare the size of the blob in
bytes.

Update documentation to cover the new additions. Fix a typo
`uri`->`url` and document the `click-through` field together
with the new fields.

Signed-off-by: Aksel Skauge Mellbye <aksel.mellbye@silabs.com>
2026-02-24 13:51:20 +01:00
Aksel Skauge Mellbye
c5e2ca218a west: blobs: Give the fetcher full context
Pass the entire blob context to the fetcher instead of only
the URL to allow for fetchers that require more context than
a single URL.

Signed-off-by: Aksel Skauge Mellbye <aksel.mellbye@silabs.com>
2026-02-24 13:51:20 +01:00
Aksel Skauge Mellbye
bb60eee7cf west: blobs: Refactor logging to not use globals
Log using the west command instance instead of the deprecated
global in blob fetchers.

Signed-off-by: Aksel Skauge Mellbye <aksel.mellbye@silabs.com>
2026-02-24 13:51:20 +01:00
Kyle Bonnici
e0ca21ab5c CI: Update dts-linter to dts-linter 0.4.0
Expressions will now indent to align with the group they are in example:

Was

```devicetree
dmas = <&dma2 1 0 (STM32_DMA_MODE_NORMAL | STM32_DMA_PRIORITY_HIGH |
 		STM32_DMA_16BITS) 0>;
```

Now

```devicetree
dmas = <&dma2 1 0 (STM32_DMA_MODE_NORMAL | STM32_DMA_PRIORITY_HIGH |
				   STM32_DMA_16BITS) 0>;
```

Signed-off-by: Kyle Bonnici <kylebonnici@hotmail.com>
2026-02-23 13:31:41 -06:00
Mathieu Choplain
6bdec2471d scripts: fpdiff: don't crash when a duplicate symbol is found
The same symbol may be found multiple times when a function is declared in
a header, which causes anytree.search.find() to throw a CountError.

Catch the exception and ignore duplicate symbols instead of crashing.

Signed-off-by: Mathieu Choplain <mathieu.choplain-ext@st.com>
2026-02-20 10:31:27 -08:00
Marc Herbert
f1ac9ce55e scripts: west_commands: build: rephrase the --cmake-opt help
Late review comments from #101457. Make it more formal and complete.

Add that argparse should preserve the order based on:
https://discuss.python.org/t/argparse-multiple-arguments-with-the-same-destination-left-to-right-order-guarantee/105685

Don't assume that all CMake options can be "overriden"; stick to
describing our own behavior.

Signed-off-by: Marc Herbert <marc.herbert@intel.com>
2026-02-20 10:09:32 +01:00
Eryk Szpotanski
4544c98b16 scripts: instrumentation: Use elftools instead of objdump
System-wise objdump can select different target for the same zephyr.elf
file depending on e.g. operation system, which can lead to discrepancies
and error in zaru.py script.
Using elftools fixes this problem.

Signed-off-by: Eryk Szpotanski <eszpotanski@antmicro.com>
2026-02-18 14:45:12 +00:00
Mirai SHINJO
170a1fe01b scripts: coredump: update RISC-V parser for full register set
Add support for ARCH_HDR_VER 3 (RISC-V 32-bit layout) and 4
(RISC-V 64-bit layout), carrying all 33 registers in GDB order
(x0-x31 and pc).

For versions 3/4, map tuple entries directly to GDB register numbers.

Keep ARCH_HDR_VER 1/2 parsing unchanged so existing stored dumps
can be decoded as well.

Signed-off-by: Mirai SHINJO <oss@mshinjo.com>
2026-02-18 10:31:33 +00:00
Grzegorz Chwierut
69edab8c97 twister: move ZEPHYR_BASE to constants to reduce dependencies
Moving ZEPHYR_BASE from environment.py to constants.py
allows importing classes like HardwareMap in
pytest-twister-harness module without pulling in unnecessary
dependencies from environment.py.

This refactoring improves module independence and makes selective
imports cleaner across the twister Python package structure.

Signed-off-by: Grzegorz Chwierut <grzegorz.chwierut@nordicsemi.no>
2026-02-17 17:41:16 -06:00
Lukasz Fundakowski
d73ea02be1 twister: Do not clean previous results for listing tests
When user only wants to list tests or tags twister should
not clean previous results.
This change improves also performance for listing tests.

Signed-off-by: Lukasz Fundakowski <lukasz.fundakowski@nordicsemi.no>
2026-02-17 13:22:35 -06:00
Zophai Liu
9ee71b498c west: runner: add realtek bee mpcli flash runner
Add support for the official realtek programming tool (CLI
version).

Signed-off-by: Zophai Liu <zophai_liu@realsil.com.cn>
2026-02-17 15:22:38 +00:00
Gaetan Perrot
fb0b2c3515 scripts: ci: compliance_check: ignore external module documentation
The undefined Kconfig compliance check may report symbols as
undefined when the corresponding external module is not present.

This results in false positives, since such symbols are provided
only when the module is included in the workspace.

Exclude doc/develop/manifest/external from the grep search used by
the undefined Kconfig check.

This avoids extending UNDEF_KCONFIG_ALLOWLIST for optional external
modules while keeping the check strict for core Zephyr symbols.

Signed-off-by: Gaetan Perrot <gaetan.perrot@spacecubics.com>
2026-02-17 08:02:05 -05:00
Lukasz Fundakowski
98c6fbfc9b twister: Refactor twister_main.py
Refactored main function for Twister execution.

- Rewrote the main function as a class and divided it into smaller,
  more maintainable methods.
- Improved code structure, making it easier
  to test with unit and module tests.
- Reduced the amount of code in a single function,
  enhancing readability and understanding

Signed-off-by: Lukasz Fundakowski <lukasz.fundakowski@nordicsemi.no>
2026-02-17 10:32:02 +01:00
Daniel Leung
098f61700f west: sign/rimage: do not assume SOF source exists
After the removal of the SOF module from the manifest, we should
no longer assume SOF source is available in the signing script.
If SOF source directory does not exist, we point the rimage
config directory to the support directory inside board directory
so that we can use local file to sign images.

Note that with this change, pulling SOF via Zephyr manifest is
no longer supported. Only SOF pulling in Zephyr via manifest is
supported.

Signed-off-by: Daniel Leung <daniel.leung@intel.com>
2026-02-16 09:01:09 -06:00
Daniel Leung
a4c37560d5 west: sign/rimage: remove --no-manifest workaround
The --no-manifest option is no longer being used so we remove
the workaround.

Signed-off-by: Daniel Leung <daniel.leung@intel.com>
2026-02-16 09:01:09 -06:00
Anas Nashif
dbd231853d west: sign: use local signing key if specified
Environment variable RIMAGE_SIGN_KEY can be used to specify
the signing key for rimage. We should check if it points
directly to the key instead of always prefixing it with SOF
path.

Signed-off-by: Anas Nashif <anas.nashif@intel.com>
Signed-off-by: Daniel Leung <daniel.leung@intel.com>
2026-02-16 09:01:09 -06:00
Henrik Brix Andersen
28cd602a81 scripts: requirements-actions: regen pinned dependencies
Run uv pip compile to get updated hashes for tomli.

Signed-off-by: Henrik Brix Andersen <hebad@vestas.com>
2026-02-16 13:03:26 +01:00
Pete Johanson
f8ba603aab scripts: west: runners: stm32cubeprogrammer: Add --reset-type support
Obsolete the bespoke --reset-mode parameter in favor of the new standard
--reset-type parameter.

Signed-off-by: Pete Johanson <pete.johanson@analog.com>
2026-02-13 19:01:50 +00:00
Pete Johanson
8213786f35 script: west_commands: jlink: Add --reset-type support
Add support for setting the reset type for the jlink runner, to support
targets that need a non-default reset type for proper `reset halt`, etc.

Signed-off-by: Pete Johanson <pete.johanson@analog.com>
2026-02-13 19:01:50 +00:00
Pete Johanson
944f64870a script: west_commands: core: Add --reset-type parameter
For some devices, the default JLink reset type may not work properly, so
allow overriding the reset type by passing, e.g. --reset-type=12 when
flashing.

Add new field to RunnerCaps to allow runners to specify either a fixed
list of possible types, or True to expose the standard --reset-type
parameter for that runner.

Signed-off-by: Pete Johanson <pete.johanson@analog.com>
2026-02-13 19:01:50 +00:00
dependabot[bot]
c620982fa1 build(deps): bump cryptography from 46.0.3 to 46.0.5 in /scripts
Bumps [cryptography](https://github.com/pyca/cryptography) from 46.0.3 to 46.0.5.
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pyca/cryptography/compare/46.0.3...46.0.5)

---
updated-dependencies:
- dependency-name: cryptography
  dependency-version: 46.0.5
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-13 10:08:44 +01:00
James Roy
e2d805269a dts: gen_dts_cmake.py: Add a to_cmake_list() function
It conveniently converts an iterator into a CMake list.
(e.g.: `[1,2,3]` convert to `1;2;3`)

Signed-off-by: James Roy <rruuaanng@outlook.com>
2026-02-12 09:30:05 +01:00
Benjamin Cabé
0162442bfa scripts: coccinelle: improve matching for boolean_strict_init.cocci
boolean_strict_init.cocci would find false positive when a compilation
unit would contain a boolean variable "x" somewhere, and, in a different
scope, another variable "x" of e.g. int type that was assigned a 0 or 1.

See for example drivers/sensor/adi/adxl367/adxl367_stream.c:97 where
fifo_wmark_irq is declared as an int in the scope of the function but
as a bool in adxl367_process_status_cb.

This also adds the patching part to the script so that violations can be
fixed automatically.

Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
2026-02-11 17:50:12 -06:00
zjian zhang
3b11fd38c3 west: runner: add realtek amebaflash runner
Add support for the ameba programming tool (CLI version).

Signed-off-by: zjian zhang <zjian_zhang@realsil.com.cn>
2026-02-11 15:02:10 -06:00
Omkar Nanajkar
d2c47a5cee scripts: west: zsh completion: add missing commands and options
Update the Zsh completion script to support newer west extensions and
commands, bringing it closer to feature parity with the Bash completion.

Key changes:
- Add completion support for twister, bindesc, blobs, robot, sdk,
  packages, patch, gtags, simulate, and reset
- Improve option completion for build, flash, debug, and runner commands
- Enable dynamic lookup for boards and shields
- Refactor argument handling for better Zsh compliance

Fixes #73129

Signed-off-by: Omkar Nanajkar <nomkar2131@gmail.com>
2026-02-10 15:11:42 +01:00
Pieter De Gendt
a0a71dabf8 scripts: zephyr_module.py: Optional jsonschema dependency
Commit 58bf2dc0e6 replaced pykwalify with
jsonschema for Zephyr module.yml files. However the west 'packages'
extension uses this module to list Python dependencies for Zephyr and
active Zephyr modules.

Make YAML validation optional using a new argument.

Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>
2026-02-10 15:10:10 +01:00
Damian Krolik
47f1e8dcef scripts: coredump: fix Python exception
The coredump parsing script raises an exception as it tries
to format bytes objects as integer (":d").

This is a regression from a recent PR fxing ruff warnings.

Signed-off-by: Damian Krolik <damian.krolik@nordicsemi.no>
2026-02-09 12:02:37 -06:00
Tomasz Chyrowicz
0e99df3ca8 dts: Handle phandles in cmake
Add a possibility to use phandles values in CMake.

Signed-off-by: Tomasz Chyrowicz <tomasz.chyrowicz@nordicsemi.no>
2026-02-09 13:30:23 +01:00
Pieter De Gendt
2b57985df1 scripts: dts: python-devicetree: Fix failing test with uppercase address
Commit f55358bcbf changed all hex values to
use lowercase characters. Update the test accordingly.

Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>
2026-02-09 09:37:12 +01:00
Maciej Sobkowski
61ba3c9cd6 instrumentation: support dynamic triggers
This makes using instrumentation with any sample/board combination
much easier, as it eliminates the need to define a custom dt overlay.
Trigger/stopper functions need to be configured at build time.

Signed-off-by: Maciej Sobkowski <msobkowski@antmicro.com>
2026-02-06 13:53:34 +01:00
Jingsai Lu
36ffd63500 scripts: west_commands: add west reset command to reboot board
add west reset command with gdb reset for jlink runner

Signed-off-by: Jingsai Lu <jingsai.lu@nxp.com>
2026-02-06 11:15:23 +01:00
Johan Hedberg
9fa30fc2bf scripts: zephyr_module: Fix optionality of "click-through" for blobs
When pykwalify was changed to jsonschema in commit 58bf2dc the optionality
of 'click-through' was lost. Fix this by making sure there's always a value
in the dictionary, eliminating the following error when the key is missing:

if blob['click-through'] and not args.auto_accept:
   ~~~~^^^^^^^^^^^^^^^^^
KeyError: 'click-through'

Signed-off-by: Johan Hedberg <johan.hedberg@silabs.com>
2026-02-05 13:01:36 +00:00
Mathieu Choplain
2c43940195 scripts: footprint: fpdiff: read proper value for symbol sizes
The AnyNode class has a `size` property which hides the value sourced from
JSON key 'size', resulting in the script displaying nonsense. Consume the
proper value by directly accessing the __dict__ which holds it instead of
relying on the dot operator.

Signed-off-by: Mathieu Choplain <mathieu.choplain-ext@st.com>
2026-02-05 10:20:35 +00:00
Sylvio Alves
b4f469a7d4 scripts: coccinelle: add MISRA 10.1 boolean essential type check
Add boolean_strict_init.cocci to detect improper boolean initialization
and assignment using integer literals (0/1) instead of true/false.

This enforces Zephyr coding guideline #59 (MISRA C:2012 Rule 10.1)
which states that operands shall not be of an inappropriate essential
type.

Rules added:
- rule1_init: detects bool var = 0/1 initialization
- rule2_assign: detects bool_var = 0/1 assignment

The original boolean.cocci (Rule 14.4) remains disabled due to
performance issues on large files causing CI timeouts. See PR #34773.

Enable boolean_strict_init.cocci in guideline_check.py so CI runs this
check on changed files.

Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
2026-02-04 12:52:07 -06:00
Kyle Bonnici
f55358bcbf dts: use lowercase hex values in DTS files.
Apply chnages from dts-linter 0.3.9.

Improve compliance with DTS Coding Style which says that:

4) Hex values in properties, e.g. “reg”, shall use lowercase hex.
   The address part can be padded with leading zeros.

Signed-off-by: Kyle Bonnici <kylebonnici@hotmail.com>
2026-02-04 13:49:43 +01:00
Kyle Bonnici
3749347e1b CI: Update dts-linter dts-linter 0.3.9
Update DTS linter apply lowercase hex values in DTS files
Improve compliance with DTS Coding Style which says that:

4) Hex values in properties, e.g. “reg”, shall use lowercase hex.
   The address part can be padded with leading zeros.

This need dts-linter 0.3.9

Signed-off-by: Kyle Bonnici <kylebonnici@hotmail.com>
2026-02-04 13:49:43 +01:00
Darcy Lu
e7e2b0a16c script: Add flash runner for rts5817
Add flash runner script to support west flash for rts5817

Signed-off-by: Darcy Lu <darcy_lu@realsil.com.cn>
2026-02-04 13:49:21 +01:00
Sylvio Alves
738c5b713d runners: auto-select build artifact when --file-type is specified
when --file-type is provided without --file, automatically select
the corresponding build artifact (zephyr.hex, zephyr.bin, or
zephyr.elf) instead of requiring the user to specify both flags.

the validation that --file-type requires --file is preserved in
core.py, but run_common.py now auto-populates --file before the
validation runs.

Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
2026-02-03 14:25:14 -06:00
Chris Friedt
c78a0e2550 scripts: ci: guideline_check: ignore tests/posix/ in coccinelle
Exclulde `tests/posix/` when running coccinelle checks for reserved names
since POSIX implements much of the reserved names.

This avoids the following failure in CI

```shell
Error: tests/posix/xsi_single_process/src/putenv.c:12: WARNING: \
  Violation to rule 21.2 (Should not used a reserved identifier) - putenv
```

Signed-off-by: Chris Friedt <chris@fr4.co>
2026-02-03 08:22:49 -06:00
Pieter De Gendt
f728794ac0 scripts: dts: gen_dts_cmake.py: Fix keys in dict linter issue
Simplify loop as reported by ruff.

Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>
2026-02-02 11:37:53 -06:00
Pieter De Gendt
85a6e11bdb scripts: dts: gen_dts_cmake.py: Prevent trailing semicolon for lists
The generated lists have a trailing semicolon, which for CMake would
indicate a trailing empty item.

Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>
2026-02-02 11:37:53 -06:00
Pieter De Gendt
4159632248 scripts: dts: gen_dts_cmake.py: Format file
Format the gen_dts_cmake_py file using ruff.

Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>
2026-02-02 11:37:53 -06:00