This will presumably also affect Fedora, but need to recheck. We are experiencing some very odd build behaviour using copr to compile for various Fedora and CentOS/RedHat versions (https://copr.fedorainfracloud.org/coprs/openfoam/openfoam).
The built package on centos8 is automatically given the requirement
- libmpi.so.40()(64bit)
But the openmpi package actually provides
- libmpi.so.40()(64bit)(openmpi-x86_64)
Anyone have an idea what is going wrong here?
/mark
I need to follow up on my own post - still haven't figured out how the RPM requires are done.
In the first step, I've completely stripped out my package so that it only builds a simple library (pretty much an mpi "hello world"), and an executable to call it. Wrapped them in a spec file, and these also only create a dependency on
libmpi.so.40()(64bit)
For comparison, I've rebuilt libptscotch (mpich and openmpi) using sources and specs pulled from the srpm. These rpms build correctly *and* they also have the expected dependency on
libmpi.so.40()(64bit)(openmpi-x86_64)
I don't understand how the rpm dependency check on the built libraries works in one case, but not in the other.
The only thing I can imagine is that for the ptscotch build, it uses mpicc instead of gcc + libraries. But even so, how is that information propagate through the libraries?
Any hints, even a polite "rtfm" with the name of the docs I am missing would be very welcome at this point.
Thanks, /mark
On 2020-10-22 13:47, Mark Olesen wrote:
This will presumably also affect Fedora, but need to recheck. We are experiencing some very odd build behaviour using copr to compile for various Fedora and CentOS/RedHat versions (https://copr.fedorainfracloud.org/coprs/openfoam/openfoam).
The built package on centos8 is automatically given the requirement
- libmpi.so.40()(64bit)
But the openmpi package actually provides
- libmpi.so.40()(64bit)(openmpi-x86_64)
On 10/30/20 9:30 PM, Mark Olesen wrote:
I need to follow up on my own post - still haven't figured out how the RPM requires are done.
In the first step, I've completely stripped out my package so that it only builds a simple library (pretty much an mpi "hello world"), and an executable to call it. Wrapped them in a spec file, and these also only create a dependency on
libmpi.so.40()(64bit)
For comparison, I've rebuilt libptscotch (mpich and openmpi) using sources and specs pulled from the srpm. These rpms build correctly *and* they also have the expected dependency on
libmpi.so.40()(64bit)(openmpi-x86_64)
I don't understand how the rpm dependency check on the built libraries works in one case, but not in the other.
The only thing I can imagine is that for the ptscotch build, it uses mpicc instead of gcc + libraries. But even so, how is that information propagate through the libraries?
Are you only adding the libraries? The mpi wrapper does varies things, and generally MPI expects to be called using the wrappers. openmpi's mpicc adds these flags: -I/usr/include/openmpi-x86_64 -pthread -Wl,-rpath -Wl,/usr/lib64/openmpi/lib -Wl,--enable-new-dtags -L/usr/lib64/openmpi/lib -lmpi
A link to the copr builds would be useful to see what flags you have been using. I would also suggest to try to build with mpicc and see whether that fixes the issue.
Any hints, even a polite "rtfm" with the name of the docs I am missing would be very welcome at this point.
Thanks, /mark
On 2020-10-22 13:47, Mark Olesen wrote:
This will presumably also affect Fedora, but need to recheck. We are experiencing some very odd build behaviour using copr to compile for various Fedora and CentOS/RedHat versions (https://copr.fedorainfracloud.org/coprs/openfoam/openfoam).
The built package on centos8 is automatically given the requirement
- libmpi.so.40()(64bit)
But the openmpi package actually provides
- libmpi.so.40()(64bit)(openmpi-x86_64)
They are generated by the rpm requires/dependency generators in rpm-mpi-hooks, so that needs to be in the buildroot when the package is built.
The libraries/binaries also need to be installed into the %{_libdir}/openmpi/{bin,share,lib} hierarchy.
HTH, Orion
On 10/30/20 2:30 PM, Mark Olesen wrote:
I need to follow up on my own post - still haven't figured out how the RPM requires are done.
In the first step, I've completely stripped out my package so that it only builds a simple library (pretty much an mpi "hello world"), and an executable to call it. Wrapped them in a spec file, and these also only create a dependency on
libmpi.so.40()(64bit)
For comparison, I've rebuilt libptscotch (mpich and openmpi) using sources and specs pulled from the srpm. These rpms build correctly *and* they also have the expected dependency on
libmpi.so.40()(64bit)(openmpi-x86_64)
I don't understand how the rpm dependency check on the built libraries works in one case, but not in the other.
The only thing I can imagine is that for the ptscotch build, it uses mpicc instead of gcc + libraries. But even so, how is that information propagate through the libraries?
Any hints, even a polite "rtfm" with the name of the docs I am missing would be very welcome at this point.
Thanks, /mark
On 2020-10-22 13:47, Mark Olesen wrote:
This will presumably also affect Fedora, but need to recheck. We are experiencing some very odd build behaviour using copr to compile for various Fedora and CentOS/RedHat versions (https://copr.fedorainfracloud.org/coprs/openfoam/openfoam).
The built package on centos8 is automatically given the requirement
- libmpi.so.40()(64bit)
But the openmpi package actually provides
- libmpi.so.40()(64bit)(openmpi-x86_64)
devel mailing list -- devel@lists.fedoraproject.org To unsubscribe send an email to devel-leave@lists.fedoraproject.org Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/ List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines List Archives: https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org
Thank you Orion!
This was the decisive bit of missing information.
The bookkeeping issue is now gone, but it did mean that I had to add a fair bit of reworking for my original package to get all the paths relinked properly. One of my mpi-dependent libraries seems to be getting installed OK, but must have something else blocking it. Getting a duplicate-files packaging warning and the lib file is not showing up in the final package. Might still take a bit, but at least your explanation help restore some sanity.
Cheers, and many thanks! /mark
On 2020-10-31 03:39, Orion Poplawski wrote:
They are generated by the rpm requires/dependency generators in rpm-mpi-hooks, so that needs to be in the buildroot when the package is built.
The libraries/binaries also need to be installed into the %{_libdir}/openmpi/{bin,share,lib} hierarchy.
HTH, Orion
On 10/30/20 2:30 PM, Mark Olesen wrote:
I need to follow up on my own post - still haven't figured out how the RPM requires are done.
In the first step, I've completely stripped out my package so that it only builds a simple library (pretty much an mpi "hello world"), and an executable to call it. Wrapped them in a spec file, and these also only create a dependency on
libmpi.so.40()(64bit)
For comparison, I've rebuilt libptscotch (mpich and openmpi) using sources and specs pulled from the srpm. These rpms build correctly *and* they also have the expected dependency on
libmpi.so.40()(64bit)(openmpi-x86_64)
I don't understand how the rpm dependency check on the built libraries works in one case, but not in the other.
The only thing I can imagine is that for the ptscotch build, it uses mpicc instead of gcc + libraries. But even so, how is that information propagate through the libraries?
Any hints, even a polite "rtfm" with the name of the docs I am missing would be very welcome at this point.
Thanks, /mark
On 2020-10-22 13:47, Mark Olesen wrote:
This will presumably also affect Fedora, but need to recheck. We are experiencing some very odd build behaviour using copr to compile for various Fedora and CentOS/RedHat versions (https://copr.fedorainfracloud.org/coprs/openfoam/openfoam).
The built package on centos8 is automatically given the requirement
- libmpi.so.40()(64bit)
But the openmpi package actually provides
- libmpi.so.40()(64bit)(openmpi-x86_64)
devel mailing list -- devel@lists.fedoraproject.org To unsubscribe send an email to devel-leave@lists.fedoraproject.org Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/ List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines List Archives: https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org