mirror of
https://github.com/xcat2/xcat-dep.git
synced 2026-09-12 04:26:25 +00:00
4704e595e9
The per-package builders take the arch of what they build from 'uname -m', which
is wrong for a forcearch mock config such as rocky-10-riscv64-xcat built on an
x86_64 host: the chroot produces riscv64 rpms and the scripts then reject them
("Unexpected RPM arch"). Give every arch-producing builder a --target-arch
option (default: uname -m, so nothing changes for native builds):
- ipmitool/mockbuild.pl, conserver/mockbuild.pl: look for and verify
<target-arch> rpms. ipmitool's install smoke test cannot install a foreign
rpm on the host, so for a cross build it installs the rpm into the build
chroot with mock --install and runs ipmitool-xcat -V there (conserver already
smoke-tests in the chroot).
- goconserver/mockbuild.pl: the binaries are built on the host, so cross-compile
with GOARCH (x86_64 amd64, aarch64 arm64, riscv64 riscv64, ...) and package
with rpmbuild --target <arch>; rpm refuses 'BuildArch: <foreign arch>' on
this host ("No compatible architectures found for build"), so that line is
only emitted for native builds. A cross build cannot install its rpm on the
host either, so the smoke test unpacks it and runs goconserver and congo
through the binfmt handler (qemu-user-static) the forcearch mock builds of
the other deps need anyway.
- mockbuild-perl-packages.pl: --target-arch for the 'native' rpm check and the
default result/log dirs; the 'native' (XS) packages of a cross build are
smoke-tested inside the build chroot (mock --install, then perl -M<module>
there) instead of on the host; --noarch-mock-cfg to build the noarch
packages in a native chroot of the same release instead of the emulated one
(the rpms are identical for every arch, and an emulated perl build is an
order of magnitude slower); and a 'needs' key in the package table: a
package that needs others is built after them, in waves, with their rpms
installed into its chroot via mock --additional-package. Needs outside the
selected set are ignored, so the default list6 build is unchanged (the
chroot provides the module, e.g. from EPEL). This is what lets an EPEL-free
chroot build perl-Crypt-Blowfish on top of our own perl-Crypt-CBC, or
perl-Crypt-SSLeay with perl-Path-Class.
To make the conserver-xcat rpm, run: ./bldconserver.pl The original patches like initscript.patch and initscript1.patch have been replaced with initscript_8.2.1.patch, please follow the steps below to create patch for init script. 1. Copy conserver-8.2.1.tar.gz to a directory, say /root/conserverstart mkdir /root/conservertar cp conserver-8.2.1.tar.gz /root/conserverstart 2. Copy the initscript_8.2.1.patch to the same directory cp initscript_8.2.1.patch /root/conserverstart 3. Uncompress the conserver-8.2.1.tar.gz into two copies: tar zxvf conserver-8.2.1.tar.gz mv conserver-8.2.1 conserver-8.2.1-diffinit tar zxvf conserver-8.2.1.tar.gz 4. Patch the conserver.init with the original patch copied from Git repository cd /root/conservertar cat initscript_8.2.1.patch | /usr/bin/patch -s -p1 --fuzz=0 select conserver-8.2.1-diffinit/contrib/redhat-rpm/conserver.init as the file to patch 5. Update the conserver-8.2.1-diffinit/contrib/redhat-rpm/conserver.init with whatever changes that are needed 6. Generate the new patch: cd /root/conserverstart diff -ruN conserver-8.2.1/contrib/redhat-rpm/conserver.init conserver-8.2.1-diffinit/contrib/redhat-rpm/conserver.init > initscript_8.2.1.patch 7. Copy the new patch to the xcat-dep Git repository and checkin cp initscript_8.2.1.patch ~/xcat/xcat-dep/conserver/ cd ~/xcat/xcat-dep/conserver/ git commit -m "blah blah blah"