mirror of
https://github.com/espressif/esp-idf.git
synced 2026-10-02 11:10:54 +03:00
fix(cmakev2): skip component manager flow when IDF_COMPONENT_MANAGER=0
When the component manager is disabled via IDF_COMPONENT_MANAGER=0, the cmakev2 build system still entered the full component manager flow (__fetch_components_from_registry), which called __download_managed_component(). That function returned early with result=0 without creating the expected output file, violating the post-condition in __download_component_level_managed_components() that checks result==0 => file exists, causing a fatal error. Instead of patching the low-level function to write an empty stub file, this commit properly skips the entire component manager flow when the manager is disabled: - Move __init_component_manager() to idf.cmake global initialization sequence alongside other __init_*() calls, so IDF_COMPONENT_MANAGER build property is available early. - Set __SDKCONFIG_ORIG to the real sdkconfig path in __init_kconfig() as its default value. Previously it was only set inside __create_sdkconfig_orig_copy() and had a defensive fallback in __create_base_kconfgen_command(). The default ensures __SDKCONFIG_ORIG is always valid regardless of whether the component manager runs. - Guard __create_sdkconfig_orig_copy() with an IDF_COMPONENT_MANAGER check. The sdkconfig backup exists solely to preserve unknown Kconfig options from managed components during intermediate kconfgen rounds. When the manager is disabled, no managed components exist, so the backup is unnecessary. - Guard __fetch_components_from_registry() call in project.cmake behind IDF_COMPONENT_MANAGER == 1. When disabled, only the manifest warning is issued. No download loop runs, no temp files are created, and no "Component manager round N..." messages are printed. - Remove the now-redundant IDF_COMPONENT_MANAGER guard from __download_managed_component(), since it is only reachable when the manager is enabled. Closes https://github.com/espressif/esp-idf/issues/18372 Signed-off-by: Frantisek Hrbata <frantisek.hrbata@espressif.com>
This commit is contained in:
@@ -579,14 +579,20 @@ macro(idf_project_init)
|
||||
# Discover and initialize components
|
||||
__init_components()
|
||||
|
||||
# Save original sdkconfig before kconfgen may drop unknown options
|
||||
# Save original sdkconfig before kconfgen may drop unknown options.
|
||||
# Only creates a backup when the component manager is enabled.
|
||||
__create_sdkconfig_orig_copy()
|
||||
|
||||
# Generate initial sdkconfig with discovered components
|
||||
__generate_sdkconfig()
|
||||
|
||||
# Initialize the component manager and fetch components in a loop
|
||||
__fetch_components_from_registry()
|
||||
# Fetch managed components from registry if the component manager is enabled
|
||||
idf_build_get_property(idf_component_manager IDF_COMPONENT_MANAGER)
|
||||
if(idf_component_manager EQUAL 1)
|
||||
__fetch_components_from_registry()
|
||||
else()
|
||||
__component_manager_warn_if_disabled_and_manifests_exist()
|
||||
endif()
|
||||
|
||||
# Include sdkconfig.cmake
|
||||
idf_build_get_property(sdkconfig_cmake __SDKCONFIG_CMAKE)
|
||||
|
||||
Reference in New Issue
Block a user