Name Resolution¶
lbuild manages repositories, modules and options in a tree structure and
serializes identification into unique string using : as hierarchy delimiters.
Any identifier provided via the command line, configuration, repository or
module files use the same resolver, which allows using partially-qualified
identifiers. In addition, globbing for multiple identifiers using fnmatch
semantics is supported.
The following rules for resolving identifiers apply:
- A fully-qualified identifier specifies all parts:
repo:module:option. - A partially-qualified identifier adds fnmatch wildcarts:
*:m.dule:opt*. *wildcarts for entire hierarchies can be ommitted:::option- A special wildcart is
:**, which globs for everything below the current hierarchy level:repo:**selects all inrepo,repo:module:**all inrepo:module, etc. - Wildcarts are resolved in reverse hierarchical order. Therefore,
::optionmay be unique within the context of:module, but not within the entire project. - For accessing direct children, you may specify their name without any
delimiters:
optionwithin the context of:modulewill resolve to:module:option.
Partial identifiers were introduced to reduce verbosity and aid refactoring, it is therefore recommended to:
- Omit the repository name for accessing modules and options within the same repository.
- Accessing a module's options with their name directly.