refactor(meta): centralize category/distro SPOTs

categories.yml moves from roles/ to the repository-root meta/, joining packages.yml. utils/roles/categories.py owns its location plus the tree-walking helpers that were stranded in entity/name.py, so no caller spells the path or duplicates the lookup.

meta/distros.yml becomes the SPOT for every distribution: os_family, Galaxy platform name, dev-environment base image, and the pkgmgr/pkgmgr-virgin/environment reference templates. It replaces seven scattered copies (DISTRO_FAMILY, VALID_DISTROS, _DISTROS, _CANONICAL_PLATFORMS, two shell arrays, a Makefile literal). INFINITO_DISTROS is no longer a static default but generated by utils/env/handlers/infinito/distros.py; the shell consumers read it through the env layer.

Drops dead CLI surface found along the way: --categories-file and --roles-dir on the provision CLI plus three unused parameters of generate_dynamic_inventory, and the positional roles_file of the invokable categories command.

tests/lint/repository/test_distros_spot.py pins the copies that cannot call the SPOT (workflow literals, docs table) and forbids composing a pkgmgr reference outside it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
kevinveenbirkenbachandClaude Opus 5 committed 2026-07-28 16:15:56 +02:00
1 parent d576797296
commit ebd7d2e72b
47 files changed
+740 -258

No files matched your search

+9 -4
View File
@@ -1,16 +1,21 @@
#!/usr/bin/env bash
#
# Decide which distros the latest-push CI run should cover. If the
# pushed commit carries a `vX.Y.Z` annotated tag, run every distro in
# `ALL_DISTROS`; otherwise pick one at random. Emits both
# `is_version` and `distros` to GITHUB_OUTPUT.
# pushed commit carries a `vX.Y.Z` annotated tag, run every declared
# distro; otherwise pick one at random. Emits both `is_version` and
# `distros` to GITHUB_OUTPUT. The distro set comes from INFINITO_DISTROS,
# which the env layer generates from the meta/distros.yml SPOT.
#
# Usage:
# pick_distro.sh
# (reads GITHUB_SHA from env; writes to GITHUB_OUTPUT)
set -euo pipefail
ALL_DISTROS=(arch debian ubuntu fedora centos)
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../../.." && pwd)"
# shellcheck source=scripts/meta/env/load.sh
source "${REPO_ROOT}/scripts/meta/env/load.sh"
: "${INFINITO_DISTROS:?INFINITO_DISTROS must be resolved by scripts/meta/env/load.sh}"
read -r -a ALL_DISTROS <<<"${INFINITO_DISTROS}"
version_tag="$(
git tag --points-at "${GITHUB_SHA}" |