All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog
0.24.0 - 2024-11-07
- Support for installing non-release NCS versions of toolchain, such as
v2.7.0-rc1
. East will now correctly install such versions of the toolchain, if found in the west manifest file.
- A bug in
east build
parsing introduced in v0.23.2.
0.23.2 - 2024-10-14
east build
is now a true pass-through command. Previously, the less used commands would silently get dropped. This now enables the use of the--snippet
,--shield
and otherwest build
flags. Runeast build --extra-help
to see all the available options.
0.23.1 - 2024-10-03
- Parsing of
west.yml
when a project within the yaml does not contain therepo-path
key. compile_commands.json
file is now correctly copied from the build directory to the project directory and west top directory for Zephyr projects using sysbuild.- Correctly propagate return code in case
east codechecker servdiff
fails.
0.23.0 - 2024-09-24
east.yml
now supports specifying samples in nested subdirectories. For example, if there is a sample located undersamples/basic/blinky
, it can be specified ineast.yml
simply as- name: basic/blinky
. Samples build artefacts will be stored in thebuild
directory under the same subdirectory structure. This feature allows users to organize their samples in a more structured way, instead of having all samples in the rootsamples
directory. This feature is documented in thedocs/configuration.md
file underSamples
section. Suggested by @Finwood in #111.
east release
command, which failed to find project dir, when run withEAST_DONT_USE_TOOLCHAIN_MANAGER=1
option.east codechecker check
, which previous failed to findcompile_command.json
file on builds that were using sysbuild.
0.22.1 - 2024-09-18
- The issue where build failure in
east release
command would just fail without warning. (#110). - The issue where
east release
command wasn't creating artefacts for builds using sysbuild (#108).
0.22.0 - 2024-08-22
- Remove self-detection of Docker environment (introduced in v0.21.0) and add support for
EAST_DONT_USE_TOOLCHAIN_MANAGER
environment variable. If this variable is set to1
, East will not try to use the toolchain manager, but will pass the commands directly to the system provided West. The rationale for this change is that some Docker environments don't provide all tools/commands and East should use toolchain-manager in that cases. That case is our current CI environment, where we just install East and want it to manage the tooling. But some Docker environments will provide all tools, including East, so East should just use them directly. But there is no way to detect this automatically, so we need to provide a way for the user to tell East what to do. This is done with theEAST_DONT_USE_TOOLCHAIN_MANAGER
environment variable.
0.21.4 - 2024-08-21
east install nrfutil-toolchain-manager
until now only checked if thenrfutil
binary is present, but not also if thetoolchain-manager
package is installed inside it. That resulted in situations where the install command would report success, however any other east command after it would fail. Now the install command checks if thenrfutil
binary is present and if thetoolchain-manager
package is installed inside it.
0.21.3 - 2024-08-21
- Relax the PyYAML requirement from exact version (PyYAML==6.0.2) to a range (PyYAML>=6.0.0). This prevents pip conflicts with the CodeChecker package (which wants ==6.0.0) in the CI.
0.21.2 - 2024-08-20
east build
command silently dropped the board-related .conf files when build types were used. This bug was introduced in the v0.20.0. with the adoption of the new hardware model naming.
0.21.1 - 2024-08-20
east release
command wrongly aborted, if a board fromeast.yml
wasn't found in project's board directory. That was wrong, since the board might be located either in Zephyr, NCS or some other Zephyr module.
0.21.0 - 2024-08-16
- Make east compatible with Docker. When inside the docker environment East will not try to pass any commands to the nRFUtil's toolchain-manager, but it will pass them directly to the west. The rationale for that is that the docker environment should provide all commands that are needed for working on a Zephyr/NCS project and east should just use them directly.
0.20.0 - 2024-08-16
- Make build-types key in east.yml optional for applications. Until now it was mandatory, which forced users to define build types for applications, even if they didn't need them.
- East now supports hardware model v2 naming.
- Migrate to using toolchain-manager with nrfutil instead of a standalone nrfutil-toolchain-manager.exe executable. Instead of downloading the nrfutil-toolchain-manager.exe executable from a Nordic's project on the GitHub, use Nordic's nRF Util. Due to this change the East is now also supports MacOS. Additionally, toolchains from v2.7.0 and up can now be installed.
- Update project requirements to the latest versions.
- Due to the adoption of the Sysbuild, the location of
runners.yaml
file could be different. Commands such aseast util connect
andeast util cortex-debug
use this file to determine the--device
flag that is then passed to the JLink. East will now usedomains.yaml
file (if present )to determine the location of therunners.yaml
file, otherwise it will use the default location.
0.19.1 - 2024-07-23
- Fix a case where user would install toolchain with east and then get a message that toolchain is not installed, when trying to build.
0.19.0 - 2024-07-05
- Bump PyYAML to support Python3.12 and up (#106).
- Make
tox
to support Python3.12 and up.
- Resolve invalid escape sequence '.' warnings (#106).
0.18.3 - 2024-07-03
- Perform check for nrfutil-toolchain-manager after determining that the east was run inside the NCS project.
0.18.2 - 2024-04-04
- Add a
--no-py
flag to theeast util cortex-debug
. It fixes possible issues with RTT in VSCode.
0.18.1 - 2024-04-04
- Shallow copying of Python dicts that didn't create a correct Debug Cortex config.
0.18.0 - 2024-04-04
- New command
east util cortex-debug
. It generates a configuration file for the Cortex Debug VSCode extension from the build directory from the current working directory. Runeast util cortex-debug --help
to learn how to use and configure it. - Start using Ruff as the main formatting and linting tool. Entire project was formatted and cleaned with it.
--jlink-id
to--dev-id
ineast util connect
command.east flash
(actuallywest flash
) also uses --dev-id, so for the consistency sake the same option ineast util connect
was changed.
0.17.6 - 2024-03-07
- The issue with -fno-printf-return-value.
east codechecker check
command would fail due to this flag, as the flags comes from the GCC, but clang doesn't know about it. There is no way to ignore this on theclang
level, but for some reasonclangd
knows how to ignore this. So the only solution was to remove this from thecompile_commands.json
(this is not the only flag that was causing the problems). - Add back
cppcheck
to the Codechecker install list. Althoughcppcheck
is not used, thecodechecker --help
command (and a lot of other commands) fails a version check ifcppcheck
binary is not present. Installing the binary solves that.
0.17.5 - 2024-02-28
- Strip away trailing slashes from Codechecker server URL that could cause
problems when creating the endpoint URL. This affects the
east codechecker store
andeast codechecker servdiff
, which get the URL either as a command line argument or from the environmental variableEAST_CODECHECKER_SERVER_URL
0.17.4 - 2024-01-08
- Filter out ANSI escape sequences, fix #105.
- Fix parsing of git describe outside project repos.
0.17.3 - 2023-11-22
- Filter out
unused variable 'var_name'
warnings whenvar_name
is used in the disabled macro.
0.17.2 - 2023-11-09
- Again fix handling of extra args.
0.17.1 - 2023-11-08
- Newly added
--append
option was not properly added.
0.17.0 - 2023-11-08
--append
flag to theeast util rtt
command. If you use this option, then new RTT logs will not overwrite old logfile, but the will be appended to it.
- Fix handling of extra args. Some commands that just pass through args to the
west
(likeeast twister
) would incorrectly parse argument values with spaces, for example,east twister --west-flash="--tool-opt=ip 192.168.76.247:7778"
would becomeeast twister --west-flash="--tool-opt"
.
0.16.4 - 2023-11-02
east install toolchain
will now exit with 0 error code, if the toolchain is already installed. This makes CI logic using East simpler.
0.16.3 - 2023-10-30
- Error build message in
east release
command. It was also prettified. - Build type issue when building app not listed in the east.yaml, again. See (#85) for the start of the issue and 7243ee4 for solution and rationale.
0.16.1 - 2023-09-29
- Transition to the trunk-based development model.
- Incorrect conversion of output of a git command into endpoint in
east store
command.
0.16.0 - 2023-09-28
- Version check. East will now occasionally check for the latest version and notify the user when it is available.
- Add
EAST_CODECHECKER_CI_MODE
environment variable. If running CodeChecker inside continuous integration environment, runexport EAST_CODECHECKER_CI_MODE=1
before running anyeast codechecker
commands. This will makeeast
use theCodeChecker
executable that is on the system path instead of the one in the tooling directory. System providedCodeChecker
will normally also want to use the system provided clang, clang-tidy and cppcheck programs. way users can leverage the programs provided by continuous integration environment and not byeast
, which is usually faster due to caching. - Add
--build-dir
option to theeast codechecker
commands. From now on, you do not need to runeast codechecker
command from the same directory wherebuild
folder is located. The default is stillbuild
, however you can specify a different one with--build-dir
option. east codechecker
commands now also take build directory location into account when generating a skip file.
- How previous build type of previously run build is detected. Previously
east
looked into theimage_preload.cmake
file and parsed its content to figure out the used build type. This approach worked well until someone wanted to append extra.conf
files to theCONFIG_OVERLAY
. To support this use case east now just creates a single file in thebuild
dir and writes build type to it.
0.15.2 - 2023-09-28
- Incorrect message that was shown when toolchain was not installed.
- Fix east release for driver projects, which do not have
app
folder.
0.15.1 - 2023-09-27
- Python version check. This was mostly needed due to Conda binary, which is not used any more.
- Platform detection for clang tooling.
0.15.0 - 2023-09-26
- This version of East created breaking changes in the interface. This was done
due to the consistency with existing
west
interface. Changes:east sys-setup
was removed and replaced witheast install
.east install
now contains several subcommands, which can be used to installcodechecker
,toolchain
,nrfutil-toolchain-manager
, etc.east update
is now just a wrapper aroundwest update
command.- Newly added
east init
is now just a wrapper aroundwest init
command.
- Support for Codechecker, a static analysis infrastructure. Newly added command
east codechecker
contains several subcommands:- Users can now
check
their Zephyr projects withclang-tidy
andclangsa
, - apply suggested fixes with
fixit
, store
the results of the Codechecker analysis to a server,servdiff
- compare the local analysis against the last server analysis,- See example
codechecker_config.yaml
file withexample-config
, - or directly run any Codechecker command with
bypass
. An effort was made to make theeast codechecker check
command most useful: - Most of the warnings that are reported because of the Zephyr's macros are filtered out.
- Installation of Codechecker and all its dependencies is seamless, you only
need to run
east install codechecker
.
- Users can now
- Support for generating the Software Bill of Materials (SBOM) in SPDX format.
To generate SPDX files add
--spdx
or--spdx-app-only
flags toeast build
oreast release
respectively.east build
command will place SPDX files in the build folder, whileeast release
will generate them for each combination of parameters and place them next to the respective artefacts. - Add
EAST_BUILD_TYPE
CMake define to the build and release commands. This define is emitted only if we are building an app with build type functionality (so, it is not emitted for samples). It contains a string, identical to the given--build-type
flag.
- Build type issue when building app not listed in the east.yaml (#85)
pykwalify
error caused by an empty east.yml (#85)- Always delete build folder when build settings do not match. (#85)
- Incorrect removal of toolchain when using
--force
flag. (#85) - Improve error message when running bypass in non NCS repo. (#85)
- Correctly handle ctrl+c when running
east debug
. Previously everything broke (yes, everything), when user wanted to stop a running program insidegdb
. Essentially the ctrl+c combination was passed twice togdb
, which caused all sort of problems.
- Conda from list of installed tools. Conda was originally intended to be used as bootstrapping environment, however there was never need for it.
0.14.0 - 2023-08-24
- Add
--shell
flag to theeast bypass
command. It launches a sub-shell within the current terminal inside the isolated environment provided by the Nordic's nRF Toolchain Manager. east twister
command. This command is just a wrapper for thewest twister
command which runs Twister, a test runner tool.east attach
command. This command is just a wrapper for thewest attach
command, which is similiar to thewest debug
.
east bypass
now passes arbitrary commands into directly into the Nordic's nRF Toolchain Manager instead into just West that is in the Manager. That way user can user use other executables and python programs provided by the toolchains in the Manager.east build
,east flash
andeast debug
are now just wrappers for their west counterparts. Due to this the internals and externals of the East could be simplified. User experience did not change, the commands behave just like they did before, they just do not directly provide help for possible options and arguments, but instead instruct users to use--extra-help
option to learn more about west command counterparts. Due to this change theattach
command was moved fromdebug
command to its own place.
0.13.0 - 2023-07-26
- Conda install from
east sys-setup
command as it is not needed by East.
0.12.3 - 2023-07-26
- Use
HOME
environmental variable instead ofUSER
to determine home directory.
0.12.2 - 2023-07-25
USER
environmental variable is not present on GitHub Action Runners, so East should not assume that is present.
0.12.1 - 2023-06-27
- Missing sample folder would abort
east release
even if samples are not specified in theeast.yml
.
0.12.0 - 2023-06-07
- Added
--speed
flag to theeast util connect
.
0.11.1 - 2023-06-05
- nrfutil toolchain manager binary now needs --ncs-version flag when installing toolchains.
0.11.0 - 2023-06-05
- Updated version of the nrfutil toolchain manager binary to 0.13.0-alpha.3. This version now supports toolchains up to v2.4.0.
- Completely remove
ncs_version_installed
variable that should be removed in previous version but it was not.
0.10.1 - 2023-05-29
- Refactor preworkspace check to improve clarity.
- Unify helper functions in build type and release tests.
- A bug that caused a crash when east was run from non-NCS projects.
- The wrong selection of release binaries when building application with only TFM or SPM (#62)
0.10.0 - 2023-03-28
- Support for Python 3.10.x version.
0.9.0 - 2023-03-27
util rtt
command now supports--logfile
with which you can specify file into which to store RTT logs (#42).debug
command which useswest debug
or (west attach
) to connect to the board and start a debugging session.
- Add back functionality to provide
cmake_args
after--
marker forbuild
command. Now it is possible to provide custom-D
define values to the CMake. Commandsflash
,bypass
already provided option for extra arguments after--
, however they did it incorrectly for very edge cases, as they removed double quotes from all arguments passed after--
marker (#56).
- Ton of spelling mistakes in the code and comments.
0.8.0 - 2023-03-20
compile_commands.json
is now also copied to the top west directory. This enables clangd to work as intended inncs
andzephyr
folders (#53).- Section in docs/configuration.md document describing
release
build type.
- Samples (which inherently do not have a build type) have their build type
marked with forward slash "/" instead of "None" in the Job table that appears
when running
east release
(#52).
- Sample binaries had incorrect
-None
build type qualifier in their release name, when they shouldn't have. Incorrect build type qualifier was removed (#52). - Samples can now inherit from
release
build types (#47). east release
command now correctly copies build artefacts whenmerged.hex
is not generated. Additionally, new Copied build artefacts section indocs/configuration.md
now exactly defines which build artefacts are copied and renamed in release procedure (#51).
0.7.0 - 2023-02-15
- New documentation files in
docs
folder:development_guide.md
,getting_started.md
,how_east_works.md
make format
command, which usesblack
andisort
.development_guide.md
explains the use.- Both commands
east util connect
andeast util rtt
now accept--rtt-port
option, which sets the RTT Telnet port. Commandeast util connect
now also accepts the--jlink-id
option, same aseast flash
. With those new options is now easier to connect and listen to RTT messages from multiple JLink devices.
- Updated readme so it points to the new documentation.
- Fixed release artefacts naming issue where build type would not appear correctly.
- Create a
release_dry_run
folder instead of release folder when using --dry-run option with east release command. east release
command now runs a pre-check on the apps and samples fromeast.yml
, if they exists before running the release process. That way you can catch a typo, or a mistake before you spent some time waiting through the release process.
0.6.2 - 2022-12-16
- east util rtt command, local echo option was not passed correctly.
0.6.1 - 2022-12-16
- Case where there is not apps key in east.yml and we are building and app without build type was not correctly handled.
0.6.0 - 2022-12-15
- east release command. Usage is explained in the "doc/configuration.md".
0.5.0 - 2022-12-13
- Command east build will now after every build step copy
compile_commands.json
, if found, from the build directory to the project directory. This makes job of locating this file easier for clangd. Help description for east build was updated to reflect that.
- Make east.yml optional for everything, except for the usage of east build command with --build-type option.
- Make apps key and samples key inside east.yml optional. This is useful for driver projects, which do not need apps, or any project that might not have samples.
- Properly handle east build commands outside of applications and samples. This means that running east build command will default to plain west behaviour, as it should.
0.4.0 - 2022-11-21
- Support for --build-type option for build command. The use of this option is documented in detail in "docs/configuration.md". --build-type option was tested exhaustively with unit tests and various test fixtures with pytest. The tests can be found in tests folder.
- Projects using east tool from now on need east.yml file in the root directory. See above mentioned document.
- Error code propagation through Nordic's Toolchain Manager.
0.3.0 - 2022-10-05
- bypass command, which can take any set of arguments that west command supports and pass them directly to west tool.
- util connect and util rtt commands. With first you connect to the device, with second you can observe RTT logs while connected.
- build and flash commands now support extra positional arguments after
double dash
--
. Run them with --help string to learn what do they do.
- Incorrect no toolchain message.
- --force flag was not set as flag by Click.
- --jlink-id should be of type str but it was not.
- No westdir related bug that came up in demonstration.
0.2.0 - 2022-10-03
- sys-setup command which will install system-wide dependencies to the host machine.
- Global --echo flag which echoes every shell command before executing it.
- update toolchain command - Command will download and install appropriate version of toolchain based on the detected NCS version. If NCS version is currently not supported it throws an error.
- Structure of the commands. Commands are now split into two groups: workspace commands and system commands. This is reflected in the project directory structure and help texts.
- Workspace commands will now use downloaded toolchain whenever they can.
0.1.42 - 2022-09-20
- Build command which can build firmware in current directory.
- Flash command which flashes code binary.
- Clean command which deletes build folder.
- Styling look with rich click module.
- Use newer pyproject.toml format for metadata specification.
- MIT license file.
- Makefile for development.
- Docker scripts for building and running docker containers, for development purposes.