diff options
author | Todd Gamblin <tgamblin@llnl.gov> | 2022-07-30 15:19:18 -0700 |
---|---|---|
committer | Todd Gamblin <tgamblin@llnl.gov> | 2022-07-31 13:29:20 -0700 |
commit | f52f6e99dbf1131886a80112b8c79dfc414afb7c (patch) | |
tree | 05cb7d64b2395922f2f24683da49f472075be12c /var/spack/repos/builtin/packages/mvapich2/package.py | |
parent | 549ba1ed32372c67fc57271cde3797d58b7dec6e (diff) | |
download | spack-f52f6e99dbf1131886a80112b8c79dfc414afb7c.tar.gz spack-f52f6e99dbf1131886a80112b8c79dfc414afb7c.tar.bz2 spack-f52f6e99dbf1131886a80112b8c79dfc414afb7c.tar.xz spack-f52f6e99dbf1131886a80112b8c79dfc414afb7c.zip |
black: reformat entire repository with black
Diffstat (limited to 'var/spack/repos/builtin/packages/mvapich2/package.py')
-rw-r--r-- | var/spack/repos/builtin/packages/mvapich2/package.py | 468 |
1 files changed, 229 insertions, 239 deletions
diff --git a/var/spack/repos/builtin/packages/mvapich2/package.py b/var/spack/repos/builtin/packages/mvapich2/package.py index df71d0496c..d806260c99 100644 --- a/var/spack/repos/builtin/packages/mvapich2/package.py +++ b/var/spack/repos/builtin/packages/mvapich2/package.py @@ -19,38 +19,35 @@ class Mvapich2(AutotoolsPackage): url = "https://mvapich.cse.ohio-state.edu/download/mvapich/mv2/mvapich2-2.3.7.tar.gz" list_url = "https://mvapich.cse.ohio-state.edu/downloads/" - maintainers = ['natshineman', 'harisubramoni', 'ndcontini'] + maintainers = ["natshineman", "harisubramoni", "ndcontini"] - executables = ['^mpiname$', '^mpichversion$'] + executables = ["^mpiname$", "^mpichversion$"] # Prefer the latest stable release - version('2.3.7', sha256='4b6ad2c8c270e1fabcd073c49edb6bf95af93780f4a487bc48404a8ca384f34e') - version('2.3.6', sha256='b3a62f2a05407191b856485f99da05f5e769d6381cd63e2fcb83ee98fc46a249') - version('2.3.5', sha256='f9f467fec5fc981a89a7beee0374347b10c683023c76880f92a1a0ad4b961a8c') - version('2.3.4', sha256='7226a45c7c98333c8e5d2888119cce186199b430c13b7b1dca1769909e68ea7a') - version('2.3.3', sha256='41d3261be57e5bc8aabf4e32981543c015c5443ff032a26f18205985e18c2b73') - version('2.3.2', sha256='30cc0d7bcaa075d204692f76bca4d65a539e0f661c7460ffa9f835d6249e1ebf') - version('2.3.1', sha256='314e12829f75f3ed83cd4779a972572d1787aac6543a3d024ea7c6080e0ee3bf') - version('2.3', sha256='01d5fb592454ddd9ecc17e91c8983b6aea0e7559aa38f410b111c8ef385b50dd') - version('2.3rc2', sha256='dc3801f879a54358d17002a56afd45186e2e83edc5b8367b5c317e282eb6d6bf') - version('2.3rc1', sha256='607d309c864a6d57f5fa78fe6dd02368919736b8be0f4ddb938aba303ef9c45c') - version('2.3a', sha256='7f0bc94265de9f66af567a263b1be6ef01755f7f6aedd25303d640cc4d8b1cff') - version('2.2', sha256='791a6fc2b23de63b430b3e598bf05b1b25b82ba8bf7e0622fc81ba593b3bb131') - version('2.1', sha256='49f3225ad17d2f3b6b127236a0abdc979ca8a3efb8d47ab4b6cd4f5252d05d29') - - provides('mpi') - provides('mpi@:3.1', when='@2.3:') - provides('mpi@:3.0', when='@2.1:') - - variant('wrapperrpath', default=True, description='Enable wrapper rpath') - variant('debug', default=False, - description='Enable debug info and error messages at run-time') - - variant('cuda', default=False, - description='Enable CUDA extension') - - variant('regcache', default=True, - description='Enable memory registration cache') + version("2.3.7", sha256="4b6ad2c8c270e1fabcd073c49edb6bf95af93780f4a487bc48404a8ca384f34e") + version("2.3.6", sha256="b3a62f2a05407191b856485f99da05f5e769d6381cd63e2fcb83ee98fc46a249") + version("2.3.5", sha256="f9f467fec5fc981a89a7beee0374347b10c683023c76880f92a1a0ad4b961a8c") + version("2.3.4", sha256="7226a45c7c98333c8e5d2888119cce186199b430c13b7b1dca1769909e68ea7a") + version("2.3.3", sha256="41d3261be57e5bc8aabf4e32981543c015c5443ff032a26f18205985e18c2b73") + version("2.3.2", sha256="30cc0d7bcaa075d204692f76bca4d65a539e0f661c7460ffa9f835d6249e1ebf") + version("2.3.1", sha256="314e12829f75f3ed83cd4779a972572d1787aac6543a3d024ea7c6080e0ee3bf") + version("2.3", sha256="01d5fb592454ddd9ecc17e91c8983b6aea0e7559aa38f410b111c8ef385b50dd") + version("2.3rc2", sha256="dc3801f879a54358d17002a56afd45186e2e83edc5b8367b5c317e282eb6d6bf") + version("2.3rc1", sha256="607d309c864a6d57f5fa78fe6dd02368919736b8be0f4ddb938aba303ef9c45c") + version("2.3a", sha256="7f0bc94265de9f66af567a263b1be6ef01755f7f6aedd25303d640cc4d8b1cff") + version("2.2", sha256="791a6fc2b23de63b430b3e598bf05b1b25b82ba8bf7e0622fc81ba593b3bb131") + version("2.1", sha256="49f3225ad17d2f3b6b127236a0abdc979ca8a3efb8d47ab4b6cd4f5252d05d29") + + provides("mpi") + provides("mpi@:3.1", when="@2.3:") + provides("mpi@:3.0", when="@2.1:") + + variant("wrapperrpath", default=True, description="Enable wrapper rpath") + variant("debug", default=False, description="Enable debug info and error messages at run-time") + + variant("cuda", default=False, description="Enable CUDA extension") + + variant("regcache", default=True, description="Enable memory registration cache") # Accepted values are: # single - No threads (MPI_THREAD_SINGLE) @@ -59,90 +56,92 @@ class Mvapich2(AutotoolsPackage): # multiple - Fully multi-threaded (MPI_THREAD_MULTIPLE) # runtime - Alias to "multiple" variant( - 'threads', - default='multiple', - values=('single', 'funneled', 'serialized', 'multiple'), + "threads", + default="multiple", + values=("single", "funneled", "serialized", "multiple"), multi=False, - description='Control the level of thread support' + description="Control the level of thread support", ) # 32 is needed when job size exceeds 32768 cores variant( - 'ch3_rank_bits', - default='32', - values=('16', '32'), + "ch3_rank_bits", + default="32", + values=("16", "32"), multi=False, - description='Number of bits allocated to the rank field (16 or 32)' + description="Number of bits allocated to the rank field (16 or 32)", ) variant( - 'process_managers', - description='List of the process managers to activate', - values=disjoint_sets( - ('auto',), ('slurm',), ('hydra', 'gforker', 'remshell') - ).prohibit_empty_set().with_error( - "'slurm' or 'auto' cannot be activated along with " - "other process managers" - ).with_default('auto').with_non_feature_values('auto'), + "process_managers", + description="List of the process managers to activate", + values=disjoint_sets(("auto",), ("slurm",), ("hydra", "gforker", "remshell")) + .prohibit_empty_set() + .with_error("'slurm' or 'auto' cannot be activated along with " "other process managers") + .with_default("auto") + .with_non_feature_values("auto"), ) variant( - 'fabrics', - description='Select the fabric to be enabled for this build.' - 'If you have verbs (either from OFED or MOFED), PSM or PSM2 ' - 'installed on the system already, you may need to setup external ' - 'packages in the package.yaml file for rdma-core, psm or opa-psm2. ' - 'This is recommended to avoid unexpected runtime failures. For ' - 'more info, visit the homepage url.', - default='mrail', + "fabrics", + description="Select the fabric to be enabled for this build." + "If you have verbs (either from OFED or MOFED), PSM or PSM2 " + "installed on the system already, you may need to setup external " + "packages in the package.yaml file for rdma-core, psm or opa-psm2. " + "This is recommended to avoid unexpected runtime failures. For " + "more info, visit the homepage url.", + default="mrail", values=( - 'psm', 'psm2', 'sock', 'nemesisib', 'nemesis', 'mrail', - 'nemesisibtcp', 'nemesistcpib', 'nemesisofi' - ) + "psm", + "psm2", + "sock", + "nemesisib", + "nemesis", + "mrail", + "nemesisibtcp", + "nemesistcpib", + "nemesisofi", + ), ) variant( - 'alloca', - default=False, - description='Use alloca to allocate temporary memory if available' + "alloca", default=False, description="Use alloca to allocate temporary memory if available" ) variant( - 'file_systems', - description='List of the ROMIO file systems to activate', - values=auto_or_any_combination_of('lustre', 'gpfs', 'nfs', 'ufs'), + "file_systems", + description="List of the ROMIO file systems to activate", + values=auto_or_any_combination_of("lustre", "gpfs", "nfs", "ufs"), ) - depends_on('findutils', type='build') - depends_on('bison', type='build') - depends_on('pkgconfig', type='build') - depends_on('zlib') - depends_on('libpciaccess', when=(sys.platform != 'darwin')) - depends_on('libxml2') - depends_on('cuda', when='+cuda') - depends_on('psm', when='fabrics=psm') - depends_on('opa-psm2', when='fabrics=psm2') - depends_on('rdma-core', when='fabrics=mrail') - depends_on('rdma-core', when='fabrics=nemesisib') - depends_on('rdma-core', when='fabrics=nemesistcpib') - depends_on('rdma-core', when='fabrics=nemesisibtcp') - depends_on('libfabric', when='fabrics=nemesisofi') - depends_on('slurm', when='process_managers=slurm') - - conflicts('fabrics=psm2', when='@:2.1') # psm2 support was added at version 2.2 - - filter_compiler_wrappers( - 'mpicc', 'mpicxx', 'mpif77', 'mpif90', 'mpifort', relative_root='bin' - ) + depends_on("findutils", type="build") + depends_on("bison", type="build") + depends_on("pkgconfig", type="build") + depends_on("zlib") + depends_on("libpciaccess", when=(sys.platform != "darwin")) + depends_on("libxml2") + depends_on("cuda", when="+cuda") + depends_on("psm", when="fabrics=psm") + depends_on("opa-psm2", when="fabrics=psm2") + depends_on("rdma-core", when="fabrics=mrail") + depends_on("rdma-core", when="fabrics=nemesisib") + depends_on("rdma-core", when="fabrics=nemesistcpib") + depends_on("rdma-core", when="fabrics=nemesisibtcp") + depends_on("libfabric", when="fabrics=nemesisofi") + depends_on("slurm", when="process_managers=slurm") + + conflicts("fabrics=psm2", when="@:2.1") # psm2 support was added at version 2.2 + + filter_compiler_wrappers("mpicc", "mpicxx", "mpif77", "mpif90", "mpifort", relative_root="bin") @classmethod def determine_version(cls, exe): - if exe.endswith('mpichversion'): + if exe.endswith("mpichversion"): output = Executable(exe)(output=str, error=str) - match = re.search(r'^MVAPICH2 Version:\s*(\S+)', output) - elif exe.endswith('mpiname'): - output = Executable(exe)('-a', output=str, error=str) - match = re.search(r'^MVAPICH2 (\S+)', output) + match = re.search(r"^MVAPICH2 Version:\s*(\S+)", output) + elif exe.endswith("mpiname"): + output = Executable(exe)("-a", output=str, error=str) + match = re.search(r"^MVAPICH2 (\S+)", output) return match.group(1) if match else None @classmethod @@ -153,91 +152,91 @@ class Mvapich2(AutotoolsPackage): if os.path.dirname(spack_compiler.cc) == path: return spack_compiler.spec return None + results = [] for exe in exes: - variants = '' - if exe.endswith('mpichversion'): + variants = "" + if exe.endswith("mpichversion"): output = Executable(exe)(output=str, error=str) - elif exe.endswith('mpiname'): - output = Executable(exe)('-a', output=str, error=str) + elif exe.endswith("mpiname"): + output = Executable(exe)("-a", output=str, error=str) - if re.search(r'--enable-wrapper-rpath=yes', output): - variants += '+wrapperrpath' + if re.search(r"--enable-wrapper-rpath=yes", output): + variants += "+wrapperrpath" else: - variants += '~wrapperrpath' - - if (re.search(r'--disable-fast', output) - and re.search(r'--enable-error-checking=runtime', output) - and re.search(r'--enable-error-messages', output) - and re.search(r'--enable-g', output) - and re.search(r'--enable-debuginfo', output)): - variants += '+debug' + variants += "~wrapperrpath" + + if ( + re.search(r"--disable-fast", output) + and re.search(r"--enable-error-checking=runtime", output) + and re.search(r"--enable-error-messages", output) + and re.search(r"--enable-g", output) + and re.search(r"--enable-debuginfo", output) + ): + variants += "+debug" else: - variants += '~debug' + variants += "~debug" - if re.search('--enable-cuda', output): - variants += '+cuda' + if re.search("--enable-cuda", output): + variants += "+cuda" else: - variants += '~cuda' + variants += "~cuda" - if re.search('--enable-registration-cache', output): - variants += '+regcache' + if re.search("--enable-registration-cache", output): + variants += "+regcache" else: - variants += '~regcache' + variants += "~regcache" - match = re.search(r'--enable-threads=(\S+)', output) + match = re.search(r"--enable-threads=(\S+)", output) if match: variants += " threads=" + match.group(1) - match = re.search(r'--with-ch3-rank-bits=(\S+)', output) + match = re.search(r"--with-ch3-rank-bits=(\S+)", output) if match: variants += " ch3_rank_bits=" + match.group(1) pms = [] - if re.search(r'--with-pm=slurm', output): - pms.append('slurm') - if re.search(r'--with-pm=[A-Za-z0-9:]*hydra', output): - pms.append('hydra') - if re.search(r'--with-pm=[A-Za-z0-9:]*gforker', output): - pms.append('gforker') - if re.search(r'--with-pm=[A-Za-z0-9:]*remshell', output): - pms.append('remshell') + if re.search(r"--with-pm=slurm", output): + pms.append("slurm") + if re.search(r"--with-pm=[A-Za-z0-9:]*hydra", output): + pms.append("hydra") + if re.search(r"--with-pm=[A-Za-z0-9:]*gforker", output): + pms.append("gforker") + if re.search(r"--with-pm=[A-Za-z0-9:]*remshell", output): + pms.append("remshell") if pms: variants += " process_managers=" + ",".join(pms) fabrics = { - 'sock': 'ch3:sock', - 'nemesistcpib': 'ch3:nemesis:tcp,ib', - 'nemesisibtcp': 'ch3:nemesis:ib,tcp', - 'nemesisib': 'ch3:nemesis:ib', - 'nemesis': 'ch3:nemesis', - 'mrail': 'ch3:mrail', - 'nemesisofi': 'ch3:nemesis:ofi', + "sock": "ch3:sock", + "nemesistcpib": "ch3:nemesis:tcp,ib", + "nemesisibtcp": "ch3:nemesis:ib,tcp", + "nemesisib": "ch3:nemesis:ib", + "nemesis": "ch3:nemesis", + "mrail": "ch3:mrail", + "nemesisofi": "ch3:nemesis:ofi", } for fabric_name, conf_flag in fabrics.items(): - if re.search(r'--with-device=' + conf_flag, output): - variants += ' fabrics=' + fabric_name + if re.search(r"--with-device=" + conf_flag, output): + variants += " fabrics=" + fabric_name break else: - if re.search(r'--with-device=psm', output): - if re.search(r'--with-psm=', output): - variants += ' fabrics=psm' - elif re.search(r'--with-psm2=', output): - variants += ' fabrics=psm2' + if re.search(r"--with-device=psm", output): + if re.search(r"--with-psm=", output): + variants += " fabrics=psm" + elif re.search(r"--with-psm2=", output): + variants += " fabrics=psm2" used_fs = [] - for fs in ('lustre', 'gpfs', 'nfs', 'ufs'): - if re.search( - '--with-file-system=[a-zA-Z0-9+]*' + fs, - output): + for fs in ("lustre", "gpfs", "nfs", "ufs"): + if re.search("--with-file-system=[a-zA-Z0-9+]*" + fs, output): used_fs.append(fs) if used_fs: - variants += ' file_systems=' + ",".join(used_fs) + variants += " file_systems=" + ",".join(used_fs) - match = re.search(r'CC: (\S+)', output) + match = re.search(r"CC: (\S+)", output) if match: - comp_spec = get_spack_compiler_spec( - os.path.dirname(match.group(1))) + comp_spec = get_spack_compiler_spec(os.path.dirname(match.group(1))) if comp_spec: variants += " %" + str(comp_spec) results.append(variants) @@ -246,34 +245,32 @@ class Mvapich2(AutotoolsPackage): @property def libs(self): query_parameters = self.spec.last_query.extra_parameters - libraries = ['libmpi'] + libraries = ["libmpi"] - if 'cxx' in query_parameters: - libraries = ['libmpicxx'] + libraries + if "cxx" in query_parameters: + libraries = ["libmpicxx"] + libraries - return find_libraries( - libraries, root=self.prefix, shared=True, recursive=True - ) + return find_libraries(libraries, root=self.prefix, shared=True, recursive=True) @property def process_manager_options(self): spec = self.spec other_pms = [] - for x in ('hydra', 'gforker', 'remshell'): - if 'process_managers={0}'.format(x) in spec: + for x in ("hydra", "gforker", "remshell"): + if "process_managers={0}".format(x) in spec: other_pms.append(x) opts = [] if len(other_pms) > 0: - opts = ['--with-pm=%s' % ':'.join(other_pms)] + opts = ["--with-pm=%s" % ":".join(other_pms)] # See: http://slurm.schedmd.com/mpi_guide.html#mvapich2 - if 'process_managers=slurm' in spec: + if "process_managers=slurm" in spec: opts = [ - '--with-pmi=pmi2', - '--with-pm=slurm', - '--with-slurm={0}'.format(spec['slurm'].prefix), + "--with-pmi=pmi2", + "--with-pm=slurm", + "--with-slurm={0}".format(spec["slurm"].prefix), ] return opts @@ -282,32 +279,30 @@ class Mvapich2(AutotoolsPackage): def network_options(self): opts = [] # From here on I can suppose that only one variant has been selected - if 'fabrics=psm' in self.spec: - opts = [ - "--with-device=ch3:psm", - "--with-psm={0}".format(self.spec['psm'].prefix) - ] - elif 'fabrics=psm2' in self.spec: + if "fabrics=psm" in self.spec: + opts = ["--with-device=ch3:psm", "--with-psm={0}".format(self.spec["psm"].prefix)] + elif "fabrics=psm2" in self.spec: opts = [ "--with-device=ch3:psm", - "--with-psm2={0}".format(self.spec['opa-psm2'].prefix) + "--with-psm2={0}".format(self.spec["opa-psm2"].prefix), ] - elif 'fabrics=sock' in self.spec: + elif "fabrics=sock" in self.spec: opts = ["--with-device=ch3:sock"] - elif 'fabrics=nemesistcpib' in self.spec: + elif "fabrics=nemesistcpib" in self.spec: opts = ["--with-device=ch3:nemesis:tcp,ib"] - elif 'fabrics=nemesisibtcp' in self.spec: + elif "fabrics=nemesisibtcp" in self.spec: opts = ["--with-device=ch3:nemesis:ib,tcp"] - elif 'fabrics=nemesisib' in self.spec: + elif "fabrics=nemesisib" in self.spec: opts = ["--with-device=ch3:nemesis:ib"] - elif 'fabrics=nemesis' in self.spec: + elif "fabrics=nemesis" in self.spec: opts = ["--with-device=ch3:nemesis"] - elif 'fabrics=mrail' in self.spec: - opts = ["--with-device=ch3:mrail", "--with-rdma=gen2", - "--disable-mcast"] - elif 'fabrics=nemesisofi' in self.spec: - opts = ["--with-device=ch3:nemesis:ofi", - "--with-ofi={0}".format(self.spec['libfabric'].prefix)] + elif "fabrics=mrail" in self.spec: + opts = ["--with-device=ch3:mrail", "--with-rdma=gen2", "--disable-mcast"] + elif "fabrics=nemesisofi" in self.spec: + opts = [ + "--with-device=ch3:nemesis:ofi", + "--with-ofi={0}".format(self.spec["libfabric"].prefix), + ] return opts @property @@ -315,36 +310,36 @@ class Mvapich2(AutotoolsPackage): spec = self.spec fs = [] - for x in ('lustre', 'gpfs', 'nfs', 'ufs'): - if 'file_systems={0}'.format(x) in spec: + for x in ("lustre", "gpfs", "nfs", "ufs"): + if "file_systems={0}".format(x) in spec: fs.append(x) opts = [] if len(fs) > 0: - opts.append('--with-file-system=%s' % '+'.join(fs)) + opts.append("--with-file-system=%s" % "+".join(fs)) return opts def flag_handler(self, name, flags): - if name == 'fflags': + if name == "fflags": # https://bugzilla.redhat.com/show_bug.cgi?id=1795817 - if self.spec.satisfies('%gcc@10:'): + if self.spec.satisfies("%gcc@10:"): if flags is None: flags = [] - flags.append('-fallow-argument-mismatch') + flags.append("-fallow-argument-mismatch") return (flags, None, None) def setup_build_environment(self, env): # mvapich2 configure fails when F90 and F90FLAGS are set - env.unset('F90') - env.unset('F90FLAGS') + env.unset("F90") + env.unset("F90FLAGS") def setup_run_environment(self, env): - if 'process_managers=slurm' in self.spec: - env.set('SLURM_MPI_TYPE', 'pmi2') + if "process_managers=slurm" in self.spec: + env.set("SLURM_MPI_TYPE", "pmi2") - env.set('MPI_ROOT', self.prefix) + env.set("MPI_ROOT", self.prefix) # Because MPI functions as a compiler, we need to treat it as one and # add its compiler paths to the run environment. @@ -354,98 +349,93 @@ class Mvapich2(AutotoolsPackage): self.setup_compiler_environment(env) # use the Spack compiler wrappers under MPI - env.set('MPICH_CC', spack_cc) - env.set('MPICH_CXX', spack_cxx) - env.set('MPICH_F77', spack_f77) - env.set('MPICH_F90', spack_fc) - env.set('MPICH_FC', spack_fc) + env.set("MPICH_CC", spack_cc) + env.set("MPICH_CXX", spack_cxx) + env.set("MPICH_F77", spack_f77) + env.set("MPICH_F90", spack_fc) + env.set("MPICH_FC", spack_fc) def setup_compiler_environment(self, env): # For Cray MPIs, the regular compiler wrappers *are* the MPI wrappers. # Cray MPIs always have cray in the module name, e.g. "cray-mvapich" external_modules = self.spec.external_modules - if external_modules and 'cray' in external_modules[0]: - env.set('MPICC', spack_cc) - env.set('MPICXX', spack_cxx) - env.set('MPIF77', spack_fc) - env.set('MPIF90', spack_fc) + if external_modules and "cray" in external_modules[0]: + env.set("MPICC", spack_cc) + env.set("MPICXX", spack_cxx) + env.set("MPIF77", spack_fc) + env.set("MPIF90", spack_fc) else: - env.set('MPICC', join_path(self.prefix.bin, 'mpicc')) - env.set('MPICXX', join_path(self.prefix.bin, 'mpicxx')) - env.set('MPIF77', join_path(self.prefix.bin, 'mpif77')) - env.set('MPIF90', join_path(self.prefix.bin, 'mpif90')) + env.set("MPICC", join_path(self.prefix.bin, "mpicc")) + env.set("MPICXX", join_path(self.prefix.bin, "mpicxx")) + env.set("MPIF77", join_path(self.prefix.bin, "mpif77")) + env.set("MPIF90", join_path(self.prefix.bin, "mpif90")) def setup_dependent_package(self, module, dependent_spec): # For Cray MPIs, the regular compiler wrappers *are* the MPI wrappers. # Cray MPIs always have cray in the module name, e.g. "cray-mvapich" external_modules = self.spec.external_modules - if external_modules and 'cray' in external_modules[0]: + if external_modules and "cray" in external_modules[0]: self.spec.mpicc = spack_cc self.spec.mpicxx = spack_cxx self.spec.mpifc = spack_fc self.spec.mpif77 = spack_f77 else: - self.spec.mpicc = join_path(self.prefix.bin, 'mpicc') - self.spec.mpicxx = join_path(self.prefix.bin, 'mpicxx') - self.spec.mpifc = join_path(self.prefix.bin, 'mpif90') - self.spec.mpif77 = join_path(self.prefix.bin, 'mpif77') + self.spec.mpicc = join_path(self.prefix.bin, "mpicc") + self.spec.mpicxx = join_path(self.prefix.bin, "mpicxx") + self.spec.mpifc = join_path(self.prefix.bin, "mpif90") + self.spec.mpif77 = join_path(self.prefix.bin, "mpif77") self.spec.mpicxx_shared_libs = [ - os.path.join(self.prefix.lib, 'libmpicxx.{0}'.format(dso_suffix)), - os.path.join(self.prefix.lib, 'libmpi.{0}'.format(dso_suffix)) + os.path.join(self.prefix.lib, "libmpicxx.{0}".format(dso_suffix)), + os.path.join(self.prefix.lib, "libmpi.{0}".format(dso_suffix)), ] - @run_before('configure') + @run_before("configure") def die_without_fortran(self): # Until we can pass variants such as +fortran through virtual # dependencies depends_on('mpi'), require Fortran compiler to # avoid delayed build errors in dependents. if (self.compiler.f77 is None) or (self.compiler.fc is None): - raise InstallError( - 'Mvapich2 requires both C and Fortran compilers!' - ) + raise InstallError("Mvapich2 requires both C and Fortran compilers!") def configure_args(self): spec = self.spec args = [ - '--enable-shared', - '--enable-romio', - '--disable-silent-rules', - '--disable-new-dtags', - '--enable-fortran=all', - "--enable-threads={0}".format(spec.variants['threads'].value), - "--with-ch3-rank-bits={0}".format( - spec.variants['ch3_rank_bits'].value), - '--enable-wrapper-rpath={0}'.format('no' if '~wrapperrpath' in - spec else 'yes') + "--enable-shared", + "--enable-romio", + "--disable-silent-rules", + "--disable-new-dtags", + "--enable-fortran=all", + "--enable-threads={0}".format(spec.variants["threads"].value), + "--with-ch3-rank-bits={0}".format(spec.variants["ch3_rank_bits"].value), + "--enable-wrapper-rpath={0}".format("no" if "~wrapperrpath" in spec else "yes"), ] - args.extend(self.enable_or_disable('alloca')) - - if '+debug' in self.spec: - args.extend([ - '--disable-fast', - '--enable-error-checking=runtime', - '--enable-error-messages=all', - # Permits debugging with TotalView - '--enable-g=dbg', - '--enable-debuginfo' - ]) + args.extend(self.enable_or_disable("alloca")) + + if "+debug" in self.spec: + args.extend( + [ + "--disable-fast", + "--enable-error-checking=runtime", + "--enable-error-messages=all", + # Permits debugging with TotalView + "--enable-g=dbg", + "--enable-debuginfo", + ] + ) else: - args.append('--enable-fast=all') + args.append("--enable-fast=all") - if '+cuda' in self.spec: - args.extend([ - '--enable-cuda', - '--with-cuda={0}'.format(spec['cuda'].prefix) - ]) + if "+cuda" in self.spec: + args.extend(["--enable-cuda", "--with-cuda={0}".format(spec["cuda"].prefix)]) else: - args.append('--disable-cuda') + args.append("--disable-cuda") - if '+regcache' in self.spec: - args.append('--enable-registration-cache') + if "+regcache" in self.spec: + args.append("--enable-registration-cache") else: - args.append('--disable-registration-cache') + args.append("--disable-registration-cache") args.extend(self.process_manager_options) args.extend(self.network_options) |