Commit graph zephyr/scripts
Author SHA1 Message Date
Jamie McCrae
03e8e88d79 soc: nordic: Add SOC_SERIES_NRF* Kconfigs without X suffix
This is to start the process of fixing the issue of the SoC series
not matching the value in the soc.yml file, which is needed to
support future build system features for automatically creating
SoC Kconfigs by the build system.
This also fixes some oddities with how the Kconfigs were set out,
which included duplicated Kconfigs and duplicate selections and
having them in the wrong (or differing) files, to actually follow
how HWMv2 should define these Kconfigs.

Signed-off-by: Jamie McCrae <jamie.mccrae@nordicsemi.no>
2026-01-20 13:21:38 +00:00
Malon Tian
16ffda989b scripts: west: fix typos and formatting in sdk help message
Specific fixes include:
- Add missing space after period in the disk space warning.
- Fix mismatched quotes in the --install-base example (usage of `...').
- Removed a typo double quote in the installation description.

This addresses the CLI help message issues reported.

Fixes #95609

Signed-off-by: Malon Tian <a3205153416@gmail.com>
2026-01-16 18:08:24 +01:00
Thorsten Klein
de18a52a20 scripts: west_commands: tests: test_build: add tests for west build args
Add tests to ensure 'west build' arguments are correctly forwarded to
CMake in the correct order.

Signed-off-by: Thorsten Klein <thorsten.klein@bshg.com>
2026-01-16 18:05:26 +01:00
Thorsten Klein
fe13def7a5 scripts: west_commands: build: support cmake arguments via --cmake-opt
Support cmake options specified via argument --cmake-opt, in order to
avoid `--` in alias commands.

Signed-off-by: Thorsten Klein <thorsten.klein@bshg.com>
2026-01-16 18:05:26 +01:00
Thorsten Klein
47db2c6522 scripts: west_commands: build: remove shadowed function argument
Remove _run_cmake argument 'cmake_opts' which is never used and shadowed
by a local variable.

Signed-off-by: Thorsten Klein <thorsten.klein@bshg.com>
2026-01-16 18:05:26 +01:00
Bjarki Arge Andreasen
547d0ffe25 scripts: checkpatch: extend has_arg_concat to include CONCAT()
The has_arg_concat check checks for ## and UTIL_CAT, but is missing
the CONCAT macro. This is causing spurious occurances of
MACRO_WITH_FLOW_CONTROL warnings for functions defined with macros
if they use the CONCAT() macro (its like UTIL_CAT but supports up
to 10 concatenations).

Signed-off-by: Bjarki Arge Andreasen <bjarki.andreasen@nordicsemi.no>
2026-01-16 11:39:41 +00:00
Nikita Divakov
b807da4f56 scripts: gen_relocate_app.py: add quotes around section names in templates
Section names may contain paths to files with special characters.
For example, a valid file path might contain '@'. Then using
CONFIG_CODE_DATA_RELOCATION to relocate section, macro
__in_section_unique() will generate section name like this:

KEEP(*file.c.obj(.noinit.WEST_TOPDIR/path_with@char/file.c.0))

Such section names cannot be processed by ld because '@'
is a special character for ld.

This fix wraps section names in double quotes to escape
special characters for ld.

Signed-off-by: Nikita Divakov <grommerin@gmail.com>
2026-01-15 16:40:39 +00:00
Sylvio Alves
85e1ea0259 runners: openocd: refactor flash methods into single do_flash
Add _openocd_cmd() helper method to reduce code duplication when
building openocd command lists. Consolidate do_flash, do_flash_elf,
and do_flash_bin into a single do_flash method using match statement
on image_type parameter.

Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
2026-01-14 13:05:34 -06:00
Sylvio Alves
2ba21af69d runners: openocd: add BIN file flash support
Add --use-bin and --flash-address arguments to allow flashing BIN
files at a specific address. This is needed for targets like ESP32
where HEX files contain virtual addresses (due to MMU mapping)
rather than physical flash addresses.

The new do_flash_bin() method uses the load command with the BIN
file path and flash address, similar to how ELF flashing works.

Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
2026-01-14 13:05:34 -06:00
Mohamed Moawad
7fb39e806c twister: Add board-level flash_before support for pytest/shell harnesses
Add support for boards to specify flash_before in their board YAML files,
which is then used by pytest and shell harnesses. This is needed for
Synopsys ARC development boards (hsdk, hsdk/arc_hsdk/2cores, hsdk4xd
and iotdk) where the USB serial port disconnects during flashing.

Signed-off-by: Mohamed Moawad <moawad@synopsys.com>
2026-01-14 13:00:22 -06:00
Guðni Már Gilbert
6bb7a1b54b scripts: twister: Add full_name to board.yml
Fixes regression introduced by e45ac11aeb9b874038a2925c2588b94100aa28cc

Signed-off-by: Guðni Már Gilbert <gudni.m.g@gmail.com>
2026-01-13 09:33:35 -05:00
Jamie McCrae
c1a4c78c5c scripts: snippets: Add support for board revisions
Allows snippets to specify additional files for specific revisions
of boards

Signed-off-by: Jamie McCrae <jamie.mccrae@nordicsemi.no>
2026-01-13 13:30:38 +01:00
Nakul Chauhan
a7cea5d58a native_simulator: Get latest from upstream
Align with native_simulator's upstream main
215ee859eee5e49dc09eda8f17a956ee7318caf2

Which includes:
215ee85: native timer_model: Fix printf format specifier warnings w
         debug logs

Signed-off-by: Nakul Chauhan <nakulchauhan111@gmail.com>
Signed-off-by: Alberto Escolar Piedras <alberto.escolar.piedras@nordicsemi.no>
2026-01-13 10:29:44 +01:00
Tom Burdick
769ac1b112 ci: Drop preemptible||preemptable spellcheck
Preemptable and preemptible are both commonly used spellings. Infineon
had chosen preemptable as the spelling and lead to CI failures when
using struct members in the PDL. Removing the check in Zephyr allows
for flexibility in spellings of this word.

Signed-off-by: Tom Burdick <thomas.burdick@infineon.com>
2026-01-13 10:25:26 +01:00
Tom Burdick
c97ccba142 twister: Support kitprog when generating hw map
Hardware map file generation should at least get you part way now with
Infineon boards with the Cypress derived KitProg3.

Signed-off-by: Tom Burdick <thomas.burdick@infineon.com>
2026-01-13 10:24:30 +01:00
Ederson de Souza
e53da36164 samples: tfm_integration: tfm_secure_partition: Support SFN backend
When support for old "Library model" was removed, support for the new
Secure Function (SFN) model - the FF-M 1.1 spec that succeded the "Library
model" - wasn't implemented. This patch adds it.

Signed-off-by: Ederson de Souza <ederson.desouza@intel.com>
2026-01-09 17:08:56 -06:00
Lauren Murphy
69ce125083 twister, west: test extra_conf_files arg to EXTRA_CONF_FILE
The extra_conf_files arg in testcase.yaml was being improperly
assigned to the CONF_FILE CMake arg, which caused
configuration_files.cmake to ignore soc and board Kconfig overlays.

Signed-off-by: Lauren Murphy <lauren.murphy@intel.com>
2026-01-09 14:22:41 -06:00
Benjamin Cabé
901d21e454 scripts: schemas: make full_name a required property for boards
When initially introduced, the property was kept optional in an attempt
to not risk disrupting downstream users by introducing a required property
they wouldn't necessarily care about. In practice, this is causing
boards contributed upstream to sometimes miss this propery which is
important for boards to show up nicely in the boards catalog, and it is
therefore being made required.

Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
2026-01-09 07:56:40 -06:00
Yves Wang
88e7b3b451 scripts: build: Accept python object in Domain's constructor
Make Domain's class constructor accept python object to avoid redundant
YAML serialize and unserialize which may introduce potential yaml type
errors.

Signed-off-by: Yves Wang <zhengjia.wang@nxp.com>
2026-01-07 14:51:44 -06:00
Lukasz Fundakowski
2e36f57e8d scripts: Improve handling exceptions in compliance check script
When output from ruff check subprocess is not in JSON format
compliance script raises an exception without any useful information
about the error. This commit improves that by printing output from
subprocess in case of error.

Signed-off-by: Lukasz Fundakowski <lukasz.fundakowski@nordicsemi.no>
2026-01-07 19:37:26 +01:00
Guðni Már Gilbert
465150d796 twister: avoid scanning subcases for unselected test suites
Optimize testsuite discovery by skipping subcase scans for filtered suites

Signed-off-by: Guðni Már Gilbert <gudni.m.g@gmail.com>
2026-01-07 07:44:44 +01:00
Mike Szczys
06d5728d07 twister: fix --keep-artifacts
use the allow-list generated by --keep-artifacts whenever
cleanup_artifacts() is called. This resolves an issue where this allow-list
was not being honored when using the --prep-artifacts-for-testing flag.

Signed-off-by: Mike Szczys <mike@golioth.io>
2026-01-06 11:18:11 -05:00
Guðni Már Gilbert
28fe8d5c87 scripts: tests: twister: mock listed serial port
Reduce the test time by ~300 seconds by mocking the listed serial port

Result from running:
pytest --durations=0 ./scripts/tests/twister/test_handlers.py

Before:
60.12s test_devicehandler_handle[valid pty]
60.12s test_devicehandler_handle[communicate timeout]
60.06s test_devicehandler_handle[popen called process error]
60.05s test_devicehandler_handle[valid dev]
60.03s test_devicehandler_handle[nonzero returncode]
0.01s  test_devicehandler_handle[create serial failure]

After:
0.01s test_devicehandler_handle[valid dev]
0.01s test_devicehandler_handle[valid pty]
0.01s test_devicehandler_handle[nonzero returncode]
0.01s test_devicehandler_handle[create serial failure]
0.01s test_devicehandler_handle[communicate timeout]
0.01s test_devicehandler_handle[popen called process error]

Signed-off-by: Guðni Már Gilbert <gudni.m.g@gmail.com>
2026-01-06 16:07:24 +00:00
Thamaraimanalan M
450096dc77 scripts: check_compliance: fix broken URL in ruff compliance error
Add a trailing space to the Ruff error message string in the compliance
checking script. Previously, the error message concatenated the URL and
the description with a colon (e.g., ".../unsorted-imports:Import").
This caused the terminal to interpret the description as part of the URL,
resulting in a 404 error when clicked.

Signed-off-by: Thamaraimanalan M <devthamaraimanalan.m@gmail.com>
2026-01-06 16:04:24 +00:00
Pieter De Gendt
e81bacd361 scripts: west_commands: Extend ruff config in pyproject.toml
Now that the west_commands directory has a pyproject.toml configuration
file, it should consider local packages for first party imports.

Make sure the top-level ruff config is extended, and fix some import
sorting.

Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>
2026-01-06 10:30:32 +01:00
Zhaoxiang Jin
965e921aea scripts: check_compliance: read text files as UTF-8 on Windows
KeepSorted can fail on Windows when the active code page is
not UTF-8 (e.g. GBK), because text files in the Zephyr tree
are UTF-8. Detect file type via libmagic and only process
text/* files, avoiding attempts to decode binary content.
Open text files via GIT_TOP / <path> with encoding="utf-8"
(and errors="surrogateescape") to prevent UnicodeDecodeError
during local compliance runs without changing the KeepSorted
sorting rules.

Signed-off-by: Zhaoxiang Jin <Zhaoxiang.Jin_1@nxp.com>
2025-12-23 07:54:10 +01:00
Grzegorz Chwierut
4b6ad9db3c tests: twister: Update unit tests to support miltiple ports
Updated unit tests from pytest-twister-harness
with wupport of multiple connextions.

Signed-off-by: Grzegorz Chwierut <grzegorz.chwierut@nordicsemi.no>
2025-12-22 20:36:34 +01:00
Grzegorz Chwierut
1b7810f0cb scripts: twister: Support multiple ports in pytest-twister-harness
Add support for multiple connections (e.g. UART) from one device,
enabling communication with second core UARTs. Feature implemented
by extracting connection logic from DeviceAdapter to new
DeviceConnection class with specialized implementations:
- SerialConnection for hardware UART ports
- ProcessConnection for native simulation
- FifoConnection for QEMU communication
Each connection maintains separate log files (handler.log,
handler_1.log, etc.) and can be accessed via connection_index
parameter in device methods like readline() and write().
This enables testing multi-core applications where different
cores communicate through separate UART interfaces.

Signed-off-by: Grzegorz Chwierut <grzegorz.chwierut@nordicsemi.no>
2025-12-22 20:36:34 +01:00
Pieter De Gendt
7f97d3dd0a scripts: west: packages: Print warning on windows or run new command
On non-Windows systems execute a new program, replacing the west packages
call, when trying to install packages using pip.
For Windows, update the documented way of installing python packages,
or using 'west packages pip --install' print a warning.

Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>
2025-12-19 13:55:11 -05:00
Grzegorz Chwierut
96985a32e8 twister: pytest: fix duplicate log lines from pytest
The combination of pytest's `-s` (--capture=no) option and
`--log-cli-level=DEBUG` was causing duplicate log output.
Fixed by replacing `--log-cli-level=DEBUG` with `--log-level=DEBUG`.
`--log-cli-format` removed as is not used.

Signed-off-by: Grzegorz Chwierut <grzegorz.chwierut@nordicsemi.no>
2025-12-19 07:51:49 -06:00
Grzegorz Chwierut
8827ea2643 twister: prevent infinite loop in required app resolution
When using --only-failed with required applications, twister could enter
an infinite loop during application dependency resolution.

Fixes #100808

Signed-off-by: Grzegorz Chwierut <grzegorz.chwierut@nordicsemi.no>
2025-12-19 07:51:23 -06:00
Pieter De Gendt
56a84e8111 scripts: ci: Add ignorecase option to zephyr-keep-sorted
Allow making the zephyr-keep-sorted check ignore cases, for example:

// zephyr-keep-sorted-start ignorecase
....
// zephyr-keep-sorted-stop

Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>
2025-12-18 18:50:54 +00:00
Benjamin Cabé
29059ec3d6 scripts: ci: refresh requirements-actions.txt pinned versions and SHAs
Refresh pinned dependencies to pick filelock 3.20.1 version since 3.20.0
is subject to CVE-2025-68146.

Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
2025-12-17 14:35:20 -08:00
Hake Huang
64eba11ee7 scripts: west: runners: add option for debug batch mode
when in batch mode, we do not need manually 'go'.
with this, we can use `west debug` in twister run test
enable for jlink and linkserver which is tested

example:

west debug --runner jlink -- --batch

Signed-off-by: Hake Huang <hake.huang@nxp.com>
2025-12-16 10:16:22 -06:00
Kyle Bonnici
d726022f83 CI: Update dts-linter to 0.3.7-hotfix2
dts-linter 0.3.7-hotfix2 Security Updates:
- Update `glob` to address CVE-2025-64756
- Update `js-yaml` to address CVE-2025-64718

Formatting updates:
- Ensure that properties have 2 new lines when node is above it.
- Enures that 1 new line is required between a node and #if/#ifdef...
- Enures that 2 new line are required between #endif and node.
- Wraps property values that exceed 100 characters in length.

Signed-off-by: Kyle Bonnici <kylebonnici@hotmail.com>
2025-12-12 15:38:31 -05:00
Jamie McCrae
a4e2a38370 scripts: zephyr_module: Skip writing output on no change
Skips updating files if the output already matches the file
contents, this prevents a random occurance whereby sysbuild
reconfigures itself after a reconfiguration for no known
discernable reason

Signed-off-by: Jamie McCrae <spam@helper3000.net>
2025-12-12 09:57:48 -05:00
Pieter De Gendt
82845973a6 scripts: footprint: size_report: Close ELF file
Use the ELFFile context manager to open/close an input file.

Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>
2025-12-11 05:48:23 -05:00
Mathieu Choplain
cb27d92c0c scripts: build: check_init_prio: take deferred-init into account
A device with zephyr,deferred-init is initialized by the application, so
we cannot check if it is initialized in "the correct order". On the other
hand, a non-deferred device must not depend on a deferred-init device: this
is guaranteed to be initialized out of order.

Also adjust existing test cases and add a new test case to validate this
behavior.

Signed-off-by: Mathieu Choplain <mathieu.choplain-ext@st.com>
2025-12-10 17:37:27 +00:00
Mathieu Choplain
ed182a89cd scripts: build: check_init_prio: create dedicated "flag errors" function
There is a bit of logic to run every time an error is reported. Factor it
out into a dedicated function.

Signed-off-by: Mathieu Choplain <mathieu.choplain-ext@st.com>
2025-12-10 17:37:27 +00:00
Daniel Leung
bf44a017a6 coredump: fix ruff warnings on gdbstuc scripts
This fixes ruff warnings on coredump gdbstuc scripts.

Signed-off-by: Daniel Leung <daniel.leung@intel.com>
2025-12-09 17:09:41 -05:00
Daniel Leung
9ace08210e coredump: fix ruff warnings on parser scripts
This fixes ruff warnings on coredump parser scripts.

Note SIM115 is not fixed yet as it requires more intrusive
changes to handle opened file with context manager.

Signed-off-by: Daniel Leung <daniel.leung@intel.com>
2025-12-09 17:09:41 -05:00
Daniel Leung
79a5783a4b coredump: fix ruff warnings on top level scripts
This fixes ruff warnings on top level coredump scripts.
This is done via "ruff check --fix" without manual editing.

Note SIM115 is not fixed yet as it requires more intrusive
changes to handle opened file with context manager.

Signed-off-by: Daniel Leung <daniel.leung@intel.com>
2025-12-09 17:09:41 -05:00
Daniel Leung
37b8402668 coredump: run ruff format on scripts
This is done via "ruff format" without any manual editing.

Signed-off-by: Daniel Leung <daniel.leung@intel.com>
2025-12-09 17:09:41 -05:00
Daniel Leung
67e6720b31 coredump: gdbstubs: x86: disable pylint duplicate code warnings
This disables the duplicate code warnings on x86 and x86_64
gdbstubs. The exception vector tables may look the same now but
can deviate depending on supported features on architecture.

Signed-off-by: Daniel Leung <daniel.leung@intel.com>
2025-12-09 17:09:41 -05:00
Benjamin Cabé
223e521275 scripts: ci: refresh requirements-actions.txt pinned versions and SHAs
This ensures, we pick a `urllib` version >2.6.0.
See:
- CVE-2025-66418 High severity
- CVE-2025-66471 High severity

Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
2025-12-09 09:49:26 -05:00
Mateusz Junkier
fb8a1ec9f3 Twister: fix serial port timeout
Fix for 1d70b70. Original code used start_time (set before flashing)
to calculate serial port wait timeout, which caused wait loop
to include flash duration, leading to exceed overall timeout.
Added serial_wait_start timestamp for avoid
including flash time in serial port enumeration timeout.
Make timeout dynamic (20% of flash_timeout, minimum 10s).

Signed-off-by: Mateusz Junkier <mateusz.junkier@intel.com>
2025-12-08 13:19:16 -05:00
Hake Huang
b3dff9bbbc tests: twister: using --no-rebuild in west flash
west flash deprecates --skip-rebuild to --no-rebuild

Signed-off-by: Hake Huang <hake.huang@nxp.com>
2025-12-08 13:12:04 -05:00
Jordan Yates
d020049f01 scripts: twisterlib: main: trim run duration
Display the total run duration to two decimal points instead of ~14,
similar to the other displayed timestamps.

Signed-off-by: Jordan Yates <jordan@embeint.com>
2025-12-08 13:11:44 -05:00
Jordan Yates
d1cd982f8f scripts: twisterlib: display testplan build duration
Display how long it takes to build the testplan in the logs. This can
be useful since the duration to bulid the plan can vary wildly depending
on the arguments given. Without this information, it is difficult to
tell (from CI logs) whether a long execution time is from actually
building and running the tests, or just generating the testplan.

For example, in a downstream repo:
```
./zephyr/scripts/twister --integration -iv -T . --dry-run

INFO    - Building initial testsuite list...
INFO    - Built testsuite list in 10.58 seconds
```
vs
```
./zephyr/scripts/twister --integration -iv -T . --dry-run \
--vendor nordic --vendor zephyr

INFO    - Building initial testsuite list...
INFO    - Built testsuite list in 201.01 seconds
```

Signed-off-by: Jordan Yates <jordan@embeint.com>
2025-12-08 13:11:44 -05:00
Pieter De Gendt
91278bdddf devicetree: Add DT_CHILD_BY_UNIT_ADDR_INT
Allow fetching child node identifiers by integer unit address.

Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>
2025-12-08 13:09:24 -05:00