Bug 2210308 - rpminspect: rpmdeps inspection failure in libomp
Summary: rpminspect: rpmdeps inspection failure in libomp
Keywords:
Status: VERIFIED
Alias: None
Product: Red Hat Enterprise Linux 8
Classification: Red Hat
Component: libomp
Version: 8.9
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: rc
: ---
Assignee: Tom Stellard
QA Contact: Jesus Checa
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2023-05-26 14:16 UTC by Jesus Checa
Modified: 2023-07-20 07:56 UTC (History)
5 users (show)

Fixed In Version: libomp-16.0.6-3.module_el8+542+a7fa0888
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed:
Type: Bug
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Issue Tracker RHELPLAN-158312 0 None None None 2023-05-26 14:19:13 UTC

Description Jesus Checa 2023-05-26 14:16:38 UTC
Description of problem:
rpmdeps inspection pops up two dependency issues in libomp rpm. Using aarch64 only to illustrate the errors, this occurs in aarch64, ppc64le, s390x and x86_64.

rpmdeps:
--------
1) Multiple subpackages provide 'Requires: libomp.so()(64bit)': [libomp, libomp-test] but these subpackages carry explicit Requires: [libomp, libomp, libomp] 

Result: VERIFY
Waiver Authorization: Anyone

Suggested Remedy: Check subpackage %files sections and explicit Provides statements.  Only one subpackage should provide a given shared library.  Shared library names are automatically added as Provides, so there is no need to specify them in the spec file but you do need
to make sure only one subpackage is packaging up the shared library in question.

2) Subpackage libomp-devel on aarch64 carries 'Requires: libomptarget.rtl.aarch64.nextgen.so.16()(64bit)' which comes from subpackage libomp but does not carry an explicit package version requirement.  Please add 'Requires: libomp = %{version}-%{release}' to the spec file
to avoid the need to test interoperability between various combinations of old and new subpackages. 

Result: VERIFY
Waiver Authorization: Anyone

Suggested Remedy: Add the indicated explicit Requires to the spec file for the named subpackage.  Subpackages depending on shared libraries in another subpackage must carry an explicit 'Requires: SUBPACKAGE_NAME = %{version}-%{release}' in the spec file.

3) Subpackage libomp-devel on aarch64 carries 'Requires: libomptarget.rtl.aarch64.so.16()(64bit)' which comes from subpackage libomp but does not carry an explicit package version requirement.  Please add 'Requires: libomp = %{version}-%{release}' to the spec file to avoid
the need to test interoperability between various combinations of old and new subpackages. 

Result: VERIFY
Waiver Authorization: Anyone

Suggested Remedy: Add the indicated explicit Requires to the spec file for the named subpackage.  Subpackages depending on shared libraries in another subpackage must carry an explicit 'Requires: SUBPACKAGE_NAME = %{version}-%{release}' in the spec file.

4) Subpackage libomp-devel on aarch64 carries 'Requires: libomptarget.rtl.amdgpu.nextgen.so.16()(64bit)' which comes from subpackage libomp but does not carry an explicit package version requirement.  Please add 'Requires: libomp = %{version}-%{release}' to the spec file
to avoid the need to test interoperability between various combinations of old and new subpackages. 

Result: VERIFY
Waiver Authorization: Anyone

Suggested Remedy: Add the indicated explicit Requires to the spec file for the named subpackage.  Subpackages depending on shared libraries in another subpackage must carry an explicit 'Requires: SUBPACKAGE_NAME = %{version}-%{release}' in the spec file.

5) Subpackage libomp-devel on aarch64 carries 'Requires: libomptarget.rtl.amdgpu.so.16()(64bit)' which comes from subpackage libomp but does not carry an explicit package version requirement.  Please add 'Requires: libomp = %{version}-%{release}' to the spec file to avoid
the need to test interoperability between various combinations of old and new subpackages. 

Result: VERIFY
Waiver Authorization: Anyone

Suggested Remedy: Add the indicated explicit Requires to the spec file for the named subpackage.  Subpackages depending on shared libraries in another subpackage must carry an explicit 'Requires: SUBPACKAGE_NAME = %{version}-%{release}' in the spec file.

6) Subpackage libomp-devel on aarch64 carries 'Requires: libomptarget.rtl.cuda.nextgen.so.16()(64bit)' which comes from subpackage libomp but does not carry an explicit package version requirement.  Please add 'Requires: libomp = %{version}-%{release}' to the spec file to
avoid the need to test interoperability between various combinations of old and new subpackages. 

Result: VERIFY
Waiver Authorization: Anyone

Suggested Remedy: Add the indicated explicit Requires to the spec file for the named subpackage.  Subpackages depending on shared libraries in another subpackage must carry an explicit 'Requires: SUBPACKAGE_NAME = %{version}-%{release}' in the spec file.

7) Subpackage libomp-devel on aarch64 carries 'Requires: libomptarget.rtl.cuda.so.16()(64bit)' which comes from subpackage libomp but does not carry an explicit package version requirement.  Please add 'Requires: libomp = %{version}-%{release}' to the spec file to avoid
the need to test interoperability between various combinations of old and new subpackages. 

Result: VERIFY
Waiver Authorization: Anyone

Suggested Remedy: Add the indicated explicit Requires to the spec file for the named subpackage.  Subpackages depending on shared libraries in another subpackage must carry an explicit 'Requires: SUBPACKAGE_NAME = %{version}-%{release}' in the spec file.

8) Subpackage libomp-devel on aarch64 carries 'Requires: libomptarget.so.16()(64bit)' which comes from subpackage libomp but does not carry an explicit package version requirement.  Please add 'Requires: libomp = %{version}-%{release}' to the spec file to avoid the need to
test interoperability between various combinations of old and new subpackages. 

Result: VERIFY
Waiver Authorization: Anyone
----

The first error seems to happen because libomp-test has libomp.so() in the provides list:
----------
# rpm -q --provides libomp-test-16.0.0-1.module+el8.9.0+18819+1c91450f.aarch64.rpm                                                                                         
libomp-test = 16.0.0-1.module+el8.9.0+18819+1c91450f
libomp-test(aarch-64) = 16.0.0-1.module+el8.9.0+18819+1c91450f
libomp.so()(64bit)
libomp.so(GOMP_1.0)(64bit)
libomp.so(GOMP_2.0)(64bit)
libomp.so(GOMP_3.0)(64bit)
libomp.so(GOMP_4.0)(64bit)
libomp.so(GOMP_4.5)(64bit)
libomp.so(GOMP_5.0)(64bit)
libomp.so(GOMP_5.0.1)(64bit)
libomp.so(OMP_1.0)(64bit)
libomp.so(OMP_2.0)(64bit)
libomp.so(OMP_3.0)(64bit)
libomp.so(OMP_3.1)(64bit)
libomp.so(OMP_4.0)(64bit)
libomp.so(OMP_4.5)(64bit)
libomp.so(OMP_5.0)(64bit)
libomp.so(VERSION)(64bit)
----------

The rest of errors seem to be caused because there is not an explicit dependency between libomp-devel and libomp. Adding "Requires: %{name}%{?isa} = %{version}-%{release}" to the "%package devel" section might fix the issue.

Version-Release number of selected component (if applicable):
libomp-16.0.0-1.module+el8.9.0+18819+1c91450f

How reproducible:
100%

Steps to Reproduce:
1. rpminspect-redhat -v -T rpmdeps --release=el8 --profile=rhel-8 -s VERIFY libomp-15.0.7-1.module+el8.8.0+17939+b58878af libomp-16.0.0-1.module+el8.9.0+18819+1c91450f


Actual results:
Output described above

Expected results:
No dependency issues.

Additional info:


Note You need to log in before you can comment on or make changes to this bug.