mpip: add v3.5 release (#19559)
* Update for mpip-3.5 release * Additional changes to support 3.5 and 3.4.1 releases * Specify python deptype
This commit is contained in:
parent
c954d50998
commit
ebe1c6badd
@ -4,37 +4,127 @@
|
||||
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||
|
||||
from spack import *
|
||||
import os
|
||||
|
||||
|
||||
class Mpip(AutotoolsPackage):
|
||||
|
||||
"""mpiP: Lightweight, Scalable MPI Profiling"""
|
||||
homepage = "http://mpip.sourceforge.net/"
|
||||
url = "http://downloads.sourceforge.net/project/mpip/mpiP/mpiP-3.4.1/mpiP-3.4.1.tar.gz"
|
||||
homepage = "https://software.llnl.gov/mpiP/"
|
||||
url = "https://github.com/LLNL/mpiP/releases/download/3.5/mpip-3.5.tgz"
|
||||
git = "https://github.com/llnl/mpip.git"
|
||||
maintainers = ['cchambreau']
|
||||
|
||||
version('master', branch='master')
|
||||
version("3.4.1", sha256="688bf37d73211e6a915f9fc59c358282a266d166c0a10af07a38a01a473296f0")
|
||||
version('3.5',
|
||||
sha256="e366843d53fa016fb03903e51c8aac901aa5155edabe64698a8d6fa618a03bbd")
|
||||
version("3.4.1",
|
||||
sha256="66a86dafde61546be80a130c46e4295f47fb764cf312ae62c70a6dc456a59dac")
|
||||
|
||||
variant('shared', default=False, description="Build the shared library")
|
||||
variant('demangling', default=False, description="Build with demangling support")
|
||||
variant('setjmp',
|
||||
default=False,
|
||||
description="Replace glic backtrace() with setjmp for stack trace")
|
||||
variant('demangling', default=True,
|
||||
description="Build with demangling support")
|
||||
|
||||
depends_on("elf")
|
||||
depends_on("libdwarf")
|
||||
depends_on('libunwind', when=os.uname()[4] == "x86_64")
|
||||
depends_on("mpi")
|
||||
variant('setjmp', default=False,
|
||||
description="Use setjmp to generate stack trace")
|
||||
|
||||
variant('mpi_io', default=True,
|
||||
description="Enable MPI-I/O reporting")
|
||||
|
||||
variant('mpi_rma', default=True,
|
||||
description="Enable MPI RMA reporting")
|
||||
|
||||
variant('mpi_nbc', default=True,
|
||||
description="Enable MPI non-blocking collective reporting")
|
||||
|
||||
variant('bfd', default=True,
|
||||
description="Enable GNU binutils libbfd for source lookup")
|
||||
|
||||
variant('libunwind', default=True,
|
||||
description="Use libunwind togenerate stack trace")
|
||||
|
||||
variant('maxargs', values=int, default=32,
|
||||
description='Set number of command line arguments in report')
|
||||
|
||||
variant('stackdepth', values=int, default=8,
|
||||
description='Specify maximum report stacktrace depth')
|
||||
|
||||
variant('internal_stackdepth', values=int, default=3,
|
||||
description='Specify number of internal stack frames')
|
||||
|
||||
variant('add_shared_target', default=False, description="Add shared make target")
|
||||
|
||||
conflicts('platform=darwin')
|
||||
|
||||
# make-wrappers.py wrapper generator script requires python
|
||||
depends_on('python@2:', when='@3.5:', type='build')
|
||||
depends_on('python@:2', when='@3.4.1', type='build')
|
||||
depends_on('mpi')
|
||||
|
||||
# Ideally would use libunwind, but provide backtrace and
|
||||
# setjmp functionality, if needed
|
||||
# depends_on('unwind')
|
||||
|
||||
@when('@3.5:')
|
||||
def configure_args(self):
|
||||
spec = self.spec
|
||||
|
||||
config_args = []
|
||||
config_args.append("--with-cc=%s" % spec['mpi'].mpicc)
|
||||
config_args.append("--with-cxx=%s" % spec['mpi'].mpicxx)
|
||||
config_args.append("--with-f77=%s" % spec['mpi'].mpif77)
|
||||
|
||||
# mpiP checks for libiberty demangling during configure.
|
||||
# Current mpiP configure functionality allows specifying alternate
|
||||
# demangling support (IBM, Compaq) as an argument, but the usefulness
|
||||
# of this is not clear.
|
||||
#
|
||||
# Since, --enable-demangling doesn't do anything,
|
||||
# providing --disable-demangling in the event that there is an error
|
||||
# with demangling.
|
||||
if '-demangling' in spec:
|
||||
config_args.append('--disable-demangling')
|
||||
|
||||
if '-mpi_io' in spec:
|
||||
config_args.append('--disable-mpi-io')
|
||||
|
||||
if '-mpi_rma' in spec:
|
||||
config_args.append('--disable-mpi-rma')
|
||||
|
||||
if '-mpi_nbc' in spec:
|
||||
config_args.append('--disable-mpi-nbc')
|
||||
|
||||
if '-bfd' in spec:
|
||||
config_args.append('--disable-bfd')
|
||||
|
||||
if '-libunwind' in spec:
|
||||
config_args.append('--disable-libunwind')
|
||||
|
||||
# Simply enabling setjmp may result in libunwind being used,
|
||||
# if available. Adding --disable-libunwind to ensure setjmp is used.
|
||||
if '+setjmp' in spec:
|
||||
config_args.append('--disable-libunwind')
|
||||
config_args.append('--enable-setjmp')
|
||||
|
||||
maxargs = int(spec.variants['maxargs'].value)
|
||||
config_args.extend(['--enable-maxargs={0}'.format(maxargs)])
|
||||
|
||||
stackdepth = int(spec.variants['stackdepth'].value)
|
||||
config_args.extend(['--enable-stackdepth={0}'.format(stackdepth)])
|
||||
|
||||
internal_stackdepth = int(spec.variants['internal_stackdepth'].value)
|
||||
config_args.extend(['--enable-internal-stackdepth={0}'
|
||||
.format(internal_stackdepth)])
|
||||
return config_args
|
||||
|
||||
# Support 3.4.1 'shared' target for building shared library
|
||||
@property
|
||||
def build_targets(self):
|
||||
targets = []
|
||||
if '+shared' in self.spec:
|
||||
if '+add_shared_target' in self.spec:
|
||||
targets.append('shared')
|
||||
|
||||
return targets
|
||||
|
||||
@when('@3.4.1')
|
||||
def configure_args(self):
|
||||
config_args = ['--without-f77']
|
||||
config_args.append("--with-cc=%s" % self.spec['mpi'].mpicc)
|
||||
|
Loading…
Reference in New Issue
Block a user