2
0
mirror of https://github.com/xcat2/xcat-dep.git synced 2026-09-12 12:36:23 +00:00
Commit Graph

25 Commits

Author SHA1 Message Date
Daniel Hilst b72139c18c refactor(xcat-dep): make each <dep>/sbuild.pl a true per-package builder
The per-package <dep>/sbuild.pl were generic wrappers that shelled out to each
package's make_deb.sh, so a package's build brain was split across two files and
package-specific fixes (e.g. goconserver's Go toolchain) landed in make_deb.sh
instead of the builder -- inconsistent with the EL side, where <dep>/mockbuild.pl
IS the per-package builder.

Make each <dep>/sbuild.pl own its build (mirroring <dep>/mockbuild.pl), absorbing
its make_deb.sh (source prep, patches, toolchain, dpkg-buildpackage), and remove
all seven make_deb.sh. The common chroot orchestration -- ephemeral schroot session,
apt update, build-dep install, out-of-tree copy, SOURCE_DATE_EPOCH, deb collection +
host-side verification -- moves into BuildUtils::build_deb_in_chroot; each builder
supplies only its package-specific recipe (passed base64-encoded to avoid quoting
interplay through schroot).

Also make the older Ubuntu codenames buildable:
- goconserver: install a pinned modern Go (1.25.12) in the build -- focal/jammy ship
  a Go too old to even auto-switch toolchains, and goconserver's pinned deps need
  Go >= 1.25 (it is a static CGO-free binary, so the pinned toolchain is portable and
  reproducible across codenames).
- ipmitool + goconserver: lower debian/compat 13 -> 12 and Build-Depends debhelper
  (>= 12), since Ubuntu 20.04 (focal) ships debhelper 12; compat 12 also builds cleanly
  on newer codenames.

Validated: all recipe shapes build green through the new path -- tarball
(ipmitool@focal), git-clone+pinned-Go (goconserver@focal), tarball+patches
(syslinux@noble), in-place (grub2-xcat), in-place+custom-rules (xnba); 80/80 unit
tests still pass.

Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
2026-08-11 13:12:59 -03:00
Daniel Hilst f6693ca06a fix(xcat-dep): sbuild.pl verifies debs land on the host after the chroot build
Each <dep>/sbuild.pl copies the built .deb(s) to --result-dir from INSIDE the
schroot session. That only reaches the host when --result-dir is on a path
bind-mounted into the chroot (the shared /opt/xcat-ci-shared tree, as the CI
uses). A mis-configured result-dir (e.g. a chroot-local /tmp) would let the
build "succeed" yet leave nothing on the host -- a silent no-output. Verify
host-side after the session that the .deb(s) are actually present and fail
loud with a pointed message otherwise (consistent with the fail-hard design).

Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
2026-08-10 19:03:21 -03:00
Daniel Hilst b4627bc227 feat(xcat-dep): rework the Ubuntu dep build as testable Perl (sbuild-all.pl)
The Ubuntu/Debian dependency build shipped as three bash scripts
(build-dep-debs.sh, build-apt-repo.sh, mk-dep-chroots.sh) whose review
(PR #63) surfaced correctness problems: partial/stale output could be
published, the rpm->deb genesis conversion dropped the maintained package
semantics (Depends/Breaks/Replaces + maintainer scripts), the arch matrix
was invalid (x86-only syslinux/elilo/xnba treated as ppc64el packages, and
Architecture:all packages with no single producer), several required
failures exited zero, and the build/repo scripts disagreed on their staging
path and codename set (focal missing from the assembler).

Rewrite it as proper, unit-tested Perl mirroring the EL side
(mockbuild-all.pl / MockBuildUtils.pm / <dep>/mockbuild.pl / t/*.t /
packages-manifest.conf), sharing one CLI vocabulary:

- BuildUtils.pm: shared, testable helpers + the canonical CLI spec, plus the
  Debian-specific helpers (out-of-tree changelog stamping, genesis control
  preservation, deb inspection, cross-arch genesis provisioning).
- sbuild-all.pl: the orchestrator, absorbing all three shell scripts. Builds
  + validates into a fresh per-arch staging tree and only (re)assembles the
  published apt repo from validated staging -- so partial/failed output never
  ships and stale debs never accumulate. Auto-initializes the per-codename
  sbuild chroots on first run. Fails the whole run non-zero on any missing
  chroot/package/artifact or version-pin mismatch.
- <dep>/sbuild.pl x7: per-package builders that drive each package's
  MAINTAINED debian/ in the matching chroot (never re-implemented), so the
  converted/built packages keep their control metadata and maintainer scripts.
- debs-manifest.conf: per-[<codename>-<arch>] required set + version pins,
  encoding the per-arch package sets (x86 boot components built once on amd64
  as the single producer; ppc64el builds only the arch-specific compiled deps).
- t/sbuild-all.t: fixture tests for every pure helper.
- goconserver/make_deb.sh: pin the upstream SHA instead of cloning a moving
  branch, so every matrix cell builds the same source (reproducible).

Codename set unified across build, assembly, chroots and docs (focal IS
supported). BUILD.md documents the new flow.

Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
2026-08-10 18:55:29 -03:00
Daniel Hilst a2378ba780 build: Make builds deterministic
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.
2026-06-20 17:28:16 -03:00
Daniel Hilst 19c65dbec5 fix(deb): Port syslinux, elilo, grub2-xcat to modern Ubuntu toolchains
syslinux 3.86: add GCC 10+ -fcommon, GCC 15 -Wno-error flags, glibc
sysmacros.h include, vpd.c pointer fix, python2 menugen skip.

elilo-xcat: three patches for GCC 15 (bool keyword, StrnCpy conflict
with gnu-efi 4.0) and binutils 2.46 (objcopy efi-app format removed).
Bump debhelper compat 5→10, fix changelog maintainer emails.

grub2-xcat: bump DH_COMPAT 5→8, add make_deb.sh.
2026-06-20 17:28:16 -03:00
Daniel Hilst Selli e15a2e62d8 fix: Fix elilo-xcat build in EL9
Signed-off-by: Daniel Hilst Selli <392820+dhilst@users.noreply.github.com>
2026-04-13 16:00:19 -03:00
Daniel Hilst Selli fdf8393a2b fix: Add scripts & patches for building in mock for EL10
Signed-off-by: Daniel Hilst Selli <392820+dhilst@users.noreply.github.com>
2026-03-13 07:20:46 -03:00
Mark Gurevich ea2636ff93 Build elilo-xcat 3.14-6 to include elilo.x86.efi 2021-05-06 16:15:42 -04:00
cxhong 6867291fdd missing elilo-x64.efi binary file in the deb package 2020-12-01 15:16:29 -05:00
cxhong 593f81ffe4 Check in dependents for building elilo-xcat deb packages 2020-11-06 09:45:39 -05:00
cxhong 3cf4f08b2d build new rpm for rhels 2020-07-10 15:13:42 -04:00
cxhong 6367a856e6 add new patch 2020-06-26 15:10:20 -04:00
cxhong c6ac80c7f6 Add elilo-big-bzimage-limit.patch 2020-06-26 15:01:43 -04:00
immarvin e31c2089b9 fix defect #4436 [dev] no elilo-x64.efi in elilo-xcat_3.14-4_all.deb
Former-commit-id: eb36fece54010f62ffe36d553b56bf620b05e685
2014-11-27 00:38:53 -08:00
immarvin 47d1f22ed5 update version&release of elilo since the arch has been changed to all
Former-commit-id: 569e3bbf7cd2eccdf1432e0edf3fbb467d81dc45
2014-11-14 00:48:34 -08:00
immarvin 7694e6ea40 modify the xnba to be arch independent package to support mixed cluster
Former-commit-id: 091f169d329e3193253d2fff8ea8003bf0421d63
2014-11-12 00:27:20 -08:00
xq2005 bb3e2fbc6d change the Maintainer to xCAT when building dependecy packages on ubuntu
Former-commit-id: aedd3c83a50b1ef980fb56f33fed3f5308e9b5ef
2013-06-26 07:41:45 +00:00
xq2005 544cc81678 do not signature the changefile and dsc file
Former-commit-id: 35a3a07da986e5cfc7aa6c32904262ff811c2660
2013-02-20 08:48:23 +00:00
arifali c361736952 elilo-xcat: add patch so that the Makefile.defaults is pointing to /usr/lib in ubuntu/debian for gnuefi
Former-commit-id: b6d89ab464b9b3713243693dadb2438970724852
2012-05-14 21:36:39 +00:00
arifali 7438530668 added elilo deb packaging
Former-commit-id: c64ae0e105c3a2f758ba018e1ee2817c3a724460
2012-05-13 19:54:00 +00:00
jbjohnso aac3a2d30b Bump elilo-xcat version number due to bad build floating around with -3. Remove ambiguity and upgrade the users of the bad -3 build
Former-commit-id: 6ad11e181cd266140dd686b48f11439458efd625
2012-02-25 17:08:04 +00:00
jbjohnso 0756b9f07b Fix slight mistake in elilo-xcat spec file
Former-commit-id: 1b87b380ba6fc9ff6ed163e485beb476eef5cf47
2011-12-15 18:59:36 +00:00
jbjohnso cdea944d09 Add a '%N' to elilo
Former-commit-id: 395b0dd95036aa3554d56720836c496a620d5dc0
2011-09-29 19:42:03 +00:00
jbjohnso dee2ca7bc9 Add '%M' to power BOOTIF
Former-commit-id: b73dcada300ada234033e8178a0ee47499df7af5
2011-09-13 20:23:57 +00:00
jbjohnso 85250e697d Add elilo to xcat-dep
Fix description of the esxboot-xcat rpm



Former-commit-id: db0724ce46de43cc48f3400eb9e8bbca9c7ea97d
2011-08-19 18:25:10 +00:00