Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix incorrect info in Provides section in rpm #181

Merged
merged 3 commits into from
Feb 28, 2021

Conversation

pakmarkthub
Copy link
Collaborator

Problems:

Root cause:

  • The permission of libgdrapi.so.* is not set as executable when install. RPM does not pick non-executable libraries as Provides.
  • AutoReqProv is set to "no" in gdrcopy.spec. This prevents Provides section generation.
    @drossetti You left a comment to get rid of libcuda/libcudart. However, I don't observe that issue when I remove that line. Can you confirm?

This PR:

  • changes permission of installed libgdrapi.so to 755.
  • removes AutoReqProv: no from gdrcopy.spec.

Pre-submit testing:

  • locally on RHEL8.3. Now, the package looks like
$ rpm -qp --provides gdrcopy-2.2-1.x86_64.rpm 
gdrcopy = 2.2-1
gdrcopy(x86-64) = 2.2-1
libgdrapi.so.2()(64bit)

@pakmarkthub
Copy link
Collaborator Author

Now, the Requires section becomes.

$ rpm -qp --requires gdrcopy-2.2-1.x86_64.rpm 
check
gdrcopy-kmod
libc.so.6()(64bit)
libc.so.6(GLIBC_2.14)(64bit)
libc.so.6(GLIBC_2.17)(64bit)
libc.so.6(GLIBC_2.2.5)(64bit)
libc.so.6(GLIBC_2.3)(64bit)
libcheck.so.0()(64bit)
libcuda.so.1()(64bit)
libdl.so.2()(64bit)
libgcc_s.so.1()(64bit)
libgdrapi.so.2()(64bit)
libm.so.6()(64bit)
libpthread.so.0()(64bit)
libpthread.so.0(GLIBC_2.2.5)(64bit)
librt.so.1()(64bit)
libstdc++.so.6()(64bit)
libstdc++.so.6(GLIBCXX_3.4)(64bit)
libstdc++.so.6(GLIBCXX_3.4.11)(64bit)
libstdc++.so.6(GLIBCXX_3.4.9)(64bit)
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(PayloadIsXz) <= 5.2-1
rtld(GNU_HASH)

This is similar to the Requires section in ucx-gdrcopy.
@drossetti Let me know if you strongly don't want libcuda to be listed in the Requires section.

@drossetti
Copy link
Member

The problem with libcuda is for when user installs the GPU driver via installer, as in that case installation must be forced.
I guess it is not a big deal, but I would do a focused round of QA and bump package revision to -2

@drossetti
Copy link
Member

Is it possible to have a Provides section which only lists libgdrapi ?

@pakmarkthub
Copy link
Collaborator Author

I have filtered out libcuda.so from the Requires section. The other dependencies are still listed there as they should come with the base OS. Now that section looks like as shown below. The Provides section does not change. Your thoughts @drossetti ?

$ rpm -qp --requires gdrcopy-2.2-1.x86_64.rpm 
check
gdrcopy-kmod
libc.so.6()(64bit)
libc.so.6(GLIBC_2.11)(64bit)
libc.so.6(GLIBC_2.14)(64bit)
libc.so.6(GLIBC_2.2.5)(64bit)
libc.so.6(GLIBC_2.3)(64bit)
libc.so.6(GLIBC_2.3.4)(64bit)
libc.so.6(GLIBC_2.4)(64bit)
libgdrapi.so.2()(64bit)
libm.so.6()(64bit)
libm.so.6(GLIBC_2.2.5)(64bit)
libpthread.so.0()(64bit)
libpthread.so.0(GLIBC_2.2.5)(64bit)
libpthread.so.0(GLIBC_2.3.3)(64bit)
librt.so.1()(64bit)
librt.so.1(GLIBC_2.2.5)(64bit)
librt.so.1(GLIBC_2.3.3)(64bit)
libstdc++.so.6()(64bit)
libstdc++.so.6(GLIBCXX_3.4)(64bit)
libstdc++.so.6(GLIBCXX_3.4.11)(64bit)
libstdc++.so.6(GLIBCXX_3.4.9)(64bit)
libsubunit.so.0()(64bit)
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rtld(GNU_HASH)

By the way, I used a different machine to run this test. So, the list is not exactly the same as the previous one I showed.

@drossetti drossetti merged commit cd083a5 into NVIDIA:master Feb 28, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants