mirror of
https://github.com/espressif/esp-idf.git
synced 2026-09-22 13:01:16 +03:00
feat(esp_common): implement composable error code registration via link-time arrays
Refactor the esp_err_to_name() system to decouple esp_common from higher-level components. Instead of a monolithic generated table, each component registers its error codes into a dedicated linker section (.esp_err_msg_table) via idf_define_esp_err_codes() in its CMakeLists.txt. New files: - tools/err_codes_extract.py: extract ESP_ERR_* defines from headers to CSV - tools/err_codes_to_c.py: generate C source placing entries into linker section - tools/err_codes_to_rst.py: generate RST documentation from error codes - tools/cmake/err_codes.cmake: CMake module providing idf_define_esp_err_codes() - components/esp_common/include/esp_err_codes.h: esp_err_msg_t typedef - components/esp_common/src/esp_err_to_name_new.c: new lookup using link-time array - tools/test_apps/build_system/err_codes_check/: CI test app Changes: - Remove all optional component dependencies from esp_common/CMakeLists.txt - Add .esp_err_msg_table section to all 5 linker scripts - Register error codes in 18 components via idf_define_esp_err_codes() - Add new scripts to .gitlab/ci/rules.yml build_check patterns - use new scripts to generate doc and add CI validation - Update esp_err.rst to add description of composable code registration
This commit is contained in:
@@ -112,19 +112,15 @@ check_chip_support_components:
|
||||
- find ${IDF_PATH}/components/soc \( -path "*/include/soc/*_struct.h" -o -path "*/register/soc/*_struct.h" -o -path "*/register/*/soc/*_struct.h" \) -print0 | xargs -0 -n1 ./tools/ci/check_soc_struct_headers.py
|
||||
- tools/ci/check_esp_memory_utils_headers.sh
|
||||
|
||||
check_esp_err_to_name:
|
||||
check_esp_err_codes:
|
||||
extends:
|
||||
- .pre_check_template
|
||||
- .rules:build:check
|
||||
artifacts:
|
||||
when: on_failure
|
||||
paths:
|
||||
- components/esp_common/esp_err_to_name.c
|
||||
expire_in: 1 week
|
||||
script:
|
||||
- cd ${IDF_PATH}/tools/
|
||||
- ./gen_esp_err_to_name.py
|
||||
- git diff --exit-code -- ../components/esp_common/src/esp_err_to_name.c || { echo 'Differences found. Please run gen_esp_err_to_name.py and commit the changes.'; exit 1; }
|
||||
- cd ${IDF_PATH}
|
||||
- python tools/err_codes_extract.py --search-dirs components/ --output /tmp/err_codes.csv --validate
|
||||
- python tools/err_codes_to_rst.py --csv /tmp/err_codes.csv --output /tmp/esp_err_defs.inc
|
||||
- echo "Extracted $(wc -l < /tmp/err_codes.csv) error codes"
|
||||
|
||||
check_esp_system:
|
||||
extends:
|
||||
|
||||
@@ -66,6 +66,9 @@
|
||||
- "tools/test_build_system/**/*"
|
||||
- "tools/ci/test_configure_ci_environment.sh"
|
||||
- "tools/gen_esp_err_to_name.py"
|
||||
- "tools/err_codes_extract.py"
|
||||
- "tools/err_codes_to_c.py"
|
||||
- "tools/err_codes_to_rst.py"
|
||||
- "tools/ci/check_soc_headers_leak.py"
|
||||
- "tools/ci/check_esp_memory_utils_headers.sh"
|
||||
- "tools/ci/check_blobs.sh"
|
||||
|
||||
Reference in New Issue
Block a user