Changelogο
All notable changes to this project will be documented in this file.
v2.13.3 (2025-10-23)ο
v2.13.2 (2025-10-23)ο
π Bug Fixesο
update broken tests for
size.json(Evgeny Torbin - c603221)change
idf_size.py --format jsonto--format json2(Evgeny Torbin - 49b9f3d)
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
FolderRulein .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_appsrespect FolderRule.DEFAULT_BUILD_TARGETS while validating app
Refactorο
move
FolderRule.DEFAULT_BUILD_TARGETinto contextvar
v2.10.2 (2025-05-22)ο
Perfο
most_suitable_rulestop 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_appscompare 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_rootpathsupport env vars expansion
Fixο
DeprecationWarning: βcountβ is passed as positional argument when
re.subadd
py.typedfile 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/andin manifest file if statementssupport
idf-build-apps findwith checking modified manifest filessupport
idf-build-apps dump-manifest-sha
Fixο
stop calling
sys.exitwhen 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_PATHnot requiredstop print build log as error when build failed due to
--warning-as-errorrequires 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
--targetis not specifiedset default paths to current directory if
--pathsis not specified
v2.4.2 (2024-08-01)ο
Featο
support
--enable-preview-targetssupport
--include-all-appswhile find_appssupport
--output-format jsonwhile find_appssupport
include_disabled_appswhilefind_apps
Fixο
ignore specified target if unknown in current ESP-IDF branch instead of raise exception
correct
post_buildactions 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_buildinstead 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_filepatternsmatched 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
Appinstancesupport build with
makesupport
--junitxmloption to generate junitxml report forbuildadd
AppDeserializerfor differentiatingCMakeAppandMakeAppwhile deserializingadd param
check_app_dependenciesinbuild_appsfunctionadd param
include_skipped_appsinfind_appsfunctionfind_appssupport custom app class for parambuild_systemrecord should_be_built reason when checking app dependencies
support override sdkconfig CLI Options
--override-sdkconfig-itemsand--override-sdkconfig-filessupport custom
_pre_build,_post_buildin App instancesadd
json_to_appmethod with support custom classessupport
init_from_anotherfunction 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_pathalways returns None for linux target appsapp.build_pathreturns full path whenbuild_diris a full path, returns relative path otherwise. Before this change, it always returns full path.skip build while
find_appsifmodified_componentsis an empty listimprove error message when env var
IDF_PATHnot 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
pathlibcalls 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
Appclass to pydantic modelupdate dependencies and do code upgrade to python 3.7
correct
find_apps,build_appsfunction params. These files would be generated under the build directory.build_log_path->build_log_filenamesize_json_path->size_json_filename
differentiate
Noneor 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
Appinit function keyword-only for most of the paramsremove
LOGGERfromidf_build_apps, uselogging.getLogger('idf_build_apps')insteadrename
build_job.pytobuild_apps_args.py,BuildAppJobtoBuildAppsArgs
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_VERSIONin 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_filepatternsin the manifest fileSupport expanding environment variables in the manifest files
BREAKING CHANGESο
Attributes Renamed
App.requires_componentsrenamed toApp.depends_componentsFolderRule.requires_componentsrenamed 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-componentsrenamed to--modified-components--depends-on-filesrenamed to--modified-files--ignore-components-dependencies-file-patternsrenamed 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-appssection underpyproject.tomlfile.idf_build_apps.tomlfile
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
@pfor parallel indexSupport expand placeholders for CLI options
--collect-app-infoand--collect-size-infoSupport new keywords
CONFIG_NAMEin the manifest file
Fixedο
Fix earlier python version pathlib does not support member function
expanduserissueRemove unused dependency
pyyaml
Refactoredο
Move
utils.setup_logging()tolog.setup_logging()Make CLI option
--default-build-targetsfrom 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_DEFAULTSforidf.py buildvia CLI option
--sdkconfig-defaultsvia environment variable
SDKCONFIG_DEFAULTS
Fixedο
CLI option
-t,--targetis required, improve the error message
v0.4.1 (2023-03-15)ο
Fixedο
Stop writing
app_infoandsize_infoif the build got skippedIDF_VERSION_MAJOR,IDF_VERSION_MINOR,IDF_VERSION_PATCHnow are integersSkip exclude files while removing build directory if files not exist
Use log level
INFOfor ignored warningsCanβt use
andin 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_PATCHin the manifest fileSupport colored output by default in UNIX-like systems
Add
--no-colorCLI option
Support ignore check component dependencies based on changed files and specified file patterns
Add
--ignore-component-dependencies-file-patternsCLI optionAdd
--depends-on-filesCLI option
Fixedο
Improve the readability of the generated logs
v0.3.2 (2023-03-08)ο
Fixedο
idf.py reconfigurewithout settingIDF_TARGETwrong log level on βLoading manifest file: β¦β. Set from
INFOtoDEBUGwrong log level on βBuilding app [ID]: β¦β. Set from
DEBUGtoINFO
v0.3.1 (2023-02-20)ο
Fixedο
Relative path defined in the manifest files depend on the current work path
Added
manifest_rootpathargument 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_appssupport--depends-on-components, will only find or build apps that require specified componentsmanifest file support
requires_components
Fixedο
Wrong
App.verified_targetswhenCONFIG_IDF_TARGETset in appβssdkconfig.defaultsfile
v0.2.1 (2022-09-02)ο
Fixedο
Fix
--format jsonincompatible 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 jsoninstead of--jsonwithidf_size.py