diff options
Diffstat (limited to 'var/spack/repos/builtin/packages/tau/package.py')
-rw-r--r-- | var/spack/repos/builtin/packages/tau/package.py | 434 |
1 files changed, 228 insertions, 206 deletions
diff --git a/var/spack/repos/builtin/packages/tau/package.py b/var/spack/repos/builtin/packages/tau/package.py index 6a45739df4..08b4f869cd 100644 --- a/var/spack/repos/builtin/packages/tau/package.py +++ b/var/spack/repos/builtin/packages/tau/package.py @@ -18,119 +18,125 @@ class Tau(Package): Java, Python. """ - maintainers = ['wspear', 'eugeneswalker', 'khuck', 'sameershende'] + maintainers = ["wspear", "eugeneswalker", "khuck", "sameershende"] homepage = "https://www.cs.uoregon.edu/research/tau" - url = "https://www.cs.uoregon.edu/research/tau/tau_releases/tau-2.30.tar.gz" - git = "https://github.com/UO-OACISS/tau2" - - tags = ['e4s'] - - version('master', branch='master') - version('2.31.1', sha256='bf445b9d4fe40a5672a7b175044d2133791c4dfb36a214c1a55a931aebc06b9d') - version('2.31', sha256='27e73c395dd2a42b91591ce4a76b88b1f67663ef13aa19ef4297c68f45d946c2') - version('2.30.2', sha256='43f84a15b71a226f8a64d966f0cb46022bcfbaefb341295ecc6fa80bb82bbfb4') - version('2.30.1', sha256='9c20ca1b4f4e80d885f24491cee598068871f0e9dd67906a5e47e4b4147d08fc') - version('2.30', sha256='e581c33e21488d69839a00d97fd4451ea579f47249b2750d5c36bea773041eaf') - version('2.29.1', sha256='4195a0a236bba510ab50a93e13c7f00d9472e8bc46c91de3f0696112a34e34e2') - version('2.29', sha256='146be769a23c869a7935e8fa5ba79f40ba36b9057a96dda3be6730fc9ca86086') - version('2.28.2', sha256='64e129a482056755012b91dae2fb4f728dbf3adbab53d49187eca952891c5457') - version('2.28.1', sha256='b262e5c9977471e9f5a8d729b3db743012df9b0ab8244da2842039f8a3b98b34') - version('2.28', sha256='68c6f13ae748d12c921456e494006796ca2b0efebdeef76ee7c898c81592883e') - version('2.27.2p1', sha256='3256771fb71c2b05932b44d0650e6eadc712f1bdedf4c0fb2781db3b266225dd') - version('2.27.2', sha256='d319a4588ad303b71082254f4f40aa76f6183a01b5bc4bd987f76e1a6026efa1') - version('2.27.1', sha256='315babab4da25dd08633ad8dbf33d93db77f57d240bcbd3527ed5b8710cb9d8f') - version('2.27', sha256='d48fdca49cda2d9f25a0cf5dbd961201c8a2b1f025bcbb121d96ad43f211f1a7') - version('2.26.3', sha256='bd785ed47f20e6b8b2a1d99ce383d292f70b1fb9e2eaab21f5eaf8e64b28e990') - version('2.26.2', sha256='92ca68db51fd5bd026187e70b397bcd1db9bfb07008d7e8bc935411a97978834') - version('2.26.1', sha256='d084ff87e5f9fe640a3fc48aa5c8c52f586e7b739787f2bb9a4249005e459896') - version('2.26', sha256='458228646a13a228841d4133f24af14cc182f4978eb15ef6244d71735abe8d16') - version('2.25', sha256='ab8a8c15a075af69aa23b4790b4e2d9dffc3b880fc1ff806c21535ab69b6a088') - version('2.24.1', sha256='bc27052c36377e4b8fc0bbb4afaa57eaa8bcb3f5e5066e576b0f40d341c28a0e') - version('2.24', sha256='5d28e8b26561c7cd7d0029b56ec0f95fc26803ac0b100c98e00af0b02e7f55e2') - version('2.23.1', sha256='31a4d0019cec6ef57459a9cd18a220f0130838a5f1a0b5ea7879853f5a38cf88') + url = "https://www.cs.uoregon.edu/research/tau/tau_releases/tau-2.30.tar.gz" + git = "https://github.com/UO-OACISS/tau2" + + tags = ["e4s"] + + version("master", branch="master") + version("2.31.1", sha256="bf445b9d4fe40a5672a7b175044d2133791c4dfb36a214c1a55a931aebc06b9d") + version("2.31", sha256="27e73c395dd2a42b91591ce4a76b88b1f67663ef13aa19ef4297c68f45d946c2") + version("2.30.2", sha256="43f84a15b71a226f8a64d966f0cb46022bcfbaefb341295ecc6fa80bb82bbfb4") + version("2.30.1", sha256="9c20ca1b4f4e80d885f24491cee598068871f0e9dd67906a5e47e4b4147d08fc") + version("2.30", sha256="e581c33e21488d69839a00d97fd4451ea579f47249b2750d5c36bea773041eaf") + version("2.29.1", sha256="4195a0a236bba510ab50a93e13c7f00d9472e8bc46c91de3f0696112a34e34e2") + version("2.29", sha256="146be769a23c869a7935e8fa5ba79f40ba36b9057a96dda3be6730fc9ca86086") + version("2.28.2", sha256="64e129a482056755012b91dae2fb4f728dbf3adbab53d49187eca952891c5457") + version("2.28.1", sha256="b262e5c9977471e9f5a8d729b3db743012df9b0ab8244da2842039f8a3b98b34") + version("2.28", sha256="68c6f13ae748d12c921456e494006796ca2b0efebdeef76ee7c898c81592883e") + version("2.27.2p1", sha256="3256771fb71c2b05932b44d0650e6eadc712f1bdedf4c0fb2781db3b266225dd") + version("2.27.2", sha256="d319a4588ad303b71082254f4f40aa76f6183a01b5bc4bd987f76e1a6026efa1") + version("2.27.1", sha256="315babab4da25dd08633ad8dbf33d93db77f57d240bcbd3527ed5b8710cb9d8f") + version("2.27", sha256="d48fdca49cda2d9f25a0cf5dbd961201c8a2b1f025bcbb121d96ad43f211f1a7") + version("2.26.3", sha256="bd785ed47f20e6b8b2a1d99ce383d292f70b1fb9e2eaab21f5eaf8e64b28e990") + version("2.26.2", sha256="92ca68db51fd5bd026187e70b397bcd1db9bfb07008d7e8bc935411a97978834") + version("2.26.1", sha256="d084ff87e5f9fe640a3fc48aa5c8c52f586e7b739787f2bb9a4249005e459896") + version("2.26", sha256="458228646a13a228841d4133f24af14cc182f4978eb15ef6244d71735abe8d16") + version("2.25", sha256="ab8a8c15a075af69aa23b4790b4e2d9dffc3b880fc1ff806c21535ab69b6a088") + version("2.24.1", sha256="bc27052c36377e4b8fc0bbb4afaa57eaa8bcb3f5e5066e576b0f40d341c28a0e") + version("2.24", sha256="5d28e8b26561c7cd7d0029b56ec0f95fc26803ac0b100c98e00af0b02e7f55e2") + version("2.23.1", sha256="31a4d0019cec6ef57459a9cd18a220f0130838a5f1a0b5ea7879853f5a38cf88") # Disable some default dependencies on Darwin/OSX darwin_default = False - if sys.platform != 'darwin': + if sys.platform != "darwin": darwin_default = True - variant('scorep', default=False, description='Activates SCOREP support') - variant('openmp', default=False, description='Use OpenMP threads') - variant('pthreads', default=True, description='Use POSIX threads') - variant('mpi', default=False, description='Specify use of TAU MPI wrapper library') - variant('phase', default=False, description='Generate phase based profiles') - variant('papi', default=darwin_default, description='Activates Performance API') - variant('binutils', default=True, description='Activates support of BFD GNU Binutils') - variant('libdwarf', default=darwin_default, description='Activates support of libdwarf') - variant('elf', default=darwin_default, description='Activates support of elf') - variant('libunwind', default=darwin_default, description='Activates support of libunwind') - variant('otf2', default=True, description='Activates support of Open Trace Format (OTF)') - variant('pdt', default=True, description='Use PDT for source code instrumentation') - variant('comm', default=False, description=' Generate profiles with MPI communicator info') - variant('python', default=False, description='Activates Python support') - variant('likwid', default=False, description='Activates LIKWID support') - variant('ompt', default=False, description='Activates OMPT instrumentation') - variant('opari', default=False, description='Activates Opari2 instrumentation') - variant('shmem', default=False, description='Activates SHMEM support') - variant('gasnet', default=False, description='Activates GASNET support') - variant('cuda', default=False, description='Activates CUDA support') - variant('rocm', default=False, description='Activates ROCm support') - variant('level_zero', default=False, description='Activates Intel OneAPI Level Zero support') - variant('rocprofiler', default=False, description='Activates ROCm rocprofiler support') - variant('roctracer', default=False, description='Activates ROCm roctracer support') - variant('opencl', default=False, description='Activates OpenCL support') - variant('fortran', default=darwin_default, description='Activates Fortran support') - variant('io', default=True, description='Activates POSIX I/O support') - variant('adios2', default=False, description='Activates ADIOS2 output support') - variant('sqlite', default=False, description='Activates SQLite3 output support') - variant('profileparam', default=False, description='Generate profiles with parameter mapped event data') + variant("scorep", default=False, description="Activates SCOREP support") + variant("openmp", default=False, description="Use OpenMP threads") + variant("pthreads", default=True, description="Use POSIX threads") + variant("mpi", default=False, description="Specify use of TAU MPI wrapper library") + variant("phase", default=False, description="Generate phase based profiles") + variant("papi", default=darwin_default, description="Activates Performance API") + variant("binutils", default=True, description="Activates support of BFD GNU Binutils") + variant("libdwarf", default=darwin_default, description="Activates support of libdwarf") + variant("elf", default=darwin_default, description="Activates support of elf") + variant("libunwind", default=darwin_default, description="Activates support of libunwind") + variant("otf2", default=True, description="Activates support of Open Trace Format (OTF)") + variant("pdt", default=True, description="Use PDT for source code instrumentation") + variant("comm", default=False, description=" Generate profiles with MPI communicator info") + variant("python", default=False, description="Activates Python support") + variant("likwid", default=False, description="Activates LIKWID support") + variant("ompt", default=False, description="Activates OMPT instrumentation") + variant("opari", default=False, description="Activates Opari2 instrumentation") + variant("shmem", default=False, description="Activates SHMEM support") + variant("gasnet", default=False, description="Activates GASNET support") + variant("cuda", default=False, description="Activates CUDA support") + variant("rocm", default=False, description="Activates ROCm support") + variant("level_zero", default=False, description="Activates Intel OneAPI Level Zero support") + variant("rocprofiler", default=False, description="Activates ROCm rocprofiler support") + variant("roctracer", default=False, description="Activates ROCm roctracer support") + variant("opencl", default=False, description="Activates OpenCL support") + variant("fortran", default=darwin_default, description="Activates Fortran support") + variant("io", default=True, description="Activates POSIX I/O support") + variant("adios2", default=False, description="Activates ADIOS2 output support") + variant("sqlite", default=False, description="Activates SQLite3 output support") + variant( + "profileparam", + default=False, + description="Generate profiles with parameter mapped event data", + ) # Support cross compiling. # This is a _reasonable_ subset of the full set of TAU # architectures supported: - variant('craycnl', default=False, description='Build for Cray compute nodes') - variant('ppc64le', default=False, description='Build for IBM Power LE nodes') - variant('x86_64', default=False, description='Force build for x86 Linux instead of auto-detect') - - depends_on('cmake@3.14:', type='build', when='%clang') - depends_on('zlib', type='link') - depends_on('pdt', when='+pdt') # Required for TAU instrumentation - depends_on('scorep', when='+scorep') - depends_on('otf2@2.1:2.3', when='+otf2') - depends_on('likwid', when='+likwid') - depends_on('papi', when='+papi') - depends_on('libdwarf', when='+libdwarf') - depends_on('elf', when='+elf') + variant("craycnl", default=False, description="Build for Cray compute nodes") + variant("ppc64le", default=False, description="Build for IBM Power LE nodes") + variant( + "x86_64", default=False, description="Force build for x86 Linux instead of auto-detect" + ) + + depends_on("cmake@3.14:", type="build", when="%clang") + depends_on("zlib", type="link") + depends_on("pdt", when="+pdt") # Required for TAU instrumentation + depends_on("scorep", when="+scorep") + depends_on("otf2@2.1:2.3", when="+otf2") + depends_on("likwid", when="+likwid") + depends_on("papi", when="+papi") + depends_on("libdwarf", when="+libdwarf") + depends_on("elf", when="+elf") # TAU requires the ELF header support, libiberty and demangle. - depends_on('binutils+libiberty+headers+plugins', when='+binutils') + depends_on("binutils+libiberty+headers+plugins", when="+binutils") # Build errors with Python 3.9 - depends_on('python@2.7:3.8', when='+python') - depends_on('libunwind', when='+libunwind') - depends_on('mpi', when='+mpi', type=('build', 'run', 'link')) - depends_on('cuda', when='+cuda') - depends_on('gasnet', when='+gasnet') - depends_on('adios2', when='+adios2') - depends_on('sqlite', when='+sqlite') - depends_on('hwloc') - depends_on('rocprofiler-dev', when='+rocprofiler') - depends_on('roctracer-dev', when='+roctracer') - depends_on('hsa-rocr-dev', when='+rocm') - depends_on('java', type='run') # for paraprof - depends_on('oneapi-level-zero', when='+level_zero') + depends_on("python@2.7:3.8", when="+python") + depends_on("libunwind", when="+libunwind") + depends_on("mpi", when="+mpi", type=("build", "run", "link")) + depends_on("cuda", when="+cuda") + depends_on("gasnet", when="+gasnet") + depends_on("adios2", when="+adios2") + depends_on("sqlite", when="+sqlite") + depends_on("hwloc") + depends_on("rocprofiler-dev", when="+rocprofiler") + depends_on("roctracer-dev", when="+roctracer") + depends_on("hsa-rocr-dev", when="+rocm") + depends_on("java", type="run") # for paraprof + depends_on("oneapi-level-zero", when="+level_zero") # Elf only required from 2.28.1 on - conflicts('+elf', when='@:2.28.0') - conflicts('+libdwarf', when='@:2.28.0') + conflicts("+elf", when="@:2.28.0") + conflicts("+libdwarf", when="@:2.28.0") # ADIOS2, SQLite only available from 2.29.1 on - conflicts('+adios2', when='@:2.29.1') - conflicts('+sqlite', when='@:2.29.1') + conflicts("+adios2", when="@:2.29.1") + conflicts("+sqlite", when="@:2.29.1") - patch('unwind.patch', when="@2.29.0") + patch("unwind.patch", when="@2.29.0") - filter_compiler_wrappers('Makefile', relative_root='include') - filter_compiler_wrappers('Makefile.tau*', relative_root='lib') - filter_compiler_wrappers('Makefile.tau*', relative_root='lib64') + filter_compiler_wrappers("Makefile", relative_root="include") + filter_compiler_wrappers("Makefile.tau*", relative_root="lib") + filter_compiler_wrappers("Makefile.tau*", relative_root="lib64") def set_compiler_options(self, spec): @@ -153,152 +159,154 @@ class Tau(Package): # PATH compiler_path = os.path.dirname(self.compiler.cc) if not compiler_path and self.compiler.cc_names[0] == "gcc": - compiler_path = os.environ.get('GCC_PATH', '') + compiler_path = os.environ.get("GCC_PATH", "") if compiler_path: compiler_path = compiler_path + "/bin/" - os.environ['PATH'] = ':'.join([compiler_path, os.environ['PATH']]) + os.environ["PATH"] = ":".join([compiler_path, os.environ["PATH"]]) - compiler_options = ['-c++=%s' % self.compiler.cxx_names[0], - '-cc=%s' % self.compiler.cc_names[0]] + compiler_options = [ + "-c++=%s" % self.compiler.cxx_names[0], + "-cc=%s" % self.compiler.cc_names[0], + ] - if '+fortran' in spec and self.compiler.fc: - compiler_options.append('-fortran=%s' % self.compiler.fc_names[0]) + if "+fortran" in spec and self.compiler.fc: + compiler_options.append("-fortran=%s" % self.compiler.fc_names[0]) ########## # Construct the string of custom compiler flags and append it to # compiler related options - useropt = ' '.join(useropt) + useropt = " ".join(useropt) useropt = "-useropt=%s" % useropt compiler_options.append(useropt) return compiler_options def setup_build_environment(self, env): - env.prepend_path('LIBRARY_PATH', self.spec['zlib'].prefix.lib) - env.prepend_path('LIBRARY_PATH', self.spec['hwloc'].prefix.lib) + env.prepend_path("LIBRARY_PATH", self.spec["zlib"].prefix.lib) + env.prepend_path("LIBRARY_PATH", self.spec["hwloc"].prefix.lib) def install(self, spec, prefix): # TAU isn't happy with directories that have '@' in the path. Sigh. - change_sed_delimiter('@', ';', 'configure') - change_sed_delimiter('@', ';', 'utils/FixMakefile') - change_sed_delimiter('@', ';', 'utils/FixMakefile.sed.default') + change_sed_delimiter("@", ";", "configure") + change_sed_delimiter("@", ";", "utils/FixMakefile") + change_sed_delimiter("@", ";", "utils/FixMakefile.sed.default") # TAU configure, despite the name , seems to be a manually # written script (nothing related to autotools). As such it has # a few #peculiarities# that make this build quite hackish. options = ["-prefix=%s" % prefix] - if '+craycnl' in spec: - options.append('-arch=craycnl') + if "+craycnl" in spec: + options.append("-arch=craycnl") - if '+ppc64le' in spec: - options.append('-arch=ibm64linux') + if "+ppc64le" in spec: + options.append("-arch=ibm64linux") - if '+x86_64' in spec: - options.append('-arch=x86_64') + if "+x86_64" in spec: + options.append("-arch=x86_64") - if ('platform=cray' in self.spec) and ('+x86_64' not in spec): - options.append('-arch=craycnl') + if ("platform=cray" in self.spec) and ("+x86_64" not in spec): + options.append("-arch=craycnl") - if '+pdt' in spec: - options.append("-pdt=%s" % spec['pdt'].prefix) - if spec['pdt'].satisfies("%intel"): + if "+pdt" in spec: + options.append("-pdt=%s" % spec["pdt"].prefix) + if spec["pdt"].satisfies("%intel"): options.append("-pdt_c++=icpc") - if '+scorep' in spec: - options.append("-scorep=%s" % spec['scorep'].prefix) + if "+scorep" in spec: + options.append("-scorep=%s" % spec["scorep"].prefix) - if '+pthreads' in spec: - options.append('-pthread') + if "+pthreads" in spec: + options.append("-pthread") - if '+likwid' in spec: - options.append("-likwid=%s" % spec['likwid'].prefix) + if "+likwid" in spec: + options.append("-likwid=%s" % spec["likwid"].prefix) - if '+papi' in spec: - options.append("-papi=%s" % spec['papi'].prefix) + if "+papi" in spec: + options.append("-papi=%s" % spec["papi"].prefix) - if '+openmp' in spec: - options.append('-openmp') + if "+openmp" in spec: + options.append("-openmp") - if '+opari' in spec: - options.append('-opari') + if "+opari" in spec: + options.append("-opari") - if '+ompt' in spec: - options.append('-ompt') + if "+ompt" in spec: + options.append("-ompt") - if '+io' in spec: - options.append('-iowrapper') + if "+io" in spec: + options.append("-iowrapper") - if '+binutils' in spec: - options.append("-bfd=%s" % spec['binutils'].prefix) + if "+binutils" in spec: + options.append("-bfd=%s" % spec["binutils"].prefix) - if '+libdwarf' in spec: - options.append("-dwarf=%s" % spec['libdwarf'].prefix) + if "+libdwarf" in spec: + options.append("-dwarf=%s" % spec["libdwarf"].prefix) - if '+elf' in spec: - options.append("-elf=%s" % spec['elf'].prefix) + if "+elf" in spec: + options.append("-elf=%s" % spec["elf"].prefix) - if '+libunwind' in spec: - options.append("-unwind=%s" % spec['libunwind'].prefix) + if "+libunwind" in spec: + options.append("-unwind=%s" % spec["libunwind"].prefix) - if '+otf2' in spec: - options.append("-otf=%s" % spec['otf2'].prefix) + if "+otf2" in spec: + options.append("-otf=%s" % spec["otf2"].prefix) - if '+mpi' in spec: - env['CC'] = spec['mpi'].mpicc - env['CXX'] = spec['mpi'].mpicxx - env['F77'] = spec['mpi'].mpif77 - env['FC'] = spec['mpi'].mpifc - options.append("-mpiinc=%s" % spec['mpi'].prefix.include) - options.append("-mpilib=%s" % spec['mpi'].prefix.lib) + if "+mpi" in spec: + env["CC"] = spec["mpi"].mpicc + env["CXX"] = spec["mpi"].mpicxx + env["F77"] = spec["mpi"].mpif77 + env["FC"] = spec["mpi"].mpifc + options.append("-mpiinc=%s" % spec["mpi"].prefix.include) + options.append("-mpilib=%s" % spec["mpi"].prefix.lib) - options.append('-mpi') - if '+comm' in spec: - options.append('-PROFILECOMMUNICATORS') + options.append("-mpi") + if "+comm" in spec: + options.append("-PROFILECOMMUNICATORS") - if '+profileparam' in spec: - options.append('-PROFILEPARAM') + if "+profileparam" in spec: + options.append("-PROFILEPARAM") - if '+shmem' in spec: - options.append('-shmem') + if "+shmem" in spec: + options.append("-shmem") - if '+gasnet' in spec: - options.append('-gasnet=%s' % spec['gasnet'].prefix) + if "+gasnet" in spec: + options.append("-gasnet=%s" % spec["gasnet"].prefix) - if '+cuda' in spec: - options.append("-cuda=%s" % spec['cuda'].prefix) + if "+cuda" in spec: + options.append("-cuda=%s" % spec["cuda"].prefix) - if '+level_zero' in spec: - options.append("-level_zero=%s" % spec['oneapi-level-zero'].prefix) + if "+level_zero" in spec: + options.append("-level_zero=%s" % spec["oneapi-level-zero"].prefix) - if '+opencl' in spec: + if "+opencl" in spec: options.append("-opencl") - if '+rocm' in spec: - options.append("-rocm=%s" % spec['hsa-rocr-dev'].prefix) + if "+rocm" in spec: + options.append("-rocm=%s" % spec["hsa-rocr-dev"].prefix) - if '+rocprofiler' in spec: - options.append("-rocprofiler=%s" % spec['rocprofiler-dev'].prefix) + if "+rocprofiler" in spec: + options.append("-rocprofiler=%s" % spec["rocprofiler-dev"].prefix) - if '+roctracer' in spec: - options.append("-roctracer=%s" % spec['roctracer-dev'].prefix) + if "+roctracer" in spec: + options.append("-roctracer=%s" % spec["roctracer-dev"].prefix) - if '+adios2' in spec: - options.append("-adios=%s" % spec['adios2'].prefix) + if "+adios2" in spec: + options.append("-adios=%s" % spec["adios2"].prefix) - if '+sqlite' in spec: - options.append("-sqlite3=%s" % spec['sqlite'].prefix) + if "+sqlite" in spec: + options.append("-sqlite3=%s" % spec["sqlite"].prefix) - if '+phase' in spec: - options.append('-PROFILEPHASE') + if "+phase" in spec: + options.append("-PROFILEPHASE") - if '+python' in spec: - options.append('-python') + if "+python" in spec: + options.append("-python") # find Python.h (i.e. include/python2.7/Python.h) - include_path = spec['python'].prefix.include + include_path = spec["python"].prefix.include found = False - for root, dirs, files in os.walk(spec['python'].prefix.include): - for filename in fnmatch.filter(files, 'Python.h'): + for root, dirs, files in os.walk(spec["python"].prefix.include): + for filename in fnmatch.filter(files, "Python.h"): include_path = root break found = True @@ -306,12 +314,12 @@ class Tau(Package): break options.append("-pythoninc=%s" % include_path) # find libpython*.* (i.e. lib/python2.7/libpython2.7.so) - lib_path = spec['python'].prefix.lib + lib_path = spec["python"].prefix.lib found = False - file_to_find = 'libpython*.so' - if (platform.system() == "Darwin"): - file_to_find = 'libpython*.dylib' - for root, dirs, files in os.walk(spec['python'].prefix.lib): + file_to_find = "libpython*.so" + if platform.system() == "Darwin": + file_to_find = "libpython*.dylib" + for root, dirs, files in os.walk(spec["python"].prefix.lib): for filename in fnmatch.filter(files, file_to_find): lib_path = root break @@ -334,14 +342,14 @@ class Tau(Package): def link_tau_arch_dirs(self): for subdir in os.listdir(self.prefix): - for d in ('bin', 'lib'): + for d in ("bin", "lib"): src = join_path(self.prefix, subdir, d) dest = join_path(self.prefix, d) if os.path.isdir(src) and not os.path.exists(dest): os.symlink(join_path(subdir, d), dest) def setup_run_environment(self, env): - pattern = join_path(self.prefix.lib, 'Makefile.*') + pattern = join_path(self.prefix.lib, "Makefile.*") files = glob.glob(pattern) # This function is called both at install time to set up @@ -350,11 +358,11 @@ class Tau(Package): # directory to inspect. The conditional below will set `TAU_MAKEFILE` # in the latter case. if files: - env.set('TAU_MAKEFILE', files[0]) + env.set("TAU_MAKEFILE", files[0]) - matmult_test = join_path('examples', 'mm') + matmult_test = join_path("examples", "mm") - @run_after('install') + @run_after("install") def setup_build_tests(self): """Copy the build test files after the package is installed to an install test subdirectory for use during `spack test run`.""" @@ -362,24 +370,38 @@ class Tau(Package): def _run_matmult_test(self): mm_dir = join_path(self.test_suite.current_test_cache_dir, self.matmult_test) - self.run_test('make', ['all'], [], 0, False, - 'Instrument and build matrix multiplication test code', - False, mm_dir) - test_exe = 'matmult' - if '+mpi' in self.spec: - test_args = ['-n', '4', test_exe] - mpiexe_list = ['mpirun', 'mpiexec', 'srun'] + self.run_test( + "make", + ["all"], + [], + 0, + False, + "Instrument and build matrix multiplication test code", + False, + mm_dir, + ) + test_exe = "matmult" + if "+mpi" in self.spec: + test_args = ["-n", "4", test_exe] + mpiexe_list = ["mpirun", "mpiexec", "srun"] for mpiexe in mpiexe_list: if which(mpiexe) is not None: - self.run_test(mpiexe, test_args, [], 0, False, - 'Run matmult test with mpi', False, mm_dir) + self.run_test( + mpiexe, test_args, [], 0, False, "Run matmult test with mpi", False, mm_dir + ) break else: - self.run_test(test_exe, [], [], 0, False, - 'Run sequential matmult test', False, mm_dir) - self.run_test('pprof', [], [], 0, False, - 'Run pprof profile analysis tool on profile output', - False, mm_dir) + self.run_test(test_exe, [], [], 0, False, "Run sequential matmult test", False, mm_dir) + self.run_test( + "pprof", + [], + [], + 0, + False, + "Run pprof profile analysis tool on profile output", + False, + mm_dir, + ) def test(self): # Run mm test program pulled from the build |