From Fedora Project Wiki
(Initial draft)
 
m
Line 1: Line 1:
{{admon/important | Comments and Explanations | The page source contains comments providing guidance to fill out each section. They are invisible when viewing this page. To read it, choose the "edit" link.<br/> '''Copy the source to a ''new page'' before making changes!  DO NOT EDIT THIS TEMPLATE FOR YOUR CHANGE PROPOSAL.'''}}
 
 
<!-- Self Contained or System Wide Change Proposal?
 
Use this guide to determine to which category your proposed change belongs to.
 
 
Self Contained Changes are:
 
* changes to isolated/leaf package without the impact on other packages/rest of the distribution
 
* limited scope changes without the impact on other packages/rest of the distribution
 
* coordinated effort within SIG with limited impact outside SIG functional area, accepted by the SIG
 
 
System Wide Changes are:
 
* changes that does not fit Self Contained Changes category touching
 
* changes that require coordination within the distribution (for example mass rebuilds, release engineering or other teams effort etc.)
 
* changing system defaults
 
 
For Self Contained Changes, sections marked as "REQUIRED FOR SYSTEM WIDE CHANGES" are OPTIONAL but FESCo/Wrangler can request more details (especially in case the change proposal category is
 
improper or updated to System Wide category). For System Wide Changes all fields on this form are required for FESCo acceptance (when applies). 
 
 
We request that you maintain the same order of sections so that all of the change proposal pages are uniform.
 
-->
 
 
<!-- The actual name of your proposed change page should look something like: Changes/Your_Change_Proposal_Name.  This keeps all change proposals in the same namespace -->
 
 
 
<!-- The actual name of your proposed change page should look something like: Changes/Your_Change_Proposal_Name.  This keeps all change proposals in the same namespace -->
 
<!-- The actual name of your proposed change page should look something like: Changes/Your_Change_Proposal_Name.  This keeps all change proposals in the same namespace -->
 
= Changes/RPM_MPI_Requires_Provides =
 
= Changes/RPM_MPI_Requires_Provides =
Line 78: Line 55:
 
* [https://smani.fedorapeople.org/find-requires find-requires]
 
* [https://smani.fedorapeople.org/find-requires find-requires]
  
Discussion of these changes are tracked in bug [http://www.example.com link title].
+
Discussion of these changes are tracked in bug [https://bugzilla.redhat.com/show_bug.cgi?id=1232504 #1232504].
  
 
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.

Revision as of 22:41, 16 June 2015

Changes/RPM_MPI_Requires_Provides

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.

Owner

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

Current status

  • Targeted release: Fedora 23
  • Last updated: 2015-06-17
  • Tracker bug: <will be assigned by the Wrangler>

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)

To this end, I'm proposing to adapt the find-requires and find-provides scripts as (or similarly to):

Discussion of these changes are tracked in bug #1232504.

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