2
0
mirror of https://github.com/xcat2/xcat-core.git synced 2026-08-03 16:06:59 +00:00
Commit Graph

27104 Commits

Author SHA1 Message Date
Vinícius Ferrão bcbc4c9c25 test(dhcp): cover shared version comparison
(cherry picked from commit 0ddc19e74b)
2026-07-19 20:07:15 +00:00
Vinícius Ferrão 3dcf01da76 refactor(dhcp): reuse shared version comparison
(cherry picked from commit 5467c1aef9)
2026-07-19 20:07:15 +00:00
Vinícius Ferrão 7ea34345fb chore(release): bump version to 2.18.2
2.18.1 was already published to the EL yum repos on 2026-07-10
(xCAT-2.18.1-snap202607100105, from master commit f6deff08b, now
tagged 2.18.1 on this branch). A released version number is
immutable, so the next 2.18.x release from this branch is 2.18.2.
2026-07-19 13:27:37 -03:00
Vinícius Ferrão 9d1628f577 test(packaging): verify systemd omits SysV init script
(cherry picked from commit 185af5a3aa)
2026-07-19 12:20:06 -03:00
Vinícius Ferrão 9910390e99 test(xcatprobe): run listener checks in CI
(cherry picked from commit c135abe679)
2026-07-19 12:19:52 -03:00
Vinícius Ferrão 886c08e9aa build(xcatprobe): declare listener tool dependency
(cherry picked from commit 6d59e60331)
2026-07-19 12:19:52 -03:00
Vinícius Ferrão dd0b123346 fix(xcatprobe): report listener inspection errors
(cherry picked from commit 73b9368ff3)
2026-07-19 12:19:52 -03:00
Vinícius Ferrão c50384945f test(xcatprobe): cover command output capture
(cherry picked from commit b46d28ae1d)
2026-07-19 12:19:52 -03:00
Vinícius Ferrão 445c851325 docs(sles): clarify installer SSH password
Fixes #7235

(cherry picked from commit 7e7332d521)
2026-07-19 12:19:52 -03:00
Daniel Hilst 4b4906707d CI: install build-essential so xcat-core debs build on noble
On the ubuntu-24.04 runner, dpkg-buildpackage aborted every xcat-core
package with 'Unmet build dependencies: build-essential:native', so zero
debs were produced, reprepro created no dists/noble, and 'apt-get update'
against the local file: repo failed with 'dists/noble/.../Packages File
not found' -> install_xcat failed. Add build-essential to the workflow
dependency install so the local package repo is actually built.

(cherry picked from commit f9717ea8da)
2026-07-19 12:19:52 -03:00
Daniel Hilst 9f9e02bc72 Fix GitHub CI: use noble image + latest/noble xcat-dep
The xcat-dep APT repo now publishes only the noble (24.04) codename at
.../apt/latest/xcat-dep; the bionic/devel dist no longer exists, so
install_xcat failed on apt-get update/install. Run the workflow on
ubuntu-24.04 and point the apt source at latest/xcat-dep noble main.

Drop the apt-key step: apt-key is removed on Ubuntu 24.04 and the legacy
apt.key is gone from the xcat-dep dir; the repo already installs via
allow-insecure-repositories/allow-unauthenticated.

(cherry picked from commit 83323504a6)
2026-07-19 12:19:51 -03:00
Vinícius Ferrão 23d11276f4 test(xcatprobe): cover TCP listener detection
(cherry picked from commit b4ce09e132)
2026-07-19 12:19:51 -03:00
Vinícius Ferrão 12af98722a fix(xcatprobe): prefer ss for listener checks
(cherry picked from commit 888f5360b8)
2026-07-19 12:19:51 -03:00
Vinícius Ferrão 1c35fc6cef fix(packaging): avoid SysV init paths in modern DEBs
(cherry picked from commit 6a3f71bf68)
2026-07-19 12:19:51 -03:00
Vinícius Ferrão 27e932b7f8 fix(packaging): avoid SysV init paths in modern RPMs
(cherry picked from commit c34db2c55f)
2026-07-19 12:19:51 -03:00
Vinícius Ferrão 420c46297a fix(packaging): make xcatd callers init-agnostic
(cherry picked from commit d829be9e94)
2026-07-19 12:19:50 -03:00
Vinícius Ferrão 401a6ff372 fix(mknb): avoid transient discovery addresses
(cherry picked from commit 3cd74bbab0)
2026-07-19 12:19:50 -03:00
Vinícius Ferrão 944219aa92 fix(makehosts): index host lookups
(cherry picked from commit 009150823f)
2026-07-19 12:19:50 -03:00
Vinícius Ferrão 65b8d37532 fix(copycds): keep SLE 15 source media separate
(cherry picked from commit 4918dfa9b7)
2026-07-19 12:19:50 -03:00
Vinícius Ferrão 9d01a342c9 docs: fix CUDA samples verification
(cherry picked from commit 3d842ce944)
2026-07-19 12:19:50 -03:00
Vinícius Ferrão 29c1747cbe fix(xcat-server): retry suite 3 on zero RAKP2 HMAC
(cherry picked from commit 695dd485cf)
2026-07-19 12:19:50 -03:00
Daniel Hilst eb30c1d134 fix(xcat-server): install tmux on KVM hosts for the serial console
cons/kvm drives the KVM guest serial console through a shared tmux session on
the hypervisor (tmux, unlike screen, is present on every libvirt host we target
incl. ppc64le hosts that ship no screen). The KVM host package lists were never
updated for that switch, so an xCAT-provisioned KVM host got 'screen' (now
unused) -- or nothing -- where tmux is required, leaving rcons broken.

Ship tmux in the KVM host pkglists:
  - install/rh, install/ubuntu: screen -> tmux / add tmux.
  - netboot/{alma,centos,rocky}: were symlinks to the RHEL 5.4 list; make them
    real lists with tmux (the rhel5/6/7 lists keep screen).
  - install/suse: add a KVM host list (SUSE had none) carrying tmux.

screen stays where it is still used: the Xen console, and the EOL rhel5/6/7 and
centos6/7 lists.

Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
(cherry picked from commit c1db278e1a)
2026-07-19 12:19:49 -03:00
Vinícius Ferrão 28ed4e6331 fix(xcat-client): make profile probe safe under errexit
(cherry picked from commit 1c6c256065)
2026-07-19 12:19:49 -03:00
Daniel Hilst d4d8838070 fix(genesis-scripts): floor genesis-base requirement at 2:2.18.0
Requiring xCAT-genesis-base >= 2:%{version} coupled the flat xcat-core to a
matching genesis-base on every marketing-version bump: a 2.18.1 core refused
to install against the deployed 2.18.0 genesis-base. genesis-base changes
rarely and lives in the separate per-EL xcat-dep repo, so floor the requirement
at the fixed 2.18.0 baseline instead. Core version bumps no longer force a
genesis-base re-publish.

Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
(cherry picked from commit f6deff08bc)
2.18.1
2026-07-19 12:19:49 -03:00
Daniel Hilst 8f391d8c51 chore(release): bump version to 2.18.1
Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
(cherry picked from commit 60dec519d9)
2026-07-19 12:19:49 -03:00
Daniel Hilst 432ae0fd53 fix(buildrpms): stage xCAT-probe helper modules before target builds
xcatprobe subcommands (xcatmn, discovery, osdeploy) and hierarchy.pm load
xCAT:: perl modules but only add $XCATROOT/probe/lib/perl to @INC, not the
main $XCATROOT/lib/perl where perl-xCAT ships them. The RPM builder stopped
embedding those helpers, so /opt/xcat/probe/lib/perl/xCAT/ was absent on
installed systems and the subcommands were reported "Unsupported sub command".

Stage GlobalDef.pm, NetworkUtils.pm and ServiceNodeUtils.pm into a temporary
xCAT-probe tree and build its source tarball once, before the parallel target
builds fork, so workers only read a complete archive. Add package-payload
regression tests. Adopts the approach from upstream PR #7581.

The remaining buildrpms.pl changes are deployment-compliance refactoring
(signed, self-contained core repo output).

Closes #7579

Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
(cherry picked from commit 0c3c44f28b)
2026-07-19 12:19:49 -03:00
Daniel Hilst c94c9ef6b5 fix(buildrpms): create the rpmbuild tree so a build never silently no-ops
buildrpms.pl stages source tarballs into $HOME/rpmbuild/SOURCES but only runs
rpmdev-setuptree in its one-time env-setup path. On a host where that never ran
(or $HOME/rpmbuild was cleaned) source staging fails with "SOURCES/...: No such
file or directory", no srpms/rpms are produced, and the run still exits 0 -- so
the deployable repo silently ends up empty. Create the rpmbuild tree up front so
a build no longer depends on prior manual setup.

Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
(cherry picked from commit 552f87d4c2)
2026-07-19 12:19:48 -03:00
Daniel Hilst 623e02d38a feat(buildrpms): emit deployable, signed, self-contained core repo
buildrpms.pl now writes xcat-core.repo, mklocalrepo.sh and buildinfo.txt into
dist/<target>/rpms (templates ported from buildcore.sh), so the built tree is
directly deployable to xcat.org and cluster-test.pl no longer needs to collect
and re-createrepo the dist output.

The full package set is built on every arch (x86_64 and ppc64le alike), so each
arch produces a complete, self-contained xcat-core repo -- no need to copy the
noarch packages from the x86_64 build into the ppc repo. --package now replaces
the default set (so --package xCAT-genesis-base builds only genesis-base for the
dep pipeline). xCATsn added to \@native_pkgs so its arch rpm is located correctly.

Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
(cherry picked from commit b0509b9616)
2026-07-19 12:19:48 -03:00
Daniel Hilst 4c530e44c9 fix(xCAT-server): ship rhels10 ppc64le service-node otherpkgs pkglist
The diskful service-node otherpkgs pkglist exists for every EL version and
both arches EXCEPT rhels10 ppc64le: install/rh/ has
service.rhels10.x86_64.otherpkgs.pkglist (and install/alma/ symlinks it) but
no ppc64le counterpart, while rhels5/6/7/8/9 and the netboot/ tree carry both
arches. xcat-test's SN_setup_case points a ppc64le service node's osimage
otherpkglist at install/<distro>/service.<ver>.ppc64le.otherpkgs.pkglist; with
the file absent the list resolves empty, so the otherpkgs postscript installs
nothing -- xCATsn never lands, xcatd never starts on the service node, and
every hierarchical dispatch fails with "<sn>:3001 No route to host /
Connection refused", cascading the whole *_hierarchy test suite.

Add install/rh/service.rhels10.ppc64le.otherpkgs.pkglist (xCATsn + the rh10
ppc64le goconserver, mirroring rhels9) and the install/alma symlink to it,
matching the existing x86_64 layout.

Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
(cherry picked from commit 9ea3de343b)
2026-07-19 12:19:48 -03:00
Daniel Hilst b2316680ab fix(console): drive the KVM serial console via tmux+virsh, not screen
cons/kvm ran `ssh -t <vmhost> screen ... <pty>`, which requires screen on every
hypervisor. Bare libvirt hosts (notably ppc64le power servers) ship tmux but not
screen, so goconserver's console fork failed and no console was captured.

Use tmux (present on all our libvirt hosts) for the shared detach/reattach
session, wrapping `virsh console` keyed on the domain name (== the xCAT node name
for KVM) -- stable across guest reboots, unlike the raw serial pty. The session
status bar is disabled so the captured console log stays clean serial.

Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
(cherry picked from commit e331290414)
2026-07-19 12:19:48 -03:00
Daniel Hilst 014b2327d4 fix(kvm): emit a pseries domain for ppc64le KVM hypervisors
build_xmldesc only recognised cpumodel "ppc64" (big-endian) when deciding to set
<os type arch='ppc64' machine='pseries'>, but ppc64le hosts report cpumodel
"ppc64le" (virNodeGetInfo model). A guest on a ppc64le hypervisor was therefore
emitted as an x86-style domain -- no machine type and with pae/acpi/apic -- and
libvirt rejected it: "machine type 'pseries-*' does not support ACPI".

Recognise "ppc64le" alongside "ppc64" for the arch/machine block, and omit the
x86-only pae/acpi/apic features on both. Little- and big-endian pseries guests
both use libvirt <os> arch "ppc64".

Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
(cherry picked from commit 37666b92cd)
2026-07-19 12:19:48 -03:00
Daniel Hilst 0330cdad67 fix(genesis-scripts): require genesis-base by version, not exact snap
genesis-base now ships in the per-EL xcat-dep repo while genesis-scripts ships
in the flat xcat-core. The exact "= 2:%{version}-%{release}" dependency forced
core and dep to be republished in lockstep on every core rebuild (a new snap in
core could not be installed until the exact-matching genesis-base snap was also
published to the client's dep channel -- which broke a production client).

Relax to ">= 2:%{version}": epoch 2, version >= 2.18.0, any release/snap. RPM
ignores the release when the dependency omits it, so any same-version (or newer)
genesis-base satisfies it. Routine core snaps no longer require a genesis-base
re-publish; lockstep now only matters on version bumps and the initial publish.

Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
(cherry picked from commit 23a5877480)
2026-07-19 12:19:48 -03:00
Daniel Hilst bf304f045c fix(packaging): install-time DHCP rich dep + genesis-base out of flat core
The single flat xcat-core repo serves el8/el9/el10 from one build, but two spec
decisions were resolved at BUILD time and so were wrong for the other ELs that
share the same repo.

1. DHCP backend. xCAT.spec and xCATsn.spec selected the dhcp provider with a
   build-time %if (rhel >= 10 -> kea, else dhcpd), so an el10 build wrongly
   required kea on el8/el9 (and an el8/el9 build wrongly required dhcpd on
   el10). Replace it with an install-time RPM rich dependency:

     Requires: (kea if (system-release >= 10) else /usr/sbin/dhcpd)
     Requires: (kea-hooks if (system-release >= 10))

   dnf now resolves it per client: kea on el10+ (which dropped ISC dhcp from the
   distro), dhcpd on el8/el9. SLES has no "system-release" provide, so the
   condition is false there and it falls back to /usr/sbin/dhcpd, preserving
   prior behavior. system-release is versioned per release package
   (el10=10.x, el9=9.x, el8=8.x).

2. openssl. Make the xCAT-server openssl Requires uniform across EL (non-SUSE)
   instead of el10-only, so the produced package set does not depend on which EL
   the build host happened to be.

Also drop xCAT-genesis-base from the default @PACKAGES set in buildrpms.pl: its
initramfs bundles the build-chroot kernel/glibc and is therefore OS- and
arch-dependent, so it cannot ship in the single flat core. It is now built per
target by the xcat-dep pipeline (mockbuild-all.pl, via
`buildrpms.pl --package xCAT-genesis-base`) and ships in xcat-dep/rh<N>. The
explicit `--package xCAT-genesis-base` build path is retained.

Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
(cherry picked from commit 529c821177)
2026-07-19 12:19:47 -03:00
Daniel Hilst a3ff1f1269 fix(xCAT-genesis-base): collapse usr-merged dirs in the netboot image
Building the genesis netboot image on a usr-merged host (openSUSE Leap
15, and increasingly EL) leaves the extracted root with /bin, /sbin,
/lib and /lib64 as real directories holding the same files that already
live under /usr/*. rpm then sees each binary twice (e.g. fs/bin/bash and
fs/usr/bin/bash) and aborts the install of xCAT-genesis-base with dozens
of file conflicts, so the package cannot be installed. After unpacking
the dracut image, fold those top-level directories into /usr and replace
them with relative symlinks, matching a normal usr-merged layout. The
loop is a no-op when the image already ships them as symlinks, so EL
builds are unaffected.

Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
(cherry picked from commit 0f100de5ac)
2026-07-19 12:19:47 -03:00
Daniel Hilst 2bfd004058 fix(xcat-core): drop RHEL-only perl build deps on SUSE
The perl-xCAT component specs BuildRequire perl-Pod-Html and (in
xCAT-client) perl-generators, neither of which exists on openSUSE/SLES,
so rpmbuild aborts at dependency resolution before the build can start.
perl-generators is a RHEL/Fedora-only helper that emits perl dependency
metadata; SUSE's rpm generates those itself. Pod::Html ships inside the
core perl package on SUSE, with no separate perl-Pod-Html subpackage to
require. Guard both BuildRequires with %if !0%{?suse_version} so the SUSE
build resolves while EL/Fedora builds are unchanged.

Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
(cherry picked from commit 4b24558835)
2026-07-19 12:19:47 -03:00
Daniel Hilst 2f572b49a6 fix(xCAT-genesis-base): make 2.14.5 -> 2.18 upgrade clean on EL8/EL9
A 2.17 -> 2.18 management-node upgrade installs xCAT-genesis-base 2.18 over the
2.14.5 payload that 2.17 shipped, and aborted in three ways that only surface on
the upgrade path (a fresh EL10 install never hit them):

1. usr/lib/dracut/hooks changed type: 2.14.5 shipped it as a real directory,
   modern dracut (EL8+) makes it a symlink to ../../../var/lib/dracut/hooks. RPM
   refuses to replace a directory with a symlink across an upgrade ("file ...
   conflicts"). The %pretrans removal does not help because rpm computes the
   conflict from package metadata, not the live filesystem. Materialize the
   symlink back into a real directory (with the hook contents) in %install so the
   payload type matches the installed 2.14.5 layout.

2. The %pretrans Lua used table.getn()/unpack(), removed in Lua 5.2+, so on
   EL8/EL9 (and any upgrade where the dirs exist) the scriptlet died with
   "attempt to call a nil value (field getn)". Use #t / table.unpack.

3. The %post ran "mknb" unconditionally; during a full "dnf update xCAT" xcatd is
   stopped, so mknb cannot connect and exited non-zero, failing the whole
   transaction. Tolerate the failure and leave the genesis-base-updated marker so
   the image is rebuilt once xcatd is back.

(cherry picked from commit f421c2b30c)
2026-07-19 12:19:47 -03:00
Daniel Hilst 0e2bd4dd9d fix(xcat-server): stop Ubuntu diskless images carrying the builder's identity
The Ubuntu netboot image inherited the build host's /etc/hostname --
genimage's chroot shares the build host's UTS namespace, so /etc/hostname
ended up as the MN's name and every diskless node booted as that name
instead of its own ("hostname poisoning"). xCAT keys on IP/MAC so
provisioning still succeeds, but the node's local identity (hostname,
prompt, syslog) is wrong and N nodes share one name. The image also
shipped no netplan, so systemd-networkd-wait-online failed. In
compute.postinstall, clear /etc/hostname so each node takes its name at
boot from DHCP (udhcpc option host-name) / xCAT, and drop in a DHCP
netplan (optional, dhcp-identifier mac) so systemd-networkd configures the
boot NIC. Ubuntu-only.

Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
(cherry picked from commit 3a5cbef630)
2026-07-19 12:19:47 -03:00
Daniel Hilst 691e71f87f fix(xcat-server): default the Ubuntu apt mirror for netboot and Subiquity
The Ubuntu live-server ISO copycds imports is not a complete apt pool, so
both Ubuntu install paths fail without an external mirror: the netboot
genimage's debootstrap from the ISO-only pkgdir cannot resolve packages,
and the Subiquity diskful install (Template.pm) fell back to the airgapped
file:///cdrom config. Default site.ubuntu_apt_mirror to
http://archive.ubuntu.com/ubuntu when unset (overridable for local/geo/
ports mirrors). In the Ubuntu genimage, when pkgdir has no http mirror,
build the debootstrap source and chroot sources.list from that mirror with
the codename derived from osvers and the release/-updates/-security pockets
(main + universe) -- the compute pkglist needs universe (busybox-static,
dracut*) and the security-updated openssh. Ubuntu-only; EL netboot
(netboot/rh) and copycds/packimage are untouched.

Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
(cherry picked from commit 03e1559989)
2026-07-19 12:19:47 -03:00
Daniel Hilst 1833a43e04 fix(xcat-test): run testcase commands under bash, not /bin/sh
xcattest's runcmd ran each RUN: command via Perl backticks, i.e. /bin/sh.
On Ubuntu /bin/sh is dash, so testcases using bashisms ([ x == y ],
[[ ... ]]) error with "unexpected operator": the [ exits non-zero, the
enclosing if is taken as false, and the case's distro-specific branch is
silently skipped while the case still reports Passed -- a false pass. Run
the command through bash via list-form open() so no intervening /bin/sh
re-parses or re-expands the command's embedded quotes and backticks. EL
is unaffected (its /bin/sh is already bash).

Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
(cherry picked from commit c0731a5e33)
2026-07-19 12:19:46 -03:00
Daniel Hilst be85fd9a7f fix(xcat-server): fix Ubuntu autoinstall netplan for match-by-MAC nodes
When a node's install NIC is selected by MAC (installnic=mac), the generated
netplan was invalid: it named the ethernet device the literal string 'mac' and
set its MAC match to the full pipe-delimited list of all node MACs. The result
had no valid interface, so neither the installer environment nor the installed
system came up on the network. Match the install NIC by interface-name glob in
the installer, and in the target use only the primary MAC and omit set-name
when the install NIC is selected by MAC.

Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
(cherry picked from commit c6e38483fb)
2026-07-19 12:19:46 -03:00
Daniel Hilst 52d2435528 fix(xcat-server): add an identity section to the Ubuntu autoinstall config
The generated Subiquity autoinstall config defined no identity section. Newer
Subiquity treats a config without an identity as incomplete and stops at an
interactive "Continue with autoinstall?" confirmation, so the install never
proceeds unattended (the prompt's advice to add 'autoinstall' to the kernel
command line is a red herring -- it was already present). Provide an identity
with a password sourced from the cluster passwd table so the install runs
non-interactively.

Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
(cherry picked from commit 86e77bcd7f)
2026-07-19 12:19:46 -03:00
Daniel Hilst 44a4e40350 fix(xcat-server): allow an online apt mirror for Ubuntu Subiquity installs
The Ubuntu live-server install media is not a complete apt package mirror.
With the generated apt configuration pinned to the media only, an install that
needs a package absent from the media stalls instead of fetching it. Emit an
online-mirror apt configuration when one is configured (site.ubuntu_apt_mirror)
so missing packages are retrieved from the archive; offline behaviour is
unchanged when it is unset.

Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
(cherry picked from commit 846e611772)
2026-07-19 12:19:46 -03:00
Daniel Hilst 67bcac1419 fix(xcat-genesis-base): bump package version to satisfy genesis-scripts
The genesis-base deb version was frozen at an ancient value, below the lower
bound required by xcat-genesis-scripts (xcat-genesis-base-amd64 >= 2.13.10).
apt therefore refused to install it and its dependents. Bump the version to
track current xCAT so the dependency resolves.

Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
(cherry picked from commit d8953b0ea6)
2026-07-19 12:19:46 -03:00
Daniel Hilst 935dd295d4 fix(xcat): drop unsatisfiable ppc64 genesis-scripts dependency
xcat and xcatsn declared a hard dependency on xcat-genesis-scripts-ppc64. In
an amd64-only build that package is never produced, so apt could not satisfy
the dependency and refused to install xcat. Depend only on the amd64
genesis-scripts package.

Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
(cherry picked from commit 37212eea3c)
2026-07-19 12:19:46 -03:00
Daniel Hilst 944a9d1e33 fix(build-ubunturepo): derive a stable, filesystem-safe repo path
The apt output directory is built from the current branch name. A branch
containing a slash created nested directories, and builds run as root against
a repository owned by another user collapsed the value to empty because git
aborted with "dubious ownership". Resolve the branch with safe.directory and
replace unsafe characters, so the output path is stable across branch names
and run contexts.

Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
(cherry picked from commit e2e15184f2)
2026-07-19 12:19:45 -03:00
Markus Hilger c34f4db734 Merge pull request #7577 from VersatusHPC/master
xCAT 2.18.0 Release
2.18.0
2026-06-22 21:44:14 +02:00
Daniel Hilst 1d0a604116 Add 2.18 release info
Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
2026-06-22 13:28:51 -03:00
Markus Hilger b0303cf623 Merge pull request #7576 from VersatusHPC/master
Fix regressions for xCAT 2.18 release in EL10 x86_64
2026-06-21 01:15:28 +02:00
Daniel Hilst 638f0d75c4 Fix xCAT 2.18 EL10 x86_64 package build issues
Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
2026-06-20 18:48:14 -03:00
Markus Hilger 0e16eb6f1a Merge pull request #7575 from VersatusHPC/fix/7487-xcatprobe-tftp-umask
fix: xcatprobe TFTP check fails with wrong umask
2026-05-11 22:07:55 +02:00