2
0
mirror of https://github.com/xcat2/xcat-dep.git synced 2026-09-12 12:36:23 +00:00
Files
xcat-dep/debs-manifest.conf
T
Daniel Hilst a2734e73c5 fix(xcat-dep): the grub2-xcat manifest pin is a release behind its changelog
Every Ubuntu build fails its manifest validation:

  [noble-amd64] grub2-xcat: built 2.12-2, manifest pins 2.12-1

Adding the EL10 riscv64 grub2 UEFI image bumped grub2-xcat/debian/changelog to
2.12-2 and left debs-manifest.conf pinning 2.12-1, in all twelve sections. The
package builds; only the pin is wrong.

t/sbuild-all.t compares every non-glob pin with its changelog, and fails on this
one without the change.

Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
2026-09-05 16:42:41 -03:00

188 lines
7.9 KiB
Plaintext

# Per-target required xcat-dep .deb manifest (the Debian/apt analogue of packages-manifest.conf).
#
# One [section] per sbuild-all.pl target, named "<codename>-<arch>" (matches --target). Each entry is
# <binary-package>=<version-pin>
# where <binary-package> is the produced .deb's binary name (or the logical 'xcat-genesis-base',
# which matches the arch-suffixed xcat-genesis-base-amd64 / xcat-genesis-base-ppc64el) and
# <version-pin> is one of:
# - an exact version (e.g. 1.8.18-4) -- the build must produce exactly it;
# - a shell-style glob (e.g. 2.*) -- the built version must match it (* and ?);
# - '*' -- any version accepted.
#
# The pin is matched against the FULL Debian version -- [epoch:]upstream[-revision] -- exactly as it
# appears in the built .deb and in the published Packages index. That is deliberate: a package can
# carry the right upstream version and still be wrong for xCAT, because
# * the debian_revision is the PACKAGING revision (elilo-xcat 3.14-5 vs 3.14-6 are different builds
# of the same upstream 3.14), and
# * the epoch overrides version comparison outright (2:2.18.0 outranks any un-epoched 2.19.0).
# xCAT's own debian/control declares versioned dependencies on these packages -- goconserver
# (>= 0.3.3-snap...), ipmitool-xcat (>= 1.8.17-1), grub2-xcat (>= 2.02-...) -- so an upstream-only pin
# would accept a deb the gate calls good and `apt install xCAT` then refuses. Bump the pin here when
# the in-tree debian/changelog is bumped (the revision is part of the pin now, so a changelog bump
# that only moves the revision must be reflected here too).
#
# Two pins are deliberately NOT fully exact, because their revision is not owned by the checkout:
# * goconserver=0.3.3-snap* -- upstream is pinned exactly; the revision is the CD stamp
# snap<SOURCE_DATE_EPOCH>, which changes every run. The glob still REQUIRES a snap-stamped
# revision, so an unstamped or hand-built deb is rejected.
# * xcat-genesis-base=2.* -- its version is not owned by xcat-dep at all (see the note below);
# and the two arches legitimately differ, since each is converted from its own genesis rpm.
#
# PER-ARCH SETS (review concern #3 -- the arch matrix must be valid):
# * Compiled, arch-specific deps that genuinely build on BOTH arches are listed for amd64 AND
# ppc64el: ipmitool-xcat, conserver-xcat, goconserver (debian/control Architecture: any / *-ppc64el).
# * The noarch boot components (syslinux-xcat, grub2-xcat, elilo-xcat, xnba-undi) are
# Architecture:all: their SOURCE is x86-only (syslinux compiles with nasm/gcc-multilib; elilo/xnba
# are x86/EFI loaders; grub2-xcat is config/scripts), so they are BUILT ONCE on amd64 -- SINGLE
# PRODUCER, concern #3b -- and, being arch:all, assembled into EVERY arch's Packages index. They
# ARE listed for ppc64el too, as REQUIRED-PRESENT: a ppc MN needs them for netboot, so the gate
# must verify the ppc repo carries them (matching the EL manifest and the historical 2.16 ppc dep
# repo, minus the obsolete yaboot-xcat). sbuild-all.pl's build phase SKIPS an Architecture:all
# package on any non-amd64 arch (it is not rebuilt there -- a syslinux build on ppc fails), so
# listing them for ppc64el drives VERIFICATION, not a second build.
# * xcat-genesis-base is arch:all but arch-SPECIFIC content (the netboot image for that arch), so
# each arch produces its own (xcat-genesis-base-<arch>); the finalize step cross-populates both
# into every codename pool for cross-arch netboot (issue #7610). Pinned 2.* -- its Version walks
# with the paired xcat-core (not owned by xcat-dep), exactly as on the EL side. The gate still
# enforces that EXACTLY ONE genesis is present FOR THIS ARCH: the name resolves to
# xcat-genesis-base-<arch> and never borrows the other arch's, and two distinct versions of it in
# one staging dir is a hard error.
#
# sbuild-all.pl reads this file and, per target, builds ONLY the listed packages and then validates
# that EVERY listed package was produced at the pinned version -- any missing or mismatched package
# fails the whole run (zero tolerance; concern #4). The four supported codenames (focal jammy noble
# resolute) each get an amd64, a ppc64el and a riscv64 section.
#
# riscv64 differs from ppc64el in two ways. The x86 boot loaders (syslinux-xcat, elilo-xcat,
# xnba-undi) are NOT listed: a riscv64 node netboots UEFI grub2, exactly as on the EL side, so
# demanding them would gate on packages that node can never use. And xcat-genesis-base is not
# listed: riscv64 Genesis is the OpenEmbedded one, published once into the shared pool, not the
# legacy per-arch netboot image.
# ============================ focal (ubuntu20.04) ============================
[focal-amd64]
ipmitool-xcat=1.8.18-4
conserver-xcat=8.2.1-1
goconserver=0.3.3-snap*
syslinux-xcat=3.86-2
grub2-xcat=2.12-2
elilo-xcat=3.14-6
xnba-undi=1.21.1-1
xcat-genesis-base=2.*
[focal-ppc64el]
ipmitool-xcat=1.8.18-4
conserver-xcat=8.2.1-1
goconserver=0.3.3-snap*
syslinux-xcat=3.86-2
grub2-xcat=2.12-2
elilo-xcat=3.14-6
xnba-undi=1.21.1-1
xcat-genesis-base=2.*
[focal-riscv64]
ipmitool-xcat=1.8.18-4
conserver-xcat=8.2.1-1
goconserver=0.3.3-snap*
grub2-xcat=2.12-2
# ============================ jammy (ubuntu22.04) ============================
[jammy-amd64]
ipmitool-xcat=1.8.18-4
conserver-xcat=8.2.1-1
goconserver=0.3.3-snap*
syslinux-xcat=3.86-2
grub2-xcat=2.12-2
elilo-xcat=3.14-6
xnba-undi=1.21.1-1
xcat-genesis-base=2.*
[jammy-ppc64el]
ipmitool-xcat=1.8.18-4
conserver-xcat=8.2.1-1
goconserver=0.3.3-snap*
syslinux-xcat=3.86-2
grub2-xcat=2.12-2
elilo-xcat=3.14-6
xnba-undi=1.21.1-1
xcat-genesis-base=2.*
[jammy-riscv64]
ipmitool-xcat=1.8.18-4
conserver-xcat=8.2.1-1
goconserver=0.3.3-snap*
grub2-xcat=2.12-2
# ============================ noble (ubuntu24.04) ============================
[noble-amd64]
ipmitool-xcat=1.8.18-4
conserver-xcat=8.2.1-1
goconserver=0.3.3-snap*
syslinux-xcat=3.86-2
grub2-xcat=2.12-2
elilo-xcat=3.14-6
xnba-undi=1.21.1-1
xcat-genesis-base=2.*
[noble-ppc64el]
ipmitool-xcat=1.8.18-4
conserver-xcat=8.2.1-1
goconserver=0.3.3-snap*
syslinux-xcat=3.86-2
grub2-xcat=2.12-2
elilo-xcat=3.14-6
xnba-undi=1.21.1-1
xcat-genesis-base=2.*
[noble-riscv64]
ipmitool-xcat=1.8.18-4
conserver-xcat=8.2.1-1
goconserver=0.3.3-snap*
grub2-xcat=2.12-2
# ============================ resolute (ubuntu26.04) =========================
[resolute-amd64]
ipmitool-xcat=1.8.18-4
conserver-xcat=8.2.1-1
goconserver=0.3.3-snap*
syslinux-xcat=3.86-2
grub2-xcat=2.12-2
elilo-xcat=3.14-6
xnba-undi=1.21.1-1
xcat-genesis-base=2.*
[resolute-ppc64el]
ipmitool-xcat=1.8.18-4
conserver-xcat=8.2.1-1
goconserver=0.3.3-snap*
syslinux-xcat=3.86-2
grub2-xcat=2.12-2
elilo-xcat=3.14-6
xnba-undi=1.21.1-1
xcat-genesis-base=2.*
[resolute-riscv64]
ipmitool-xcat=1.8.18-4
conserver-xcat=8.2.1-1
goconserver=0.3.3-snap*
grub2-xcat=2.12-2
# [shared] is NOT a build target. It describes the ONE pool the OpenEmbedded Genesis release is
# published into (pool/main/xcat-genesis-openembedded), which every suite indexes and which no
# [<codename>-<arch>] section covers. Without it nothing asserted the published pool was COMPLETE:
# its packages were checked only as they were copied, against the release checksums, so a pool that
# lost one afterwards would publish quietly.
#
# The pin tracks the paired xcat-core, like xcat-genesis-base ('2.*'): these are built FROM
# xcat-core, so the version walks with it. A glob, not an EVR floor -- pins in THIS manifest are
# exact-or-glob (version_matches); the '>= epoch:version-release' form is an EL-side feature of
# packages-manifest.conf. The deb names carry the architecture with '_' folded to '-'.
[shared]
xcat-genesis-openembedded-x86=2.*
xcat-genesis-openembedded-x86-64=2.*
xcat-genesis-openembedded-ppc64=2.*
xcat-genesis-openembedded-ppc64le=2.*
xcat-genesis-openembedded-armv7hf=2.*
xcat-genesis-openembedded-aarch64=2.*
xcat-genesis-openembedded-riscv64=2.*