Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 251482 - virtual/mpi-1.0 should handle common USE flags.
Summary: virtual/mpi-1.0 should handle common USE flags.
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: New packages (show other bugs)
Hardware: All Linux
: High enhancement (vote)
Assignee: Gentoo Cluster Team
URL:
Whiteboard:
Keywords:
Depends on: 266409 266555 266565
Blocks:
  Show dependency tree
 
Reported: 2008-12-18 15:09 UTC by Hugo Mildenberger
Modified: 2010-09-10 19:01 UTC (History)
1 user (show)

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Hugo Mildenberger 2008-12-18 15:09:05 UTC
virtual/mpi-1.0 neglects the use flags of it's managed packages. Hence, when writing an ebuild dependending on this virtual and needing, i.e., an mpi c++ compiler wrapper, you can't set a dependency like "virtual/mpi[cxx]", because "cxx" is not in the "IUSE" flag list of virtual/mpi, in turn because emerging the package would fail for this reason.

For virtual packages, I propose to get the IUSE enumeration automatically collected by some portage means, as maintaining the use flag list manually is tedious and error-prone. In this example, you even get a "cxx" use flag, and additionally a "nocxx" use flag, inconsistently describing the same feature.

The use flag list manually collected from all packages managed by virtual/mpi-1.0 is this:

	crypt cxx debug doc elibc_FreeBSD examples fast fortran heterogeneous 
	ipv6 mpe mpe-sdk mpi-threads nocxx pbs pvfs2 romio threads xmpi 



equery use output for openmpi, mpich2, lam-mpi, mpich:

[ Searching for packages matching sys-cluster/openmpi... ]
[ Found these USE variables for sys-cluster/openmpi-1.2.8 ]
 U I
 - - debug         : Enable extra debug codepaths, like asserts and extra output. 
 - - fortran       : Adds support for fortran (formerly f77)
 - - heterogeneous : Enable features required for heterogeneous platform support
 - - ipv6          : Adds support for IP version 6
 - - mpi-threads   : Enable MPI_THREAD_MULTIPLE
 - - nocxx         : Disable support for C++ 
 - - pbs           : Add support for the Portable Batch System (PBS)
 - - romio         : Build the ROMIO MPI-IO component
 - - threads       : Adds threads support for various packages. Usually pthreads

[ Searching for packages matching sys-cluster/mpich2... ]
[ Found these USE variables for sys-cluster/mpich2-1.0.6 ]
 U I
 + + crypt         : Add support for encryption -- using mcrypt or gpg where applicable
 - - cxx           : Builds support for C++ (bindings, extra libraries, code gen, ...)
 - - debug         : Enable extra debug codepaths, like asserts and extra output.
 - - doc           : Adds extra documentation (API, Javadoc, etc)
 - - elibc_FreeBSD : <unknown>
 - - fast          : Enabling fast turns off error checking and timing collection
 - - fortran       : Adds support for fortran (formerly f77)
 - - mpe           : Add mpe support
 - - mpe-sdk       : Include additional SDK support, jar files
 - - pvfs2         : Add pvfs2 support
 - - threads       : Adds threads support for various packages. Usually pthreads

[ Searching for packages matching sys-cluster/lam-mpi... ]
[ Found these USE variables for sys-cluster/lam-mpi-7.1.4 ]
 U I
 + + crypt    : Add support for encryption -- using mcrypt or gpg where applicable
 - - debug    : Enable extra debug codepaths, like asserts and extra output.
 - - examples : Install examples, usually source code
 - - fortran  : Adds support for fortran (formerly f77)
 - - pbs      : Add support for the Portable Batch System (PBS)
 - - romio    : Enable romio, a high-performance portable MPI-IO implementation
 - - xmpi     : Build support for the external XMPI debugging GUI

[ Searching for packages matching sys-cluster/mpich... ]
[ Found these USE variables for sys-cluster/mpich-1.2.7_p1 ]
 U I
 + + crypt : Add support for encryption -- using mcrypt or gpg where applicable
 - - doc   : Adds extra documentation (API, Javadoc, etc)

Reproducible: Always

Steps to Reproduce:
1. emerge mpi[cxx] (or USE=cxx emerge mpi)
Comment 1 Hugo Mildenberger 2008-12-18 15:26:36 UTC
The "cxx" versus "nocxx" isuue is a global inconsistency, as
"/usr/portage/profiles/use.desc" contains the following two lines:

cxx - Builds support for C++ (bindings, extra libraries, code generation, ...)

nocxx - Disable support for C++ (DON'T USE THIS UNLESS YOU KNOW WHAT YOU'RE DOING)
Comment 2 Jeroen Roovers (RETIRED) gentoo-dev 2008-12-18 16:54:20 UTC
Looks like a dirty hack to me, but fair enough...
Comment 3 Justin Bronder (RETIRED) gentoo-dev 2008-12-18 17:47:07 UTC
(In reply to comment #1)
> The "cxx" versus "nocxx" isuue is a global inconsistency, as

This will be fixed when we get default USE flags in EAPI=1.

As for pushing all of the USE flags into virtual/mpi, I really don't think that makes sense as there are far too many differences.  I'm willing to accept that cxx/nocxx should be in there, but that's going to have to wait on EAPI=2 or mpi.eclass (from the science overlay) getting updated and accepted.

If you can make the case for anything aside from c++ and fortran support, please do.



Comment 4 Hugo Mildenberger 2008-12-18 18:09:20 UTC
(In reply to comment #3)
> If you can make the case for anything aside from c++ and fortran support,
> please do.

Specifically, threads and crypt. And generally, perhaps repoman alike tools could check IUSE against the intersection of the set of use flags listed by all depending ebuilds before committing?
Comment 5 Justin Bronder (RETIRED) gentoo-dev 2010-01-06 22:47:00 UTC
(In reply to comment #4)
> (In reply to comment #3)
> > If you can make the case for anything aside from c++ and fortran support,
> > please do.
> 
> Specifically, threads and crypt. And generally, perhaps repoman alike tools
> could check IUSE against the intersection of the set of use flags listed by all
> depending ebuilds before committing?
> 

None of the stable versions of the MPI implementations have IUSE=crypt and I don't really see a use case for threads (unless you mean mpi-threads which lam-mpi doesn't support and the other two still consider it experimental).