1.. _west-release-notes: 2 3West Release Notes 4################## 5 6v1.2.0 7****** 8 9Major changes: 10 11- New ``west grep`` command for running a "grep tool" in your west workspace's 12 repositories. Currently, ``git grep``, `ripgrep`_, and standard ``grep`` are 13 supported grep tools. 14 15 To run this command to get ``git grep foo`` results from all cloned, 16 active repositories, run: 17 18 .. code-block:: console 19 20 west grep foo 21 22 Here are some other examples for running different grep commands 23 with ``west grep``: 24 25 .. list-table:: 26 27 * - ``git grep --untracked`` 28 - ``west grep --untracked foo`` 29 * - ``ripgrep`` 30 - ``west grep --tool ripgrep foo`` 31 * - ``grep --recursive`` 32 - ``west grep --tool grep foo`` 33 34 To switch the default grep tool in your workspace, run the appropriate 35 command in this table: 36 37 .. list-table:: 38 39 * - ``ripgrep`` 40 - ``west config grep.tool ripgrep`` 41 * - ``grep`` 42 - ``west config grep.tool grep`` 43 44 For more details, run ``west help grep``. 45 46Other changes: 47 48- The manifest file format now supports a ``description`` field in each 49 ``projects:`` element. See :ref:`west-manifests-projects` for examples. 50 51- ``west list --format`` now accepts ``{description}`` in the format 52 string, which prints the project's ``description:`` value. 53 54- ``west compare`` now always prints information about 55 :ref:`west-manifest-rev`. 56 57Bug fixes: 58 59- ``west init`` aborts if the destination directory already exists. 60 61API changes: 62 63- ``west.commands.WestCommand`` methods ``check_call()`` and 64 ``check_output()`` now take any kwargs that can be passed on 65 to the underlying subprocess function. 66 67- ``west.commands.WestCommand.run_subprocess()``: new wrapper 68 around ``subprocess.run()``. This could not be named ``run()`` 69 because ``WestCommand`` already had a method by this name. 70 71- ``west.commands.WestCommand`` methods ``dbg()``, ``inf()``, 72 ``wrn()``, and ``err()`` now all take an ``end`` kwarg, which 73 is passed on to the call to ``print()``. 74 75- ``west.manifest.Project`` now has a ``description`` attribute, 76 which contains the parsed value of the ``description:`` field 77 in the manifest data. 78 79.. _ripgrep: https://github.com/BurntSushi/ripgrep#readme 80 81v1.1.0 82****** 83 84Major changes: 85 86- ``west compare``: new command that compares the state of the 87 workspace against the manifest. 88 89- Support for a new ``manifest.project-filter`` configuration option. 90 See :ref:`west-config-index` for details. The ``west manifest --freeze`` 91 and ``west manifest --resolve`` commands currently cannot be used when 92 this option is set. This restriction can be removed in a later release. 93 94- Project names which contain comma (``,``) or whitespace now generate 95 warnings. These warnings are errors if the new ``manifest.project-filter`` 96 configuration option is set. The warnings may be promoted to errors in a 97 future major version of west. 98 99Other changes: 100 101- ``west forall`` now takese a ``--group`` argument that can be used 102 to restrict the command to only run in one or more groups. Run 103 ``west help forall`` for details. 104 105- All west commands will now output log messages from west API modules at 106 warning level or higher. In addition, the ``--verbose`` argument to west 107 can be used once to include informational messages, or twice to include 108 debug messages, from all commands. 109 110Bug fixes: 111 112- Various improvements to error messages, debug logging, and error handling. 113 114API changes: 115 116- ``west.manifest.Manifest.is_active()`` now respects the 117 ``manifest.project-filter`` configuration option's value. 118 119v1.0.1 120****** 121 122Major changes: 123 124- Manifest schema version "1.0" is now available for use in this release. This 125 is identical to the "0.13" schema version in terms of features, but can be 126 used by applications that do not wish to use a "0.x" manifest "version:" 127 field. See :ref:`west-manifest-schema-version` for details on this feature. 128 129Bug fixes: 130 131- West no longer exits with a successful error code when sent an 132 interrupt signal. Instead, it exits with a platform-specific 133 error code and signals to the calling environment that the 134 process was interrupted. 135 136v1.0.0 137****** 138 139Major changes in this release: 140 141- The :ref:`west-apis` are now declared stable. Any breaking changes will be 142 communicated by a major version bump from v1.x.y to v2.x.y. 143 144- West v1.0 no longer works with the Zephyr v1.14 LTS releases. This LTS has 145 long been obsoleted by Zephyr v2.7 LTS. If you need to use Zephyr v1.14, you 146 must use west v0.14 or earlier. 147 148- Like the rest of Zephyr, west now requires Python v3.8 or later 149 150- West commands no longer accept abbreviated command line arguments. For 151 example, you must now specify ``west update --keep-descendants`` instead of 152 using an abbreviation like ``west update --keep-d``. This is part of a change 153 applied to all of Zephyr's Python scripts' command-line interfaces. The 154 abbreviations were causing problems in practice when commands were updated to 155 add new options with similar names but different behavior to existing ones. 156 157Other changes: 158 159- All built-in west functions have stopped using ``west.log`` 160 161- ``west update``: new ``--submodule-init-config`` option. 162 See commit `9ba92b05`_ for details. 163 164Bug fixes: 165 166- West extension commands that failed to load properly sometimes dumped stack. 167 This has been fixed and west now prints a sensible error message in this case. 168 169- ``west config`` now fails on malformed configuration option arguments 170 which lack a ``.`` in the option name 171 172API changes: 173 174- The west package now contains the metadata files necessary for some static 175 analyzers (such as `mypy`_) to auto-detect its type annotations. 176 See commit `d9f00e24`_ for details. 177 178- the deprecated ``west.build`` module used for Zephyr v1.14 LTS compatibility was 179 removed 180 181- the deprecated ``west.cmake`` module used for Zephyr v1.14 LTS compatibility was 182 removed 183 184- the ``west.log`` module is now deprecated. This module uses global state, 185 which can make it awkward to use it as an API which multiple different python 186 modules may rely on. 187 188- The :ref:`west-apis-commands` module got some new APIs which lay groundwork 189 for a future change to add a global verbosity control to a command's output, 190 and work to remove global state from the ``west`` package's API: 191 192 - New ``west.commands.WestCommand.__init__()`` keyword argument: ``verbosity`` 193 - New ``west.commands.WestCommand`` property: ``color_ui`` 194 - New ``west.commands.WestCommand`` methods, which should be used to print output 195 from extension commands instead of writing directly to sys.stdout or 196 sys.stderr: ``inf()``, ``wrn()``, ``err()``, ``die()``, ``banner()``, 197 ``small_banner()`` 198 - New ``west.commands.VERBOSITY`` enum 199 200.. _9ba92b05: https://github.com/zephyrproject-rtos/west/commit/9ba92b054500d75518ff4c4646590bfe134db523 201.. _d9f00e24: https://github.com/zephyrproject-rtos/west/commit/d9f00e242b8cb297b56e941982adf231281c6bae 202.. _mypy: https://www.mypy-lang.org/ 203 204v0.14.0 205******* 206 207Bug fixes: 208 209- West commands that were run with a bad local configuration file dumped stack 210 in a confusing way. This has been fixed and west now prints a sensible error 211 message in this case. 212 213- A bug in the way west looks for the zephyr repository was fixed. The bug 214 itself usually appeared when running an extension command like ``west build`` 215 in a new workspace for the first time; this used to fail (just for the first 216 time, not on subsequent command invocations) unless you ran the command in 217 the workspace's top level directory. 218 219- West now prints sensible error messages when the user lacks permission to 220 open the manifest file instead of dumping stack traces. 221 222API changes: 223 224- The ``west.manifest.MalformedConfig`` exception type has been moved to the 225 ``west.configuration`` module 226 227- The ``west.manifest.MalformedConfig`` exception type has been moved to the 228 :ref:`west.configuration <west-apis-configuration>` module 229 230- The ``west.configuration.Configuration`` class now raises ``MalformedConfig`` 231 instead of ``RuntimeError`` in some cases 232 233v0.13.1 234******* 235 236Bug fix: 237 238- When calling west.manifest.Manifest.from_file() when outside of a 239 workspace, west again falls back on the ZEPHYR_BASE environment 240 variable to locate the workspace. 241 242v0.13.0 243******* 244 245New features: 246 247- You can now associate arbitrary user data with the manifest repository 248 itself in the ``manifest: self: userdata:`` value, like so: 249 250 .. code-block:: YAML 251 252 manifest: 253 self: 254 userdata: <any YAML value can go here> 255 256Bug fixes: 257 258- The path to the manifest repository reported by west could be incorrect in 259 certain circumstances detailed in [issue 260 #572](https://github.com/zephyrproject-rtos/west/issues/572). This has been 261 fixed as part of a larger overhaul of path handling support in the 262 ``west.manifest`` API module. 263 264- The ``west.Manifest.ManifestProject.__repr__`` return value was fixed 265 266:ref:`API <west-apis>` changes: 267 268- ``west.configuration.Configuration``: new object-oriented interface to the 269 current configuration. This reflects the system, global, and workspace-local 270 configuration values, and allows you to read, write, and delete configuration 271 options from any or all of these locations. 272 273- ``west.commands.WestCommand``: 274 275 - ``config``: new attribute, returns a ``Configuration`` object or aborts the 276 program if none is set. This is always usable from within extension command 277 ``do_run()`` implementations. 278 - ``has_config``: new boolean attribute, which is ``True`` if and only if 279 reading ``self.config`` will abort the program. 280 281- The path handling in the ``west.manifest`` package has been overhauled in a 282 backwards-incompatible way. For more details, see commit 283 [56cfe8d1d1](https://github.com/zephyrproject-rtos/west/commit/56cfe8d1d1f3c9b45de3e793c738acd62db52aca). 284 285- ``west.manifest.Manifest.validate()``: this now returns the validated data as 286 a Python dict. This can be useful if the value passed to this function was a 287 str, and the dict is desired. 288 289- ``west.manifest.Manifest``: new: 290 291 - path attributes ``abspath``, ``posixpath``, ``relative_path``, 292 ``yaml_path``, ``repo_path``, ``repo_posixpath`` 293 - ``userdata`` attribute, which contains the parsed value 294 from ``manifest: self: userdata:``, or is None 295 - ``from_topdir()`` factory method 296 297- ``west.manifest.ManifestProject``: new ``userdata`` attribute, which also 298 contains the parsed value from ``manifest: self: userdata:``, or is None 299 300- ``west.manifest.ManifestImportFailed``: the constructor can now take any 301 value; this can be used to reflect failed imports from a :ref:`map 302 <west-manifest-import-map>` or other compound value. 303 304- Deprecated configuration APIs: 305 306 The following APIs are now deprecated in favor of using a ``Configuration`` 307 object. Usually this will be done via ``self.config`` from a ``WestCommand`` 308 instance, but this can be done directly by instantiating a ``Configuration`` 309 object for other usages. 310 311 - ``west.configuration.config`` 312 - ``west.configuration.read_config`` 313 - ``west.configuration.update_config`` 314 - ``west.configuration.delete_config`` 315 316v0.12.0 317******* 318 319New features: 320 321- West now works on the `MSYS2 <https://www.msys2.org/>`_ platform. 322 323- West manifest files can now contain arbitrary user data associated with each 324 project. See :ref:`west-project-userdata` for details. 325 326Bug fixes: 327 328- The ``west list`` command's ``{sha}`` format key has been fixed for 329 the manifest repository; it now prints ``N/A`` ("not applicable") 330 as expected. 331 332:ref:`API <west-apis>` changes: 333 334- The ``west.manifest.Project.userdata`` attribute was added to support 335 project user data. 336 337v0.11.1 338******* 339 340New features: 341 342- ``west status`` now only prints output for projects which have a nonempty 343 status. 344 345Bug fixes: 346 347- The manifest file parser was incorrectly allowing project names which contain 348 the path separator characters ``/`` and ``\``. These invalid characters are 349 now rejected. 350 351 Note: if you need to place a project within a subdirectory of the workspace 352 topdir, use the ``path:`` key. If you need to customize a project's fetch URL 353 relative to its remote ``url-base:``, use ``repo-path:``. See 354 :ref:`west-manifests-projects` for examples. 355 356- The changes made in west v0.10.1 to the ``west init --manifest-rev`` option 357 which selected the default branch name were leaving the manifest repository 358 in a detached HEAD state. This has been fixed by using ``git clone`` internally 359 instead of ``git init`` and ``git fetch``. See `issue #522`_ for details. 360 361- The ``WEST_CONFIG_LOCAL`` environment variable now correctly 362 overrides the default location, :file:`<workspace topdir>/.west/config`. 363 364- ``west update --fetch=smart`` (``smart`` is the default) now correctly skips 365 fetches for project revisions which are `lightweight tags`_ (it already 366 worked correctly for annotated tags; only lightweight tags were unnecessarily 367 fetched). 368 369Other changes: 370 371- The fix for issue #522 mentioned above introduces a new restriction. The 372 ``west init --manifest-rev`` option value, if given, must now be either a 373 branch or a tag. In particular, "pseudo-branches" like GitHub's 374 ``pull/1234/head`` references which could previously be used to fetch a pull 375 request can no longer be passed to ``--manifest-rev``. Users must now fetch 376 and check out such revisions manually after running ``west init``. 377 378:ref:`API <west-apis>` changes: 379 380- ``west.manifest.Manifest.get_projects()`` avoids incorrect results in 381 some edge cases described in `issue #523`_. 382 383- ``west.manifest.Project.sha()`` now works correctly for tag revisions. 384 (This applies to both lightweight and annotated tags.) 385 386.. _lightweight tags: https://git-scm.com/book/en/v2/Git-Basics-Tagging 387.. _issue #522: https://github.com/zephyrproject-rtos/west/issues/522 388.. _issue #523: https://github.com/zephyrproject-rtos/west/issues/523 389 390v0.11.0 391******* 392 393New features: 394 395- ``west update`` now supports ``--narrow``, ``--name-cache``, and 396 ``--path-cache`` options. These can be influenced by the ``update.narrow``, 397 ``update.name-cache``, and ``update.path-cache`` :ref:`west-config` options. 398 These can be used to optimize the speed of the update. 399- ``west update`` now supports a ``--fetch-opt`` option that will be passed to 400 the ``git fetch`` command used to fetch remote revisions when updating each 401 project. 402 403Bug fixes: 404 405- ``west update`` now synchronizes Git submodules in projects by default. This 406 avoids issues if the URL changes in the manifest file from when the submodule 407 was first initialized. This behavior can be disabled by setting the 408 ``update.sync-submodules`` configuration option to ``false``. 409 410Other changes: 411 412- the :ref:`west-apis-manifest` module has fixed docstrings for the Project 413 class 414 415v0.10.1 416******* 417 418New features: 419 420- The :ref:`west-init` command's ``--manifest-rev`` (``--mr``) option no longer 421 defaults to ``master``. Instead, the command will query the repository for 422 its default branch name and use that instead. This allows users to move from 423 ``master`` to ``main`` without breaking scripts that do not provide this 424 option. 425 426.. _west_0_10_0: 427 428v0.10.0 429******* 430 431New features: 432 433- The ``name`` key in a project's :ref:`submodules list 434 <west-manifest-submodules>` is now optional. 435 436Bug fixes: 437 438- West now checks that the manifest schema version is one of the explicitly 439 allowed values documented in :ref:`west-manifest-schema-version`. The old 440 behavior was just to check that the schema version was newer than the west 441 version where the ``manifest: version:`` key was introduced. This incorrectly 442 allowed invalid schema versions, like ``0.8.2``. 443 444Other changes: 445 446- A manifest file's ``group-filter`` is now propagated through an ``import``. 447 This is a change from how west v0.9.x handled this. In west v0.9.x, only the 448 top level manifest file's ``group-filter`` had any effect; the group filter 449 lists from any imported manifests were ignored. 450 451 Starting with west v0.10.0, the group filter lists from imported manifests 452 are also imported. For details, see :ref:`west-group-filter-imports`. 453 454 The new behavior will take effect if ``manifest: version:`` is not given or 455 is at least ``0.10``. The old behavior is still available in the top level 456 manifest file only with an explicit ``manifest: version: 0.9``. See 457 :ref:`west-manifest-schema-version` for more information on schema versions. 458 459 See `west pull request #482 460 <https://github.com/zephyrproject-rtos/west/pull/482>`_ for the motivation 461 for this change and additional context. 462 463v0.9.1 464****** 465 466Bug fixes: 467 468- Commands like ``west manifest --resolve`` now correctly include group and 469 group filter information. 470 471Other changes: 472 473- West now warns if you combine ``import`` with ``group-filter``. Semantics for 474 this combination have changed starting with v0.10.x. See the v0.10.0 release 475 notes above for more information. 476 477.. _west_0_9_0: 478 479v0.9.0 480****** 481 482.. warning:: 483 484 The ``west config`` fix described below comes at a cost: any comments or 485 other manual edits in configuration files will be removed when setting a 486 configuration option via that command or the ``west.configuration`` API. 487 488.. warning:: 489 490 Combining the ``group-filter`` feature introduced in this release with 491 manifest imports is discouraged. The resulting behavior has changed in west 492 v0.10. 493 494New features: 495 496- West manifests now support :ref:`west-manifest-submodules`. This allows you 497 to clone `Git submodules 498 <https://git-scm.com/book/en/v2/Git-Tools-Submodules>`_ into a west project 499 repository in addition to the project repository itself. 500 501- West manifests now support :ref:`west-manifest-groups`. Project groups can be 502 enabled and disabled to determine what projects are "active", and therefore 503 will be acted upon by the following commands: ``west update``, ``west list``, 504 ``west diff``, ``west status``, ``west forall``. 505 506- ``west update`` no longer updates inactive projects by default. It now 507 supports a ``--group-filter`` option which allows for one-time modifications 508 to the set of enabled and disabled project groups. 509 510- Running ``west list``, ``west diff``, ``west status``, or ``west forall`` 511 with no arguments does not print information for inactive projects by 512 default. If the user specifies a list of projects explicitly at the command 513 line, output for them is included regardless of whether they are active. 514 515 These commands also now support ``--all`` arguments to include all 516 projects, even inactive ones. 517 518- ``west list`` now supports a ``{groups}`` format string key in its 519 ``--format`` argument. 520 521Bug fixes: 522 523- The ``west config`` command and ``west.configuration`` API did not correctly 524 store some configuration values, such as strings which contain commas. This 525 has been fixed; see `commit 36f3f91e 526 <https://github.com/zephyrproject-rtos/west/commit/36f3f91e270782fb05f6da13800f433a9c48f130>`_ 527 for details. 528 529- A manifest file with an empty ``manifest: self: path:`` value is invalid, but 530 west used to let it pass silently. West now rejects such manifests. 531 532- A bug affecting the behavior of the ``west init -l .`` command was fixed; see 533 `issue #435 <https://github.com/zephyrproject-rtos/west/issues/435>`_. 534 535:ref:`API <west-apis>` changes: 536 537- added ``west.manifest.Manifest.is_active()`` 538- added ``west.manifest.Manifest.group_filter`` 539- added ``submodules`` attribute to ``west.manifest.Project``, which has 540 newly added type ``west.manifest.Submodule`` 541 542Other changes: 543 544- The :ref:`west-manifest-import` feature now supports the terms ``allowlist`` 545 and ``blocklist`` instead of ``whitelist`` and ``blacklist``, respectively. 546 547 The old terms are still supported for compatibility, but the documentation 548 has been updated to use the new ones exclusively. 549 550v0.8.0 551****** 552 553This is a feature release which changes the manifest schema by adding support 554for a ``path-prefix:`` key in an ``import:`` mapping, along with some other 555features and fixes. 556 557- Manifest import mappings now support a ``path-prefix:`` key, which places 558 the project and its imported repositories in a subdirectory of the workspace. 559 See :ref:`west-manifest-ex3.4` for an example. 560- The west command line application can now also be run using ``python3 -m 561 west``. This makes it easier to run west under a particular Python 562 interpreter without modifying the :envvar:`PATH` environment variable. 563- :ref:`west manifest --path <west-manifest-path>` prints the absolute path to 564 west.yml 565- ``west init`` now supports an ``--mf foo.yml`` option, which initializes the 566 workspace using :file:`foo.yml` instead of :file:`west.yml`. 567- ``west list`` now prints the manifest repository's path using the 568 ``manifest.path`` :ref:`configuration option <west-config>`, which may differ 569 from the ``self: path:`` value in the manifest data. The old behavior is 570 still available, but requires passing a new ``--manifest-path-from-yaml`` 571 option. 572- Various Python API changes; see :ref:`west-apis` for details. 573 574v0.7.3 575****** 576 577This is a bugfix release. 578 579- Fix an error where a failed import could leave the workspace in an unusable 580 state (see [PR #415](https://github.com/zephyrproject-rtos/west/pull/415) for 581 details) 582 583v0.7.2 584****** 585 586This is a bugfix and minor feature release. 587 588- Filter out duplicate extension commands brought in by manifest imports 589- Fix ``west.Manifest.get_projects()`` when finding the manifest repository by 590 path 591 592v0.7.1 593****** 594 595This is a bugfix and minor feature release. 596 597- ``west update --stats`` now prints timing for operations which invoke a 598 subprocess, time spent in west's Python process for each project, and total 599 time updating each project. 600- ``west topdir`` always prints a POSIX style path 601- minor console output changes 602 603v0.7.0 604****** 605 606The main user-visible feature in west 0.7 is the :ref:`west-manifest-import` 607feature. This allows users to load west manifest data from multiple different 608files, resolving the results into a single logical manifest. 609 610Additional user-visible changes: 611 612- The idea of a "west installation" has been renamed to "west workspace" in 613 this documentation and in the west API documentation. The new term seems to 614 be easier for most people to work with than the old one. 615- West manifests now support a :ref:`schema version 616 <west-manifest-schema-version>`. 617- The "west config" command can now be run outside of a workspace, e.g. 618 to run ``west config --global section.key value`` to set a configuration 619 option's value globally. 620- There is a new :ref:`west topdir <west-built-in-misc>` command, which 621 prints the root directory of the current west workspace. 622- The ``west -vv init`` command now prints the git operations being performed, 623 and their results. 624- The restriction that no project can be named "manifest" is now enforced; the 625 name "manifest" is reserved for the manifest repository, and is usable as 626 such in commands like ``west list manifest``, instead of ``west list 627 path-to-manifest-repository`` being the only way to say that 628- It's no longer an error if there is no project named "zephyr". This is 629 part of an effort to make west generally usable for non-Zephyr use cases. 630- Various bug fixes. 631 632The developer-visible changes to the :ref:`west-apis` are: 633 634- west.build and west.cmake: deprecated; this is Zephyr-specific functionality 635 and should never have been part of west. Since Zephyr v1.14 LTS relies on it, 636 it will continue to be included in the distribution, but will be removed 637 when that version of Zephyr is obsoleted. 638- west.commands: 639 640 - WestCommand.requires_installation: deprecated; use requires_workspace instead 641 - WestCommand.requires_workspace: new 642 - WestCommand.has_manifest: new 643 - WestCommand.manifest: this is now settable 644- west.configuration: callers can now identify the workspace directory 645 when reading and writing configuration files 646- west.log: 647 648 - msg(): new 649- west.manifest: 650 651 - The module now uses the standard logging module instead of west.log 652 - QUAL_REFS_WEST: new 653 - SCHEMA_VERSION: new 654 - Defaults: removed 655 - Manifest.as_dict(): new 656 - Manifest.as_frozen_yaml(): new 657 - Manifest.as_yaml(): new 658 - Manifest.from_file() and from_data(): these factory methods are more 659 flexible to use and less reliant on global state 660 - Manifest.validate(): new 661 - ManifestImportFailed: new 662 - ManifestProject: semi-deprecated and will likely be removed later. 663 - Project: the constructor now takes a topdir argument 664 - Project.format() and its callers are removed. Use f-strings instead. 665 - Project.name_and_path: new 666 - Project.remote_name: new 667 - Project.sha() now captures stderr 668 - Remote: removed 669 670West now requires Python 3.6 or later. Additionally, some features may rely on 671Python dictionaries being insertion-ordered; this is only an implementation 672detail in CPython 3.6, but it is part of the language specification as of 673Python 3.7. 674 675v0.6.3 676****** 677 678This point release fixes an error in the behavior of the deprecated 679``west.cmake`` module. 680 681v0.6.2 682****** 683 684This point release fixes an error in the behavior of ``west 685update --fetch=smart``, introduced in v0.6.1. 686 687All v0.6.1 users must upgrade. 688 689v0.6.1 690****** 691 692.. warning:: 693 694 Do not use this point release. Make sure to use v0.6.2 instead. 695 696The user-visible features in this point release are: 697 698- The :ref:`west-update` command has a new ``--fetch`` 699 command line flag and ``update.fetch`` :ref:`configuration option 700 <west-config>`. The default value, "smart", skips fetching SHAs and tags 701 which are available locally. 702- Better and more consistent error-handling in the ``west diff``, ``west 703 status``, ``west forall``, and ``west update`` commands. Each of these 704 commands can operate on multiple projects; if a subprocess related to one 705 project fails, these commands now continue to operate on the rest of the 706 projects. All of them also now report a nonzero error code from the west 707 process if any of these subprocesses fails (this was previously not true of 708 ``west forall`` in particular). 709- The :ref:`west manifest <west-built-in-misc>` command also handles errors 710 better. 711- The :ref:`west list <west-built-in-misc>` command now works even when the 712 projects are not cloned, as long as its format string only requires 713 information which can be read from the manifest file. It still fails if the 714 format string requires data stored in the project repository, e.g. if it 715 includes the ``{sha}`` format string key. 716- Commands and options which operate on git revisions now accept abbreviated 717 SHAs. For example, ``west init --mr SHA_PREFIX`` now works. Previously, the 718 ``--mr`` argument needed to be the entire 40 character SHA if it wasn't a 719 branch or a tag. 720 721The developer-visible changes to the :ref:`west-apis` are: 722 723- west.log.banner(): new 724- west.log.small_banner(): new 725- west.manifest.Manifest.get_projects(): new 726- west.manifest.Project.is_cloned(): new 727- west.commands.WestCommand instances can now access the parsed 728 Manifest object via a new self.manifest property during the 729 do_run() call. If read, it returns the Manifest object or 730 aborts the command if it could not be parsed. 731- west.manifest.Project.git() now has a capture_stderr kwarg 732 733 734v0.6.0 735****** 736 737- No separate bootstrapper 738 739 In west v0.5.x, the program was split into two components, a bootstrapper and 740 a per-installation clone. See `Multiple Repository Management in the v1.14 741 documentation`_ for more details. 742 743 This is similar to how Google's Repo tool works, and lets west iterate quickly 744 at first. It caused confusion, however, and west is now stable enough to be 745 distributed entirely as one piece via PyPI. 746 747 From v0.6.x onwards, all of the core west commands and helper classes are 748 part of the west package distributed via PyPI. This eliminates complexity 749 and makes it possible to import west modules from anywhere in the system, 750 not just extension commands. 751- The ``selfupdate`` command still exists for backwards compatibility, but 752 now simply exits after printing an error message. 753- Manifest syntax changes 754 755 - A west manifest file's ``projects`` elements can now specify their fetch 756 URLs directly, like so: 757 758 .. code-block:: yaml 759 760 manifest: 761 projects: 762 - name: example-project-name 763 url: https://github.com/example/example-project 764 765 Project elements with ``url`` attributes set in this way may not also have 766 ``remote`` attributes. 767 - Project names must be unique: this restriction is needed to support future 768 work, but was not possible in west v0.5.x because distinct projects may 769 have URLs with the same final pathname component, like so: 770 771 .. code-block:: yaml 772 773 manifest: 774 remotes: 775 - name: remote-1 776 url-base: https://github.com/remote-1 777 - name: remote-2 778 url-base: https://github.com/remote-2 779 projects: 780 - name: project 781 remote: remote-1 782 path: remote-1-project 783 - name: project 784 remote: remote-2 785 path: remote-2-project 786 787 These manifests can now be written with projects that use ``url`` 788 instead of ``remote``, like so: 789 790 .. code-block:: yaml 791 792 manifest: 793 projects: 794 - name: remote-1-project 795 url: https://github.com/remote-1/project 796 - name: remote-2-project 797 url: https://github.com/remote-2/project 798 799- The ``west list`` command now supports a ``{sha}`` format string key 800 801- The default format string for ``west list`` was changed to ``"{name:12} 802 {path:28} {revision:40} {url}"``. 803 804- The command ``west manifest --validate`` can now be run to load and validate 805 the current manifest file, among other error-handling fixes related to 806 manifest parsing. 807 808- Incompatible API changes were made to west's APIs. Further changes are 809 expected until API stability is declared in west v1.0. 810 811 - The ``west.manifest.Project`` constructor's ``remote`` and ``defaults`` 812 positional arguments are now kwargs. A new ``url`` kwarg was also added; if 813 given, the ``Project`` URL is set to that value, and the ``remote`` kwarg 814 is ignored. 815 816 - ``west.manifest.MANIFEST_SECTIONS`` was removed. There is only one section 817 now, namely ``manifest``. The *sections* kwargs in the 818 ``west.manifest.Manifest`` factory methods and constructor were also 819 removed. 820 821 - The ``west.manifest.SpecialProject`` class was removed. Use 822 ``west.manifest.ManifestProject`` instead. 823 824 825v0.5.x 826****** 827 828West v0.5.x is the first version used widely by the Zephyr Project as part of 829its v1.14 Long-Term Support (LTS) release. The `west v0.5.x documentation`_ is 830available as part of the Zephyr's v1.14 documentation. 831 832West's main features in v0.5.x are: 833 834- Multiple repository management using Git repositories, including self-update 835 of west itself 836- Hierarchical configuration files 837- Extension commands 838 839Versions Before v0.5.x 840********************** 841 842Tags in the west repository before v0.5.x are prototypes which are of 843historical interest only. 844 845.. _Multiple Repository Management in the v1.14 documentation: 846 https://docs.zephyrproject.org/1.14.0/guides/west/repo-tool.html 847 848.. _west v0.5.x documentation: 849 https://docs.zephyrproject.org/1.14.0/guides/west/index.html 850