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