# - # re: Regular expression of error to search # hint: The message of the hint. Optionally, it is possible to use '{}' at the place where the matched group from 're' should be inserted. This requires 'match_to_output: True'. You can use variables with hint messages. For this, you need to add variables and "{}" in a place where you want to put your hint variable, but you can't use 'match_to_output' with variables. # match_to_output: (False by default) see the description of 'hint'. # variables: # - # re_variables: [set variable for regular expression] # hint_variables: [set variable for hint] # Rules to write regex for hints on how to resolve errors # - Do not use more than one whitespace in a row. The script automatically merges several whitespaces into one when capturing output # - Do not use \n in your regex. They are all automatically deletes by the script when capturing output # # example of using hints: # - # re: "Error: header {} is missing" (you can use '{1} ... {1}' placeholders in 'hint' and 're', so that you don't have to repeat the same variables, you can use 'hint: 'The {0} (functions/types/macros prefixed with '{1}') has been made into a private API. If users still require usage of the {0} (though this is not recommended), it can be included via #include "esp_private/{2}.h".' in this file as an example) # hint: "header {} is missing, you need to add dependency on component {}" # variables: # - # re_variables: [Q] # hint_variables: [A, B] # - # re_variables: [W] # hint_variables: [C, D] # - # re_variables: [R] # hint_variables: [E, F] # # that example will replace this : # - # re: "Error: header Q is missing" # hint: "header A is missing, you need to add dependency on component B" # - # re: Error: header W is missing" # hint: "header C is missing, you need to add dependency on component D" # - # re: Error: header R is missing" # hint: "header E is missing, you need to add dependency on component F" - re: "warning: passing argument 1 of 'esp_secure_boot_read_key_digests' from incompatible pointer type" hint: "The parameter type of the function esp_secure_boot_read_key_digests() has been changed from ets_secure_boot_key_digests_t* to esp_secure_boot_key_digests_t*." - re: "error: implicit declaration of function '{}'" hint: "Function '{}' has been removed. Please use the function {}." variables: - re_variables: ['bootloader_common_get_reset_reason'] hint_variables: ['bootloader_common_get_reset_reason()', "'esp_rom_get_reset_reason()' in the ROM component"] - re_variables: ['esp_efuse_get_chip_ver'] hint_variables: ['esp_efuse_get_chip_ver()', 'efuse_hal_get_major_chip_version()', 'efuse_hal_get_minor_chip_version() or efuse_hal_chip_revision() instead'] - re_variables: ['(esp_spiram_get_chip_size|esp_spiram_get_size)'] hint_variables: ['esp_spiram_get_chip_size and esp_spiram_get_size', 'esp_psram_get_size()'] - re: "error: implicit declaration of function 'esp_secure_boot_verify_sbv2_signature_block|esp_secure_boot_verify_rsa_signature_block'" hint: "'esp_secure_boot_verify_sbv2_signature_block()' and 'esp_secure_boot_verify_rsa_signature_block()' and have been made private and are no longer available." - re: "error: implicit declaration of function '{}'" hint: '{0}.h header file is not included by esp_system.h anymore. It shall then be manually included with #include "{0}.h"' variables: - re_variables: ['(esp_random|esp_fill_random)'] hint_variables: ['esp_random'] - re_variables: ['(esp_base_mac_addr_(s|g)et|esp_efuse_mac_get_(custom|default)|esp_read_mac|esp_derive_local_mac)'] hint_variables: ['esp_mac'] - re_variables: ['esp_chip_info'] hint_variables: ['esp_chip_info'] - re: "fatal error: (spiram.h|esp_spiram.h): No such file or directory" hint: "{} was removed. Include esp_psram.h instead. Make sure to also add esp_psram as a dependency in your CMakeLists.txt file." match_to_output: True - re: "error: implicit declaration of function '{}'" hint: "Use {} defined in esp_cpu.h instead of {}." variables: - re_variables: ['esp_cpu_ccount_t'] hint_variables: ['esp_cpu_cycle_count_t', 'esp_cpu_ccount_t'] - re_variables: ['esp_cpu_get_ccount'] hint_variables: ['esp_cpu_get_cycle_count()', 'esp_cpu_get_ccount'] - re_variables: ['esp_cpu_set_ccount'] hint_variables: ['esp_cpu_set_cycle_count()', 'esp_cpu_set_ccount'] - re: "fatal error: {}: No such file or directory" hint: "{} was removed. Include {} instead." variables: - re_variables: ['esp_intr.h'] hint_variables: ['esp_intr.h', 'esp_intr_alloc.h'] - re_variables: ['soc/cpu.h'] hint_variables: ['soc/cpu.h', 'and use the API function provided by esp_cpu.h'] - re_variables: ['compare_set.h'] hint_variables: ['compare_set.h', 'and use the API function provided by esp_cpu.h'] - re_variables: ['esp_panic.h'] hint_variables: ['esp_panic.h', 'use functionalities provided in esp_debug_helpers.h'] - re_variables: ['driver/can.h'] hint_variables: ['driver/can.h', 'driver/twai.h'] - re: "error: implicit declaration of function 'esp_int_wdt_\\w+'" hint: 'The Interrupt Watchdog API has been made private, it shall not be used anymore. You can still force its inclusion with #include "esp_private/esp_int_wdt.h" (not recommended)' - re: "fatal error: soc/(spinlock.h|clk_ctrl_os.h|rtc_wdt.h): No such file or directory" hint: "{} must be included without the 'soc' part." match_to_output: True - re: "fatal error: (soc_log.h): No such file or directory" hint: "{} was renamed and made private. Consider using the logging APIs provided under esp_log.h instead." match_to_output: True - re: "error: unknown type name '(portTickType|xTaskHandle|xQueueHandle|xSemaphoreHandle|xQueueSetHandle|xQueueSetMemberHandle|xTimeOutType|xMemoryRegion|xTaskParameters|xTaskStatusType|xTimerHandle|xCoRoutineHandle|pdTASK_HOOK_CODE|tmrTIMER_CALLBACK|pdTASK_CODE|xListItem|xList)'" hint: "You are maybe using pre FreeRTOS V8.0.0 data types. The backward compatibility of such data types is no longer enabled by default. Please turn on CONFIG_FREERTOS_ENABLE_BACKWARD_COMPATIBILITY explicitly to use such data types." match_to_output: True - re: "error: 'portTICK_RATE_MS' undeclared" hint: "You are maybe using pre FreeRTOS V8.0.0 APIs. The backward compatibility of such APIs is no longer enabled by default. Please turn on CONFIG_FREERTOS_ENABLE_BACKWARD_COMPATIBILITY explicitly to use such APIs." match_to_output: True - re: "error: implicit declaration of function '(eTaskStateGet|pcTaskGetTaskName|pcTimerGetTimerName|pcQueueGetQueueName|vTaskGetTaskInfo|xTaskGetIdleRunTimeCounter)'" hint: "You are maybe using pre FreeRTOS V8.0.0 APIs. The backward compatibility of such APIs is no longer enabled by default. Please turn on CONFIG_FREERTOS_ENABLE_BACKWARD_COMPATIBILITY explicitly to use such APIs." match_to_output: True - re: "error: unknown type name 'TaskSnapshot_t'" hint: "The header file task_snapshot.h is no longer included as part of freertos/task.h. Users need to include freertos/task_snapshot.h explicitly." match_to_output: True - re: "error: implicit declaration of function '(pxTaskGetNext|vTaskGetSnapshot|uxTaskGetSnapshotAll)'" hint: "The header file task_snapshot.h is no longer included as part of freertos/task.h. Users need to include freertos/task_snapshot.h explicitly." match_to_output: True - re: "error: implicit declaration of function '(portENTER_CRITICAL_NESTED|portEXIT_CRITICAL_NESTED|vPortCPUInitializeMutex|vPortCPUAcquireMutex|vPortCPUAcquireMutexTimeout|vPortCPUReleaseMutex)'" hint: "The header file portmacro_deprecated.h has been removed. Users should refer the migration guide for alternative functions." match_to_output: True - re: "fatal error: {}.h: No such file or directory" hint: 'The {0} (functions/types/macros prefixed with "{1}") has been made into a private API. If users still require usage of the {0} (though this is not recommended), it can be included via #include "esp_private/{2}.h".' variables: - re_variables: ['esp32\\w*\\/clk'] hint_variables: ['ESP Clock API', 'esp_clk', 'esp_clk'] - re_variables: ['esp32\\w*\\/cache_err_int'] hint_variables: ['Cache Error Interrupt API', 'esp_cache_err', 'cache_err_int'] - re_variables: ['brownout'] hint_variables: ['Brownout API', 'esp_brownout', 'brownout'] - re_variables: ['trax'] hint_variables: ['Trax API', 'trax_', 'trax'] - re_variables: ['eh_frame_parser'] hint_variables: ['Backtrace Parser API', 'eh_frame_parser', 'eh_frame_parser'] - re: "fatal error: esp_adc_cal.h: No such file or directory" hint: "``esp_adc_cal`` component is no longer supported. New adc calibration driver is in ``esp_adc``. Legacy adc calibration driver has been moved into ``esp_adc`` component. To use legacy ``esp_adc_cal`` driver APIs, you should add ``esp_adc`` component to the list of component requirements in CMakeLists.txt. For more information run 'idf.py docs -sp migration-guides/release-5.x/peripherals.html'." - re: "fatal error: .*atca_mbedtls_wrap\\.h: No such file or directory" hint: "To use CONFIG_ESP_TLS_USE_SECURE_ELEMENT option, please install `esp-cryptoauthlib` using 'idf.py add-dependency espressif/esp-cryptoauthlib'" - re: "The CMAKE_[A-Z]+_COMPILER: [\\w+-]+ is not a full path and was not found in the PATH\\." hint: "Try to reinstall the toolchain for the chip that you trying to use. \nFor more information run 'idf.py docs -sp get-started/#installation' and follow the instructions for your system" - re: "CMake Error: The current CMakeCache\\.txt directory .* is different than the directory .* where CMakeCache\\.txt was created\\." hint: "Run 'idf.py fullclean' and try the build again." - re: "CMake Error at .* \\(message\\): Could not create symbolic link for: error\\.c --> Cannot create a file when that file already exists\\." hint: "Run 'idf.py fullclean' and try the build again." - re: "CMake Error at .* \\(message\\): Directory specified in EXTRA_COMPONENT_DIRS doesn't exist: \\/?.*\\/examples\\/common_components\\/.*" hint: "The component with path specified in the EXTRA_COMPONENT_DIRS variable has been moved to IDF component manager (or has been removed).\nPlease look out for component in 'https://components.espressif.com' and add using 'idf.py add-dependency' command.\nRefer to the migration guide for more details." - re: "ImportError: bad magic number in 'kconfiglib':" hint: "Run 'idf.py python-clean', and try again" - re: "ccache error: Failed to create temporary file" hint: "On Windows, you should enable long path support in the installer, or disable ccache temporarily. See 'idf.py --help' or the documentation how to achieve this." - re: "The keyword signature for target_link_libraries has already been used" hint: "Projects using target_link_libraries with project_elf explicitly and custom CMake projects must specify PRIVATE, PUBLIC or INTERFACE arguments." - re: "format '([^']+)' expects argument of type '((unsigned )?int|long)', but argument (\\w+) has type '([u]?int32_t)'( \\{aka '([^']+)'\\})?" hint: "The issue is better to resolve by replacing format specifiers to 'PRI'-family macros (include header file)." - re: "Failed to resolve component 'esp_ipc'" hint: "IPC component has been moved to esp_system. Any `REQUIRES esp_ipc` can simply be deleted as esp_system is REQUIRED by default." - re: "error: invalid use of incomplete typedef 'esp_tls_t'" hint: "The struct 'esp_tls_t' has now been made private - its elements can be only be accessed/modified through respective getter/setter functions. Please refer to the migration guide for more information." - re: "error: enumeration value 'HTTP_EVENT_REDIRECT' not handled in switch" hint: "The event handler, specified in the 'event_handler' element, of the 'esp_http_client_config_t' struct now needs to handle the new 'HTTP_EVENT_REDIRECT' event case." - re: "Failed to resolve component '(?!esp_ipc)(\\w+)'" hint: "The component {} has been moved to the IDF component manager or has been removed and refactored into some other component.\nPlease look out for component in 'https://components.espressif.com' and add using 'idf.py add-dependency' command.\nRefer to the migration guide for more details." match_to_output: True - re: "fatal error: (esp_rom_tjpgd.h): No such file or directory" hint: "{} was removed. Please use esp_jpeg component from IDF component manager instead.\nPlease look out for component in 'https://components.espressif.com' and add using 'idf.py add-dependency' command.\nRefer to the migration guide for more details." match_to_output: True - re: "(fatal error: tcpip_adapter.h: No such file or directory|error: implicit declaration of function 'tcpip_adapter_init')" hint: "TCP/IP adapter compatibility layer has been removed. Please migrate to ESP-NETIF.\nRefer to the Networking migration guide, section TCP/IP adapter, for more details." - re: "error: macro \"(ETH_\\w+_CONFIG)\" requires 2 arguments, but only 1 given" hint: "Macro {} now accepts both SPI host and SPI device related configuration. The SPI-Ethernet Module initialization has been simplified to allocate an SPI device internally so the configuration structure requires the related configuration.\nPlease refer to the Networking migration guide, section SPI-Ethernet Module Initialization, for more details." match_to_output: True - re: "error: implicit declaration of function '(esp_eth_detect_phy_addr)'" hint: "Function {}() has been renamed to esp_eth_phy_802_3_detect_phy_addr().\nPlease refer to the Networking migration guide, section PHY Address Auto-detect, for more details." match_to_output: True - re: "error: too few arguments to function '(esp_eth_mac_\\w+)'" hint: "Function {}() has been refactored to accept device specific configuration and MAC specific configuration.\nPlease refer to the Ethernet section of Networking migration guide for more details." match_to_output: True - re: "error: implicit declaration of function 'esp_eth_phy_new_{}'" hint: "Function {}() has been removed, please use {}() instead.\nPlease refer to the Networking migration guide, section PHY Address Auto-detect, for more details." variables: - re_variables: ['ksz8081'] hint_variables: ['esp_eth_phy_new_ksz8081', 'esp_eth_phy_new_ksz80xx'] - re_variables: ['ksz8041'] hint_variables: ['esp_eth_phy_new_ksz8041', 'esp_eth_phy_new_ksz80xx'] - re_variables: ['lan8720'] hint_variables: ['esp_eth_phy_new_lan8720', 'esp_eth_phy_new_lan87xx'] - re: "`iram0_0_seg' overflowed" hint: "The applications static IRAM usage is larger than the available IRAM size.\nFor more information on how to reduze IRAM usage run 'idf.py docs -sp api-guides/performance/ram-usage.html#optimizing-iram-usage' " - re: "fatal error: (tinyusb.h): No such file or directory" hint: "{} was removed. Please use esp_tinyusb component from IDF component manager instead.\nYou can install `esp_tinyusb` using 'idf.py add-dependency espressif/esp_tinyusb' command.\nRefer to the migration guide for more details." match_to_output: True - re: "fatal error: esp_partition.h: No such file or directory" hint: "All the Partition APIs have been moved to the new component 'esp_partition' - please, update your project dependencies. See Storage migration guide 5.x for more details." match_to_output: True