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

796 Commits

Author SHA1 Message Date
Vinícius Ferrão fd0cffadac docs(genesis): describe staged package rollout 2026-08-22 02:15:04 -03:00
Vinícius Ferrão 6e31a24c30 test(genesis): keep legacy packages available 2026-08-22 02:14:26 -03:00
Vinícius Ferrão 6516f29423 fix(genesis): stage OpenEmbedded packages separately 2026-08-22 02:14:17 -03:00
Vinícius Ferrão 4f38261407 test(genesis): protect deployed release packages 2026-08-22 01:35:48 -03:00
Vinícius Ferrão 2531e9f579 docs(genesis): clarify release publication 2026-08-22 01:34:32 -03:00
Vinícius Ferrão 853847ab39 ci(genesis): test OpenEmbedded packages 2026-08-22 01:33:30 -03:00
Vinícius Ferrão 79cf9add2a fix(build): preserve source epoch failures 2026-08-22 01:33:01 -03:00
Vinícius Ferrão a54f7bc3ea test(genesis): cover DEB package transitions 2026-08-22 01:31:36 -03:00
Vinícius Ferrão be73af9799 fix(genesis): replace legacy DEB packages 2026-08-22 01:31:36 -03:00
Vinícius Ferrão d201f5c0f5 test(genesis): inspect package install hooks 2026-08-22 01:31:36 -03:00
Vinícius Ferrão 6597def239 fix(genesis): harden package install hooks 2026-08-22 01:31:36 -03:00
Vinícius Ferrão b7197aab0f test(genesis): cover release qualifiers 2026-08-22 01:31:36 -03:00
Vinícius Ferrão 7ac007d545 fix(genesis): accept valid release filenames 2026-08-22 01:31:36 -03:00
Vinícius Ferrão c71b04344e fix(genesis): require reproducible archive tooling 2026-08-22 01:31:36 -03:00
Vinícius Ferrão 7763a03efd test(genesis): reject changed release packages 2026-08-22 01:25:58 -03:00
Vinícius Ferrão 779f5f7b21 fix(genesis): pin verified release checksums 2026-08-22 01:25:39 -03:00
Vinícius Ferrão 23d7cbf5dc test(build): cover repository paths with spaces 2026-08-22 01:23:10 -03:00
Vinícius Ferrão a8b30e0ecd fix(build): handle repository paths with spaces 2026-08-22 01:23:00 -03:00
Vinícius Ferrão df481887ca test(genesis): reject partial repository releases 2026-08-22 01:22:33 -03:00
Vinícius Ferrão fc11b981ab fix(genesis): require complete repository releases 2026-08-22 01:22:06 -03:00
Vinícius Ferrão c0f3c3e073 test(genesis): build complete release fixtures 2026-08-22 01:21:24 -03:00
Vinícius Ferrão 49048459e1 test(genesis): cover package build umasks 2026-08-22 01:20:32 -03:00
Vinícius Ferrão d4e0d6c390 fix(genesis): normalize package build modes 2026-08-22 01:20:07 -03:00
Vinícius Ferrão c42e6b92ee test(genesis): cover inaccessible build cwd 2026-08-22 00:27:12 -03:00
Vinícius Ferrão 4d0ee7d5f1 fix(genesis): tolerate inaccessible build cwd 2026-08-22 00:27:12 -03:00
Vinícius Ferrão faa72c14aa test(genesis): cover isolated build tmpdir 2026-08-21 10:45:31 -03:00
Vinícius Ferrão e3ff2eb1cf fix(genesis): isolate OpenEmbedded tmpdir 2026-08-21 10:44:42 -03:00
Vinícius Ferrão 6e499cd77b test(genesis): remove placeholder assertions 2026-08-21 09:46:01 -03:00
Vinícius Ferrão 98ee9edbfe test(genesis): cover dirty release sources 2026-08-21 09:38:57 -03:00
Vinícius Ferrão a388bdacb5 docs(build): list Genesis skip option 2026-08-21 09:38:56 -03:00
Vinícius Ferrão 87c769304a fix(genesis): reject untracked release sources 2026-08-21 09:38:56 -03:00
Vinícius Ferrão 57f0db1ed3 docs(genesis): record package transition gate 2026-08-21 09:35:39 -03:00
Vinícius Ferrão f8adc37a89 fix(build): preserve basename failure status 2026-08-21 09:33:15 -03:00
Vinícius Ferrão ed1d72bc77 fix(genesis): make file listing scalar-safe 2026-08-21 09:33:14 -03:00
Vinícius Ferrão d0cee4f005 docs(genesis): document release packaging 2026-08-21 09:27:05 -03:00
Vinícius Ferrão acc972d524 test(build): cover Genesis release consumers 2026-08-21 09:25:49 -03:00
Vinícius Ferrão df43878111 feat(build): consume Genesis package releases 2026-08-21 09:21:33 -03:00
Vinícius Ferrão badcaedef0 test(genesis): cover OpenEmbedded packages 2026-08-21 09:11:01 -03:00
Vinícius Ferrão 063ffc7724 fix(genesis): verify source package identity 2026-08-21 09:10:51 -03:00
Vinícius Ferrão f909033b10 feat(genesis): package OpenEmbedded exports 2026-08-21 09:07:02 -03:00
Daniel Hilst 587a9ead70 Merge pull request #61 from VersatusHPC/master
Build xcat-dep for multiple targets, rh8, rh9, rh10 and SUSE
2026-07-16 15:33:17 -03:00
Daniel Hilst 99d2000c28 Merge pull request #3 from VersatusHPC/feat/ci-x86-targets
Feat build xcat-dep for multiple targets Ubuntu, EL, SUSE
2026-07-10 11:04:14 -03:00
Daniel Hilst ec3c8f71e7 build(xcat-dep): vendor build source tarballs to avoid upstream URL dependency
Commit the upstream source tarballs the mock builders consume so a build never
has to fetch them from the network -- offline/reproducible builds, and
resilience to upstream URL rot for these older releases:
  - ipmitool/ipmitool-1.8.18.tar.gz  (re-normalized to the release tarball)
  - syslinux/syslinux-6.03.tar.xz
  - perl-Crypt-SSLeay/Crypt-SSLeay-0.72.tar.gz

The per-package builders use the local tarball when present and only fall back
to the upstream URL if it is missing (ipmitool/syslinux mockbuild.pl; and
mockbuild-perl-packages.pl 'spec' mode for perl-Crypt-SSLeay).

Also folded in:
  - mockbuild-all.pl: switch createrepo -> createrepo_c (--database,
    --set-timestamp-to-revision) for deterministic, upstream-matching repo
    metadata.
  - perl-HTTP-Async / perl-Net-HTTPS-NB specs: reword the brp-compress comment.

Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
2026-07-10 10:50:20 -03:00
Daniel Hilst a02adbfc63 feat(mockbuild-all): build conserver-xcat as a dep builder
Register conserver-xcat in mockbuild-all.pl's dep-builder set so the
traditional C conserver (8.2.1) is built per-EL/arch alongside goconserver.
xCAT itself requires goconserver, so conserver stays a build-on-demand
artifact, but wiring it into the full dep build keeps it produced and
signed with the rest of xcat-dep for sites that want it.

conserver/mockbuild.pl gains the --build-timestamp option that
mockbuild-all passes to every builder (SOURCE_DATE_EPOCH for deterministic
builds); without it the child invocation would abort on an unknown option.

Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
2026-07-05 16:51:09 -03:00
Daniel Hilst 9f01a153e0 fix(conserver): build on EL8-EL10 x86_64; add per-EL mockbuild.pl
conserver.spec had not been built on a modern EL toolchain and no longer
compiled on EL9/EL10:

- %prep used the bare %patch / %patch1 macros, which rpm 4.18+ (EL9/EL10)
  rejects with "Patch number not specified". Switched to explicit
  Patch0:/Patch1: with the numbered %patch0/%patch1 macros, which apply
  cleanly on EL8 through EL10.
- BuildRequires listed only openssl-devel, so on EL9/EL10's minimal mock
  buildroot the toolchain was absent and %configure failed with
  "C compiler cannot create executables". Added gcc, make and glibc-devel.

Also add conserver/mockbuild.pl, a standalone per-EL builder matching the
other xcat-dep builders (goconserver/ipmitool): it stages the sources and
spec, builds the SRPM, mock-rebuilds it in the target chroot, copies the
RPMs to --result-dir, and smoke-tests console/conserver in the chroot.
conserver is not in the default mockbuild-all.pl set (xCAT uses goconserver),
so this builder is run on demand. Built + smoke-tested conserver-xcat-8.2.1
for alma+epel-{8,9,10}-x86_64.

Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
2026-07-05 16:47:12 -03:00
Daniel Hilst 53fc261235 fix(xcat-dep): build every dep natively per arch; parallel-safe repos + genesis
mockbuild-all.pl treated xnba-undi/grub2-xcat as x86-only @SHARED_NOARCH imported
onto ppc, so an x86 build failure rippled into a fatal "grub2-xcat missing" on
ppc; both actually build on any arch (noarch repackaging of committed artifacts)
and xCAT requires them on ppc too. Un-gate xnba-undi and drop the import so each
host builds a complete, self-sufficient dep repo. Add a single --output that
re-roots all NFS-shared output plus a fail-fast lock at <output>/.lock (owner-pid
guarded so forked build children do not delete it). Default gpg-key-name to the
real "xCAT Signing Key" and --xcat-source to ../xcat-core.

Make concurrent builds safe: give the genesis buildrpms.pl its own HOME/rpmbuild
tree (a shared /root/rpmbuild raced across parallel targets), and nest the
xnba/goconserver rpmbuild dirs under the run-scoped --work-dir (they hard-coded
/var/tmp/xcat-rpmbuild-* and wiped each other). Add --parallel-targets/--max-parallel,
defaulting to serial since the per-package scripts still share repo tarballs under
full parallelism.

Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
2026-07-03 00:51:25 +00:00
Daniel Hilst fbb89eff2a fix(grub2-xcat): drop unused grub2 src.rpm download that broke the build
grub2-xcat/mockbuild.pl fetched a grub2 source RPM before building, and that
fetch was the only failing step (the pinned CentOS Stream URL now 404s, and the
dynamic dnf fallback is fragile on EL10). The download is dead weight: the
package is a pure noarch repackaging of the committed grub2-res.tar.gz and the
mock build never consumed the src.rpm. Remove the resolve+download machinery.
Epoch: 1 stays so 1:1.0 satisfies xCAT-server's legacy >= 2.02 pin and upgrades
over old 0:2.02 remain clean.

Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
2026-07-02 21:50:38 -03:00
Daniel Hilst d278615add feat(mockbuild-all): import x86-only noarch deps into the ppc dep repo
xCAT Requires xnba-undi and grub2-xcat on every arch, but they only build on x86_64
(xnba-undi is an x86 UNDI netboot ROM; grub2-xcat wraps the distro grub2). Since both
are noarch, a ppc build now imports them from a built x86_64 dep repo via the new
--import-noarch-repo <dir>. Both are added to the required-deps assertion (with a hint
to pass --import-noarch-repo on non-x86_64 builds), so an incomplete dep repo fails at
build time instead of at xCAT install time.

Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
2026-07-02 10:11:51 -03:00
Daniel Hilst 1361332d6e fix(grub2-xcat): epoch bump to satisfy xCAT-server; dynamic src.rpm URL
xCAT-server Requires: grub2-xcat >= 2.02-0.76.el7.1.snap201905160255, but the el10
rewrite reset grub2-xcat to Version 1.0 -- which can never satisfy that. Add Epoch: 1
so 1:1.0-2 outranks 0:2.02 and the (unchanged) xCAT-server dependency resolves.

Also stop pinning the upstream grub2 source rpm URL (the distro rolls grub2 forward
and prunes the old src.rpm from the mirror -> 404). grub2-xcat/mockbuild.pl now
resolves the current grub2 source rpm URL via dnf (download --source --url, then
repoquery --location) unless --upstream-url is given.

Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
2026-07-02 10:11:51 -03:00
Daniel Hilst a83a23c57a feat(mockbuild-all): emit deployable signed per-EL xcat-dep repo
mockbuild-all.pl now assembles a signed, deployable xcat-dep repo under
--repo-dep/rh{8,9,10}/<arch>, each with xcat-dep.repo, mklocalrepo.sh and
buildinfo.txt, ready to push to xcat.org (obsoletes cluster-test.pl's dep
collection). Default build loops rh8/rh9/rh10 for the host arch only; --target
still selects a single target. xCAT-genesis-base is collected into each per-EL
repo. New options: --repo-dep, --gpg-sign, --gpg-key-name, --gpg-home. No dhcp-
packages are built (DHCP is a rich dep in xCAT.spec), so nothing to exclude for el10.

Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
2026-07-02 06:38:56 -03:00