summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Chambreau <chambreau1@llnl.gov>2020-10-29 18:56:54 -0500
committerGitHub <noreply@github.com>2020-10-29 16:56:54 -0700
commitebe1c6badd0053096b002d4621047e9dec971c00 (patch)
treeb1dc4fab7ce25e48ebcc24206c76c65752699281
parentc954d50998f6a223027d864c5e4f161e5b2e27f1 (diff)
downloadspack-ebe1c6badd0053096b002d4621047e9dec971c00.tar.gz
spack-ebe1c6badd0053096b002d4621047e9dec971c00.tar.bz2
spack-ebe1c6badd0053096b002d4621047e9dec971c00.tar.xz
spack-ebe1c6badd0053096b002d4621047e9dec971c00.zip
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
-rw-r--r--var/spack/repos/builtin/packages/mpip/package.py118
1 files changed, 104 insertions, 14 deletions
diff --git a/var/spack/repos/builtin/packages/mpip/package.py b/var/spack/repos/builtin/packages/mpip/package.py
index 65c2453c25..a9336086c2 100644
--- a/var/spack/repos/builtin/packages/mpip/package.py
+++ b/var/spack/repos/builtin/packages/mpip/package.py
@@ -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('demangling', default=True,
+ description="Build with demangling support")
+
+ 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('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('maxargs', values=int, default=32,
+ description='Set number of command line arguments in report')
- depends_on("elf")
- depends_on("libdwarf")
- depends_on('libunwind', when=os.uname()[4] == "x86_64")
- depends_on("mpi")
+ 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)