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:
191 In this manifest:
233 reserved values "west" or "manifest". The name must be unique in the
234 manifest file.
252 the manifest is invalid.
290 - Optional. If ``true``, imports projects from manifest files in the
291 given repository into the current manifest. See
292 :ref:`west-manifest-import` for details.
296 :ref:`west-manifest-groups` for details.
301 :ref:`west-manifest-submodules` for details.
324 specified here. Another way to write the same manifest we have been describing
329 manifest:
375 The ``self`` subsection can be used to control the manifest repository itself.
382 manifest:
390 manifest URL, ``https://github.com/zephyrproject-rtos/zephyr``. Since the
405 - Optional. The path ``west init`` should clone the manifest repository
408 If not given, the basename of the path component in the manifest
410 ``https://git.example.com/project-repo``, the manifest repository would
419 importing projects from other files in the manifest repository. See
420 :ref:`west-manifest-import`.
422 .. _west-manifest-schema-version:
427 The ``version`` subsection declares that the manifest file uses features which
428 were introduced in some version of west. Attempts to load the manifest with
436 manifest:
437 # Marks that this file uses version 0.10 of the west manifest
440 # An attempt to load this manifest file with west v0.8.0 will
445 The pykwalify schema :file:`manifest-schema.yml` in the `west source code
446 repository`_ is used to validate the manifest section.
452 about the manifest file features that were introduced in that version.
462 - Initial support for the ``version`` feature. All manifest file features
467 - Support for ``import: path-prefix:`` (:ref:`west-manifest-import-map`)
482 - ``submodules:`` in ``projects:`` (:ref:`west-manifest-submodules`)
483 - ``manifest: group-filter:``, and ``groups:`` in ``projects:``
484 (:ref:`west-manifest-groups`)
489 compatibility. (:ref:`west-manifest-import`,
490 :ref:`west-manifest-import-map`)
508 Versions of west without any new features in the manifest file format do not
511 manifest file format features.
518 If you do not include a ``version`` in your manifest, each new release of west
521 if that version of west is too old to load the manifest.
526 See :ref:`west-manifest-groups`.
533 Projects defined in the west manifest can be *inactive* or *active*. The
537 :ref:`west-manifest-import` in an inactive project will be ignored by west.
541 1. Using the ``manifest.project-filter`` configuration option. If a project is
544 expression in ``manifest.project-filter`` applies to a project, the
554 .. _west-manifest-groups:
560 :ref:`above <west-manifest-files>` to place projects into groups, and to
572 :ref:`west-manifest-import` feature.
577 The ``groups:`` and ``group-filter:`` keys appear in the manifest like this:
581 manifest:
591 ``manifest.project-filter`` configuration option, are inactive.
593 For example, in this manifest fragment:
597 manifest:
631 both your manifest file and :ref:`west-config`.
633 Within a manifest file, ``manifest: group-filter:`` is a YAML list of groups to
637 ``groupA`` is enabled in this manifest fragment:
641 manifest:
645 can be used to override settings in an imported manifest file. See
649 and ``groupB`` are disabled in this manifest fragment:
653 manifest:
663 manifest:
670 In addition to the manifest file, you can control which groups are enabled and
671 disabled using the ``manifest.group-filter`` configuration option. This option
676 ``manifest.group-filter`` to ``+groupA,-groupB`` enables ``groupA``, and
679 The value of the configuration option overrides any data in the manifest file.
680 You can think of this as if the ``manifest.group-filter`` configuration option
681 is appended to the ``manifest: group-filter:`` list from YAML, with "last entry
690 projects. The examples use both ``manifest: group-filter:`` YAML lists and
691 ``manifest.group-filter`` configuration lists, to show how they work together.
698 In all of the examples that follow, the ``manifest.project-filter`` option
704 The entire manifest file is:
708 manifest:
725 The ``manifest.group-filter`` configuration option is not set (you can ensure
726 this by running ``west config -D manifest.group-filter``).
732 Example 2: Disabling one group via manifest
735 The entire manifest file is:
739 manifest:
757 The ``manifest.group-filter`` configuration option is not set (you can ensure
758 this by running ``west config -D manifest.group-filter``).
763 Example 3: Disabling multiple groups via manifest
766 The entire manifest file is:
770 manifest:
788 The ``manifest.group-filter`` configuration option is not set (you can ensure
789 this by running ``west config -D manifest.group-filter``).
797 The entire manifest file is:
801 manifest:
817 The ``manifest.group-filter`` configuration option is set to ``-groupA`` (you
818 can ensure this by running ``west config manifest.group-filter -- -groupA``;
823 ``manifest.group-filter`` configuration option. Project ``bar`` is active
829 The entire manifest file is:
833 manifest:
852 The ``manifest.group-filter`` configuration option is set to ``+groupA`` (you
853 can ensure this by running ``west config manifest.group-filter +groupA``).
855 In this case, ``groupA`` is enabled: the ``manifest.group-filter``
856 configuration option has higher precedence than the ``manifest: group-filter:
857 [-groupA]`` content in the manifest file.
864 The entire manifest file is:
868 manifest:
887 The ``manifest.group-filter`` configuration option is set to
889 manifest.group-filter "+groupA,+groupB"``).
892 configuration value overrides the manifest file for both groups.
899 The entire manifest file is:
903 manifest:
920 The ``manifest.group-filter`` configuration option is set to
922 manifest.group-filter -- "-groupA,-groupB"``).
933 This section provides a simplified description of how the ``manifest:
934 group-filter:`` value behaves when combined with :ref:`west-manifest-import`.
935 For complete details, see :ref:`west-manifest-formal`.
945 - if you only import one manifest, any groups it disables in its
946 ``group-filter`` are also disabled in your manifest
947 - you can override this in your manifest file's ``manifest: group-filter:``
948 value, your workspace's ``manifest.group-filter`` configuration option, or
956 You are using this :file:`parent/west.yml` manifest:
961 manifest:
976 manifest:
986 Only ``child`` and ``project-2`` are active in the resolved manifest.
990 for the resolved manifest is ``[-unstable]``.
995 Example 2: overriding an imported ``group-filter`` via manifest
998 You are using this :file:`parent/west.yml` manifest:
1003 manifest:
1019 manifest:
1046 You are using this :file:`parent/west.yml` manifest:
1051 manifest:
1066 manifest:
1082 west config manifest.group-filter +unstable,-optional
1087 ``manifest.group-filter`` configuration option, so the ``unstable`` group is
1095 ``manifest.group-filter`` configuration option is ``[+unstable,-optional]``.
1097 .. _west-manifest-submodules:
1103 <west-manifest-files>` to force ``west update`` to also handle any `Git
1109 manifest:
1130 You can do that with this manifest file:
1134 manifest:
1162 You can do that with this manifest file:
1166 manifest:
1186 West versions v0.13 and later supports this key in the ``manifest: self:``
1194 the corresponding ``west.manifest.Project`` object.
1196 Example manifest fragment:
1200 manifest:
1215 manifest = west.manifest.Manifest.from_file()
1217 foo, bar, baz = manifest.get_projects(['foo', 'bar', 'baz'])
1222 manifest.userdata # 'blub'
1224 .. _west-manifest-import:
1226 Manifest Imports
1230 other manifest files in your :file:`west.yml`. This key can be either a
1235 manifest:
1246 West resolves the final manifest from individual manifest files in this order:
1260 - :ref:`Boolean <west-manifest-import-bool>`
1261 - :ref:`west-manifest-ex1.1`
1262 - :ref:`west-manifest-ex1.2`
1263 - :ref:`west-manifest-ex1.3`
1264 - :ref:`Relative path <west-manifest-import-path>`
1265 - :ref:`west-manifest-ex2.1`
1266 - :ref:`west-manifest-ex2.2`
1267 - :ref:`west-manifest-ex2.3`
1268 - :ref:`Mapping with additional configuration <west-manifest-import-map>`
1269 - :ref:`west-manifest-ex3.1`
1270 - :ref:`west-manifest-ex3.2`
1271 - :ref:`west-manifest-ex3.3`
1272 - :ref:`west-manifest-ex3.4`
1273 - :ref:`Sequence of paths and mappings <west-manifest-import-seq>`
1274 - :ref:`west-manifest-ex4.1`
1275 - :ref:`west-manifest-ex4.2`
1277 A more :ref:`formal description <west-manifest-formal>` of how this works is
1284 :ref:`resolving your manifest <west-manifest-resolve>` to see the final results
1287 .. _west-manifest-import-bool:
1296 ``false`` or missing, it has no effect. For example, this manifest would import
1301 manifest:
1316 manifest:
1321 .. _west-manifest-ex1.1:
1343 ├── west.yml # main manifest importing zephyr/west.yml v1.14.1
1351 manifest:
1379 .. _west-manifest-ex1.2:
1384 This is similar to :ref:`west-manifest-ex1.1`, except we'll use ``revision:
1390 manifest:
1408 This time, whenever you run ``west update``, the special :ref:`manifest-rev
1409 <west-manifest-rev>` branch in the ``zephyr`` repository will be updated to
1413 The contents of :file:`zephyr/west.yml` at the new ``manifest-rev`` will then
1422 ``manifest-rev`` when importing from a project.
1424 You can only import manifest from the file system if they are in your manifest
1425 repository's working tree. See :ref:`west-manifest-ex2.2` for an example.
1427 .. _west-manifest-ex1.3:
1432 This manifest is similar to the one in :ref:`west-manifest-ex1.1`, except it:
1441 manifest:
1458 manifest:
1470 With this manifest file, the project named ``hal_nordic``:
1477 In other words, when your top-level manifest defines a project, like
1483 :file:`zephyr/west.yml` is ignored entirely. See :ref:`west-manifest-resolve`
1488 - update zephyr's ``manifest-rev`` to point at the ``v2.0.0`` tag
1489 - import :file:`zephyr/west.yml` at that ``manifest-rev``
1494 .. _west-manifest-import-path:
1499 The ``import`` value can also be a relative path to a manifest file or a
1500 directory containing manifest files. The path is relative to the root directory
1507 manifest:
1520 - the contents of :file:`project-1/west.yml` at ``manifest-rev``, which points
1525 - YAML files in :file:`submanifests` in your manifest repository,
1528 Notice how ``projects`` imports get data from Git using ``manifest-rev``, while
1530 leaves version control for your manifest repository up to you.
1532 .. _west-manifest-ex2.1:
1537 This is an explicit way to write an equivalent manifest to the one in
1538 :ref:`west-manifest-ex1.1`.
1542 manifest:
1555 This can be useful in practice when the name of the manifest file you want to
1558 .. _west-manifest-ex2.2:
1560 Example 2.2: Downstream with directory of manifest files
1564 that you want to split them up into multiple manifest files, but keep track of
1565 them all in a single manifest repository, like this:
1577 manifest file, :file:`my-repo/west.yml`, in addition to projects in
1586 manifest:
1598 Manifest files are imported in this order during resolution:
1616 in the ``self`` section is processed before the manifest files in ``projects``
1617 and the main manifest file.
1622 usual, see :ref:`west-manifest-resolve` for troubleshooting advice.
1627 .. _west-manifest-ex2.3:
1636 Starting with :ref:`west-manifest-ex2.2`, the CI scripts add a
1642 manifest:
1660 .. _west-manifest-import-map:
1667 - ``file``: Optional. The name of the manifest file or directory to import.
1691 .. _west-manifest-ex3.1:
1696 Here is a pair of manifest files, representing a mainline and a
1699 hosted at ``https://git.example.com/mainline/manifest``.
1704 manifest:
1717 manifest:
1720 url: https://git.example.com/mainline/manifest
1731 An equivalent manifest in a single file would be:
1735 manifest:
1738 url: https://git.example.com/mainline/manifest
1752 manifest would have been imported.
1754 .. _west-manifest-ex3.2:
1765 manifest:
1778 manifest:
1781 url: https://git.example.com/mainline/manifest
1790 An equivalent manifest in a single file would be:
1794 manifest:
1803 url: https://git.example.com/mainline/manifest
1810 .. _west-manifest-ex3.3:
1822 manifest:
1842 manifest:
1845 url: https://git.example.com/mainline/manifest
1852 An equivalent manifest in a single file would be:
1856 manifest:
1869 repo-path: https://git.example.com/mainline/manifest
1874 .. _west-manifest-ex3.4:
1879 You want to import a manifest and its projects, placing everything into a
1882 For example, suppose you want to import this manifest from project ``foo``,
1888 manifest:
1909 You can do this using this manifest:
1913 manifest:
1920 An equivalent manifest in a single file would be:
1925 manifest:
1939 .. _west-manifest-import-seq:
1947 .. _west-manifest-ex4.1:
1949 Example 4.1: Downstream with sequence of manifest files
1952 This example manifest is equivalent to the manifest in
1953 :ref:`west-manifest-ex2.2`, with a sequence of explicitly named files.
1958 manifest:
1969 .. _west-manifest-ex4.2:
1974 This more complicated example shows the order that west imports manifest files:
1979 manifest:
1986 - name: another-manifest-repo
2006 #. files in :file:`another-manifest-repo/submanifests` are last (sorted by file
2009 .. _west-manifest-formal:
2011 Manifest Import Details
2014 This section describes how west resolves a manifest file that uses ``import`` a
2020 The ``import`` key can appear in a west manifest's ``projects`` and ``self``
2025 # Top-level manifest file.
2026 manifest:
2043 west will not import additional manifest data from that project. If
2044 ``self-import`` is missing, no additional files in the manifest repository
2047 The ultimate outcomes of resolving manifest imports are:
2061 #. The top-level manifest file's definitions are handled next.
2064 When an individual ``import`` key refers to multiple manifest files, they are
2068 is a directory), the manifest files it contains are processed in
2073 This process recurses if necessary. E.g., if ``import-1`` produces a manifest
2091 from Git at the latest ``manifest-rev`` revisions in their projects. These
2093 ``west update``. If any ``manifest-rev`` reference is missing or out of date,
2097 Also note that all imported manifests, from the root manifest to the repository
2100 ``manifest-rev`` in the ``baz`` project if :file:`baz/west.yml` defines ``P``,
2101 as well as updating the ``manifest-rev`` branch in the local git clone of
2107 in an imported manifest; you must update this project along with all the others
2120 handling imports are available in the resolved manifest.
2122 If an imported manifest file has a ``west-commands:`` definition in its
2124 available extensions at the time the manifest is imported. They will thus take
2130 The resolved manifest has a ``group-filter`` value which is the result of
2131 concatenating the ``group-filter`` values in the top-level manifest and any
2134 Manifest files which appear earlier in the import order have higher precedence
2140 - the top-level manifest file have group filter ``top-filter``
2164 .. _west-manifest-cmd:
2166 Manifest Command
2169 The ``west manifest`` command can be used to manipulate manifest files.
2173 simple uses. Run ``west manifest --help`` for full details on all options.
2175 .. _west-manifest-resolve:
2180 The ``--resolve`` action outputs a single manifest file equivalent to your
2181 current manifest and all its :ref:`imported manifests <west-manifest-import>`:
2185 west manifest --resolve [-o outfile]
2187 The main use for this action is to see the "final" manifest contents after
2190 To print detailed information about each imported manifest file and how
2191 projects are handled during manifest resolution, set the maximum verbosity
2196 west -v manifest --resolve
2201 The ``--freeze`` action outputs a frozen manifest:
2205 west manifest --freeze [-o outfile]
2207 A "frozen" manifest is a manifest file where every project's revision is a SHA.
2208 You can use ``--freeze`` to produce a frozen manifest that's equivalent to your
2209 current manifest file. The ``-o`` option specifies an output file; if not
2215 The ``--validate`` action either succeeds if the current manifest file is valid,
2220 west manifest --validate
2224 Here, "invalid" means that the syntax of the manifest file doesn't follow the
2227 If your manifest is valid but it's not working the way you want it to, turning
2229 what decisions west made about your manifest, and why:
2233 west -v manifest --validate
2235 .. _west-manifest-path:
2237 Get the manifest path
2240 The ``--path`` action prints the path to the top level manifest file:
2244 west manifest --path