Changelog
All notable changes to this project will be documented in this 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