diff --git a/BUILD.md b/BUILD.md index b532328..555655d 100644 --- a/BUILD.md +++ b/BUILD.md @@ -50,6 +50,7 @@ This guide uses the following placeholders consistently: - `/goconserver/mockbuild.pl` - `/conserver/mockbuild.pl` - `/xnba/mockbuild.pl` +- `/ipxe-xcat/mockbuild.pl` - `/mockbuild-perl-packages.pl` - `/buildrpms.pl` — only to build the OS-dependent `xCAT-genesis-base` package (unless `--skip-genesis` is set); the full xCAT core is built separately by the xcat-core pipeline, not here. @@ -103,7 +104,7 @@ Use these flags to skip specific operations: - `--skip-genesis` - Skips the `xCAT-genesis-base` build (`/buildrpms.pl --package xCAT-genesis-base`). - `--skip-xcat-dep` - - Skips non-perl xcat-dep package builders (`elilo`, `grub2-xcat`, `ipmitool-xcat`, `syslinux-xcat`, `goconserver`, `conserver-xcat`, `xnba-undi`). + - Skips non-perl xcat-dep package builders (`elilo`, `grub2-xcat`, `ipmitool-xcat`, `syslinux-xcat`, `goconserver`, `conserver-xcat`, `xnba-undi`, `ipxe-xcat`). - `--skip-perl` - Skips `/mockbuild-perl-packages.pl`. - With any of the three flags above, the run repository, the tarball and the deployed cell keep @@ -459,7 +460,7 @@ missing, and then builds the `[rocky-10-riscv64-xcat]` section of `packages-mani | goconserver | cross-compiled on the host (`GOARCH=riscv64`), packaged with `rpmbuild --target riscv64` | | grub2-xcat (noarch) | built in the native, EPEL-free `rocky-10-x86_64` chroot | | perl list6 + EPEL gap (`--epel-gap`) | `mockbuild-perl-packages.pl --target-arch riscv64 --noarch-mock-cfg rocky-10-x86_64 --epel-gap`: XS modules in the riscv64 chroot, noarch modules in the native chroot | -| elilo-xcat, syslinux-xcat, xnba-undi (noarch) | built in the native `rocky-10-x86_64` chroot, like grub2-xcat: a riscv64 management node serves the x86 nodes of a mixed cluster. The target is cross-built on x86_64 only, as its mock config states | +| elilo-xcat, ipxe-xcat, syslinux-xcat, xnba-undi (noarch) | built in the native `rocky-10-x86_64` chroot, like grub2-xcat: a riscv64 management node serves the x86 nodes of a mixed cluster. The target is cross-built on x86_64 only, as its mock config states | There is no EPEL for riscv64, so the perl deps of xCAT that EL10 otherwise takes from EPEL are built here as well (`--epel-gap` in `mockbuild-perl-packages.pl`: perl-Crypt-Blowfish, @@ -608,16 +609,16 @@ Codename ↔ version (the single supported set — `BuildUtils` is the source of `mk-build-deps`, so version constraints, `a | b` alternatives and arch qualifiers are honoured) are all **fatal** on failure — and since nothing survives the session, a package whose `debian/control` forgets a `Build-Depends` cannot build green on a sibling package's leftovers. -- **Per-arch package sets (`debs-manifest.conf`).** One `[-]` section per target. The - noarch boot components (`syslinux-xcat`/`grub2-xcat`/`elilo-xcat`/`xnba-undi`, `Architecture:all`) - are built ONCE on amd64 — single producer, their source is x86-only — and assembled into every - arch's `Packages` index. They are listed for **ppc64el too, as required-present**, so the gate - verifies the ppc repo actually carries them (a ppc MN needs them for netboot, matching the EL - manifest). `build_one_codename` **skips** an `Architecture:all` package on any non-amd64 arch - (detected via `control_binary_arch`), so ppc64el and riscv64 build only the genuinely - arch-specific compiled deps (`ipmitool-xcat`, `conserver-xcat`, `goconserver`) yet still verify the - boot components they need. The riscv64 sections require the same four boot components as - ppc64el: a riscv64 management node serves the x86 nodes of a mixed cluster. +- **Per-arch package sets (`debs-manifest.conf`).** One `[-]` section per target. + The noarch boot components (`syslinux-xcat`/`grub2-xcat`/`elilo-xcat`/`xnba-undi`/`ipxe-xcat`, + `Architecture:all`) are built ONCE on amd64 — single producer, most of them from x86-only source — + and assembled into every arch's `Packages` index. They are listed for **ppc64el too, as + required-present**, so the gate verifies the ppc repo actually carries them (a ppc MN needs them + for netboot, matching the EL manifest). `build_one_codename` **skips** an `Architecture:all` + package on any non-amd64 arch (detected via `control_binary_arch`), so ppc64el and riscv64 build + only the genuinely arch-specific compiled deps (`ipmitool-xcat`, `conserver-xcat`, `goconserver`) + yet still verify the boot components they need. The riscv64 sections require the same five boot + components as ppc64el: a riscv64 management node serves the x86 nodes of a mixed cluster. - **Fail-hard.** Any required chroot / package / artifact failure, or any version-pin mismatch, fails the whole run non-zero. - **Genesis keeps its maintained packaging.** A native `xcat-genesis-base` deb is INGESTED as-is when @@ -683,7 +684,7 @@ needs no `--mirror`. | ipmitool-xcat, conserver-xcat | `dpkg-buildpackage` in the emulated riscv64 chroot | | goconserver | same chroot, compiled by the Go toolchain the chroot installs for riscv64 | | grub2-xcat (`Architecture:all`) | built once on amd64 and assembled into the riscv64 index; listed in the riscv64 manifest sections as required-present, because a riscv64 management node needs it to netboot | -| syslinux-xcat, elilo-xcat, xnba-undi (`Architecture:all`) | built once on amd64 and assembled into the riscv64 index; required-present like grub2-xcat, because a riscv64 management node serves the x86 nodes of a mixed cluster | +| syslinux-xcat, elilo-xcat, xnba-undi, ipxe-xcat (`Architecture:all`) | built once on amd64 and assembled into the riscv64 index; required-present like grub2-xcat, because a riscv64 management node serves the x86 nodes of a mixed cluster | | xcat-genesis-base | not built: no riscv64 section names it, and the build skips the step when the manifest does not ask for it, so `--skip-genesis` is unnecessary here | The riscv64 ipmitool-xcat deb is installed into the chroot that built it and