Lines Matching full:manifest
7 manifest files, and the ``west manifest`` command. For API documentation on the
8 ``west.manifest`` module, see :ref:`west-apis-manifest`. For a more general
32 The history of the manifest repository is the line of Git commits which is
39 The commits in the manifest repository (again, for upstream Zephyr this is the
40 zephyr repository itself) each have a manifest file. The manifest file in each
43 diagram. Each dotted line arrow points from a commit in the manifest repository
48 - Projects can be added (like ``P1`` between manifest repository
50 manifest repository commits)
52 - Project and manifest repository histories don't have to move
67 the same time": every manifest file refers to exactly one commit in
69 name as a manifest revision, at the cost of being able to bisect
70 manifest repository history.
72 .. _west-manifest-files:
74 Manifest Files
77 West manifests are YAML files. Manifests have a top-level ``manifest`` section
82 manifest:
90 # configuration related to the manifest repository itself,
96 In YAML terms, the manifest file contains a mapping, with a ``manifest``
100 The manifest contains subsections, like ``defaults``, ``remotes``,
101 ``projects``, and ``self``. In YAML terms, the value of the ``manifest`` key is
124 manifest:
168 .. Note: if you change this example, keep the equivalent manifest below in
173 manifest:
187 In this manifest:
229 reserved values "west" or "manifest". The name must be unique in the
230 manifest file.
244 the manifest is invalid.
282 - Optional. If ``true``, imports projects from manifest files in the
283 given repository into the current manifest. See
284 :ref:`west-manifest-import` for details.
288 :ref:`west-manifest-groups` for details.
293 :ref:`west-manifest-submodules` for details.
316 specified here. Another way to write the same manifest we have been describing
321 manifest:
363 The ``self`` subsection can be used to control the manifest repository itself.
370 manifest:
378 manifest URL, ``https://github.com/zephyrproject-rtos/zephyr``. Since the
393 - Optional. The path ``west init`` should clone the manifest repository
396 If not given, the basename of the path component in the manifest
398 ``https://git.example.com/project-repo``, the manifest repository would
407 importing projects from other files in the manifest repository. See
408 :ref:`west-manifest-import`.
410 .. _west-manifest-schema-version:
415 The ``version`` subsection declares that the manifest file uses features which
416 were introduced in some version of west. Attempts to load the manifest with
424 manifest:
425 # Marks that this file uses version 0.10 of the west manifest
428 # An attempt to load this manifest file with west v0.8.0 will
433 The pykwalify schema :file:`manifest-schema.yml` in the `west source code
434 repository`_ is used to validate the manifest section.
440 about the manifest file features that were introduced in that version.
450 - Initial support for the ``version`` feature. All manifest file features
455 - Support for ``import: path-prefix:`` (:ref:`west-manifest-import-map`)
470 - ``submodules:`` in ``projects:`` (:ref:`west-manifest-submodules`)
471 - ``manifest: group-filter:``, and ``groups:`` in ``projects:``
472 (:ref:`west-manifest-groups`)
477 compatibility. (:ref:`west-manifest-import`,
478 :ref:`west-manifest-import-map`)
492 Versions of west without any new features in the manifest file format do not
495 manifest file format features.
502 If you do not include a ``version`` in your manifest, each new release of west
505 if that version of west is too old to load the manifest.
510 See :ref:`west-manifest-groups`.
517 Projects defined in the west manifest can be *inactive* or *active*. The
521 :ref:`west-manifest-import` in an inactive project will be ignored by west.
525 1. Using the ``manifest.project-filter`` configuration option. If a project is
528 expression in ``manifest.project-filter`` applies to a project, the
538 .. _west-manifest-groups:
544 :ref:`above <west-manifest-files>` to place projects into groups, and to
556 :ref:`west-manifest-import` feature.
561 The ``groups:`` and ``group-filter:`` keys appear in the manifest like this:
565 manifest:
575 ``manifest.project-filter`` configuration option, are inactive.
577 For example, in this manifest fragment:
581 manifest:
615 both your manifest file and :ref:`west-config`.
617 Within a manifest file, ``manifest: group-filter:`` is a YAML list of groups to
621 ``groupA`` is enabled in this manifest fragment:
625 manifest:
629 can be used to override settings in an imported manifest file. See
633 and ``groupB`` are disabled in this manifest fragment:
637 manifest:
647 manifest:
654 In addition to the manifest file, you can control which groups are enabled and
655 disabled using the ``manifest.group-filter`` configuration option. This option
660 ``manifest.group-filter`` to ``+groupA,-groupB`` enables ``groupA``, and
663 The value of the configuration option overrides any data in the manifest file.
664 You can think of this as if the ``manifest.group-filter`` configuration option
665 is appended to the ``manifest: group-filter:`` list from YAML, with "last entry
674 projects. The examples use both ``manifest: group-filter:`` YAML lists and
675 ``manifest.group-filter`` configuration lists, to show how they work together.
682 In all of the examples that follow, the ``manifest.project-filter`` option
688 The entire manifest file is:
692 manifest:
709 The ``manifest.group-filter`` configuration option is not set (you can ensure
710 this by running ``west config -D manifest.group-filter``).
716 Example 2: Disabling one group via manifest
719 The entire manifest file is:
723 manifest:
741 The ``manifest.group-filter`` configuration option is not set (you can ensure
742 this by running ``west config -D manifest.group-filter``).
747 Example 3: Disabling multiple groups via manifest
750 The entire manifest file is:
754 manifest:
772 The ``manifest.group-filter`` configuration option is not set (you can ensure
773 this by running ``west config -D manifest.group-filter``).
781 The entire manifest file is:
785 manifest:
801 The ``manifest.group-filter`` configuration option is set to ``-groupA`` (you
802 can ensure this by running ``west config manifest.group-filter -- -groupA``;
807 ``manifest.group-filter`` configuration option. Project ``bar`` is active
813 The entire manifest file is:
817 manifest:
836 The ``manifest.group-filter`` configuration option is set to ``+groupA`` (you
837 can ensure this by running ``west config manifest.group-filter +groupA``).
839 In this case, ``groupA`` is enabled: the ``manifest.group-filter``
840 configuration option has higher precedence than the ``manifest: group-filter:
841 [-groupA]`` content in the manifest file.
848 The entire manifest file is:
852 manifest:
871 The ``manifest.group-filter`` configuration option is set to
873 manifest.group-filter "+groupA,+groupB"``).
876 configuration value overrides the manifest file for both groups.
883 The entire manifest file is:
887 manifest:
904 The ``manifest.group-filter`` configuration option is set to
906 manifest.group-filter -- "-groupA,-groupB"``).
917 This section provides a simplified description of how the ``manifest:
918 group-filter:`` value behaves when combined with :ref:`west-manifest-import`.
919 For complete details, see :ref:`west-manifest-formal`.
929 - if you only import one manifest, any groups it disables in its
930 ``group-filter`` are also disabled in your manifest
931 - you can override this in your manifest file's ``manifest: group-filter:``
932 value, your workspace's ``manifest.group-filter`` configuration option, or
940 You are using this :file:`parent/west.yml` manifest:
945 manifest:
960 manifest:
970 Only ``child`` and ``project-2`` are active in the resolved manifest.
974 for the resolved manifest is ``[-unstable]``.
979 Example 2: overriding an imported ``group-filter`` via manifest
982 You are using this :file:`parent/west.yml` manifest:
987 manifest:
1003 manifest:
1030 You are using this :file:`parent/west.yml` manifest:
1035 manifest:
1050 manifest:
1066 west config manifest.group-filter +unstable,-optional
1071 ``manifest.group-filter`` configuration option, so the ``unstable`` group is
1079 ``manifest.group-filter`` configuration option is ``[+unstable,-optional]``.
1081 .. _west-manifest-submodules:
1087 <west-manifest-files>` to force ``west update`` to also handle any `Git
1093 manifest:
1114 You can do that with this manifest file:
1118 manifest:
1146 You can do that with this manifest file:
1150 manifest:
1170 West versions v0.13 and later supports this key in the ``manifest: self:``
1178 the corresponding ``west.manifest.Project`` object.
1180 Example manifest fragment:
1184 manifest:
1199 manifest = west.manifest.Manifest.from_file()
1201 foo, bar, baz = manifest.get_projects(['foo', 'bar', 'baz'])
1206 manifest.userdata # 'blub'
1208 .. _west-manifest-import:
1210 Manifest Imports
1214 other manifest files in your :file:`west.yml`. This key can be either a
1219 manifest:
1230 West resolves the final manifest from individual manifest files in this order:
1244 - :ref:`Boolean <west-manifest-import-bool>`
1245 - :ref:`west-manifest-ex1.1`
1246 - :ref:`west-manifest-ex1.2`
1247 - :ref:`west-manifest-ex1.3`
1248 - :ref:`Relative path <west-manifest-import-path>`
1249 - :ref:`west-manifest-ex2.1`
1250 - :ref:`west-manifest-ex2.2`
1251 - :ref:`west-manifest-ex2.3`
1252 - :ref:`Mapping with additional configuration <west-manifest-import-map>`
1253 - :ref:`west-manifest-ex3.1`
1254 - :ref:`west-manifest-ex3.2`
1255 - :ref:`west-manifest-ex3.3`
1256 - :ref:`west-manifest-ex3.4`
1257 - :ref:`Sequence of paths and mappings <west-manifest-import-seq>`
1258 - :ref:`west-manifest-ex4.1`
1259 - :ref:`west-manifest-ex4.2`
1261 A more :ref:`formal description <west-manifest-formal>` of how this works is
1268 :ref:`resolving your manifest <west-manifest-resolve>` to see the final results
1271 .. _west-manifest-import-bool:
1280 ``false`` or missing, it has no effect. For example, this manifest would import
1285 manifest:
1300 manifest:
1305 .. _west-manifest-ex1.1:
1327 ├── west.yml # main manifest importing zephyr/west.yml v1.14.1
1335 manifest:
1363 .. _west-manifest-ex1.2:
1368 This is similar to :ref:`west-manifest-ex1.1`, except we'll use ``revision:
1374 manifest:
1392 This time, whenever you run ``west update``, the special :ref:`manifest-rev
1393 <west-manifest-rev>` branch in the ``zephyr`` repository will be updated to
1397 The contents of :file:`zephyr/west.yml` at the new ``manifest-rev`` will then
1406 ``manifest-rev`` when importing from a project.
1408 You can only import manifest from the file system if they are in your manifest
1409 repository's working tree. See :ref:`west-manifest-ex2.2` for an example.
1411 .. _west-manifest-ex1.3:
1416 This manifest is similar to the one in :ref:`west-manifest-ex1.1`, except it:
1425 manifest:
1442 manifest:
1454 With this manifest file, the project named ``hal_nordic``:
1461 In other words, when your top-level manifest defines a project, like
1467 :file:`zephyr/west.yml` is ignored entirely. See :ref:`west-manifest-resolve`
1472 - update zephyr's ``manifest-rev`` to point at the ``v2.0.0`` tag
1473 - import :file:`zephyr/west.yml` at that ``manifest-rev``
1478 .. _west-manifest-import-path:
1483 The ``import`` value can also be a relative path to a manifest file or a
1484 directory containing manifest files. The path is relative to the root directory
1491 manifest:
1504 - the contents of :file:`project-1/west.yml` at ``manifest-rev``, which points
1509 - YAML files in :file:`submanifests` in your manifest repository,
1512 Notice how ``projects`` imports get data from Git using ``manifest-rev``, while
1514 leaves version control for your manifest repository up to you.
1516 .. _west-manifest-ex2.1:
1521 This is an explicit way to write an equivalent manifest to the one in
1522 :ref:`west-manifest-ex1.1`.
1526 manifest:
1539 This can be useful in practice when the name of the manifest file you want to
1542 .. _west-manifest-ex2.2:
1544 Example 2.2: Downstream with directory of manifest files
1548 that you want to split them up into multiple manifest files, but keep track of
1549 them all in a single manifest repository, like this:
1561 manifest file, :file:`my-repo/west.yml`, in addition to projects in
1570 manifest:
1582 Manifest files are imported in this order during resolution:
1600 in the ``self`` section is processed before the manifest files in ``projects``
1601 and the main manifest file.
1606 usual, see :ref:`west-manifest-resolve` for troubleshooting advice.
1611 .. _west-manifest-ex2.3:
1620 Starting with :ref:`west-manifest-ex2.2`, the CI scripts add a
1626 manifest:
1644 .. _west-manifest-import-map:
1651 - ``file``: Optional. The name of the manifest file or directory to import.
1675 .. _west-manifest-ex3.1:
1680 Here is a pair of manifest files, representing a mainline and a
1683 hosted at ``https://git.example.com/mainline/manifest``.
1688 manifest:
1701 manifest:
1704 url: https://git.example.com/mainline/manifest
1715 An equivalent manifest in a single file would be:
1719 manifest:
1722 url: https://git.example.com/mainline/manifest
1736 manifest would have been imported.
1738 .. _west-manifest-ex3.2:
1749 manifest:
1762 manifest:
1765 url: https://git.example.com/mainline/manifest
1774 An equivalent manifest in a single file would be:
1778 manifest:
1787 url: https://git.example.com/mainline/manifest
1794 .. _west-manifest-ex3.3:
1806 manifest:
1826 manifest:
1829 url: https://git.example.com/mainline/manifest
1836 An equivalent manifest in a single file would be:
1840 manifest:
1853 repo-path: https://git.example.com/mainline/manifest
1858 .. _west-manifest-ex3.4:
1863 You want to import a manifest and its projects, placing everything into a
1866 For example, suppose you want to import this manifest from project ``foo``,
1872 manifest:
1893 You can do this using this manifest:
1897 manifest:
1904 An equivalent manifest in a single file would be:
1909 manifest:
1923 .. _west-manifest-import-seq:
1931 .. _west-manifest-ex4.1:
1933 Example 4.1: Downstream with sequence of manifest files
1936 This example manifest is equivalent to the manifest in
1937 :ref:`west-manifest-ex2.2`, with a sequence of explicitly named files.
1942 manifest:
1953 .. _west-manifest-ex4.2:
1958 This more complicated example shows the order that west imports manifest files:
1963 manifest:
1970 - name: another-manifest-repo
1990 #. files in :file:`another-manifest-repo/submanifests` are last (sorted by file
1993 .. _west-manifest-formal:
1995 Manifest Import Details
1998 This section describes how west resolves a manifest file that uses ``import`` a
2004 The ``import`` key can appear in a west manifest's ``projects`` and ``self``
2009 # Top-level manifest file.
2010 manifest:
2027 west will not import additional manifest data from that project. If
2028 ``self-import`` is missing, no additional files in the manifest repository
2031 The ultimate outcomes of resolving manifest imports are:
2045 #. The top-level manifest file's definitions are handled next.
2048 When an individual ``import`` key refers to multiple manifest files, they are
2052 is a directory), the manifest files it contains are processed in
2057 This process recurses if necessary. E.g., if ``import-1`` produces a manifest
2075 from Git at the latest ``manifest-rev`` revisions in their projects. These
2077 ``west update``. If any ``manifest-rev`` reference is missing or out of date,
2081 Also note that all imported manifests, from the root manifest to the repository
2084 ``manifest-rev`` in the ``baz`` project if :file:`baz/west.yml` defines ``P``,
2085 as well as updating the ``manifest-rev`` branch in the local git clone of
2091 in an imported manifest; you must update this project along with all the others
2104 handling imports are available in the resolved manifest.
2106 If an imported manifest file has a ``west-commands:`` definition in its
2108 available extensions at the time the manifest is imported. They will thus take
2114 The resolved manifest has a ``group-filter`` value which is the result of
2115 concatenating the ``group-filter`` values in the top-level manifest and any
2118 Manifest files which appear earlier in the import order have higher precedence
2124 - the top-level manifest file have group filter ``top-filter``
2148 .. _west-manifest-cmd:
2150 Manifest Command
2153 The ``west manifest`` command can be used to manipulate manifest files.
2157 simple uses. Run ``west manifest --help`` for full details on all options.
2159 .. _west-manifest-resolve:
2164 The ``--resolve`` action outputs a single manifest file equivalent to your
2165 current manifest and all its :ref:`imported manifests <west-manifest-import>`:
2169 west manifest --resolve [-o outfile]
2171 The main use for this action is to see the "final" manifest contents after
2174 To print detailed information about each imported manifest file and how
2175 projects are handled during manifest resolution, set the maximum verbosity
2180 west -v manifest --resolve
2185 The ``--freeze`` action outputs a frozen manifest:
2189 west manifest --freeze [-o outfile]
2191 A "frozen" manifest is a manifest file where every project's revision is a SHA.
2192 You can use ``--freeze`` to produce a frozen manifest that's equivalent to your
2193 current manifest file. The ``-o`` option specifies an output file; if not
2199 The ``--validate`` action either succeeds if the current manifest file is valid,
2204 west manifest --validate
2208 Here, "invalid" means that the syntax of the manifest file doesn't follow the
2211 If your manifest is valid but it's not working the way you want it to, turning
2213 what decisions west made about your manifest, and why:
2217 west -v manifest --validate
2219 .. _west-manifest-path:
2221 Get the manifest path
2224 The ``--path`` action prints the path to the top level manifest file:
2228 west manifest --path