Changelogο
All notable changes to this project will be documented in this file.
v2.13.1 (2025-09-29)ο
π Bug Fixesο
path checking for modified apps (Fu Hanxi - 18f554c)
v2.13.0 (2025-09-26)ο
β¨ New Featuresο
support
--additional-build-targets
(Fu Hanxi - dbbd8d3)
π Bug Fixesο
find_apps: ignore target-specific sdkconfig files even without setting CONFIG_IDF_TARGET (Fu Hanxi - 1861a7a)
record
checked_should_build
(Fu Hanxi - f37fff1)
v2.12.3 (2025-09-16)ο
Fixο
app behaves normally in set
v2.12.2 (2025-08-27)ο
Fixο
disable rules wrongly ignored when defining CONFIG_IDF_TARGET in sdkconfig files
v2.12.1 (2025-08-21)ο
Fixο
ignore warnings regex ignore empty string
v2.12.0 (2025-08-11)ο
Featο
recording build_disable_reason and test_disable_reason
support βarchives, βarchive-details ARCHIVE or βfiles args of idf.py size
support config
manifest_exclude_regexes
v2.11.2 (2025-06-10)ο
Fixο
missing
FolderRule
in .manifest
v2.11.1 (2025-06-04)ο
Fixο
stop searching apps when reached file system root
v2.11.0 (2025-06-03)ο
Featο
support extra_pythonpaths injection during the runtime
v2.10.3 (2025-06-03)ο
Fixο
app.target have higher precedence than target while
find_apps
respect FolderRule.DEFAULT_BUILD_TARGETS while validating app
Refactorο
move
FolderRule.DEFAULT_BUILD_TARGET
into contextvar
v2.10.2 (2025-05-22)ο
Perfο
most_suitable_rule
stop searching till reached root dirpre-compute rules folder, reduced 50% time on
most_suitable_rule
v2.10.1 (2025-05-05)ο
Fixο
cache custom app classes
v2.10.0 (2025-04-22)ο
Featο
support custom class load from CLI
v2.9.0 (2025-04-16)ο
Featο
record manifest_path that introduced the folder rule
support env var expansion in some fields
v2.8.1 (2025-03-04)ο
Fixο
βoverride-sdkconfig-files not working
v2.8.0 (2025-02-20)ο
Featο
support ββdisable-targetsβ
v2.7.0 (2025-02-18)ο
Featο
improve debug info with rich
v2.6.4 (2025-02-14)ο
Fixο
collect file not created when no apps built
v2.6.3 (2025-02-11)ο
Fixο
stop returning duplicated apps in
find_apps
compare app based on normalized paths
remove unnecessary check args in dependency-driven-build
v2.6.2 (2025-01-21)ο
Fixο
windows root dir returns β' instead of the drive
v2.6.1 (2025-01-13)ο
Fixο
βconfig-file not refreshed
v2.6.0 (2025-01-02)ο
Featο
manifest_rootpath
support env vars expansion
Fixο
DeprecationWarning: βcountβ is passed as positional argument when
re.sub
add
py.typed
file to be used in mypynegative value for soc caps integer
config_file: recursively load config file for TOML file
v2.5.3 (2024-10-04)ο
Featο
support βmanifest-filepatterns
v2.5.2 (2024-09-27)ο
Fixο
unset CLI argument wrongly overwrite config file settings with default value
allow unknown fields
v2.5.1 (2024-09-26)ο
Fixο
stop using lambda functions since they cannot be pickled
v2.5.0 (2024-09-26)ο
Featο
raise exception when chaining
or
/and
in manifest file if statementssupport
idf-build-apps find
with checking modified manifest filessupport
idf-build-apps dump-manifest-sha
Fixο
stop calling
sys.exit
when return code is 0load config file before cli arguments and func arguments
pickle dump default protocol different in python 3.7
loose env var requirements.
IDF_PATH
not requiredstop print build log as error when build failed due to
--warning-as-error
requires typing-extensions below 3.11
stop wrongly created/deleted temporary build log file
Refactorο
declare argument once. used in both function, cli, and docs
move Manifest.ROOTPATH to arguments
expand @p placeholders in
BuildArguments
v2.4.3 (2024-08-07)ο
Featο
set default building target to βallβ if
--target
is not specifiedset default paths to current directory if
--paths
is not specified
v2.4.2 (2024-08-01)ο
Featο
support
--enable-preview-targets
support
--include-all-apps
while find_appssupport
--output-format json
while find_appssupport
include_disabled_apps
whilefind_apps
Fixο
ignore specified target if unknown in current ESP-IDF branch instead of raise exception
correct
post_build
actions for succeeded with warnings buildscompletions: fix typos in help
Refactorο
update deprecated
datetime.utcnow
v2.4.1 (2024-06-18)ο
Fixο
use esp32c5 mp as default path
v2.4.0 (2024-06-17)ο
Featο
support esp32c5 soc header
cli: add CLI autocompletions
v2.3.1 (2024-04-22)ο
Fixο
copy sdkconfig file while
_post_build
instead of the final phase ofbuild_apps
v2.3.0 (2024-03-20)ο
Featο
support ignore app dependencies by components
v2.2.2 (2024-03-13)ο
Fixο
skip size json generation for targets in preview
v2.2.1 (2024-03-04)ο
Fixο
override sdkconfig item keep possible double quotes
v2.2.0 (2024-02-22)ο
Featο
Support switch-like statements in
depends_components
, anddepends_filepatterns
v2.1.1 (2024-02-02)ο
Fixο
parse the manifest when folder rule is empty
v2.1.0 (2024-02-01) (yanked)ο
Featο
support postfixes to reuse arrays
Fixο
wrongly applied to rules which is defined not in parent dir
same manifest folder rules shouldnβt be declared multi times
v2.0.1 (2024-01-15)ο
Fixο
wrongly skipped the build when
depends_filepatterns
matched but no component modified
v2.0.0 (2024-01-11)ο
Featο
check if the folders listed in the manifest rules exist or not
record build status in
App
instancesupport build with
make
support
--junitxml
option to generate junitxml report forbuild
add
AppDeserializer
for differentiatingCMakeApp
andMakeApp
while deserializingadd param
check_app_dependencies
inbuild_apps
functionadd param
include_skipped_apps
infind_apps
functionfind_apps
support custom app class for parambuild_system
record should_be_built reason when checking app dependencies
support override sdkconfig CLI Options
--override-sdkconfig-items
and--override-sdkconfig-files
support custom
_pre_build
,_post_build
in App instancesadd
json_to_app
method with support custom classessupport
init_from_another
function in App instances
Fixο
prioritize special rules defined in manifest files
manifest folder rule starts with a
.
will be skipped checking existencelog format more visible, from
BUILD_STAGE|
to[BUILD_STAGE]
app.size_json_path
always returns None for linux target appsapp.build_path
returns full path whenbuild_dir
is a full path, returns relative path otherwise. Before this change, it always returns full path.skip build while
find_apps
ifmodified_components
is an empty listimprove error message when env var
IDF_PATH
not setcorrect the search sdkconfig path function
Turn
app.build()
arguments to kwargs
Changesο
improve logging output. Differentiate print and logging better. print only when calling this tool via the CLI, not when using as a library
Perfο
refactor
pathlib
calls toos.path
, to speed up the function calls
BREAKING CHANGESο
2.x introduces a lot of breaking changes. For a detailed migration guide, please refer to our Migration From 1.x to 2.x Guide
Here are the breaking changes:
make
find_apps
,build_apps
, keyword-only for most of the paramsmigrate
App
class to pydantic modelupdate dependencies and do code upgrade to python 3.7
correct
find_apps
,build_apps
function params. These files would be generated under the build directory.build_log_path
->build_log_filename
size_json_path
->size_json_filename
differentiate
None
or empty list better while checking, now these params are accepting semicolon-separated list, instead of space-separated list.--modified-components
--modified-files
--ignore-app-dependencies-filepatterns
make
App
init function keyword-only for most of the paramsremove
LOGGER
fromidf_build_apps
, uselogging.getLogger('idf_build_apps')
insteadrename
build_job.py
tobuild_apps_args.py
,BuildAppJob
toBuildAppsArgs
v1.1.5 (2024-03-20)ο
Fixο
python 2.7 old class
search sdkconfig path
improve error message when env var IDF_PATH not set
v1.1.4 (2023-12-29)ο
Fixο
stop modifying yaml dict shared by yaml anchors
v1.1.3 (2023-11-13)ο
Fixο
pyyaml dependency for python version older than 3.5
stop recursively copy when work dir in app dir
v1.1.2 (2023-08-16)ο
Featο
improve logging when manifest file is invalid
skip running βidf.py reconfigureβ when modified components is empty
v1.1.1 (2023-08-02)ο
Fixο
ignore idf_size.py error
v1.1.0 (2023-07-21)ο
Featο
support esp_rom caps as keywords in the manifest file
v1.0.4 (2023-07-20)ο
Fixο
stop overriding supported targets with sdkconfig file defined one for disabled app
v1.0.3 (2023-07-19)ο
Fixο
correct final reports with skipped apps and failed built apps
skip while collecting only when both depend components and files unmatched
v1.0.2 (2023-07-05)ο
Featο
support placeholder β@vβ
Support keyword
IDF_VERSION
in the if statement
Fixο
non-ascii character
build failed with warnings even without passing
--check-warnings
v1.0.1 (2023-06-12)ο
Fixedο
glob patterns are matched recursively
v1.0.0 (2023-05-25)ο
Addedο
Support keyword
depends_filepatterns
in the manifest fileSupport expanding environment variables in the manifest files
BREAKING CHANGESο
Attributes Renamed
App.requires_components
renamed toApp.depends_components
FolderRule.requires_components
renamed toFolderRule.depends_components
Functions Renamed
Manifest.requires_components()
renamed toManifest.depends_components()
Signatures Changed
App.build()
App.is_modified()
find_apps()
build_apps()
CLI Options Renamed
--depends-on-components
renamed to--modified-components
--depends-on-files
renamed to--modified-files
--ignore-components-dependencies-file-patterns
renamed to--ignore-app-dependencies-filepatterns
Removed the deprecated CLI call methods, now these options only support space-separated list
--exclude
--config
--manifest-file
--ignore-warning-str
--default-build-targets
v0.6.1 (2023-05-10)ο
Fixedο
Add missing dependency
pyyaml
. Itβs wrongly removed in 0.6.0.
v0.6.0 (2023-05-08) (yanked)ο
Addedο
Support configuration file with
tool.idf-build-apps
section underpyproject.toml
file.idf_build_apps.toml
file
Improve help message, include default value, config name, and config type
Improve help message, add DeprecationWarning to change the CLI call method from βspecify multiple timesβ to βspace-separated listβ for the following CLI options. (will be removed in 1.0.0)
--exclude
--config
--manifest-file
--ignore-warning-str
Support placeholder
@p
for parallel indexSupport expand placeholders for CLI options
--collect-app-info
and--collect-size-info
Support new keywords
CONFIG_NAME
in the manifest file
Fixedο
Fix earlier python version pathlib does not support member function
expanduser
issueRemove unused dependency
pyyaml
Refactoredο
Move
utils.setup_logging()
tolog.setup_logging()
Make CLI option
--default-build-targets
from comma-separated list to space-separated list (comma-separated list support will be removed in 1.0.0)
v0.5.2 (2023-04-07)ο
Fixedο
Remove empty expanded sdkconfig files folder after build
Split up expanded sdkconfig files folder for different build
v0.5.1 (2023-04-06)ο
Fixedο
Build with expanded sdkconfig file would respect the target-specific one under the original path
v0.5.0 (2023-03-29)ο
Addedο
Add an executable script
idf-build-apps
. Now this tool could be run viaidf-build-apps build ...
instead ofpython -m idf_build_apps build ...
Support specify
-DSDKCONFIG_DEFAULTS
foridf.py build
via CLI option
--sdkconfig-defaults
via environment variable
SDKCONFIG_DEFAULTS
Fixedο
CLI option
-t
,--target
is required, improve the error message
v0.4.1 (2023-03-15)ο
Fixedο
Stop writing
app_info
andsize_info
if the build got skippedIDF_VERSION_MAJOR
,IDF_VERSION_MINOR
,IDF_VERSION_PATCH
now are integersSkip exclude files while removing build directory if files not exist
Use log level
INFO
for ignored warningsCanβt use
and
in if clauses
v0.4.0 (2023-03-09)ο
This is the last version to support ESP-IDF v4.1 since itβs EOL on Feb. 24th, 2023.
Addedο
Support new keywords
IDF_VERSION_MAJOR
,IDF_VERSION_MINOR
,IDF_VERSION_PATCH
in the manifest fileSupport colored output by default in UNIX-like systems
Add
--no-color
CLI option
Support ignore check component dependencies based on changed files and specified file patterns
Add
--ignore-component-dependencies-file-patterns
CLI optionAdd
--depends-on-files
CLI option
Fixedο
Improve the readability of the generated logs
v0.3.2 (2023-03-08)ο
Fixedο
idf.py reconfigure
without settingIDF_TARGET
wrong log level on βLoading manifest file: β¦β. Set from
INFO
toDEBUG
wrong log level on βBuilding app [ID]: β¦β. Set from
DEBUG
toINFO
v0.3.1 (2023-02-20)ο
Fixedο
Relative path defined in the manifest files depend on the current work path
Added
manifest_rootpath
argument infind_apps()
. Will use this value instead as the root folder for calculating absolute path
v0.3.0 (2023-01-10)ο
Addedο
find_apps
,build_apps
support--depends-on-components
, will only find or build apps that require specified componentsmanifest file support
requires_components
Fixedο
Wrong
App.verified_targets
whenCONFIG_IDF_TARGET
set in appβssdkconfig.defaults
file
v0.2.1 (2022-09-02)ο
Fixedο
Fix
--format json
incompatible issue for IDF branches earlier than 5.0Fix type annotations incompatible issue for python versions earlier than 3.7
Fix f-string incompatible issue for python versions earlier than 3.7
Fix unpack dictionary ending comma syntax error for python 3.4
v0.2.0 (2022-08-31)ο
Addedο
Use
--format json
instead of--json
withidf_size.py