2
0
mirror of https://github.com/xcat2/xcat-dep.git synced 2026-09-12 04:26:25 +00:00
Files
xcat-dep/conserver
Vinícius Ferrão 4704e595e9 build(mockbuild): let the per-package builders produce another arch (forcearch)
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.
2026-08-25 18:30:13 -03:00
..
2026-06-20 17:28:16 -03:00
2026-06-20 17:28:16 -03:00
2017-06-14 15:30:01 +08:00

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"