All notable changes to this project will be documented in this file.
manifest_rootpath
support env vars expansion
- DeprecationWarning: 'count' is passed as positional argument when
re.sub
- add
py.typed
file to be used in mypy - negative value for soc caps integer
- config_file: recursively load config file for TOML file
- support --manifest-filepatterns
- unset CLI argument wrongly overwrite config file settings with default value
- allow unknown fields
- stop using lambda functions since they cannot be pickled
- raise exception when chaining
or
/and
in manifest file if statements - support
idf-build-apps find
with checking modified manifest files - support
idf-build-apps dump-manifest-sha
- stop calling
sys.exit
when return code is 0 - load config file before cli arguments and func arguments
- pickle dump default protocol different in python 3.7
- loose env var requirements.
IDF_PATH
not required - stop 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
- declare argument once. used in both function, cli, and docs
- move Manifest.ROOTPATH to arguments
- expand @p placeholders in
BuildArguments
- set default building target to "all" if
--target
is not specified - set default paths to current directory if
--paths
is not specified
- support
--enable-preview-targets
- support
--include-all-apps
while find_apps - support
--output-format json
while find_apps - support
include_disabled_apps
whilefind_apps
- ignore specified target if unknown in current ESP-IDF branch instead of raise exception
- correct
post_build
actions for succeeded with warnings builds - completions: fix typos in help
- update deprecated
datetime.utcnow
- use esp32c5 mp as default path
- support esp32c5 soc header
- cli: add CLI autocompletions
- copy sdkconfig file while
_post_build
instead of the final phase ofbuild_apps
- support ignore app dependencies by components
- skip size json generation for targets in preview
- override sdkconfig item keep possible double quotes
- Support switch-like statements in
depends_components
, anddepends_filepatterns
- parse the manifest when folder rule is empty
- support postfixes to reuse arrays
- wrongly applied to rules which is defined not in parent dir
- same manifest folder rules shouldn't be declared multi times
- wrongly skipped the build when
depends_filepatterns
matched but no component modified
- check if the folders listed in the manifest rules exist or not
- record build status in
App
instance - support build with
make
- support
--junitxml
option to generate junitxml report forbuild
- add
AppDeserializer
for differentiatingCMakeApp
andMakeApp
while deserializing - add param
check_app_dependencies
inbuild_apps
function - add param
include_skipped_apps
infind_apps
function find_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 instances - add
json_to_app
method with support custom classes - support
init_from_another
function in App instances
- prioritize special rules defined in manifest files
- manifest folder rule starts with a
.
will be skipped checking existence - log 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 list - improve error message when env var
IDF_PATH
not set - correct the search sdkconfig path function
- Turn
app.build()
arguments to kwargs
- improve logging output. Differentiate print and logging better. print only when calling this tool via the CLI, not when using as a library
- refactor
pathlib
calls toos.path
, to speed up the function calls
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 params - migrate
App
class to pydantic model - update 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 params - remove
LOGGER
fromidf_build_apps
, uselogging.getLogger('idf_build_apps')
instead - rename
build_job.py
tobuild_apps_args.py
,BuildAppJob
toBuildAppsArgs
- python 2.7 old class
- search sdkconfig path
- improve error message when env var IDF_PATH not set
- stop modifying yaml dict shared by yaml anchors
- pyyaml dependency for python version older than 3.5
- stop recursively copy when work dir in app dir
- improve logging when manifest file is invalid
- skip running "idf.py reconfigure" when modified components is empty
- ignore idf_size.py error
- support esp_rom caps as keywords in the manifest file
- stop overriding supported targets with sdkconfig file defined one for disabled app
- correct final reports with skipped apps and failed built apps
- skip while collecting only when both depend components and files unmatched
- support placeholder "@v"
- Support keyword
IDF_VERSION
in the if statement
- non-ascii character
- build failed with warnings even without passing
--check-warnings
- glob patterns are matched recursively
- Support keyword
depends_filepatterns
in the manifest file - Support expanding environment variables in the manifest files
- 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
- Add missing dependency
pyyaml
. It's wrongly removed in 0.6.0.
- 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 index - Support expand placeholders for CLI options
--collect-app-info
and--collect-size-info
- Support new keywords
CONFIG_NAME
in the manifest file
- Fix earlier python version pathlib does not support member function
expanduser
issue - Remove unused dependency
pyyaml
- 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)
- Remove empty expanded sdkconfig files folder after build
- Split up expanded sdkconfig files folder for different build
- Build with expanded sdkconfig file would respect the target-specific one under the original path
- 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
- via CLI option
- CLI option
-t
,--target
is required, improve the error message
- Stop writing
app_info
andsize_info
if the build got skipped IDF_VERSION_MAJOR
,IDF_VERSION_MINOR
,IDF_VERSION_PATCH
now are integers- Skip exclude files while removing build directory if files not exist
- Use log level
INFO
for ignored warnings - Can't use
and
in if clauses
This is the last version to support ESP-IDF v4.1 since it's EOL on Feb. 24th, 2023.
- Support new keywords
IDF_VERSION_MAJOR
,IDF_VERSION_MINOR
,IDF_VERSION_PATCH
in the manifest file - Support colored output by default in UNIX-like systems
- Add
--no-color
CLI option
- Add
- Support ignore check component dependencies based on changed files and specified file patterns
- Add
--ignore-component-dependencies-file-patterns
CLI option - Add
--depends-on-files
CLI option
- Add
- Improve the readability of the generated logs
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
-
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
find_apps
,build_apps
support--depends-on-components
, will only find or build apps that require specified components- manifest file support
requires_components
- Wrong
App.verified_targets
whenCONFIG_IDF_TARGET
set in app'ssdkconfig.defaults
file
- Fix
--format json
incompatible issue for IDF branches earlier than 5.0 - Fix 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
- Use
--format json
instead of--json
withidf_size.py