zephyr/scripts/west_commands
Martí Bolívar f752c5eeec west build: fix --pristine on early build system failure
The west build command has historically tried not to rm -rf
directories that don't look like zephyr build directories. The way it
does this is by checking for the presence of a CMake cache
with a Zephyr-specific variable (ZEPHYR_TOOLCHAIN_VARIANT) in it.

The problem with this approach is that if the build system fails
before this cache variable is set, the directory doesn't look like a
zephyr build directory, and therefore west build won't make it
pristine even with --pristine=always, even though build directories
resulting from failed runs like that are almost certainly
irrecoverably broken and need to be made pristine before anything will
work.

This leads to users having to rm -rf their directories manually, which
is not so nice.

To avoid this from happening, just check for ZEPHYR_BASE, which is
set early on in ZephyrConfig.cmake in 'modern' zephyr build systems.
Keep the ZEPHYR_TOOLCHAIN_VARIANT check in place for compatibility.

We could consider being less selective and just using shutil.rmtree()
whenever we have --pristine=always, but that would be a bigger
behavioral change than I'm comfortable doing without a good reason.

Fixes: #28876
Signed-off-by: Martí Bolívar <marti.bolivar@nordicsemi.no>
2020-10-14 07:22:32 -05:00
..
completion
runners runners: bossac: handle --help on the current git version of BOSSA 2020-10-09 08:22:38 -05:00
tests runners: bossac: calculate the offset instead of absolute address 2020-10-09 08:22:38 -05:00
boards.py
build_helpers.py west build: fix --pristine on early build system failure 2020-10-14 07:22:32 -05:00
build.py scripts: west build: default build.pristine to auto 2020-09-05 11:06:39 +02:00
completion.py
debug.py scripts: clean up west build/flash/debug help 2020-06-29 08:47:04 -04:00
export.py cmake: Zephyr CMake package clean-up and minor fix 2020-08-19 12:52:33 -04:00
flash.py scripts: clean up west build/flash/debug help 2020-06-29 08:47:04 -04:00
mypy.ini scripts: runners: add type checking for west_commands 2020-09-03 16:49:09 -05:00
README.txt scripts: runners: add type checking for west_commands 2020-09-03 16:49:09 -05:00
run_common.py cmake: flash/debug: refactor runner configuration 2020-09-03 16:49:09 -05:00
run_tests.py scripts: runners: add type checking for west_commands 2020-09-03 16:49:09 -05:00
sign.py scripts: west sign: add --quiet option 2020-09-01 13:33:46 +02:00
zcmake.py cmake: west: invoke west using same python as rest of build system 2020-07-08 23:23:04 -04:00
zephyr_ext_common.py scripts: west_commands: remove unused helper 2020-08-19 09:51:13 -04:00

This directory contains implementations for west commands which are
tightly coupled to the zephyr tree. This includes the build, flash,
and debug commands.

Before adding more here, consider whether you might want to put new
extensions in upstream west. For example, any commands which operate
on the multi-repo need to be in upstream west, not here. Try to limit
what goes in here to Zephyr-specific features.

When extending this code, please keep the unit tests (in tests/) up to
date. The mypy static type checker is also run on the runners package.

To run these tests locally on Windows, run:

   py -3 run_tests.py

On macOS and Linux:

   ./run_tests.py

Note that these tests are run as part of Zephyr's CI when submitting
an upstream pull request, and pull requests which break the tests
cannot be merged.

Thanks!