You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Øyvind Rønningstad fc278d4fbe Add test for using "revision: HEAD~0" in manifests 2 days ago
.github/workflows treewide: make v3.8 the minimum supported Python 4 weeks ago
src/west configuration: fix error handling of keys missing a '.' 1 week ago
tests Add test for using "revision: HEAD~0" in manifests 2 days ago
.gitignore .gitignore: add .dir-locals.el 2 years ago
LICENSE Add setuptools integration. 4 years ago
MAINTAINERS.rst MAINTAINERS.rst: update 'cutting a release branch' 1 year ago tree-wide: move CLI into new package 3 years ago
README.rst README.rst: master/main fixes 1 year ago treewide: make v3.8 the minimum supported Python 4 weeks ago
tox.ini tox: fix mypy 1 year ago


This is the Zephyr RTOS meta tool, ``west``.


Using pip::

pip3 install west

(Use ``pip3 uninstall west`` to uninstall it.)

Basic Usage

West lets you manage multiple Git repositories under a single directory using a
single file, called the *west manifest file*, or *manifest* for short.
By default the manifest file is named ``west.yml``.
You use ``west init`` to set up this directory, then ``west update`` to fetch
and/or update the repositories named in the manifest.

By default, west uses `upstream Zephyr's manifest file
<>`_, but west
doesn't care if the manifest repository is a Zephyr tree or not.

For more details, see `Multiple Repository Management
<>`_ in the
west documentation.

Example usage using the upstream manifest file::

mkdir zephyrproject && cd zephyrproject
west init
west update

What just happened:

- ``west init`` clones the upstream *west manifest* repository, which in this
case is the zephyr repository. The manifest repository contains ``west.yml``,
a YAML description of the Zephyr installation, including Git repositories and
other metadata.

- ``west update`` clones the other repositories named in the manifest file,
creating working trees in the installation directory ``zephyrproject``.

Use ``west init -m`` to specify another manifest repository. Use ``--mr`` to
use a revision to inialize from; if not given, the remote's default branch is used.
Use ``--mf`` to use a manifest file other than ``west.yml``.

Additional Commands

West has multiple sub-commands. After running ``west init``, you can
run them from anywhere under ``zephyrproject``.

For a list of available commands, run ``west -h``. Get help on a
command with ``west <command> -h``.

West is extensible: you can add new commands to west without modifying its
source code. See `Extensions
<>`_ in the
documentation for details.

Running the Tests

First, install tox::

# macOS, Windows
pip3 install tox

# Linux
pip3 install --user tox

Then, run the test suite locally from the top level directory::


See the tox configuration file, tox.ini, for more details.

Hacking on West

Installing from Source

The `wheel`_ package is required to install west from source. See "Installing
Wheel" below if you don't have ``wheel`` installed.

To build the west wheel file::

# macOS, Linux
python3 bdist_wheel

# Windows
py -3 bdist_wheel

This will create a file named ``dist/west-x.y.z-py3-none-any.whl``,
where ``x.y.z`` is the current version in

To install the wheel::

pip3 install -U dist/west-x.y.z-py3-none-any.whl

You can ``pip3 uninstall west`` to remove this wheel before re-installing the
version from PyPI, etc.

Editable Install

To run west "live" from the current source code tree, run this command from the
top level directory in the west repository::

pip3 install -e .

This is useful if you are actively working on west and don't want to re-package
and install a wheel each time you run it.

Installing Wheel

On macOS and Windows, you can install wheel with::

pip3 install wheel

That also works on Linux, but you may want to install wheel from your
system package manager instead -- e.g. if you installed pip from your
system package manager. The wheel package is likely named something
like ``python3-wheel`` in that case.

.. _wheel: