Skip to content

SRE-3988 ci: separate ucx lib - #18949

Draft
grom72 wants to merge 19 commits into
masterfrom
grom72/SRE-3988-separate-ucx-lib
Draft

SRE-3988 ci: separate ucx lib#18949
grom72 wants to merge 19 commits into
masterfrom
grom72/SRE-3988-separate-ucx-lib

Conversation

@grom72

@grom72 grom72 commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

Steps for the author:

  • Commit message follows the guidelines.
  • Appropriate Features or Test-tag pragmas were used.
  • Appropriate Functional Test Stages were run.
  • At least two positive code reviews including at least one code owner from each category referenced in the PR.
  • Testing is complete. If necessary, forced-landing label added and a reason added in a comment.

After all prior steps are complete:

  • Gatekeeper requested (daos-gatekeeper added as a reviewer).

@github-actions

github-actions Bot commented Aug 27, 2026

Copy link
Copy Markdown

Errors are Unable to load ticket data
https://daosio.atlassian.net/browse/SRE-3988

@grom72 grom72 changed the title Grom72/sre 3988 separate ucx lib SRE-3988 ci: separate ucx lib Aug 27, 2026
@daosbuild3

Copy link
Copy Markdown
Collaborator

Test stage Unit Test with memcheck completed with status UNSTABLE. https://jenkins-3.daos.hpc.amslabs.hpecorp.net/job/daos-stack/job/daos//view/change-requests/job/PR-18949/1/testReport/

@daosbuild3

Copy link
Copy Markdown
Collaborator

grom72 added 17 commits August 28, 2026 21:19
Restore automatic RPM runtime dependency generation in common
packaging flow while keeping behavior limited to RPM output.

- Add --rpm-autoreq back to build_package().
- Keep --rpm-autoprov enabled.
- Apply both flags only when OUTPUT_TYPE=rpm.

This avoids impacting non-RPM outputs and restores ELF-derived
Requires metadata for RPM packages.

This reverts changes introduced in
#18057.

Signed-off-by: Tomasz Gromadzki <tomasz.gromadzki@hpe.com>
Add explicit runtime dependency from libpmem-devel to
${pmem_lib} = ${pmdk_full}.

The devel package ships libpmem.so symlink but did not require the
runtime package providing libpmem.so.1, which can leave a broken
linker target when installed standalone.

This keeps devel/runtime package linkage consistent across RPM
outputs.

Signed-off-by: Tomasz Gromadzki <tomasz.gromadzki@hpe.com>
Document rebuilds for defective RPM metadata in changelogs and bump
non-PMDK package release numbers to force updates.

Update release values in package_info.sh for:
- daos-spdk
- isa-l_crypto
- mercury

Signed-off-by: Tomasz Gromadzki <tomasz.gromadzki@hpe.com>
Introduce a dedicated RPM validation script and wire it into the packaging workflow.

What this commit delivers:
- add utils/rpms/verify_rpms.sh as a CI/local gate for generated RPM sets
- validate RPM integrity, payload readability, and dependency metadata consistency
- verify -devel lib*.so symlink linkage against runtime providers
- handle provider edge cases (single-line Provides output and payload-based fallback)
- keep dynamic ELF Requires validation for non-devel packages
- integrate execution from utils/rpms/build_packages.sh
- install required verification tooling via install scripts
- document script behavior, scope, and function-level contract comments

Signed-off-by: Tomasz Gromadzki <tomasz.gromadzki@hpe.com>

DAOS-19540 fix: guard RPM-only FPM options by output type

Limit RPM-specific FPM flags to RPM builds to avoid applying them to other package types.

Changes:

- In utils/rpms/fpm_common.sh, move --rpm-changelog under the same output_type==rpm block as --rpm-autoprov/--rpm-autoreq.

- In utils/rpms/libfabric.sh, guard --rpm-autoprov with OUTPUT_TYPE==rpm in both build paths.

Why:

- --rpm-* options are RPM-only and should not leak into non-RPM package flows.

- Keeps RPM behavior unchanged while making mixed output builds safer.

Signed-off-by: Tomasz Gromadzki <tomasz.gromadzki@hpe.com>

Refactor code + improve doc + skip verify for no-rpm (deb) case.

Signed-off-by: Tomasz Gromadzki <tomasz.gromadzki@hpe.com>

DAOS-19540 fix: scope RPM autoreq and verification checks

Limit RPM verification to supported RPM platforms, restore a per-package noautoreq escape hatch for daos-client-tests-openmpi, and keep verifier checks aligned with explicit OpenMPI package dependencies.

Signed-off-by: Tomasz Gromadzki <tomasz.gromadzki@hpe.com>

DAOS-19540 fix: drop duplicate rpm-autoprov in libfabric.sh

--rpm-autoprov is already added in fpm_common.sh for all RPM builds.
Remove duplicate local additions from libfabric.sh to keep
the packaging flow simpler without changing behavior.

Signed-off-by: Tomasz Gromadzki <tomasz.gromadzki@hpe.com>

DAOS-19540 fix: reduce false positives in verify_rpms

Teach verify_rpms.sh to accept one-hop runtime package dependencies and
ignore base system library providers such as libc.so.6.
This fixes EL9 verifier failures for valid daos-devel and
daos-client-tests-openmpi packaging layouts.

Signed-off-by: Tomasz Gromadzki <tomasz.gromadzki@hpe.com>

Fix to simplify the process

pm: add configurable RPM verification and simplify verify_rpms checks

- add verify toggle to build_packages.sh:
  - new 2nd arg: verify (yes|no), default yes
  - run verify_rpms.sh only when verify=yes
  - add usage/docs header and license header (Google 2025, HPE 2026)

- add Docker build control for verification:
  - new ARG DAOS_DEPS_VERIFY=yes in Dockerfile.leap.15
  - pass DAOS_DEPS_VERIFY to build_packages.sh for deps and daos builds
  - gate explicit verify_rpms.sh call with DAOS_DEPS_VERIFY

- simplify verify_rpms.sh:
  - move to grep-based Requires matching
  - remove unnecessary tooling dependency on file
  - require libc soname presence via libc.so.6* entries for dynamic ELF binaries
  - improve devel runtime dependency check to accept generated runtime naming variants
    (e.g., libfoo1/libfoo0) at matching version
  - intentionally exclude fused-devel from runtime-package check (fused runtime RPMs
    are not built in this pipeline)
  - remove pkg_versions map; use package presence map + on-demand rpm version query

- validated with syntax checks and containerized manual run against /home/daos/rpms/deps

Signed-off-by: Tomasz Gromadzki <tomasz.gromadzki@hpe.com>

rpm: fix devel-runtime validation and add DAOS-specific transitive allowance

- simplify verify_rpms runtime matching while keeping strict package integrity checks
- keep libc verification for dynamic ELF binaries based on libc.so.6* autoreq entries
- enforce direct -devel -> base runtime (= version) when base runtime package exists
- support distro runtime naming variants for lib* packages (libfoo-devel -> libfooN)
- exclude fused-devel from runtime-package check (fused runtime RPMs are intentionally not built)
- add narrow DAOS exception:
  - allow daos-devel -> daos-client (= version)
  - only when daos-client itself requires daos (= same version)
- remove noisy debug output and keep behavior deterministic across generated RPM sets

Also included in this series:
- add verify toggle to build_packages.sh: [build_type] [verify], default verify=yes
- add Docker build arg DAOS_DEPS_VERIFY=yes and wire it to package build/verify flow
- add license/usage header updates in build_packages.sh

Signed-off-by: Tomasz Gromadzki <tomasz.gromadzki@hpe.com>
The file RPM is only required by maldet.

Signed-off-by: Tomasz Gromadzki <tomasz.gromadzki@hpe.com>
Skip-cancel-previous-bBuilds: true
Signed-off-by: Tomasz Gromadzki <tomasz.gromadzki@hpe.com>
In verify_rpms.sh, check_devel_runtime_dependency derives the runtime
package name by stripping -devel (e.g. isa-l_crypto-devel -> isa-l_crypto).
When the runtime package in the generated RPM set has a 'lib' prefix
(e.g. libisa-l_crypto), check_devel_runtime_dependency failed because
isa-l_crypto was missing from pkg_present and did not start with 'lib'.

Fix this by falling back to 'lib${runtime_pkg}' if the base runtime package
without the 'lib' prefix is not present in the generated RPM set.

Signed-off-by: Tomasz Gromadzki <tomasz.gromadzki@hpe.com>
Signed-off-by: Tomasz Gromadzki <tomasz.gromadzki@hpe.com>
Signed-off-by: Tomasz Gromadzki <tomasz.gromadzki@hpe.com>
Signed-off-by: Tomasz Gromadzki <tomasz.gromadzki@hpe.com>
Signed-off-by: Tomasz Gromadzki <tomasz.gromadzki@hpe.com>

Skip-cancel-previous-builds: true
Signed-off-by: Tomasz Gromadzki <tomasz.gromadzki@hpe.com>

Skip-test: true
Skip-test-hardware: true
Skip-cancel-previous-builds: true
Skip-test: true
Skip-test-hardware: true
Signed-off-by: Tomasz Gromadzki <tomasz.gromadzki@hpe.com>
Skip-cancel-previous-builds: true
Skip-test: true
Skip-test-hardware: true
Signed-off-by: Tomasz Gromadzki <tomasz.gromadzki@hpe.com>
    Skip-cancel-previous-builds: true
    Skip-test: true
    Skip-test-hardware: true

Signed-off-by: Tomasz Gromadzki <tomasz.gromadzki@hpe.com>
    Skip-cancel-previous-builds: true
    Skip-test: true
    Skip-test-hardware: true

Signed-off-by: Tomasz Gromadzki <tomasz.gromadzki@hpe.com>
Skip-test: true
Skip-test-hardware: true
Signed-off-by: Tomasz Gromadzki <tomasz.gromadzki@hpe.com>
@grom72
grom72 force-pushed the grom72/SRE-3988-separate-ucx-lib branch from 57af1d1 to 910691c Compare August 28, 2026 19:21
Skip-test: true
Skip-test-hardware: true

Signed-off-by: Tomasz Gromadzki <tomasz.gromadzki@hpe.com>
@grom72
grom72 force-pushed the grom72/SRE-3988-separate-ucx-lib branch from 910691c to 5747dee Compare August 28, 2026 19:22
Signed-off-by: Tomasz Gromadzki <tomasz.gromadzki@hpe.com>

Skip-test: true
Skip-test-hardware: true
Skip-cancel-previous-builds: true
@daosbuild3

Copy link
Copy Markdown
Collaborator

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants