2
0
mirror of https://github.com/xcat2/xcat-core.git synced 2026-09-30 14:55:16 +00:00
Commit Graph

4 Commits

Author SHA1 Message Date
Daniel Hilst 488a6d1fc7 test(xcat-core): a prerelease version keeps every package out of every suite
deb_belongs_to_dist reads any trailing ~word in a package version as the
codename the deb was built for. Debian uses ~ for a prerelease, and --release
takes whatever the caller gives it, so `--release 1~rc1` puts one in every
package name:

  xcat-client_2.19.0-1~rc1_all.deb   noble=0 focal=0

The deb is then published into no suite at all, with --genesis nowhere in the
command, and the run still reports how many packages it published.

Only the Genesis image is built per codename, so only it can be excluded by
one. The new cases assert a prerelease version reaches every suite, that a
Genesis SCRIPTS deb is not treated as the image, and that the image itself is
still confined to its own suite when its version carries both.

The second half asserts genesis_dists(), which does not exist yet: a plain
--genesis run takes the release list the rest of the build uses, and focal is
on it. focal ships debhelper 12.10 -- measured on the focal management node --
against the package's debhelper-compat (= 13), so sbuild stops on the build
dependencies and the run ends on its first release.

Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
2026-09-16 18:54:27 -03:00
Daniel Hilst 61fdf385bc test(xcat-core): the Genesis build-root test stops the whole suite, and its comments over-explain
genesis_ubuntu_build_root.t called BAIL_OUT at four places where an
extraction stopped matching. prove stops every remaining file on a
bail-out, so one stale regex in this file hides the results of the tests
that would have run after it. die is just as loud and costs only this
file.

The branch also states one fact in four places. That dracut copies the
kernel out of the root it runs in appears in the builddebs.pl header, in
its Genesis section, in BuildUtils.pm and in the builder, each time with
the incident that produced it. The chroot stage directory is explained
twice, once at its declaration and again at its only use. Each fact now
stands where the reader meets it, without the bug report around it.

Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
2026-09-14 08:27:58 -03:00
Daniel Hilst 5ff9b941b5 fix(xcat-core): the Genesis image is published into releases it cannot boot
builddebs.pl publishes every Architecture:all deb into every release, because
every other xcat-core deb is the same file for all of them. The Genesis image is
not: it carries the kernel of the root that built it. All three images therefore
landed in all three suites, and apt serves the newest, which belongs to another
release.

deb_belongs_to_dist reads the codename back from the version and keeps an image
out of any other suite. A deb with no codename in its version is unaffected.

The jammy build also stopped on /usr/share/terminfo/l/linux and v/vt100:
ncurses-base installs terminfo under /lib, and the module asks for the
/usr/share copies, which come from ncurses-term. noble happened to have it.

Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
2026-09-12 09:13:26 -03:00
Daniel Hilst 161719b9ce test(xcat-core): the Ubuntu Genesis image is built from the build host kernel
builddebs.pl carries no Genesis step. The Ubuntu Genesis deb is produced by
xCAT-genesis-builder/builddeb-genesis-base, which nothing calls, and that script
reads /lib/modules and /boot of the host it runs on. One build therefore gives
every Ubuntu release the kernel and the modules of the build host.

The script also has no payload gate. dracut reports a command it cannot install
with a FAILED: line and exits 0, so the build that shipped the image with no
dhclient reported success. Its build root omits isc-dhcp-client, ifenslave and
util-linux-extra.

genesis_deb_per_codename.t asserts the chroot each codename builds in, the log
lines that mean a build failed although it exited 0, and the refusal of the
builder to run in a root of another release. genesis_payload_verification.t
drives verify-genesis-payload against payload trees with a known hole.
genesis_ubuntu_build_root.t reads the mandatory commands back from the dracut
module and asserts the build root supplies each one.

All three fail on this commit.

Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
2026-09-12 08:27:22 -03:00