2
0
mirror of https://github.com/xcat2/xcat-dep.git synced 2026-09-30 14:55:17 +00:00

build(xcat-dep): build and publish ipxe-xcat with the x86 boot loaders

mockbuild-all.pl builds ipxe-xcat in every EL profile, riscv64 included,
in the noarch chroot like the other x86 loaders. sbuild-all.pl maps it to
its builder and builds it once on amd64, as an Architecture: all package.

Both manifests list ipxe-xcat wherever they list xnba-undi, so the
repository gate requires it in every EL and Debian repository that
carries the x86 boot loaders. A riscv64 or ppc64le management node serves
those loaders to the x86 nodes of a mixed cluster.
This commit is contained in:
Vinícius Ferrão
2026-09-25 13:15:50 -03:00
parent 9de804526c
commit 99c4120161
4 changed files with 38 additions and 15 deletions
+16 -3
View File
@@ -31,10 +31,11 @@
# 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
# * The noarch boot components (syslinux-xcat, grub2-xcat, elilo-xcat, xnba-undi, ipxe-xcat) 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 x86/EFI loaders; grub2-xcat is config/scripts; ipxe-xcat repackages the iPXE release
# tree), 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
@@ -67,6 +68,7 @@ syslinux-xcat=3.86-2
grub2-xcat=2.12-2
elilo-xcat=3.14-6
xnba-undi=1.21.1-1
ipxe-xcat=2.0.0-1
xcat-genesis-base=2.*
[focal-ppc64el]
@@ -77,6 +79,7 @@ syslinux-xcat=3.86-2
grub2-xcat=2.12-2
elilo-xcat=3.14-6
xnba-undi=1.21.1-1
ipxe-xcat=2.0.0-1
xcat-genesis-base=2.*
[focal-riscv64]
@@ -87,6 +90,7 @@ syslinux-xcat=3.86-2
grub2-xcat=2.12-2
elilo-xcat=3.14-6
xnba-undi=1.21.1-1
ipxe-xcat=2.0.0-1
# ============================ jammy (ubuntu22.04) ============================
[jammy-amd64]
@@ -97,6 +101,7 @@ syslinux-xcat=3.86-2
grub2-xcat=2.12-2
elilo-xcat=3.14-6
xnba-undi=1.21.1-1
ipxe-xcat=2.0.0-1
xcat-genesis-base=2.*
[jammy-ppc64el]
@@ -107,6 +112,7 @@ syslinux-xcat=3.86-2
grub2-xcat=2.12-2
elilo-xcat=3.14-6
xnba-undi=1.21.1-1
ipxe-xcat=2.0.0-1
xcat-genesis-base=2.*
[jammy-riscv64]
@@ -117,6 +123,7 @@ syslinux-xcat=3.86-2
grub2-xcat=2.12-2
elilo-xcat=3.14-6
xnba-undi=1.21.1-1
ipxe-xcat=2.0.0-1
# ============================ noble (ubuntu24.04) ============================
[noble-amd64]
@@ -127,6 +134,7 @@ syslinux-xcat=3.86-2
grub2-xcat=2.12-2
elilo-xcat=3.14-6
xnba-undi=1.21.1-1
ipxe-xcat=2.0.0-1
xcat-genesis-base=2.*
[noble-ppc64el]
@@ -137,6 +145,7 @@ syslinux-xcat=3.86-2
grub2-xcat=2.12-2
elilo-xcat=3.14-6
xnba-undi=1.21.1-1
ipxe-xcat=2.0.0-1
xcat-genesis-base=2.*
[noble-riscv64]
@@ -147,6 +156,7 @@ syslinux-xcat=3.86-2
grub2-xcat=2.12-2
elilo-xcat=3.14-6
xnba-undi=1.21.1-1
ipxe-xcat=2.0.0-1
# ============================ resolute (ubuntu26.04) =========================
[resolute-amd64]
@@ -157,6 +167,7 @@ syslinux-xcat=3.86-2
grub2-xcat=2.12-2
elilo-xcat=3.14-6
xnba-undi=1.21.1-1
ipxe-xcat=2.0.0-1
xcat-genesis-base=2.*
[resolute-ppc64el]
@@ -167,6 +178,7 @@ syslinux-xcat=3.86-2
grub2-xcat=2.12-2
elilo-xcat=3.14-6
xnba-undi=1.21.1-1
ipxe-xcat=2.0.0-1
xcat-genesis-base=2.*
[resolute-riscv64]
@@ -177,6 +189,7 @@ syslinux-xcat=3.86-2
grub2-xcat=2.12-2
elilo-xcat=3.14-6
xnba-undi=1.21.1-1
ipxe-xcat=2.0.0-1
# [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
+11 -9
View File
@@ -412,8 +412,8 @@ my %forcearch_targets = (
arch => 'riscv64',
# x86_64 only, as the mock config admits: syslinux-xcat builds on x86 and ppc64le alone.
noarch_cfg => 'rocky-10-x86_64',
dep_builders => [qw(elilo-xcat grub2-xcat ipmitool-xcat syslinux-xcat goconserver conserver-xcat xnba-undi)],
required => [qw(ipmitool-xcat syslinux-xcat grub2-xcat xnba-undi
dep_builders => [qw(elilo-xcat grub2-xcat ipmitool-xcat syslinux-xcat goconserver conserver-xcat xnba-undi ipxe-xcat)],
required => [qw(ipmitool-xcat syslinux-xcat grub2-xcat xnba-undi ipxe-xcat
perl-IO-Stty perl-HTTP-Async perl-Net-HTTPS-NB)],
},
);
@@ -536,10 +536,11 @@ if (!$skip_build && !$dry_run && -d $run_root) {
remove_tree($run_root);
}
# All dep builders run natively on every arch. xnba-undi and grub2-xcat are noarch packagings of
# committed artifacts (an x86 UNDI ROM / the grub2 resource tarball) with no arch-specific build
# step, so ppc builds them the same as x86 -- no cross-arch import. A forcearch target builds
# only the builders its profile lists; the noarch ones run in the profile's native chroot.
# All dep builders run natively on every arch. xnba-undi, grub2-xcat and ipxe-xcat are noarch
# packagings of committed artifacts (an x86 UNDI ROM / the grub2 resource tarball / the iPXE release
# tree) with no arch-specific build step, so ppc builds them the same as x86 -- no cross-arch
# import. A forcearch target builds only the builders its profile lists; the noarch ones run in
# the profile's native chroot.
# syslinux-xcat is noarch too, and its spec builds on x86 and ppc64le only.
my @dep_builders = (
{ name => 'elilo-xcat', script => "$repo_root/elilo/mockbuild.pl", noarch => 1 },
@@ -549,6 +550,7 @@ my @dep_builders = (
{ name => 'goconserver', script => "$repo_root/goconserver/mockbuild.pl" },
{ name => 'conserver-xcat', script => "$repo_root/conserver/mockbuild.pl" },
{ name => 'xnba-undi', script => "$repo_root/xnba/mockbuild.pl", noarch => 1 },
{ name => 'ipxe-xcat', script => "$repo_root/ipxe-xcat/mockbuild.pl", noarch => 1 },
);
my %profile_builds = map { $_ => 1 } @{ $profile->{dep_builders} };
@@ -1040,11 +1042,11 @@ sub target_profile {
noarch_cfg => $target,
forcearch => 0,
epel => 1,
dep_builders => [qw(elilo-xcat grub2-xcat ipmitool-xcat syslinux-xcat goconserver conserver-xcat xnba-undi)],
dep_builders => [qw(elilo-xcat grub2-xcat ipmitool-xcat syslinux-xcat goconserver conserver-xcat xnba-undi ipxe-xcat)],
# xCAT Requires all of these on every arch, and every one of them builds natively on
# every arch (the noarch deps -- grub2-xcat, xnba-undi -- just repackage committed
# every arch (the noarch deps -- grub2-xcat, xnba-undi, ipxe-xcat -- just repackage committed
# artifacts), so a self-sufficient per-arch build produces the whole set.
required => [qw(ipmitool-xcat syslinux-xcat grub2-xcat xnba-undi
required => [qw(ipmitool-xcat syslinux-xcat grub2-xcat xnba-undi ipxe-xcat
perl-IO-Stty perl-HTTP-Async perl-Net-HTTPS-NB)],
};
}
+8 -1
View File
@@ -61,6 +61,7 @@ elilo-xcat=3.14
goconserver=>= 0.3.3-snap202011021058
grub2-xcat=1.0
ipmitool-xcat=>= 1.8.18-4
ipxe-xcat=2.0.0
syslinux-xcat=>= 6.03-1
xnba-undi=>= 1.21.1-1
perl-HTML-Form=6.07
@@ -75,6 +76,7 @@ elilo-xcat=3.14
goconserver=>= 0.3.3-snap202011021058
grub2-xcat=1.0
ipmitool-xcat=>= 1.8.18-4
ipxe-xcat=2.0.0
syslinux-xcat=>= 6.03-1
xnba-undi=>= 1.21.1-1
perl-HTML-Form=6.07
@@ -89,6 +91,7 @@ elilo-xcat=3.14
goconserver=>= 0.3.3-snap202011021058
grub2-xcat=1.0
ipmitool-xcat=>= 1.8.18-4
ipxe-xcat=2.0.0
syslinux-xcat=>= 6.03-1
xnba-undi=>= 1.21.1-1
perl-HTTP-Async=>= 0.30-3
@@ -103,6 +106,7 @@ elilo-xcat=3.14
goconserver=>= 0.3.3-snap202011021058
grub2-xcat=1.0
ipmitool-xcat=>= 1.8.18-4
ipxe-xcat=2.0.0
syslinux-xcat=>= 6.03-1
xnba-undi=>= 1.21.1-1
perl-HTTP-Async=>= 0.30-3
@@ -117,6 +121,7 @@ elilo-xcat=3.14
goconserver=>= 0.3.3-snap202011021058
grub2-xcat=1.0
ipmitool-xcat=>= 1.8.18-4
ipxe-xcat=2.0.0
syslinux-xcat=>= 6.03-1
xnba-undi=>= 1.21.1-1
perl-Crypt-SSLeay=0.72
@@ -133,6 +138,7 @@ elilo-xcat=3.14
goconserver=>= 0.3.3-snap202011021058
grub2-xcat=1.0
ipmitool-xcat=>= 1.8.18-4
ipxe-xcat=2.0.0
syslinux-xcat=>= 6.03-1
xnba-undi=>= 1.21.1-1
perl-Crypt-SSLeay=0.72
@@ -147,7 +153,7 @@ xCAT-genesis-base=>= 2:2.18.0
# EPEL-fed EL10 sections above in one way (see BUILD.md, "riscv64"): riscv64 has no EPEL, so the
# perl deps EL10 otherwise takes from EPEL are built here too (perl-Crypt-Blowfish ...
# perl-Path-Class below). perl-Path-Class is a build dep of perl-Crypt-SSLeay only. The x86 boot
# loaders (elilo-xcat, syslinux-xcat, xnba-undi) are noarch and are listed like on ppc64le: a
# loaders (elilo-xcat, ipxe-xcat, syslinux-xcat, xnba-undi) are noarch and are listed like on ppc64le: a
# riscv64 management node serves the x86 nodes of a mixed cluster.
# The per-EL perl set is the EL10 one plus perl-HTML-Form: EPEL supplies it on the other
# architectures, nothing supplies it on riscv64, and perl-xCAT requires perl(HTML::Form).
@@ -158,6 +164,7 @@ elilo-xcat=3.14
goconserver=>= 0.3.3-snap202011021058
grub2-xcat=1.0
ipmitool-xcat=>= 1.8.18-4
ipxe-xcat=2.0.0
syslinux-xcat=>= 6.03-1
xnba-undi=>= 1.21.1-1
perl-Crypt-SSLeay=0.72
+3 -2
View File
@@ -17,7 +17,7 @@
# two arches build concurrently on their two hosts, so a per-arch build that also published would
# interleave wipes of the same pool/dists/Release; and a partial or failed build must never reach
# the published repo, nor stale debs accumulate in it (concern #1).
# 3. Per-arch package sets come from the manifest: the x86 boot components (syslinux/elilo/xnba,
# 3. Per-arch package sets come from the manifest: the x86 boot components (syslinux/elilo/xnba/ipxe-xcat,
# Architecture:all) are built once on amd64 (single producer); ppc64el builds only the genuinely
# arch-specific compiled deps (concern #3).
# 4. Any required chroot / package / artifact failure, or any version-pin mismatch, fails the whole
@@ -126,6 +126,7 @@ my %PKG_DIR = (
'grub2-xcat' => 'grub2-xcat',
'elilo-xcat' => 'elilo',
'xnba-undi' => 'xnba',
'ipxe-xcat' => 'ipxe-xcat',
);
# Build the GetOptions map from the shared standard_options() spec (so the flag vocabulary matches
@@ -556,7 +557,7 @@ sub build_one_codename {
for my $pkg (@pkgs) {
my $dir = $PKG_DIR{$pkg}
or die "FATAL: no builder dir mapped for manifest package '$pkg'\n";
# arch:all single-producer packages (grub2-xcat/syslinux-xcat/elilo-xcat/xnba-undi) are built
# arch:all single-producer packages (grub2-xcat/syslinux-xcat/elilo-xcat/xnba-undi/ipxe-xcat) are built
# ONCE on amd64 -- their source is x86-only (syslinux compiles with nasm/gcc-multilib) -- and,
# being Architecture:all, are assembled into every arch's Packages index. They stay REQUIRED in
# the ppc64el manifest so the gate verifies the ppc repo actually carries them, but are NOT