2
0
mirror of https://github.com/xcat2/xcat-dep.git synced 2026-09-11 20:16:26 +00:00
Files
xcat-dep/conserver
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
..
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"