From Fedora Project Wiki
No edit summary
 
(7 intermediate revisions by 2 users not shown)
Line 3: Line 3:


== Summary ==
== Summary ==
Have the rpm-build find-provides and find-requires scripts encode the MPI compiler name in the provides string of a binary to distinguish otherwise identical provides between packages $foo, $foo-openmpi and $foo-mpich.
Add dependency generators to encode the MPI compiler name in the provides string of a binary to distinguish otherwise identical provides between packages $foo, $foo-openmpi and $foo-mpich.


== Owner ==
== Owner ==
Line 32: Line 32:
CLOSED as NEXTRELEASE -> change is completed and verified and will be delivered in next release under development
CLOSED as NEXTRELEASE -> change is completed and verified and will be delivered in next release under development
-->
-->
* Tracker bug: <will be assigned by the Wrangler>
* Tracker bug: [https://bugzilla.redhat.com/show_bug.cgi?id=1238428 #1238428]


== Detailed Description ==
== Detailed Description ==
Line 51: Line 51:
   libfoo.so()(64bit)(openmpi-x86_64)
   libfoo.so()(64bit)(openmpi-x86_64)


<strike>To this end, I'm proposing to adapt the find-requires and find-provides scripts as (or similarly to):
This is done by using rpm dependency generator hooks. These hooks will be provided by the rpm-mpi-hooks packge which is up for review [https://bugzilla.redhat.com/show_bug.cgi?id=1241282 here]. One this package is approved, openmpi and mpich will need to add rpm-mpi-hooks as BuildRequires and as Requires to their -devel subpackages.
* [https://smani.fedorapeople.org/find-provides find-provides]
* [https://smani.fedorapeople.org/find-requires find-requires]
 
Discussion of these changes are tracked in bug [https://bugzilla.redhat.com/show_bug.cgi?id=1232504 #1232504].</strike>
This [https://lists.fedoraproject.org/pipermail/devel/2015-June/211570.html post on fedora-devel] outlines the strategy to implement this in a non-intrusive way. As soon as I've implemented this, I'll propose patches to mpi and openmpi to add the corresponding mpi generator hooks to the respective packages.


This change is intended to coordinate the rebuild of all MPI related packages to ensure all such packages consistently use the new provides format.
This change is intended to coordinate the rebuild of all MPI related packages to ensure all such packages consistently use the new provides format.
Line 138: Line 133:
-->
-->


[[Category:ChangeAnnounced]]
[[Category:ChangeAcceptedF23]]
<!-- When your change proposal page is completed and ready for review and announcement -->
<!-- When your change proposal page is completed and ready for review and announcement -->
<!-- remove Category:ChangePageIncomplete and change it to Category:ChangeReadyForWrangler -->
<!-- remove Category:ChangePageIncomplete and change it to Category:ChangeReadyForWrangler -->

Latest revision as of 06:51, 15 October 2015

RPM MPI Requires Provides

Summary

Add dependency generators to encode the MPI compiler name in the provides string of a binary to distinguish otherwise identical provides between packages $foo, $foo-openmpi and $foo-mpich.

Owner

  • Name: Sandro Mani
  • Email: manisandro@gmail.com
  • Release notes owner:

Current status

Detailed Description

Currently, the packages libfoo, libfoo-openmpi and libfoo-mpich providing the library libfoo.so all have a provides string of i.e.

 libfoo.so()(64bit)

While yum used a shortest-package-name rule to choose which package to pick, dnf does not have any rules, and seems to just pick the first match it comes across. Currently the only solution would be to filter the provides from the -openmpi, -mpich packages and add explicit Requires: where needed. I'd like to propose to extend the provides string in such way that it also encodes the MPI implementation, i.e.:

 $ rpm -qp --provides libfoo
 libfoo.so()(64bit)
 $ rpm -qp --provides libfoo-mpich
 libfoo.so()(64bit)(mpich-x86_64)
 $ rpm -qp --provides libfoo-openmpi
 libfoo.so()(64bit)(openmpi-x86_64)

This is done by using rpm dependency generator hooks. These hooks will be provided by the rpm-mpi-hooks packge which is up for review here. One this package is approved, openmpi and mpich will need to add rpm-mpi-hooks as BuildRequires and as Requires to their -devel subpackages.

This change is intended to coordinate the rebuild of all MPI related packages to ensure all such packages consistently use the new provides format.

See also this thread on fedora-devel for the discussion leading to this change proposal.


Benefit to Fedora

Non-colliding provides between libfoo, libfoo-mpi and libfoo-openmpi achieved in a way which does not require any changes to the respective spec files and does not require any extra syntax when creating mpi packages.


Scope

  • Proposal owners:

- Work on find-provides and find-requires based on feedback. - As soon as updated find-provides and find-requires shipped with rpm-build, do a mass-rebuild of all MPI packages.

  • Other developers: N/A (not a System Wide Change)
  • Release engineering: N/A (not a System Wide Change)
  • Policies and guidelines: N/A (not a System Wide Change)
  • Trademark approval: N/A (not needed for this Change)

Upgrade/compatibility impact

N/A (not a System Wide Change)

How To Test

N/A (not a System Wide Change)

User Experience

N/A (not a System Wide Change)

Dependencies

N/A (not a System Wide Change)

Contingency Plan

If the changes to find-requires and find-provides are not accepted, nothing changes compared to the current status.

Documentation

N/A (not a System Wide Change)

Release Notes