Package Repositories

Repositories have the following basic file structure:



Any category must be listed in profiles/categories and contain a metadata.yaml file.

Package Directories

Package directories must be in a subdirectory of a category and their directory name should be the same as the base name of the package files (excluding version).


├── files
│   └── some-extra-file.txt
├── Manifest
├── metadata.yaml
├── example-package-1.0.pybuild
└── example-package-1.1.yaml

The Manifest file is optional, but is required to contain a manifest entry for each source file listed in SRC_URI (i.e. only optional for pybuilds without sources).

metadata.yaml is optional.

One or more package files must be included. These files must begin with the package name, followed by a hyphen, then the package version, and end in either the .yaml or .pybuild extension. For details on the content of packages, see Package Files.

Optionally, extra files can be distributed with the package in the files directory. These should be small, plaintext files such as patch files, and can be referred to in installation scripts via the FILESDIR attribute.

Profiles Directory

The files in profiles are optional, except for repo_name.




A newlline-separated list of architectures. An architecture may refer to a game-engine variant or an operating system, and is used to distinguish configurations where a package may be stable when used in the context of one, but unstable in the context of another.


A newline-separated list of categories. These determine which directories in the root of the repository are considered categories containing packages. Directories not listed in this file will not be detected as containing packages.


A yaml file containing a mapping from license groups to a whitespace-separated list of license names. Each group can be referenced within ACCEPT_LICENSE by prefixing it with an @, and they also reference each other using the same method.


A package.mask file which applies regardless of profile


A yaml file containing profile declarations. See Profiles.


A file containing a single line with the name of this repository


A file describing the global use flags, containing a mapping of use flag names to descriptions


A file describing global use flags which have their values tied to packages. Contains a mapping of use flag names to package atoms.


A directory containing USE_EXPAND descriptor files. Each file has the same form as use.yaml.

Additionally, there are a number of files related to specific profiles. See Profiles.

Metadata Directory

The metadata directory is optional




Defines maintainer groups


See layout.conf


See GLEP 42, noting that news files are in yaml format rather than XML. Specification for the files can be found here (TODO: Rustdoc), and the directory structure follows GLEP 42.