2
0
mirror of https://github.com/xcat2/xcat-dep.git synced 2026-09-30 23:05:17 +00:00

docs(openeuler): describe native dependency inputs

This commit is contained in:
Vinícius Ferrão
2026-09-21 18:24:49 -03:00
parent a8fcf40e6b
commit face1c8328
4 changed files with 179 additions and 0 deletions
+12
View File
@@ -0,0 +1,12 @@
# Native openEuler Go build input
The native openEuler RPM build uses Go 1.25.12 inside the exact target mock root.
The committed module graph requires this version. The build retains GOTOOLCHAIN=local and CGO_ENABLED=0.
The checksums in go1.25.12.sha256 come from the [official Go release list](https://go.dev/dl/#go1.25.12).
The builder verifies the archive before including it as Source3, and the generated spec verifies it again before extraction.
The toolchain stays in the RPM build directory and is excluded from the goconserver binary package.
The source RPM contains the exact compiler archive, including its Go sources and license, for subsequent rebuilds.
Build x86_64 and ppc64le packages on matching native architecture builders. The package release retains the native empty dist suffix.
Existing EL compilation and cross-build paths retain their original toolchain selection.
+102
View File
@@ -0,0 +1,102 @@
openEuler 24.03 LTS POWER inputs
This GA target is a functional build profile. It does not establish maintained
POWER service-pack support or physical platform qualification.
The 24.03-ppc64le.inputs.json catalog pins the native source RPMs, publisher
noarch RPMs, public key, spec patch, and spec definitions used by this target.
Its outputs are RPM package names. The packages-manifest.conf POWER section
selects the required runtime outputs; needs selects their build prerequisites.
The build_inputs group supplies the additional same-GA noarch build packages.
No binary package from another service pack or architecture is admitted.
Use an exact native ppc64le openEuler 24.03 LTS builder. The target configuration
uses the published OS repository, native vendor macros, and Mock simple
isolation. POWER GA has no published Everything, update, or EPOL architecture
repository. Individual GA noarch inputs are pinned from the publisher's other
architecture repositories. Each must have a noarch header, a GA release suffix,
a valid publisher signature, and no ELF file anywhere in its RPM payload.
They retain their original bytes and signatures in the resulting repository.
Run the existing owner through actual sudo from UID1000. The native Mock 2.2
entry at /usr/libexec/mock/mock must precede consolehelper's /usr/bin/mock in
sudo's PATH. The target fixes chrootuid and chrootgid at 1000. Do not synthesize
SUDO_UID or USERHELPER_UID. Preserve the actual Mock build logs and confirm
UID1000 for compiled packages. Genesis assembles a root filesystem as UID0;
xNBA packages existing boot artifacts as UID0 and has no compilation or check
section. These are the two packaging exceptions.
sudo perl mockbuild-all.pl --target openeuler-24.03-ppc64le \
--xcat-source /path/to/frozen/xcat-core \
--output /path/to/private/output --max-parallel 1 \
--gpg-sign --gpg-home /path/to/signing-home \
--gpg-key-name SIGNING_FINGERPRINT --build-timestamp SOURCE_EPOCH
Freeze both source trees and record their hashes before running the owner.
Use a fresh output/run identity. Do not modify input files while a build runs.
The owner validates the complete graph and output ownership before starting
Mock. It fetches all selected inputs, verifies them in a private publisher
RPM database, and preserves the signed originals under native-inputs.
The source RPM path in mockbuild-all.pl builds the prerequisites in dependency
order. Publisher inputs precede source builds; existing owners run afterward.
Dependencies on an existing owner and publisher dependency edges are rejected
before acquisition because those phases cannot honor them. Patches and
definitions use that same source path. Native results remain
unsigned under native-results; signed copies populate native-prerequisites.
Private configuration overlays bind that repository into subsequent Mock
roots. Their paths and hashes are recorded in native-overlays.json. Publisher
RPMs retain their publisher signatures; generated RPMs require the selected
build signing key. Repository metadata is signed by the build key and exports
both public keys. Neither key is imported into the builder's system RPMDB.
Native Mock's procenv plugin requires a procenv package that GA OS lacks.
The procenv source is therefore built first with only that diagnostic plugin
disabled in a recorded private overlay. Its normal vendor checks and UID1000
build remain enabled. All subsequent roots enable the plugin and obtain the
newly signed native procenv package. No package feature or test is disabled.
The final repository collects the manifest-selected native/publisher outputs
and the established script-owner outputs. PostgreSQL and its source helper
chain remain in the private prerequisite repository; the normal xCAT/xCATsn
closure does not select a PostgreSQL server. Native perl-DBD-Pg is required by
the service image profiles. Its unchanged vendor check needs PostgreSQL.
The PostgreSQL patch and vendor options are described in ../postgresql/Build-notes.
Those options preserve normal SQL, authentication, backup, and reconnect
features. Runtime backend validation is a separate gate from package builds.
Bootstrapping the build tools
The catalog's bootstrap_inputs records the native source chain needed when
Mock and the owner Perl modules are absent. It includes the unchanged official
24.03 SP3 File-Slurper source RPM because GA publishes no such source package.
Rebuild that source on GA; do not install its SP3 binary RPM.
The input verifier uses only core Perl modules. It can fetch and verify these
inputs before Mock is installed:
perl -Ilib -MXCAT::NativeInputs=load_inputs,stage_inputs -e '
my ($root, $stage) = @ARGV;
my %required = map { $_ => "*" } qw(mock perl-Params-Util
python3-psutil python3-pyroute2 perl-PerlIO-utf8_strict
perl-File-Slurper procenv);
stage_inputs(load_inputs($root, \%required), $stage);
' "$PWD" /path/to/new/private/input-stage
Use a disposable exact-GA installroot for bootstrap builds. Install rpm-build,
dnf-plugins-core, gcc, make, and each source's full BuildRequires through strict
signed native repositories. Extract the verified source with rpm -i and a
private _topdir; use dnf builddep on the extracted spec. Run normal rpmbuild -ba
as UID1000 without changing the vendor spec or disabling its check section.
Build native perl-Params-Util before users of perl-Module-Build; build
perl-PerlIO-utf8_strict before perl-File-Slurper. Build python-psutil and
python-pyroute2 before installing Mock. Build procenv for Mock diagnostics.
The pinned noarch group supplies the missing pure Perl/Python prerequisites.
Retain unsigned outputs, vendor check logs, native architecture, full RPM
Provides/Requires, and the original-source and output hashes. Sign copies and
verify them against a private RPMDB before making them available to DNF.
Install the resulting native Mock, its runtime prerequisites, and the owner
Perl modules inside the disposable builder. Use the existing mockbuild-all.pl
owner for subsequent target/package builds. The bootstrap instructions do not
replace its scheduler, collector, signature gate, or repository layout.
+52
View File
@@ -0,0 +1,52 @@
openEuler 24.03 LTS native build inputs
This source supplies a build prerequisite for the native perl-DBD-Pg checks.
The dependency repository does not select a PostgreSQL server for the normal
xCAT/xCATsn closure. PostgreSQL backend runtime qualification is separate.
Source RPM:
https://repo.openeuler.org/openEuler-24.03-LTS/source/Packages/postgresql-15.6-1.oe2403.src.rpm
SHA256: 0e1dd792cccf353f7a0d7f3f9d13b1a22a7ace0a428f4b197193b99c58081960
Publisher key:
https://repo.openeuler.org/openEuler-24.03-LTS/source/RPM-GPG-KEY-openEuler
Fingerprint: 8AA16BF9F2CA5244010DCA963B477C60B675600B
Verify the source RPM checksum, signature, and payload digests before extraction.
Apply postgresql-15.6-openeuler-llvmjit-buildrequires.patch with patch -p1
from the directory containing the extracted postgresql.spec.
The patch makes the clang BuildRequires follow the existing llvmjit option.
PostgreSQL uses clang to generate LLVM bitcode. Its normal C compiler selection
uses gcc or cc, and its LLVM build paths are disabled when llvmjit is zero.
JIT-enabled BuildRequires remain unchanged.
Use the native openEuler build environment and these existing vendor options:
--define 'llvmjit 0' --define 'external_libpq 0'
--define 'runselftest 1' --define 'test 1'
Keep the other vendor feature defaults, including SSL, GSSAPI, LDAP, PAM,
SELinux, ICU, UUID, and procedural languages. Build as an unprivileged user;
the regression tests require this. Retain the regression, contrib, procedural
language, and postgresql-setup tests. Resolve all remaining BuildRequires from
signed native packages before building.
Use the vendor-default private libpq build. Its libraries have private SONAMEs.
The external_libpq=1 branch in this SRPM has a stale patch that fails during
normal preparation. Build DBD-Pg with the vendor libpq-devel package;
postgresql-private-devel declares a conflict with that package.
On ppc64le, use mock-configs/openeuler-24.03-ppc64le.cfg when invoking the
existing mock build owner. The downloaded source RPM and generated packages
are external build artifacts. This directory does not add a package builder.
After building, verify package Provides/Requires, native architecture, and
libpq linkage. Build the matching native DBD-Pg source RPM without changes:
https://repo.openeuler.org/openEuler-24.03-LTS/source/Packages/perl-DBD-Pg-3.18.0-1.oe2403.src.rpm
SHA256: 5bb91b28459ee5754c031cf62471c86a887392587c261c8df61ab44e4c8caf09
Retain its make test check. Validate xCAT schema initialization, SQL
transactions, authentication, backup/restore, and reconnect behavior before
using the resulting packages for management or service nodes.
+13
View File
@@ -0,0 +1,13 @@
`python-scp-0.14.5-1.oe2403.src.rpm` is the unchanged openEuler 24.03 LTS
source package, rebuilt for openEuler 20.03 LTS SP4, whose native repositories
do not provide `python3-scp`.
- Source: https://repo.openeuler.org/openEuler-24.03-LTS/source/Packages/python-scp-0.14.5-1.oe2403.src.rpm
- SHA256: `3461d2a3fe0122cac2893d8465ad1271ae21e5570a31d4402e3f887ef545a0e8`
- Upstream signing key: `8AA16BF9F2CA5244010DCA963B477C60B675600B`
- License: LGPL-2.1-or-later
The upstream spec disables its SSH-dependent `%check`. Native validation must
include authenticated SCP uploads and downloads, recursive paths, mode and time
preservation, and rejection of incorrect client and server keys. The build uses
the target's native Python and Paramiko packages.