openeuler-20.03sp4-x86_64 and openeuler-22.03sp4-x86_64 build nothing. Both exit 3 at "Could not find included config file: /etc/mock/templates/openeuler-20.03-sp4.tpl", and both targets report that every build step failed. mock-core-configs names its openEuler templates by release alone, openeuler-20.03.tpl and openeuler-22.03.tpl, and each already sets releasever to the newest service pack. The two configurations spelled the service pack into the template name, which matches no file in any mock package. openeuler-24.03sp4-x86_64.cfg already includes openeuler-24.03.tpl, which is why that target builds. The ppc64le target fails before any package is built, for two further reasons. rpmkeys --dbpath cannot import the publisher key: rpm takes an fcntl transaction lock on <dbpath>/.rpm.lock, the staging directory is NFS mounted local_lock=none, and that lock answers errno 524 there. The keyring database moves to local temporary storage, keyed on the staging directory so two targets of one run do not share it. The staged source RPMs and the gpg home do not move. A verified publisher RPM is rejected as unreadable: reject_elf_payload read the exit status of rpm2cpio as the verdict on the payload, and on rpm 4.19 rpm2cpio writes the whole payload and still exits 1 with nothing on stderr. The cpio walk moves into scan_cpio_for_elf, which returns its own answer. A truncated stream never reaches the trailer and still dies, which is the case the exit status stood in for, and verify_input has already matched the sha256 and run rpmkeys --checksig before this point. Each fix has a test that fails without it. openeuler_mock_template_include.t reads the configurations only. openeuler_native_trust_dbpath.t and openeuler_native_cpio_scan.t run no rpmkeys and no rpm2cpio: the second builds its cpio streams in Perl and refuses an ELF member, a truncated stream, data after the trailer and a stream that is not cpio, each by name. Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
Native packaging tests
The openEuler packaging tests build and sign RPMs or require Linux namespaces.
They run separately from prove -r t on a disposable host with the required
native tools:
prove -v native/*.t
Use an ordinary user for RPM builds. openeuler-power-inputs.t exercises the
whole build owner only on POWER with native Mock; its RPM admission checks also
run on x86_64. When running that test as root, set XCAT_TEST_BUILD_USER to an
unprivileged account for the fixture builds.
The fixtures are command doubles at the downloader and Mock boundaries. The POWER Mock adapter uses the installed Python API directly to load generated configurations. It does not execute another Python interpreter.
The Mock configuration test loads the installed Python API from a checked-in fixture and is kept outside the unit run.
Inspect TAP skips: a successful exit does not qualify an unavailable native tool or architecture.