mirror of
https://github.com/xcat2/xcat-dep.git
synced 2026-09-09 22:46:44 +00:00
b4627bc227
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>