mirror of
https://github.com/xcat2/xcat-dep.git
synced 2026-09-21 08:33:21 +00:00
b4627bc227
The Ubuntu/Debian dependency build shipped as three bash scripts (build-dep-debs.sh, build-apt-repo.sh, mk-dep-chroots.sh) whose review (PR #63) surfaced correctness problems: partial/stale output could be published, the rpm->deb genesis conversion dropped the maintained package semantics (Depends/Breaks/Replaces + maintainer scripts), the arch matrix was invalid (x86-only syslinux/elilo/xnba treated as ppc64el packages, and Architecture:all packages with no single producer), several required failures exited zero, and the build/repo scripts disagreed on their staging path and codename set (focal missing from the assembler). Rewrite it as proper, unit-tested Perl mirroring the EL side (mockbuild-all.pl / MockBuildUtils.pm / <dep>/mockbuild.pl / t/*.t / packages-manifest.conf), sharing one CLI vocabulary: - BuildUtils.pm: shared, testable helpers + the canonical CLI spec, plus the Debian-specific helpers (out-of-tree changelog stamping, genesis control preservation, deb inspection, cross-arch genesis provisioning). - sbuild-all.pl: the orchestrator, absorbing all three shell scripts. Builds + validates into a fresh per-arch staging tree and only (re)assembles the published apt repo from validated staging -- so partial/failed output never ships and stale debs never accumulate. Auto-initializes the per-codename sbuild chroots on first run. Fails the whole run non-zero on any missing chroot/package/artifact or version-pin mismatch. - <dep>/sbuild.pl x7: per-package builders that drive each package's MAINTAINED debian/ in the matching chroot (never re-implemented), so the converted/built packages keep their control metadata and maintainer scripts. - debs-manifest.conf: per-[<codename>-<arch>] required set + version pins, encoding the per-arch package sets (x86 boot components built once on amd64 as the single producer; ppc64el builds only the arch-specific compiled deps). - t/sbuild-all.t: fixture tests for every pure helper. - goconserver/make_deb.sh: pin the upstream SHA instead of cloning a moving branch, so every matrix cell builds the same source (reproducible). Codename set unified across build, assembly, chroots and docs (focal IS supported). BUILD.md documents the new flow. Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
101 lines
3.8 KiB
Plaintext
101 lines
3.8 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 upstream version (e.g. 1.8.18) -- the build must produce exactly it;
|
|
# - a shell-style glob (e.g. 2.*) -- the built upstream version must match it (* and ?);
|
|
# - '*' -- any version accepted.
|
|
# Only the UPSTREAM version is matched, never the Debian revision (which carries the -snap<ts>.<n> CD
|
|
# stamp and the per-codename build). Bump an exact pin here when the in-tree debian/changelog upstream
|
|
# version is bumped.
|
|
#
|
|
# 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 x86 boot components are Architecture:all but their SOURCE builds x86-only bootloader
|
|
# binaries (syslinux) or are x86/EFI loaders (elilo, xnba) -- they are built ONCE on amd64 and,
|
|
# being arch:all, assembled into every arch's Packages index. They are NOT built on ppc64el
|
|
# (a syslinux build on ppc is meaningless / fails). This makes each output file SINGLE-PRODUCER
|
|
# (concern #3b): the arch:all debs have exactly one builder (amd64).
|
|
# * grub2-xcat is Architecture:all (config/scripts) -> single amd64 producer, installable everywhere.
|
|
# * 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.
|
|
#
|
|
# 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 and a ppc64el section.
|
|
|
|
# ============================ focal (ubuntu20.04) ============================
|
|
[focal-amd64]
|
|
ipmitool-xcat=1.8.18
|
|
conserver-xcat=8.2.1
|
|
goconserver=0.3.3
|
|
syslinux-xcat=3.86
|
|
grub2-xcat=2.12
|
|
elilo-xcat=3.14
|
|
xnba-undi=1.21.1
|
|
xcat-genesis-base=2.*
|
|
|
|
[focal-ppc64el]
|
|
ipmitool-xcat=1.8.18
|
|
conserver-xcat=8.2.1
|
|
goconserver=0.3.3
|
|
xcat-genesis-base=2.*
|
|
|
|
# ============================ jammy (ubuntu22.04) ============================
|
|
[jammy-amd64]
|
|
ipmitool-xcat=1.8.18
|
|
conserver-xcat=8.2.1
|
|
goconserver=0.3.3
|
|
syslinux-xcat=3.86
|
|
grub2-xcat=2.12
|
|
elilo-xcat=3.14
|
|
xnba-undi=1.21.1
|
|
xcat-genesis-base=2.*
|
|
|
|
[jammy-ppc64el]
|
|
ipmitool-xcat=1.8.18
|
|
conserver-xcat=8.2.1
|
|
goconserver=0.3.3
|
|
xcat-genesis-base=2.*
|
|
|
|
# ============================ noble (ubuntu24.04) ============================
|
|
[noble-amd64]
|
|
ipmitool-xcat=1.8.18
|
|
conserver-xcat=8.2.1
|
|
goconserver=0.3.3
|
|
syslinux-xcat=3.86
|
|
grub2-xcat=2.12
|
|
elilo-xcat=3.14
|
|
xnba-undi=1.21.1
|
|
xcat-genesis-base=2.*
|
|
|
|
[noble-ppc64el]
|
|
ipmitool-xcat=1.8.18
|
|
conserver-xcat=8.2.1
|
|
goconserver=0.3.3
|
|
xcat-genesis-base=2.*
|
|
|
|
# ============================ resolute (ubuntu26.04) =========================
|
|
[resolute-amd64]
|
|
ipmitool-xcat=1.8.18
|
|
conserver-xcat=8.2.1
|
|
goconserver=0.3.3
|
|
syslinux-xcat=3.86
|
|
grub2-xcat=2.12
|
|
elilo-xcat=3.14
|
|
xnba-undi=1.21.1
|
|
xcat-genesis-base=2.*
|
|
|
|
[resolute-ppc64el]
|
|
ipmitool-xcat=1.8.18
|
|
conserver-xcat=8.2.1
|
|
goconserver=0.3.3
|
|
xcat-genesis-base=2.*
|