Skip to content

Latest commit

 

History

History
88 lines (59 loc) · 4.51 KB

File metadata and controls

88 lines (59 loc) · 4.51 KB

Project Configuration

The [project] section defines metadata and directory layout for an azldev project. It is typically defined in a project-level config file (e.g., base/project.toml) rather than the root azldev.toml.

[project] Field Reference

The following fields are nested under the [project] TOML section:

Field TOML Key Type Required Description
Description description string No Human-readable project description
Log directory log-dir string No Path to the directory where build logs are written (relative to this config file)
Work directory work-dir string No Path to the temporary working directory for build artifacts (relative to this config file)
Output directory output-dir string No Path to the directory where final build outputs (RPMs, SRPMs) are placed (relative to this config file)
Default distro default-distro DistroReference No The default distro and version to use when building components

Note: [default-package-config] and [package-groups] are top-level TOML sections — they are not nested under [project]. They are documented in the sections below.

Directory Paths

The log-dir, work-dir, and output-dir paths are resolved relative to the config file that defines them. These directories are created automatically by azldev as needed.

  • log-dir — build logs are written here (e.g., azldev.log)
  • work-dir — temporary per-component working directories are created under this path during builds (e.g., source preparation, SRPM construction)
  • output-dir — final build artifacts (RPMs, SRPMs) are placed here

Note: Do not edit files under these directories manually — they are managed by azldev and may be overwritten or cleaned at any time.

Default Distro

The default-distro field specifies which distro and version components should be built against by default. This is a distro reference that must point to a distro and version defined elsewhere in the config:

[project]
default-distro = { name = "azurelinux", version = "4.0" }

Components inherit their spec source and build environment from the default distro's configuration unless they override it explicitly. See Configuration Inheritance for details.

Default Package Config

The [default-package-config] section is a top-level TOML section (not nested under [project]). It defines the lowest-priority configuration layer applied to every binary package produced by any component in the project. It is overridden by package groups, component-level defaults, and explicit per-package overrides.

The most common use is to set a project-wide default publish channel:

[default-package-config.publish]
channel = "rpm-base"

See Package Groups for the full resolution order.

Package Groups

The [package-groups.<name>] section is a top-level TOML section (not nested under [project]). It defines named groups of binary packages. Each group lists its members explicitly in the packages field and provides a default-package-config that is applied to all listed packages.

This is currently used to route different types of packages (e.g., -devel, -debuginfo) to different publish channels, though groups can also carry other future configuration.

See Package Groups for the full field reference.

Example

[project]
description = "azurelinux-base"
log-dir = "build/logs"
work-dir = "build/work"
output-dir = "out"
default-distro = { name = "azurelinux", version = "4.0" }

[default-package-config.publish]
channel = "base"

[package-groups.devel-packages]
description = "Development subpackages"
packages = ["curl-devel", "curl-static", "wget2-devel"]

[package-groups.devel-packages.default-package-config.publish]
channel = "devel"

Related Resources