Commit Graph

6588 Commits

Author SHA1 Message Date
Roland Dobai
0b56c58e8a Merge branch 'fix/check_python_dependencies' into 'master'
fix(tools): handle packages with dots in their names during dependency checks

See merge request espressif/esp-idf!37869
2025-03-20 16:25:34 +08:00
Chen Ji Chang
6474fd67ae Merge branch 'feat/h4_introduce_step8' into 'master'
feat(esp32h4): introduce hello world to ESP32H4 (stage8)

Closes IDF-9526 and IDF-12333

See merge request espressif/esp-idf!37545
2025-03-20 16:16:05 +08:00
Alexey Lapshin
7124690c29 fix(tools): remove unused variables in gdbinit.cmake
Closes https://github.com/espressif/esp-idf/issues/15035
2025-03-20 13:40:14 +07:00
Marius Vikhammer
ee87960c13 Merge branch 'feature/esp_timer_flash' into 'master'
feat(esp_timer): added kconfig option for placing IRAM code into flash

Closes IDF-11427

See merge request espressif/esp-idf!37428
2025-03-20 08:56:43 +08:00
Roland Dobai
cf5989ca06 Merge branch 'fix/install_input_validation' into 'master'
fix(idf_tools): Validate input features

Closes IDF-11703

See merge request espressif/esp-idf!37852
2025-03-19 21:38:52 +08:00
Frantisek Hrbata
3bad4348d0 fix(tools): handle packages with dots in their names during dependency checks
The `setuptools` package starting with `v70.1.0`[1] contains built-in
`bdist_wheel` command. Before this version `setuptools` relied on the
`bdist_wheel` command implementation from the `wheel` package. Starting with
`setuptools` `v75.8.1` the `PEP 491`[3] restrictions on the distribution name
of a wheel package are enforced[4], replacting also `.` with `_`.  Note that
`PEP 491` actually allows `.` in the distribution name, but for some reason the
latest packaging docs[10][11] does not, stating that `.` should be replaced
with `_`. This was discussion here[12].

Also the `wheel` package starting with `v0.45.0`[5] is using the `bdist_wheel`
command from `setuptools`.  This means that any package which has `.` in its
distribution name, like `ruamel.yaml.clib`, can have different wheel name,
depending on which version of the `bdist_wheel` command was used.

The `bdist_wheel` command from setuptools prior `v75.8.1` or `wheel` prior
`v0.45.0` will keep the dots in distribution name preserved.  For exaple the
`ruamel.yaml.clib` package will have distribution name
`ruamel.yaml.clib-0.2.12.dist-info. Newer versions will replace the dots with
`_` according to [10][11], creating distribution like
`ruamel_yaml_clib-0.2.12.dist-info`.

From packaging point of view `ruamel.yaml.clib-0.2.12.dist-info` and
`ruamel_yaml_clib-0.2.12.dist-info` are the same packages, but this is not
reflected in `importlib.metadata` prior python 3.10[9], which does not perform
name normalization prior the distribution search. This causes the `version`
from `importlib.metadata` to fail on python prior the 3.10 version if the
package with dots in distribution name was generated with normalized paths with
newer `setuptools`. Note that the distribution name normalization was
backported to some later 3.9 python version.

Let's demonstrate this behavior on a simple package with the
`my.minimal.package` name.

```
my_minimal_package/
├── pkg
│   └── __init__.py
└── setup.py

from setuptools import setup, find_packages

setup(
    name='my.minimal.package',
    version='0.1.0',
    packages=find_packages(),
    install_requires=[],
    entry_points={},
)
```

With python 3.9.0 search for `my.minimal.package` fails because
of the missing name normalization.
```
docker run --rm -it --platform linux/x86_64 python:3.9.0 bash
python -m venv venv
. venv/bin/activate
pip install setuptools==v75.8.1
python setup.py bdist_wheel
pip install dist/my_minimal_package-0.1.0-py3-none-any.whl
python
Python 3.9.0 (default, Nov 18 2020, 13:28:38)
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from importlib.metadata import version as get_version
>>> get_version('my.minimal.package')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.9/importlib/metadata.py", line 551, in version
    return distribution(distribution_name).version
  File "/usr/local/lib/python3.9/importlib/metadata.py", line 524, in distribution
    return Distribution.from_name(distribution_name)
  File "/usr/local/lib/python3.9/importlib/metadata.py", line 187, in from_name
    raise PackageNotFoundError(name)
importlib.metadata.PackageNotFoundError: my.minimal.package
>>> get_version('my_minimal_package')
'0.1.0'
```

With python 3.10.0 search for both `my.minimal.package` and
`my_minimal_package` succeeds.
```
docker run --rm -it --platform linux/x86_64 python:3.10.0 bash
python
Python 3.10.0 (default, Dec  3 2021, 00:21:30) [GCC 10.2.1 20210110] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from importlib.metadata import version as get_version
>>> get_version('my.minimal.package')
'0.1.0'
>>> get_version('my_minimal_package')
'0.1.0'
```

In our `tools/check_python_dependencies.py` we cannot relay on the default
distribution finder, used in the `version` function from `importlib.metadata`,
to do name normalization on older python versions.  To cope with this,
implement a fallback version search. If `version` fails with
`PackageNotFoundError`, do the name normalization according to [10][11] and try
again.

Note: There is also a `wheel`[6][7] `v0.43.0` package embeded in `setuptools`
along with the new implementation[8].  This one seems to be used if the
external `wheel` package is not available but imported. TBH this is all kinda
messy and I may have overlooked something.

* [1] https://setuptools.pypa.io/en/stable/history.html#v70-1-0
* [2] https://setuptools.pypa.io/en/stable/history.html#v75-8-1
* [3] https://peps.python.org/pep-0491/#escaping-and-unicode
* [4] https://github.com/pypa/setuptools/pull/4766/files
* [5] https://wheel.readthedocs.io/en/stable/news.html
* [6] https://github.com/pypa/setuptools/blob/main/setuptools/_vendor/wheel/__init__.py
* [7] https://github.com/pypa/setuptools/issues/1386
* [8] https://github.com/pypa/setuptools/blob/main/setuptools/command/bdist_wheel.py
* [9] c6ca368867
* [10] https://packaging.python.org/en/latest/specifications/name-normalization/#name-normalization
* [11] https://packaging.python.org/en/latest/specifications/binary-distribution-format/
       #escaping-and-unicode
* [12] https://github.com/pypa/setuptools/issues/3777

Signed-off-by: Frantisek Hrbata <frantisek.hrbata@espressif.com>
2025-03-19 12:19:57 +01:00
Chen Jichang
45ba78940f feat(esp32h4): finnal introduce hello world 2025-03-19 18:48:41 +08:00
Radim Karniš
7102508444 fix(idf_tools): Validate input features 2025-03-19 11:07:15 +01:00
Radim Karniš
2618abf5df fix(idf_tools): Patch extractall() deprecation warning 2025-03-18 17:47:34 +01:00
Marius Vikhammer
55be8bdc0d feat(esp_timer): added kconfig option for placing IRAM code into flash 2025-03-18 15:23:43 +08:00
Marius Vikhammer
3fdcf31857 Merge branch 'feature/newlib_in_flash' into 'master'
feat(newlib): added option for placing functions in flash if flash-auto-suspend

Closes IDF-11958

See merge request espressif/esp-idf!37767
2025-03-18 14:55:14 +08:00
Ashish Sharma
88fa3e2c9e feat(security): fixes review comments 2025-03-17 18:23:14 +08:00
Ashish Sharma
4c23ba3c1f feat(security): update idf.py extensions to support security feature application 2025-03-17 18:23:14 +08:00
luaijun
6e58f49724 ci(c2/c3): add major eco version tests 2025-03-17 14:51:25 +08:00
Roland Dobai
cd1c5aa075 Merge branch 'feat/deactivate_idf_env_every_run' into 'master'
feat(tools): Deactivate current ESP-IDF environment with every export run

Closes IDF-11251

See merge request espressif/esp-idf!35857
2025-03-14 16:43:25 +08:00
Marius Vikhammer
e52ea52792 test(system): add system test-case for flash auto-suspend 2025-03-14 15:01:10 +08:00
Marek Fiala
1469ee767f feat(tools): Remove PATH duplicity from first call of tools/activate.py 2025-03-13 14:44:52 +01:00
Marek Fiala
5e7e9dd667 feat(tools): Deactivate current ESP-IDF environment with every export run
Unix systems only
2025-03-13 14:44:52 +01:00
Marek Fiala
a09fdf2f3e feat(tools): Safer clearing IDF_PYTHON_ENV_PATH if existing 2025-03-13 17:14:01 +08:00
Tomas Rohlinek
7d365f7b42 Merge branch 'fix/fatfsgen_tests' into 'master'
fix(storage/fatfsgen): increase test timeout

Closes IDFCI-2681

See merge request espressif/esp-idf!37702
2025-03-13 16:30:31 +08:00
Chen Ji Chang
1a87428934 Merge branch 'feat/h4_introduce_step7_ci' into 'master'
feat(esp32h4): ci enable public header check (stage7)

See merge request espressif/esp-idf!37505
2025-03-13 11:52:05 +08:00
Tomáš Rohlínek
f416523e16 fix(storage/fatfsgen): increase test timeout 2025-03-12 14:45:39 +01:00
Konstantin Kondrashov
2fb93845df Merge branch 'contrib/github_pr_15308' into 'master'
fix(cmake): support CMock subdir option with idf_component_mock (GitHub PR)

Closes IDFGH-14547 and IDFGH-12326

See merge request espressif/esp-idf!36761
2025-03-12 19:26:02 +08:00
Chen Jichang
bfac674769 feat(esp32h4): ci enable public header check (stage7) 2025-03-12 17:19:50 +08:00
Frantisek Hrbata
d20a5fd939 fix: adjust C standard preferences for Linux target
In commit 70407df8c2 ("fix(build): don't call enable_language() before
proje.."), the C standard preferences were mistakenly changed to
`set(preferred_c_versions gnu99 gnu17 gnu11 gnu99)`. This was likely an
oversight from my testing. This corrects the C standard preferences to
the intended order.

Fixes: 70407df8c2 ("fix(build): don't call enable_language() before proje..")
Signed-off-by: Frantisek Hrbata <frantisek.hrbata@espressif.com>
2025-03-10 20:34:32 +08:00
Jiang Jiang Jian
4f5bed28e7 Merge branch 'bugfix/provisioning_sec2_aes_iv_usage' into 'master'
fix(provisioning): fix incorrect AES-GCM IV usage in security2 scheme

See merge request espressif/esp-idf!37226
2025-03-08 14:03:53 +08:00
Roland Dobai
7ce80cef7e Merge branch 'fix/linux_std_flags' into 'master'
fix(build): don't call enable_language() before project()

Closes IDFGH-14749

See merge request espressif/esp-idf!37412
2025-03-07 18:10:30 +08:00
Mahavir Jain
00e8d1a832 fix(esp_local_ctrl): update for changes in protocomm security2 scheme 2025-03-07 13:49:12 +05:30
Mahavir Jain
3bd5a22f5a fix(provisioning): fix incorrect AES-GCM IV usage in security2 scheme
Using same IV in AES-GCM across multiple invocation of
encryption/decryption operations can pose a security risk. It can help
to reveal co-relation between different plaintexts.

This commit introduces a change to use part of IV as a monotonic
counter, which must be incremented after every AES-GCM invocation
on both the client and the device side.

Concept of patch version for a security scheme has been introduced here
which can help to differentiate a protocol behavior for the provisioning
entity. The security patch version will be available in the JSON
response for `proto-ver` endpoint request with the field
`sec_patch_ver`.

Please refer to documentation for more details on the changes required
on the provisioning entity side (e.g., PhoneApps).
2025-03-07 13:49:10 +05:30
Erhan Kurubas
0381f5723a Merge branch 'refactor_panic_test_parametrize' into 'master'
test(panic): refactor test parameters with itertools

See merge request espressif/esp-idf!37516
2025-03-06 16:04:02 +08:00
Erhan Kurubas
11e6aa8f1a test(panic): refactor test parameters with itertools 2025-03-05 14:01:25 +01:00
Erhan Kurubas
1153981bc8 feat(tools): update openocd version to v0.12.0-esp32-20250226 2025-03-05 10:36:15 +01:00
Igor Udot
3b41e2ce9a Merge branch 'ci/pytest-mark-formatter' into 'master'
Ci/pytest mark formatter

Closes IDFCI-2662 and IDFCI-2651

See merge request espressif/esp-idf!35476
2025-03-05 15:43:48 +08:00
Mahavir Jain
620ab3b913 Merge branch 'fix/secure_boot_verfication_failure_sig_block_key_digest_mismatch_combo' into 'master'
fix(bootloader_support): Fix SB verification failure when application is not signed with the boot loader's first key

Closes IDF-12556

See merge request espressif/esp-idf!37365
2025-03-05 15:08:24 +08:00
igor.udot
daf2d31008 test: format all test scripts 2025-03-05 12:08:48 +08:00
igor.udot
bbcef0570d ci: add test marks linter 2025-03-04 15:53:32 +08:00
Chen Jichang
b16095cf00 feat(esp32h4): add G0 component support (stage5) 2025-03-04 15:21:58 +08:00
harshal.patil
a6ea9bcd41 fix(secure_boot): Fix SB verification failure when sig block and key digest mismatch
- Secure boot V2 verification failed when multiple keys are used to sign the bootloader
  and the application is signed with a key other than the first key that is used to
  sign the bootloader.
- The issue was introduced as a regression from the commit `ff16ce43`.
- Added a QEMU test for recreating the issue.
- Made SECURE_BOOT_FLASH_BOOTLOADER_DEFAULT independent of SECURE_BOOT_BUILD_SIGNED_BINARIES.
2025-03-04 11:26:51 +05:30
Frantisek Hrbata
70407df8c2 fix(build): don't call enable_language() before project()
For the Linux target, we currently attempt to fallback to older C/CXX
lagnuage standards in the __build_set_lang_version() function. The
language standard support is checked using CMake's language-specific
functions, such as check_c_compiler_flag(). These functions require the
language to be enabled[1] in CMake beforehand, which is done by calling
project() or by enabling the languages later with enable_language(). At
present, we use enable_language() to enable C and CXX languages in
CMake, allowing us to set the standard early, before invoking project().
However, newer CMake versions (>3.29) issue a warning[2] if
enable_language() is called before project(), as noted in CMP0165[3].

It should generally be acceptable to call __build_set_lang_version()
after __project(), but doing so would alter the behavior of the
COMPILE_OPTIONS also for non-Linux targets. Currently, users can
add to COMPILE_OPTIONS even before calling project() in the project's
CMakeLists.txt and the options will be in the desired order. In other
words, appending to COMPILE_OPTIONS can occur either before or after
calling project() in the project's CMakeLists.txt, with the outcome
remaining consistent. This means the user's settings will appear later
and take priority. However, if __build_set_lang_version() is called
after __project(), the user's COMPILE_OPTIONS settings would be
overridden if set before calling project(). Our documentation[4] explicitly
states that COMPILE_OPTIONS and similar properties should be modified
using idf_build_set_property() after calling project() to prevent
default values from overwriting them.

Even with this guidance, some existing components that modify
COMPILE_OPTIONS before invoking project() might be impacted by this
change. Therefore, separate the language standard settings for non-Linux
and Linux targets. For non-Linux targets, these settings are applied in
__build_set_default_build_specifications(), maintaining the current
behavior. For the Linux target, the language standard is set with
__linux_build_set_lang_version() after calling __project(), ensuring the
languages are already enabled in CMake and no warning is issued. Since the Linux
target is still in preview, this approach should be acceptable,
especially with the existing documentation[4].

Closes https://github.com/espressif/esp-idf/issues/15488

[1] https://cmake.org/cmake/help/latest/manual/cmake-toolchains.7.html#languages
[2] https://gitlab.kitware.com/cmake/cmake/-/merge_requests/9396
[3] https://cmake.org/cmake/help/latest/policy/CMP0165.html#policy:CMP0165
[4] https://docs.espressif.com/projects/esp-idf/en/v5.4/esp32/api-guides/
    build-system.html#overriding-default-build-specifications

Signed-off-by: Frantisek Hrbata <frantisek.hrbata@espressif.com>
2025-03-03 14:52:18 +01:00
Marius Vikhammer
d46b4fbfcf fix(linux_target): fixed TEST_COMPONENTS not working on macOS for linux target
Closes https://github.com/espressif/esp-idf/issues/15490
2025-03-03 16:42:18 +08:00
Frantisek Hrbata
9eb6f68454 fix(build): include test components in the minimal build
When minimal build is enabled, it only includes the main component and
its dependencies. This leads to test components specified through
TEST_COMPONENTS being ignored, meaning no tests are executed. The issue
arises because test components are also checked against the COMPONENTS
variable, and if they aren't listed there, they are disregarded.  To fix
this, explicitly add TEST_COMPONENTS to COMPONENTS when the minimal
build is enabled.

Closes https://github.com/espressif/esp-idf/issues/15485

Signed-off-by: Frantisek Hrbata <frantisek.hrbata@espressif.com>
2025-02-28 12:42:14 +01:00
Roland Dobai
648dc329f6 Merge branch 'change/move_deprecated_kconfig_checker' into 'master'
change: move check_deprecated_configs.py logic to esp-idf-kconfig

Closes IDF-9092

See merge request espressif/esp-idf!36588
2025-02-28 19:05:02 +08:00
Frantisek Hrbata
4f968c3fc5 Merge branch 'contrib/github_pr_15401' into 'master'
Fix idf_as_lib example (GitHub PR)

Closes IDFGH-14655

See merge request espressif/esp-idf!37127
2025-02-27 15:00:12 +08:00
Frantisek Hrbata
54cb6636ec ci: add idf_as_lib to patterns-build_system rules
The `idf_as_lib` example is used and tested in
`tools/test_build_system/test_cmake.py`. Include `idf_as_lib` in the
build_system rules to ensure the tests are executed whenever there is a
modification in the `idf_as_lib` example.

Expand the `test_build_custom_cmake_project` test to cover all supported
targets, including host build.

Signed-off-by: Frantisek Hrbata <frantisek.hrbata@espressif.com>
2025-02-25 08:54:02 +01:00
Jan Beran
c7993c2725 change: move check_deprecated_configs.py file to esp-idf-kconfig 2025-02-24 12:52:55 +01:00
Chen Ji Chang
33e81e572b Merge branch 'feat/h4_introduce_step2_3' into 'master'
feat(esp32h4): add soc register header files (stage 3/8, part 3/3)

See merge request espressif/esp-idf!37092
2025-02-24 15:39:11 +08:00
Chen Jichang
62700fa36f feat(esp32h4): add soc register header files (stage2_3)
add soc headers made by hand
2025-02-24 12:20:27 +08:00
Marius Vikhammer
a5fe1e2a46 Merge branch 'feature/h21_panic' into 'master'
feat(esph21): bringup and test panic handler

Closes IDF-11546

See merge request espressif/esp-idf!37007
2025-02-21 10:25:03 +08:00
Martin Vychodil
af0f270e17 Merge branch 'bugfix/memprot_s2_intr_peri1' into 'master'
fix(security): ESP32S2 memory protection check for Peri1 RTCSLOW interrupt

See merge request espressif/esp-idf!37105
2025-02-21 01:43:44 +08:00
Aleksei Apaseev
8355b832d3 Merge branch 'ci/add-python-func-and-fix-c-testcase-path-in-junit-report' into 'master'
ci: add python_func attribute and fix C testcase path resolution in JUnit reports

Closes RDT-1013, IDFCI-1990, IDFCI-1964, and IDFCI-1429

See merge request espressif/esp-idf!35058
2025-02-20 10:09:52 +08:00