Package groups let you apply shared configuration to named sets of binary packages. They are defined under [package-groups.<name>] in the TOML configuration.
Package groups are evaluated at build time, after the binary RPMs are produced. They are analogous to component groups, which apply shared configuration to sets of components.
| Field | TOML Key | Type | Required | Description |
|---|---|---|---|---|
| Description | description |
string | No | Human-readable description of this group |
| Packages | packages |
string array | No | Explicit list of binary package names that belong to this group |
| Default package config | default-package-config |
PackageConfig | No | Configuration inherited by all packages listed in this group |
The packages field is an explicit list of binary package names (as they appear in the RPM Name tag) that belong to this group. Membership is determined by exact name match — no glob patterns or wildcards are supported.
[package-groups.devel-packages]
description = "Development subpackages"
packages = ["libcurl-devel", "curl-static", "wget2-devel"]
[package-groups.debug-packages]
description = "Debug info and source packages"
packages = ["curl-debuginfo", "curl-debugsource", "wget2-debuginfo"]Note: A package name may appear in at most one group. Listing the same name in two groups produces a validation error.
The [package-groups.<name>.default-package-config] section defines the configuration applied to all packages matching this group.
| Field | TOML Key | Type | Required | Description |
|---|
| Publish settings | publish | PublishConfig | No | Publishing settings for matched packages |
| Field | TOML Key | Type | Required | Description |
|---|---|---|---|---|
| Channel | channel |
string | No | Publish channel for this package. Use "none" to signal to downstream tooling that this package should not be published. |
When determining the effective config for a binary package, azldev applies config layers in this order — later layers override earlier ones:
- Project
default-package-config— lowest priority; applies to all packages in the project - Package group — the group (if any) whose
packageslist contains the package name - Component
default-package-config— applies to all packages produced by that component - Component
packages.<name>— highest priority; exact per-package override
Note: Each package name may appear in at most one group. Listing the same name in two groups produces a validation error.
# Set a project-wide default channel
[default-package-config.publish]
channel = "rpm-base"
[package-groups.devel-packages]
description = "Development subpackages"
packages = ["libcurl-devel", "curl-static", "wget2-devel"]
[package-groups.devel-packages.default-package-config.publish]
channel = "rpm-build-only"
[package-groups.debug-packages]
description = "Debug info and source"
packages = [
"libcurl-debuginfo",
"libcurl-minimal-debuginfo",
"curl-debugsource",
"wget2-debuginfo",
"wget2-debugsource",
"wget2-libs-debuginfo"
]
[package-groups.debug-packages.default-package-config.publish]
channel = "rpm-debug"- Project Configuration — top-level
default-package-configandpackage-groupsfields - Components — per-component
default-package-configandpackagesoverrides - Configuration System — inheritance and merge behavior