Port SOURCE_DATE_EPOCH patterns from xcat-core to all xcat-dep build
scripts. RPM and Debian packages now produce identical output given
the same Gitepoch timestamp, regardless of build host or time.
EL (RPM) changes:
- mockbuild-all.pl: --build-timestamp flag, deterministic run_id,
tar --sort/--owner/--group/--mtime, createrepo --revision
- All mockbuild.pl: SOURCE_DATE_EPOCH cascade (CLI > Gitepoch > git > time),
deterministic mock config with SOURCE_DATE_EPOCH in chroot env,
RPM macros for timestamp clamping and fixed buildhost
- goconserver: -trimpath -buildvcs=false, canonical rpmbuild path
- xnba: canonical rpmbuild path
- syslinux: ZERO_AR_DATE=1 in mock env
Ubuntu (Debian) changes:
- All make_deb.sh: SOURCE_DATE_EPOCH fallback from Gitepoch
- goconserver: deterministic SNAP_TS and changelog from epoch,
-trimpath -buildvcs=false in debian/rules
- syslinux: -fdebug-prefix-map for path-independent debug info
- build-apt-repo.sh: gzip -n, Release Date: from SOURCE_DATE_EPOCH
Verified: 31/33 package artifacts produce identical SHA256 hashes
across independent builds. 2 syslinux sub-packages (devel,
debugsource) have known limitations from upstream build system.
OpenSSL 3.x made the DH struct opaque. Replace direct dh->p/dh->g
member access with DH_set0_pqg() behind a version guard so older
OpenSSL (< 1.1.0) keeps the original code path.
OpenSSL 3.x removed <openssl/md2.h> but keeps MD2_Init as a
deprecated shim in libcrypto. Add AC_CHECK_HEADER([openssl/md2.h])
inside the existing AC_CHECK_LIB block so HAVE_CRYPTO_MD2 is only
defined when both the function and header are available.
Create debian/ directory and make_deb.sh for building goconserver
as a .deb package. Clones upstream, removes etcd backend, builds
with CGO_ENABLED=0 for static linking, packages via dpkg-buildpackage.
Tested on Ubuntu 22.04, 24.04, and 26.04.
The perl builder died on missing source tarballs with no download
attempt. Source tarballs are not committed to git and must be
pre-downloaded. Add auto-download from the Source0 URL in the spec
when a tarball is missing, and apply the same mock config resolution
fix for AlmaLinux/Rocky builders.
Auto-detection used OS ID directly (e.g. almalinux+epel-10-ppc64le)
but mock configs use short forms (alma+epel-10-ppc64le). Add
resolve_mock_cfg helper that tries the full ID first, then falls
back to known short forms.
The smoke test previously required the IPMI probe to fail, which
breaks on any build host with a BMC. Allow rc=0 when hardware is
present; only fail on unexpected error output.
Clone goconserver from upstream master (v0.3.3), initialize Go
modules, and compile both server and client binaries with
CGO_ENABLED=0 for static linking. The etcd storage backend is
removed before building because its dependencies are incompatible
with modern Go modules; xCAT only uses file-based console storage.
v0.3.3 removes RC4 and 3DES ciphers from the TLS configuration.
Package the existing pre-built xnba.kpxe and xnba.efi binaries into
an xnba-undi RPM via rpmbuild. These are iPXE-based network boot
agents that ship as pre-compiled firmware blobs.
EL10 replaces ISC DHCP with Kea, which ships in the base OS repos.
Remove the rpms-dhcp clone, build, and collection logic along with
all related CLI options and the parse_target_rel helper. Also add
goconserver to the dep_builders list and remove stale xCAT3 fallback
paths from resolve_xcat_source.