diff --git a/BUILD.md b/BUILD.md index d9d1124..eac380b 100644 --- a/BUILD.md +++ b/BUILD.md @@ -79,8 +79,8 @@ Use these flags to skip specific operations: - `--skip-genesis` - Skips the existing per-EL Genesis image build. - `--genesis-release ` - - Adds a verified OpenEmbedded Genesis RPM release and skips the existing - per-EL Genesis image build for that run. + - Adds a verified OpenEmbedded Genesis RPM release alongside the existing + per-EL Genesis packages. - `--scrub-all-chroots` - Runs `mock -r --scrub=all` before build and collection. - `--collect-dir ` @@ -167,9 +167,9 @@ perl ./mockbuild-all.pl \ ``` The release is checked before any package is collected. Its RPMs and SRPMs are -copied into each generated EL repository. Old Genesis packages are removed from -those output directories so a previous run cannot satisfy the release by -accident. +copied into each generated EL repository. Stale OpenEmbedded Genesis packages +are removed from the output first, while the existing per-EL Genesis package +remains available. Repository publication requires a release containing every supported Genesis architecture. The packages are `noarch`, and every management-node repository @@ -178,6 +178,11 @@ receives the full set of target images. The release checksums cover the unsigned input packages. If repository signing is enabled, `rpmsign` changes the deployed RPM bytes after collection. +The OpenEmbedded packages use their own names and install under +`/opt/xcat/share/xcat/netboot/genesis-openembedded/`. Publishing them does not +replace the Genesis packages used by current xcat-core releases. Activation is +a separate xcat-core change. + Omit `--genesis-release` to keep using the existing Genesis builder. # Build Unified Repository Without xCAT (`--skip-xcat`) diff --git a/genesis-openembedded/README.md b/genesis-openembedded/README.md index 4a94bbc..dd48fe4 100644 --- a/genesis-openembedded/README.md +++ b/genesis-openembedded/README.md @@ -12,6 +12,7 @@ to the intended commit; it does not change the checkout for you. --xcat-source /path/to/xcat-core \ --xcat-ref \ --all \ + --work-dir /path/to/oe-work \ --output-dir /path/to/xcat-genesis-release ``` @@ -24,10 +25,15 @@ Use `--architecture` for development builds. Repository publication requires a complete release built with `--all`. Each package installs one exact-architecture export under -`/opt/xcat/share/xcat/netboot/genesis//`. This includes the kernel, -initramfs, manifests, checksums, and license evidence. The packages are `noarch` -or `all` because they are installed on the management node, not run on the -target node. +`/opt/xcat/share/xcat/netboot/genesis-openembedded//`. The package +and install namespaces are separate from the old Genesis packages, so both +generations can be published and installed without replacing one another. The +packages are `noarch` or `all` because they are installed on the management +node, not run on the target node. + +`--work-dir` keeps the OpenEmbedded downloads and build state between release +builds. Without it, the builder uses a temporary directory and removes it when +the command finishes. The release directory contains: @@ -38,7 +44,7 @@ The release directory contains: Validate the directory before publishing it: ```bash -./genesis-openembedded/verify-release /path/to/xcat-genesis-release +./genesis-openembedded/verify-release --complete /path/to/xcat-genesis-release ``` Pass that same directory to the repository builders: @@ -53,23 +59,17 @@ perl ./mockbuild-all.pl \ [DIST ...] ``` -The RPM builder skips its old per-EL Genesis build when a release is supplied. -The APT builder adds the DEB packages to every selected suite. Both consumers -require all seven architectures and verify package identities and checksums -before collecting packages. Every management-node repository receives every -target image so it can provision nodes of another architecture. +The RPM builder keeps its old per-EL Genesis build and adds the new packages. +The APT builder does the same for each selected suite. Both consumers require +all seven architectures and verify package identities and checksums before +collecting packages. Every management-node repository receives every target +image so it can provision nodes of another architecture. Without `--genesis-release`, both builders keep their existing behavior. The -option remains opt-in until xcat-core uses the exact package names on every -platform. The current RPM naming already matches `x86_64`, but older mappings -still use `ppc64` for `ppc64le`, and the DEB packages use `amd64`. Those mappings -belong in a separate xcat-core change. Generated images and packages belong in -release storage, not in Git. - -The DEB packages replace the old `amd64` and `ppc64el` package spellings during -an upgrade. They do not provide aliases for those names. This keeps the old -workflow unchanged until the xcat-core package dependencies move to the exact -architecture names. +new packages do not provide, replace, or obsolete the old package names. A +separate xcat-core change will select the OpenEmbedded package and install +namespace after the repositories carry it. Generated images and packages +belong in release storage, not in Git. Run the package tests on a Linux builder with RPM, DEB, and repository tools: