[LU-12395] Failed dependencies while installing lustre-client-tests and lustre-iokit rpms on RHEL 8.0 client Created: 06/Jun/19  Updated: 10/Mar/20  Resolved: 10/Jul/19

Status: Resolved
Project: Lustre
Component/s: None
Affects Version/s: None
Fix Version/s: Lustre 2.13.0, Lustre 2.12.3

Type: Bug Priority: Critical
Reporter: Jian Yu Assignee: Dongyang Li
Resolution: Fixed Votes: 0
Labels: None

Issue Links:
Related
is related to LU-13348 Landing LU-12395 broke an MPICH support Resolved
is related to LU-12269 Support RHEL 8.0 Resolved
is related to LU-13086 3c7aca747 LU-12395 breaks compatibili... Resolved
Severity: 3
Rank (Obsolete): 9223372036854775807

 Description   

While installing lustre-client-tests and lustre-iokit rpms on RHEL 8.0 client, they hit the following dependency issues:

error: Failed dependencies:
	libmpi.so.40()(64bit) is needed by lustre-client-tests-2.12.54-1.el8.x86_64
	python > 2.2 is needed by lustre-iokit-2.12.54-1.el8.x86_64

On RHEL 8.0, openmpi provides "libmpi.so.40()(64bit)(openmpi-x86_64)", not "libmpi.so.40()(64bit)". There are python2 and python3 on RHEL 8.0, no python.



 Comments   
Comment by Peter Jones [ 06/Jun/19 ]

Dongyang is looking into this

Comment by Dongyang Li [ 06/Jun/19 ]

Jian,

Can you share how did you built the rpms? I just built the client rpms and lustre-client-tests doesn't have dependency on libmpi, and I could not find where do we insert the dependency on libmpi in the spec:

[root@rhel8 lustre-release]# rpm -qpR ./lustre-client-tests-2.12.54-1.el8.x86_64.rpm 
/bin/bash
/bin/sh
/usr/bin/getconf
/usr/bin/perl
attr
kmod-lustre-client = 2.12.54
kmod-lustre-client-tests = 2.12.54
libc.so.6()(64bit)
libc.so.6(GLIBC_2.14)(64bit)
libc.so.6(GLIBC_2.2.5)(64bit)
libc.so.6(GLIBC_2.28)(64bit)
libc.so.6(GLIBC_2.3)(64bit)
libc.so.6(GLIBC_2.3.4)(64bit)
libc.so.6(GLIBC_2.4)(64bit)
libkeyutils.so.1()(64bit)
liblustreapi.so.1()(64bit)
libpthread.so.0()(64bit)
libpthread.so.0(GLIBC_2.2.5)(64bit)
libtool
lsof
lustre-client = 2.12.54
lustre-iokit
perl
perl(FileHandle)
perl(Getopt::Std)
perl(IO::Handle)
perl(POSIX)
perl(Socket)
perl(strict)
perl(vars)
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(PayloadIsXz) <= 5.2-1
rsync
rtld(GNU_HASH)

Can you also share the output of "rpm --qpR" on the lustre-client-tests rpm file and the output of "rpm -qa | grep mpi"?

the dependency on python by lustre-iokit is there and can be easily fixed.

Comment by Jian Yu [ 06/Jun/19 ]

Hi Dongyang,
I used the client rpms built by Jenkins:
https://build.whamcloud.com/job/lustre-master/3904/arch=x86_64,build_type=client,distro=el8,ib_stack=inkernel/
Here is the build log:
https://build.whamcloud.com/job/lustre-master/3904/arch=x86_64,build_type=client,distro=el8,ib_stack=inkernel/consoleFull

# rpm -qpR lustre-client-tests-2.12.54-1.el8.x86_64.rpm
/bin/bash
/bin/sh
/usr/bin/getconf
/usr/bin/perl
attr
kmod-lustre-client = 2.12.54
kmod-lustre-client-tests = 2.12.54
libc.so.6()(64bit)
libc.so.6(GLIBC_2.14)(64bit)
libc.so.6(GLIBC_2.2.5)(64bit)
libc.so.6(GLIBC_2.28)(64bit)
libc.so.6(GLIBC_2.3)(64bit)
libc.so.6(GLIBC_2.3.4)(64bit)
libc.so.6(GLIBC_2.4)(64bit)
libc.so.6(GLIBC_2.7)(64bit)
libkeyutils.so.1()(64bit)
liblustreapi.so.1()(64bit)
libmpi.so.40()(64bit)
libpthread.so.0()(64bit)
libpthread.so.0(GLIBC_2.2.5)(64bit)
libreadline.so.7()(64bit)
libtool
lsof
lustre-client = 2.12.54
lustre-iokit
perl
perl(FileHandle)
perl(Getopt::Std)
perl(IO::Handle)
perl(POSIX)
perl(Socket)
perl(strict)
perl(vars)
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(PayloadIsXz) <= 5.2-1
rsync
rtld(GNU_HASH)
# rpm -qa | grep mpi
orc-compiler-0.4.28-2.el8.x86_64
compiler-rt-7.0.1-1.module+el8+2560+c32c7af1.x86_64
mpitests-mvapich2-psm2-5.4.2-4.el8.x86_64
rpm-mpi-hooks-5-4.el8.noarch
openmpi-devel-3.1.2-5.el8.x86_64
omping-0.0.4-14.el8.x86_64
mpitests-mvapich2-5.4.2-4.el8.x86_64
exempi-2.4.5-2.el8.x86_64
mpich-devel-3.2.1-9.el8.x86_64
libcmpiCppImpl0-2.0.3-15.el8.x86_64
openmpi-3.1.2-5.el8.x86_64
mpich-3.2.1-9.el8.x86_64
mpitests-openmpi-5.4.2-4.el8.x86_64
mpitests-mpich-5.4.2-4.el8.x86_64
# rpm -ivh IOR-2.10.3-wc1.x86_64.rpm 
error: Failed dependencies:
	libmpi.so.40()(64bit) is needed by IOR-2.10.3-wc1.x86_64
Comment by Gerrit Updater [ 07/Jun/19 ]

Li Dongyang (dongyangli@ddn.com) uploaded a new patch: https://review.whamcloud.com/35094
Subject: LU-12395 build: require python2 for lustre-iokit
Project: fs/lustre-release
Branch: master
Current Patch Set: 1
Commit: f56ae83d3125e2b5a32732386ba30f48f5151725

Comment by Dongyang Li [ 07/Jun/19 ]

I think I know what's going on with the MPI dependencies now.

RHEL8 has rpm-mpi-hooks, which will generate the provides/requires for different mpi libs.

https://fedoraproject.org//wiki/Changes/RpmMPIReqProv

This is done to distinguish e.g. libmpi.so from openmpi and mpich. What that means is we should have 2 additional lutre-client-tests rpms, like lustre-client-tests-openmpi and lustre-client-tests-mpich to package the mpi tests, and they will have different dependencies on libmpi.so

According to https://fedoraproject.org/wiki/Packaging:MPI

the binary should be placed under /usr/lib64/openmpi/bin or /usr/lib64/mpich/bin

This means we need to change the rpm build spec and maybe the test scripts assuming the location of the mpi tests.

The same should also be done for the IOR package.

Before that happens a walkaround is disabling the mpi tests, can be achieved by removing the openmpi/mpich packages from the build system, or use --enable-mpitests=no configure option.

Comment by Andreas Dilger [ 12/Jun/19 ]

Does it make sense to split out the MPI tests into a separate RPM, namely lustre-client-tests-openmpi and lustre-client-tests-mpich, but keep the rest of the test binaries/scripts in lustre-client-tests? That avoids increasing the size of the build products. Alternately, we just build one or the other MPI RPMs, but name them appropriately and add the appropriate Requires: line so that it will refuse to install with the wrong packages.

Since very few users beyond autotest will ever install lustre-client-tests-*mpi I don't think we need to spend too much time making this work everywhere.

Comment by Dongyang Li [ 12/Jun/19 ]

Yes we should still have the lustre-client-tests rpm which has the common binary and scripts,

and 2 additional lustre-client-tests-openmpi and lustre-client-tests-mpich for the mpt tests only, like the example listed in the fedora wiki:

https://fedoraproject.org/wiki/Packaging:MPI

Still we need to make sure changing the specs won't break the build for old distros like CentOS7

Comment by Gerrit Updater [ 16/Jun/19 ]

Oleg Drokin (green@whamcloud.com) merged in patch https://review.whamcloud.com/35094/
Subject: LU-12395 build: require python2 for lustre-iokit
Project: fs/lustre-release
Branch: master
Current Patch Set:
Commit: 6f0fcc289887737f45687b5f8a15835aeab32ef4

Comment by Peter Jones [ 16/Jun/19 ]

Landed for 2.13

Comment by Gerrit Updater [ 17/Jun/19 ]

Jian Yu (yujian@whamcloud.com) uploaded a new patch: https://review.whamcloud.com/35251
Subject: LU-12395 build: require python2 for lustre-iokit
Project: fs/lustre-release
Branch: b2_12
Current Patch Set: 1
Commit: 58fc7991c903e15d49b814130f663667d01a24b5

Comment by Minh Diep [ 21/Jun/19 ]

this issue has not completed. we still need to split the lustre-client-tests rpm

Comment by Gerrit Updater [ 25/Jun/19 ]

Oleg Drokin (green@whamcloud.com) merged in patch https://review.whamcloud.com/35251/
Subject: LU-12395 build: require python2 for lustre-iokit
Project: fs/lustre-release
Branch: b2_12
Current Patch Set:
Commit: 9ffeaac8ec9ad338f6d2639fd5a2d7fafb6725c6

Comment by Gerrit Updater [ 28/Jun/19 ]

Minh Diep (mdiep@whamcloud.com) uploaded a new patch: https://review.whamcloud.com/35374
Subject: LU-12395 build: build mpitests for el8
Project: fs/lustre-release
Branch: master
Current Patch Set: 1
Commit: edb4cd7414988cb7fdce3aa2332876377131d764

Comment by Gerrit Updater [ 10/Jul/19 ]

Oleg Drokin (green@whamcloud.com) merged in patch https://review.whamcloud.com/35374/
Subject: LU-12395 build: build mpitests for el8
Project: fs/lustre-release
Branch: master
Current Patch Set:
Commit: 3c7aca74729edb5339d2b84259ba042bf83c214a

Comment by Peter Jones [ 10/Jul/19 ]

Now I think this is complete for 2.13

Comment by Gerrit Updater [ 11/Jul/19 ]

Minh Diep (mdiep@whamcloud.com) uploaded a new patch: https://review.whamcloud.com/35473
Subject: LU-12395 build: build mpitests for el8
Project: fs/lustre-release
Branch: b2_12
Current Patch Set: 1
Commit: 9f1d8b7b976f6fd444ff76f8b203672b21618b6d

Comment by Gerrit Updater [ 16/Jul/19 ]

Oleg Drokin (green@whamcloud.com) merged in patch https://review.whamcloud.com/35473/
Subject: LU-12395 build: build mpitests for el8
Project: fs/lustre-release
Branch: b2_12
Current Patch Set:
Commit: 3d3b453e3a4204dd1a9f4cc601abb9cd85e84add

Generated at Sat Feb 10 02:52:12 UTC 2024 using Jira 9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c.