2
0
mirror of https://github.com/xcat2/xcat-dep.git synced 2026-09-09 14:36:43 +00:00
Files
Daniel Hilst c808e06da3 fix(xcat-dep): address code review — run lock, loud tree wipes, wire tested genesis copier, dedupe pool, honest Release arches
Review follow-up for the Ubuntu sbuild matrix:

- Add a fail-fast exclusive flock over the whole run (<output-root>/.sbuild-all.lock,
  file-scoped handle) so two overlapping runs can't corrupt the shared staging/apt
  tree -- this is the root of the observed 'remove_tree .../staging/<cn>/<arch>:
  Directory not empty' (an NFS silly-rename from a concurrent run).
- wipe_tree(): remove_tree that captures {error} and dies loud, so an ENOTEMPTY no
  longer carps-and-continues leaving stale debs; used for all staging/pool/dists wipes.
- Wire the tested, hash-based cross_copy_genesis_deb into build_genesis (was a naive
  glob+copy, so the unit-tested stale-dropping copier was dead code); remove the
  genuinely-unused deb_snap_version/rewrite_changelog_top helpers + their subtests
  (compiled deps intentionally ship their tracked changelog version).
- Dedupe assemble_apt on binary Package+Architecture (keep highest via
  dpkg --compare-versions) so a double-produced genesis can't land two versions in
  the pool, independent of the --skip-genesis contract.
- Derive Release Architectures from the arches actually staged (non-empty
  binary-<arch>/Packages), not a hard-coded 'amd64 ppc64el'.
- goconserver: guard 'go mod init' when a go.mod exists (+ TODO to commit go.sum for
  the pinned SHA). Accept-and-ignore the unused per-package --log-dir/--build-number/
  --skip-install flags (documented). Remove orphaned make_deb.sh dispatchers
  (build-debs-all, build.sh, ipmitool/build.sh) + update the READMEs.

perl -c clean; prove t/sbuild-all.t: 71/71.

Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
2026-08-12 11:49:54 -03:00

55 lines
2.7 KiB
Plaintext
Executable File

Build Notes
ipmitool-xcat is architecture specific and needs to be built separately on x86_64 and ppc64le
RPM Option #1 Run the script bldipmi.pl
1) yum install openssl-devel rpm-build autoconf automake libtool ncurses-devel readline-devel
2) Update "release" variable in "bldipmi.pl" if generating a new version of the RPM
3) Run "./bldipmi.pl" which creates:
/tmp/build/<os>/<arch>/ipmitool-xcat-<version>.<arch>.rpm
RPM Option #2 Use the manual steps listed below:
1) Download ipmitool-1.8.11.tar.gz from https://xcat.svn.sourceforge.net/svnroot/xcat/xcat-dep/trunk/ipmitool/ipmitool-1.8.11.tar.gz to /tmp/ipmitool directory.
2) cd /tmp/ipmitool
3) gunzip ipmitool-1.8.11.tar.gz
4) tar xvf ipmitool-1.8.11.tar
5) Copy ipmitool.spec to /opt/freeware/src/packages/SPECS/
6) tar cvf ipmitool-1.8.11.tar ipmitool-1.8.11
7) gzip ipmitool-1.8.11.tar
8) Copy ipmitool-1.8.11.tar.gz to /opt/freeware/src/packages/SOURCES
9) Copy ipmitool-config.h.in.patch, ipmitool-imbapi.patch , and ipmitool-ipmievd.patch to /usr/src/packages/SOURCES
10) cd /usr/src/packages/SPECS
11) Run "rpm -bb ipmitool.spec", which creates:
/opt/freeware/src/packages/RPMS/ppc/ipmitool-1.8.11-1.aix5.3.ppc.rpm
DEB Option #1
The Ubuntu/Debian build is now driven by the top-level sbuild-all.pl orchestrator, which builds
each package inside the matching <codename>-<arch>-sbuild chroot (build-deps installed in the
chroot automatically). The former ./make_deb.sh has been removed.
1) git clone https://github.com/xcat2/xcat-dep.git; cd xcat-dep
2) Build every package for a codename: ./sbuild-all.pl --arch amd64 --dists noble
or this package alone: ./ipmitool/sbuild.pl --codename noble --arch amd64 --result-dir <dir>
3) Generates ipmitool-xcat_<version>_<arch>.deb into --result-dir
4) Use debian/changelog file to update release version
NOTE #1
HOW TO CREATE THESE PATCHES
1) cd /tmp/ipmitool-1.8.11
2) mkdir a (this directory contains the original file)
3) Copy original file to "a" subdirectory
4) Repeat above for directory "b" (this directory contains the changed file)
5) Copy changed file to "b" subdirectory
6) cd /tmp/ipmitool-1.8.11
7) diff -uNr a b > ipmitool.patch
NOTE #2
ENABLE THE SSL
Before running the build operation, the openssl-devel should be installed on the build env to make sure the ssl can be enabled for the generated ipmitool package.
You can run the 'ldd ipmitool' to see whether the 'libcrypto.so.x' has been added as a dependency to check whether the ssl has been enabled.
Note #3
On RHEL 7.1 ppc64le, probably because of the beta version of toolchain, needs to add "--build=powerpc64le-redhat-linux-gnu" with the ./configure in ipmitool.spec