diff options
author | Chris Chambreau <chambreau1@llnl.gov> | 2020-10-29 18:56:54 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-10-29 16:56:54 -0700 |
commit | ebe1c6badd0053096b002d4621047e9dec971c00 (patch) | |
tree | b1dc4fab7ce25e48ebcc24206c76c65752699281 | |
parent | c954d50998f6a223027d864c5e4f161e5b2e27f1 (diff) | |
download | spack-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.py | 118 |
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) |