2
0
mirror of https://github.com/xcat2/xcat-dep.git synced 2026-09-21 08:33:21 +00:00
Files
xcat-dep/debs-manifest.conf
T
Daniel Hilst b4627bc227 feat(xcat-dep): rework the Ubuntu dep build as testable Perl (sbuild-all.pl)
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>
2026-08-10 18:55:29 -03:00

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.*