2
0
mirror of https://github.com/xcat2/xcat-dep.git synced 2026-09-12 12:36:23 +00:00

fix(mockbuild-all): build the x86 boot loaders for the riscv64 target

The forcearch riscv64 profile built grub2-xcat but not elilo-xcat,
syslinux-xcat or xnba-undi, and the rocky-10-riscv64-xcat cell did not list
them, so a riscv64 management node could not serve the x86 nodes of a mixed
cluster, unlike a ppc64le one.

Add the three to the profile and the cell, at the pins the EL10 ppc64le cell
uses. They are noarch and are built in the native x86_64 chroot, like
grub2-xcat. syslinux-xcat is marked noarch in the builder table, as its spec
declares, so the forcearch target does not try it in the emulated chroot,
where its ExclusiveArch excludes it. The target is now cross-built on x86_64
only, which the mock config states: a native riscv64 host could not build
syslinux-xcat either.
This commit is contained in:
Vinícius Ferrão
2026-09-08 16:39:20 -03:00
parent aef1d117d5
commit 2b49e07c28
3 changed files with 22 additions and 14 deletions
+3 -1
View File
@@ -4,11 +4,13 @@
# used from the x86_64 hosts that produce the xcat-dep repos; this config includes the same
# template and adds forcearch. There is no EPEL for riscv64, so nothing EPEL-only is reachable
# from this chroot: mockbuild-all.pl builds the EPEL-only perl deps of xCAT for this target.
# The host is x86_64 only: the noarch boot loaders the target ships build in the native
# rocky-10-x86_64 chroot, and syslinux builds on x86 and ppc64le alone.
# See BUILD.md ("riscv64") for the host prerequisites and how mockbuild-all.pl uses it.
include('templates/rocky-10.tpl')
config_opts['root'] = 'rocky-10-riscv64-xcat'
config_opts['description'] = 'Rocky Linux 10 riscv64 (xCAT dependency build, forcearch)'
config_opts['target_arch'] = 'riscv64'
config_opts['legal_host_arches'] = ('x86_64', 'riscv64')
config_opts['legal_host_arches'] = ('x86_64',)
config_opts['forcearch'] = 'riscv64'
+11 -8
View File
@@ -396,17 +396,19 @@ my @build_targets = $target
# What a target builds. The mock-core-configs targets (<os>+epel-<rel>-<arch>) build every
# dep natively on the host arch. The forcearch targets shipped in mock-configs/ cross-build
# another arch that has no EPEL: the x86-only bootloaders are not built for it, the EPEL-only
# perl deps of xCAT are (mockbuild-perl-packages.pl --epel-gap), and the noarch deps are built
# in the native, EPEL-free chroot of the same release (the rpms are identical for every arch
# and an emulated build is an order of magnitude slower). See BUILD.md ("riscv64").
# another arch that has no EPEL: the EPEL-only perl deps of xCAT are built for it
# (mockbuild-perl-packages.pl --epel-gap), and the noarch deps, the x86 boot loaders among them,
# are built in the native, EPEL-free chroot of the same release (the rpms are identical for
# every arch and an emulated build is an order of magnitude slower). See BUILD.md ("riscv64").
my %forcearch_targets = (
'rocky-10-riscv64-xcat' => {
rel => 10,
arch => 'riscv64',
noarch_cfg => "rocky-10-$host_arch",
dep_builders => [qw(grub2-xcat ipmitool-xcat goconserver conserver-xcat)],
required => [qw(ipmitool-xcat grub2-xcat perl-IO-Stty perl-HTTP-Async perl-Net-HTTPS-NB)],
# 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
perl-IO-Stty perl-HTTP-Async perl-Net-HTTPS-NB)],
},
);
@@ -532,11 +534,12 @@ if (!$skip_build && !$dry_run && -d $run_root) {
# 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.
# 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 },
{ name => 'grub2-xcat', script => "$repo_root/grub2-xcat/mockbuild.pl", noarch => 1 },
{ name => 'ipmitool-xcat', script => "$repo_root/ipmitool/mockbuild.pl" },
{ name => 'syslinux-xcat', script => "$repo_root/syslinux/mockbuild.pl" },
{ name => 'syslinux-xcat', script => "$repo_root/syslinux/mockbuild.pl", noarch => 1 },
{ 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 },
+8 -5
View File
@@ -143,18 +143,21 @@ perl-Sys-Virt=11.10.0
xCAT-genesis-base=>= 2:2.18.0
# rocky-10-riscv64-xcat is the forcearch (cross-built) EL10 riscv64 target. It differs from the
# EPEL-fed EL10 sections above in two ways (see BUILD.md, "riscv64"):
# - the x86-only boot components (elilo-xcat, syslinux-xcat, xnba-undi) are not built for it;
# - 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.
# 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
# riscv64 management node serves the x86 nodes of a mixed cluster.
# The per-EL perl set is the EL10 one, so perl-HTML-Form is absent here as well.
# xCAT-genesis-base is deliberately not listed: the riscv64 repo is built with --skip-genesis.
[rocky-10-riscv64-xcat]
conserver-xcat=8.2.1
elilo-xcat=3.14
goconserver=>= 0.3.3-snap202011021058
grub2-xcat=1.0
ipmitool-xcat=>= 1.8.18-4
syslinux-xcat=>= 6.03-1
xnba-undi=>= 1.21.1-1
perl-Crypt-SSLeay=0.72
perl-HTTP-Async=>= 0.30-3
perl-IO-Stty=>= 0.04-5