From d9ae0e2cd47787d066028a79ba4f7a635074cfdb Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Sat, 26 Sep 2026 18:35:43 +0100 Subject: [PATCH] Give the nRF52 binutils their Windows suffix --- esphome/components/nrf52/framework.py | 12 +++++++++--- esphome/components/nrf52/toolchain.py | 6 +++--- tests/unit_tests/test_nrf52_toolchain.py | 7 +++++-- 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/esphome/components/nrf52/framework.py b/esphome/components/nrf52/framework.py index a2fd6dd075e..bb3956abe51 100644 --- a/esphome/components/nrf52/framework.py +++ b/esphome/components/nrf52/framework.py @@ -80,9 +80,15 @@ def _get_toolchain_path(version: str) -> Path: return get_sdk_nrf_tools_path() / "toolchains" / version -def get_toolchain_bin_path() -> Path: - """The pinned Zephyr SDK's arm-zephyr-eabi binaries (objdump, readelf, ...).""" - return _get_toolchain_path(TOOLCHAIN_VERSION) / "arm-zephyr-eabi" / "bin" +def toolchain_tool(name: str) -> Path: + """Path to one of the pinned Zephyr SDK's tools (objdump, readelf, ...). + + The single owner of the ``arm-zephyr-eabi/bin/arm-zephyr-eabi-`` + layout and the Windows suffix. + """ + suffix = ".exe" if os.name == "nt" else "" + bin_path = _get_toolchain_path(TOOLCHAIN_VERSION) / "arm-zephyr-eabi" / "bin" + return bin_path / f"arm-zephyr-eabi-{name}{suffix}" _SITECUSTOMIZE = """\ diff --git a/esphome/components/nrf52/toolchain.py b/esphome/components/nrf52/toolchain.py index 745a8671800..5c9e3d46326 100644 --- a/esphome/components/nrf52/toolchain.py +++ b/esphome/components/nrf52/toolchain.py @@ -4,15 +4,15 @@ from pathlib import Path from esphome.core import CORE -from .framework import get_toolchain_bin_path +from .framework import toolchain_tool def get_objdump_path() -> Path: - return get_toolchain_bin_path() / "arm-zephyr-eabi-objdump" + return toolchain_tool("objdump") def get_readelf_path() -> Path: - return get_toolchain_bin_path() / "arm-zephyr-eabi-readelf" + return toolchain_tool("readelf") def get_elf_path() -> Path: diff --git a/tests/unit_tests/test_nrf52_toolchain.py b/tests/unit_tests/test_nrf52_toolchain.py index 2b51b2c1f6f..1a9e4bd2e28 100644 --- a/tests/unit_tests/test_nrf52_toolchain.py +++ b/tests/unit_tests/test_nrf52_toolchain.py @@ -1,5 +1,6 @@ """Tests for the nRF52 sdk-nrf memory analysis hooks.""" +import os from pathlib import Path import pytest @@ -24,8 +25,10 @@ def test_binutils_come_from_the_pinned_zephyr_sdk() -> None: / "arm-zephyr-eabi" / "bin" ) - assert toolchain.get_objdump_path() == bin_path / "arm-zephyr-eabi-objdump" - assert toolchain.get_readelf_path() == bin_path / "arm-zephyr-eabi-readelf" + # Windows hosts get the .exe binaries (CI covers both) + suffix = ".exe" if os.name == "nt" else "" + assert toolchain.get_objdump_path() == bin_path / f"arm-zephyr-eabi-objdump{suffix}" + assert toolchain.get_readelf_path() == bin_path / f"arm-zephyr-eabi-readelf{suffix}" def test_elf_prefers_the_nested_sdk_layout(nrf52_build: Path) -> None: