fix(build): ensure the main component exists when MINIMAL_BUILD is enabled

The minimal build property is simply a shorthand for `set(COMPONENTS
main)`. The issue is that there is currently no check to verify whether
the `main` component actually exists or is known to the build system.
If the `main` component is not present, print an error message along
with suggestions on how to fix this inconsistency.

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

Signed-off-by: Frantisek Hrbata <frantisek.hrbata@espressif.com>
This commit is contained in:
Frantisek Hrbata
2026-02-19 06:19:25 +01:00
parent cf27efbd9a
commit 4818b0b2c5
3 changed files with 36 additions and 1 deletions
+22 -1
View File
@@ -1,4 +1,4 @@
# SPDX-FileCopyrightText: 2023-2024 Espressif Systems (Shanghai) CO LTD
# SPDX-FileCopyrightText: 2023-2026 Espressif Systems (Shanghai) CO LTD
# SPDX-License-Identifier: Apache-2.0
import json
import logging
@@ -272,3 +272,24 @@ def test_unknown_component_error(idf_py: IdfPyFunc, test_app_copy: Path) -> None
)
ret = idf_py('reconfigure', check=False)
assert 'Failed to resolve component \'unknown\' required by component \'main\'' in ret.stderr
def test_minimal_build_without_main_component(idf_py: IdfPyFunc, test_app_copy: Path) -> None:
logging.info('Verify that the build fails when using `MINIMAL_BUILD` without main component')
# Rename main to no_main
shutil.move(test_app_copy / 'main', test_app_copy / 'no_main')
# Set minimal build property
replace_in_file(
(test_app_copy / 'CMakeLists.txt'),
'# placeholder_after_include_project_cmake',
'idf_build_set_property(MINIMAL_BUILD ON)',
)
# Reconfigure should fail
ret = idf_py('reconfigure', check=False)
assert 'MINIMAL_BUILD is enabled but component main was not found.' in ret.stderr, (
'Reconfiguration should fail with missing main component and MINIMAL_BUILD ON'
)