diff options
25 files changed, 275 insertions, 57 deletions
diff --git a/lib/spack/llnl/util/filesystem.py b/lib/spack/llnl/util/filesystem.py index 71d5096523..86122f42c8 100644 --- a/lib/spack/llnl/util/filesystem.py +++ b/lib/spack/llnl/util/filesystem.py @@ -47,6 +47,7 @@ __all__ = [ 'copy_mode', 'filter_file', 'find_libraries', + 'find_system_libraries', 'fix_darwin_install_name', 'force_remove', 'force_symlink', @@ -583,6 +584,54 @@ class LibraryList(collections.Sequence): return self.joined() +def find_system_libraries(args, shared=True): + """Searches the usual system library locations for the libraries + specified in args. + + Search order is as follows: + + 1. /lib64 + 2. /lib + 3. /usr/lib64 + 4. /usr/lib + 5. /usr/local/lib64 + 6. /usr/local/lib + + :param args: Library name(s) to search for + :type args: str or collections.Sequence + :param bool shared: if True searches for shared libraries, + + :returns: The libraries that have been found + :rtype: LibraryList + """ + if isinstance(args, str): + args = [args] + elif not isinstance(args, collections.Sequence): + message = '{0} expects a string or sequence of strings as the ' + message += 'first argument [got {1} instead]' + message = message.format(find_system_libraries.__name__, type(args)) + raise TypeError(message) + + libraries_found = [] + search_locations = [ + '/lib64', + '/lib', + '/usr/lib64', + '/usr/lib', + '/usr/local/lib64', + '/usr/local/lib', + ] + + for library in args: + for root in search_locations: + result = find_libraries(library, root, shared, recurse=True) + if result: + libraries_found += result + break + + return libraries_found + + def find_libraries(args, root, shared=True, recurse=False): """Returns an iterable object containing a list of full paths to libraries if found. diff --git a/var/spack/repos/builtin/packages/atlas/package.py b/var/spack/repos/builtin/packages/atlas/package.py index 68a91c964b..525701c57b 100644 --- a/var/spack/repos/builtin/packages/atlas/package.py +++ b/var/spack/repos/builtin/packages/atlas/package.py @@ -110,7 +110,8 @@ class Atlas(Package): make('shared_all') make("install") - self.install_test() + if self.run_tests: + self.install_test() @property def libs(self): diff --git a/var/spack/repos/builtin/packages/boost/package.py b/var/spack/repos/builtin/packages/boost/package.py index 09953dd90e..2f108dcac8 100644 --- a/var/spack/repos/builtin/packages/boost/package.py +++ b/var/spack/repos/builtin/packages/boost/package.py @@ -42,6 +42,7 @@ class Boost(Package): list_url = "http://sourceforge.net/projects/boost/files/boost/" list_depth = 1 + version('1.64.0', '93eecce2abed9d2442c9676914709349') version('1.63.0', '1c837ecd990bb022d07e7aab32b09847') version('1.62.0', '5fb94629535c19e48703bdb2b2e9490f') version('1.61.0', '6095876341956f65f9d35939ccea1a9f') diff --git a/var/spack/repos/builtin/packages/cosmomc/package.py b/var/spack/repos/builtin/packages/cosmomc/package.py index a6a4409b25..261115d575 100644 --- a/var/spack/repos/builtin/packages/cosmomc/package.py +++ b/var/spack/repos/builtin/packages/cosmomc/package.py @@ -108,7 +108,7 @@ class Cosmomc(Package): else: wantmpi = 'BUILD=NOMPI' mpif90 = 'MPIF90C=' - + # Choose BLAS and LAPACK lapack = ("LAPACKL=%s" % (spec['lapack'].libs + spec['blas'].libs).ld_flags) @@ -158,8 +158,8 @@ class Cosmomc(Package): for filename in fnmatch.filter(filenames, '*~'): os.remove(os.path.join(dirpath, filename)) - @on_package_attributes(run_tests=True) @run_after('install') + @on_package_attributes(run_tests=True) def check_install(self): prefix = self.prefix spec = self.spec diff --git a/var/spack/repos/builtin/packages/cppcheck/package.py b/var/spack/repos/builtin/packages/cppcheck/package.py index 254674c7bf..3bf6a46fec 100644 --- a/var/spack/repos/builtin/packages/cppcheck/package.py +++ b/var/spack/repos/builtin/packages/cppcheck/package.py @@ -30,8 +30,9 @@ import shutil class Cppcheck(Package): """A tool for static C/C++ code analysis.""" homepage = "http://cppcheck.sourceforge.net/" - url = "http://downloads.sourceforge.net/project/cppcheck/cppcheck/1.68/cppcheck-1.68.tar.bz2" + url = "https://downloads.sourceforge.net/project/cppcheck/cppcheck/1.78/cppcheck-1.78.tar.bz2" + version('1.78', 'f02d0ee0a4e71023703c6c5efff6cf9d') version('1.72', '2bd36f91ae0191ef5273bb7f6dc0d72e') version('1.68', 'c015195f5d61a542f350269030150708') diff --git a/var/spack/repos/builtin/packages/fftw/package.py b/var/spack/repos/builtin/packages/fftw/package.py index 555fbb91f7..3a283e7eb0 100644 --- a/var/spack/repos/builtin/packages/fftw/package.py +++ b/var/spack/repos/builtin/packages/fftw/package.py @@ -138,7 +138,8 @@ class Fftw(AutotoolsPackage): with working_dir('quad'): make() - def check(self, spec, prefix): + def check(self): + spec = self.spec if '+double' in spec: with working_dir('double'): make("check") diff --git a/var/spack/repos/builtin/packages/gettext/package.py b/var/spack/repos/builtin/packages/gettext/package.py index f5d9c7c45c..b3397419bd 100644 --- a/var/spack/repos/builtin/packages/gettext/package.py +++ b/var/spack/repos/builtin/packages/gettext/package.py @@ -100,3 +100,13 @@ class Gettext(AutotoolsPackage): config_args.append('--with-included-libunistring') return config_args + + def check(self): + # Test suite fails when run in parallel: + # + # FAIL: test-verify + # ================= + # + # icc: error #10236: File not found: 'test-verify.o' + # FAIL test-verify (exit status: 1) + make('check', parallel=False) diff --git a/var/spack/repos/builtin/packages/hdf5-blosc/package.py b/var/spack/repos/builtin/packages/hdf5-blosc/package.py index eb63d08dfd..79f23d7d92 100644 --- a/var/spack/repos/builtin/packages/hdf5-blosc/package.py +++ b/var/spack/repos/builtin/packages/hdf5-blosc/package.py @@ -111,7 +111,8 @@ class Hdf5Blosc(Package): "-L%s" % spec["hdf5"].prefix.lib, "-lhdf5") _install_shlib("libblosc_plugin", ".libs", prefix.lib) - self.check_install(spec) + if self.run_tests: + self.check_install(spec) def check_install(self, spec): "Build and run a small program to test the installed HDF5 Blosc plugin" diff --git a/var/spack/repos/builtin/packages/hdf5/package.py b/var/spack/repos/builtin/packages/hdf5/package.py index 27ec1b3bc4..4da24dd7f1 100644 --- a/var/spack/repos/builtin/packages/hdf5/package.py +++ b/var/spack/repos/builtin/packages/hdf5/package.py @@ -79,11 +79,11 @@ class Hdf5(AutotoolsPackage): @property def libs(self): """Hdf5 can be queried for the following parameters: - + - "hl": high-level interface - "cxx": C++ APIs - "fortran": fortran APIs - + :return: list of matching libraries """ query_parameters = self.spec.last_query.extra_parameters @@ -228,6 +228,7 @@ class Hdf5(AutotoolsPackage): 'libtool') @run_after('install') + @on_package_attributes(run_tests=True) def check_install(self): # Build and run a small program to test the installed HDF5 library spec = self.spec diff --git a/var/spack/repos/builtin/packages/hpl/package.py b/var/spack/repos/builtin/packages/hpl/package.py index a171408a26..166e3d8d58 100644 --- a/var/spack/repos/builtin/packages/hpl/package.py +++ b/var/spack/repos/builtin/packages/hpl/package.py @@ -27,7 +27,7 @@ import os import platform -class Hpl(Package): +class Hpl(MakefilePackage): """HPL is a software package that solves a (random) dense linear system in double precision (64 bits) arithmetic on distributed-memory computers. It can thus be regarded as a portable as well as freely available @@ -45,7 +45,11 @@ class Hpl(Package): parallel = False - def configure(self, spec, arch): + arch = '{0}-{1}'.format(platform.system(), platform.processor()) + + build_targets = ['arch={0}'.format(arch)] + + def edit(self, spec, prefix): # List of configuration options # Order is important config = [] @@ -66,7 +70,7 @@ class Hpl(Package): 'RM = /bin/rm -f', 'TOUCH = touch', # Platform identifier - 'ARCH = {0}'.format(arch), + 'ARCH = {0}'.format(self.arch), # HPL Directory Structure / HPL library 'TOPdir = {0}'.format(os.getcwd()), 'INCdir = $(TOPdir)/include', @@ -74,7 +78,7 @@ class Hpl(Package): 'LIBdir = $(TOPdir)/lib/$(ARCH)', 'HPLlib = $(LIBdir)/libhpl.a', # Message Passing library (MPI) - 'MPinc = -I{0}'.format(spec['mpi'].prefix.include), + 'MPinc = {0}'.format(spec['mpi'].prefix.include), 'MPlib = -L{0}'.format(spec['mpi'].prefix.lib), # Linear Algebra library (BLAS or VSIPL) 'LAinc = {0}'.format(spec['blas'].prefix.include), @@ -99,21 +103,13 @@ class Hpl(Package): ]) # Write configuration options to include file - with open('Make.{0}'.format(arch), 'w') as makefile: + with open('Make.{0}'.format(self.arch), 'w') as makefile: for var in config: makefile.write('{0}\n'.format(var)) def install(self, spec, prefix): - # Arch used for file naming purposes only - arch = '{0}-{1}'.format(platform.system(), platform.processor()) - - # Generate Makefile include - self.configure(spec, arch) - - make('arch={0}'.format(arch)) - # Manual installation - install_tree(join_path('bin', arch), prefix.bin) - install_tree(join_path('lib', arch), prefix.lib) - install_tree(join_path('include', arch), prefix.include) + install_tree(join_path('bin', self.arch), prefix.bin) + install_tree(join_path('lib', self.arch), prefix.lib) + install_tree(join_path('include', self.arch), prefix.include) install_tree('man', prefix.man) diff --git a/var/spack/repos/builtin/packages/intel-mkl/package.py b/var/spack/repos/builtin/packages/intel-mkl/package.py index 59b66d63ad..7f0f8e0eb5 100644 --- a/var/spack/repos/builtin/packages/intel-mkl/package.py +++ b/var/spack/repos/builtin/packages/intel-mkl/package.py @@ -54,28 +54,44 @@ class IntelMkl(IntelInstaller): @property def blas_libs(self): - shared = True if '+shared' in self.spec else False - suffix = dso_suffix if '+shared' in self.spec else 'a' - mkl_integer = ['libmkl_intel_ilp64'] if '+ilp64' in self.spec else ['libmkl_intel_lp64'] # NOQA: ignore=E501 + spec = self.spec + prefix = self.prefix + shared = '+shared' in spec + + if '+ilp64' in spec: + mkl_integer = ['libmkl_intel_ilp64'] + else: + mkl_integer = ['libmkl_intel_lp64'] + mkl_threading = ['libmkl_sequential'] - if '+openmp' in self.spec: - mkl_threading = ['libmkl_intel_thread', 'libiomp5'] if '%intel' in self.spec else ['libmkl_gnu_thread'] # NOQA: ignore=E501 + + if '+openmp' in spec: + if '%intel' in spec: + mkl_threading = ['libmkl_intel_thread', 'libiomp5'] + else: + mkl_threading = ['libmkl_gnu_thread'] + # TODO: TBB threading: ['libmkl_tbb_thread', 'libtbb', 'libstdc++'] + + mkl_root = join_path(prefix.lib, 'intel64') + mkl_libs = find_libraries( mkl_integer + ['libmkl_core'] + mkl_threading, - root=join_path(self.prefix.lib, 'intel64'), + root=mkl_root, + shared=shared + ) + + # Intel MKL link line advisor recommends these system libraries + system_libs = find_system_libraries( + ['libpthread', 'libm', 'libdl'], shared=shared ) - system_libs = [ - 'libpthread.{0}'.format(suffix), - 'libm.{0}'.format(suffix), - 'libdl.{0}'.format(suffix) - ] + return mkl_libs + system_libs @property def lapack_libs(self): - return self.libs + return self.blas_libs @property def scalapack_libs(self): diff --git a/var/spack/repos/builtin/packages/intel-parallel-studio/package.py b/var/spack/repos/builtin/packages/intel-parallel-studio/package.py index 98043db400..d4ae5fe20f 100644 --- a/var/spack/repos/builtin/packages/intel-parallel-studio/package.py +++ b/var/spack/repos/builtin/packages/intel-parallel-studio/package.py @@ -96,7 +96,7 @@ class IntelParallelStudio(IntelInstaller): variant('ilp64', default=False, description='64 bit integers') variant('openmp', default=False, description='OpenMP multithreading layer') - provides('mpi', when='@cluster:+mpi') + provides('mpi', when='@cluster.0:cluster.9999+mpi') provides('mkl', when='+mkl') provides('daal', when='+daal') provides('ipp', when='+ipp') @@ -108,28 +108,44 @@ class IntelParallelStudio(IntelInstaller): @property def blas_libs(self): - shared = True if '+shared' in self.spec else False - suffix = dso_suffix if '+shared' in self.spec else 'a' - mkl_integer = ['libmkl_intel_ilp64'] if '+ilp64' in self.spec else ['libmkl_intel_lp64'] # NOQA: ignore=E501 + spec = self.spec + prefix = self.prefix + shared = '+shared' in spec + + if '+ilp64' in spec: + mkl_integer = ['libmkl_intel_ilp64'] + else: + mkl_integer = ['libmkl_intel_lp64'] + mkl_threading = ['libmkl_sequential'] - if '+openmp' in self.spec: - mkl_threading = ['libmkl_intel_thread', 'libiomp5'] if '%intel' in self.spec else ['libmkl_gnu_thread'] # NOQA: ignore=E501 + + if '+openmp' in spec: + if '%intel' in spec: + mkl_threading = ['libmkl_intel_thread', 'libiomp5'] + else: + mkl_threading = ['libmkl_gnu_thread'] + # TODO: TBB threading: ['libmkl_tbb_thread', 'libtbb', 'libstdc++'] + + mkl_root = join_path(prefix, 'mkl', 'lib', 'intel64') + mkl_libs = find_libraries( mkl_integer + ['libmkl_core'] + mkl_threading, - root=join_path(self.prefix, 'mkl', 'lib', 'intel64'), + root=mkl_root, + shared=shared + ) + + # Intel MKL link line advisor recommends these system libraries + system_libs = find_system_libraries( + ['libpthread', 'libm', 'libdl'], shared=shared ) - system_libs = [ - 'libpthread.{0}'.format(suffix), - 'libm.{0}'.format(suffix), - 'libdl.{0}'.format(suffix) - ] + return mkl_libs + system_libs @property def lapack_libs(self): - return self.libs + return self.blas_libs @property def scalapack_libs(self): diff --git a/var/spack/repos/builtin/packages/llvm/package.py b/var/spack/repos/builtin/packages/llvm/package.py index 398daefc8f..04b4efd491 100644 --- a/var/spack/repos/builtin/packages/llvm/package.py +++ b/var/spack/repos/builtin/packages/llvm/package.py @@ -389,6 +389,9 @@ class Llvm(Package): raise SpackException( 'The lldb variant requires the `+clang` variant') + if spec.satisfies('@4.0.0:') and spec.satisfies('platform=linux'): + cmake_args.append('-DCMAKE_BUILD_WITH_INSTALL_RPATH=1') + with working_dir('spack-build', create=True): cmake(*cmake_args) make() diff --git a/var/spack/repos/builtin/packages/netcdf/package.py b/var/spack/repos/builtin/packages/netcdf/package.py index f512ecf2ea..ca6a30e9a4 100644 --- a/var/spack/repos/builtin/packages/netcdf/package.py +++ b/var/spack/repos/builtin/packages/netcdf/package.py @@ -34,7 +34,7 @@ class Netcdf(AutotoolsPackage): url = "http://www.gfd-dennou.org/arch/netcdf/unidata-mirror/netcdf-4.3.3.tar.gz" # Version 4.4.1.1 is having problems in tests - # https://github.com/Unidata/netcdf-c/issues/343 + # https://github.com/Unidata/netcdf-c/issues/343 version('4.4.1.1', '503a2d6b6035d116ed53b1d80c811bda') # netcdf@4.4.1 can crash on you (in real life and in tests). See: # https://github.com/Unidata/netcdf-c/issues/282 @@ -137,6 +137,7 @@ class Netcdf(AutotoolsPackage): if '+mpi' in spec: config_args.append('--enable-parallel4') + config_args.append('CC=%s' % spec['mpi'].mpicc) CPPFLAGS.append("-I%s/include" % spec['hdf5'].prefix) LDFLAGS.append("-L%s/lib" % spec['hdf5'].prefix) diff --git a/var/spack/repos/builtin/packages/nfft/package.py b/var/spack/repos/builtin/packages/nfft/package.py index a137dcf019..daedcff22f 100644 --- a/var/spack/repos/builtin/packages/nfft/package.py +++ b/var/spack/repos/builtin/packages/nfft/package.py @@ -63,7 +63,8 @@ class Nfft(AutotoolsPackage): with working_dir('long-double'): make() - def check(self, spec, prefix): + def check(self): + spec = self.spec if '+double' in spec['fftw']: with working_dir('double'): make("check") diff --git a/var/spack/repos/builtin/packages/openblas/package.py b/var/spack/repos/builtin/packages/openblas/package.py index f3b1d4d23f..647cbb121a 100644 --- a/var/spack/repos/builtin/packages/openblas/package.py +++ b/var/spack/repos/builtin/packages/openblas/package.py @@ -123,8 +123,8 @@ class Openblas(MakefilePackage): return self.make_defs + targets - @on_package_attributes(run_tests=True) @run_after('build') + @on_package_attributes(run_tests=True) def check_build(self): make('tests', *self.make_defs) @@ -136,8 +136,8 @@ class Openblas(MakefilePackage): ] return make_args + self.make_defs - @on_package_attributes(run_tests=True) @run_after('install') + @on_package_attributes(run_tests=True) def check_install(self): spec = self.spec # Openblas may pass its own test but still fail to compile Lapack diff --git a/var/spack/repos/builtin/packages/perl/package.py b/var/spack/repos/builtin/packages/perl/package.py index 4ae140454d..5ca5f42492 100644 --- a/var/spack/repos/builtin/packages/perl/package.py +++ b/var/spack/repos/builtin/packages/perl/package.py @@ -47,7 +47,7 @@ class Perl(Package): # Perl doesn't use Autotools, it should subclass Package # Maintenance releases (recommended) version('5.24.1', '765ef511b5b87a164e2531403ee16b3c', preferred=True) version('5.22.3', 'aa4f236dc2fc6f88b871436b8d0fda95') - + # Misc releases that people need version('5.22.2', '5767e2a10dd62a46d7b57f74a90d952b') @@ -98,6 +98,7 @@ class Perl(Package): # Perl doesn't use Autotools, it should subclass Package def build(self, spec, prefix): make() + @run_after('build') @on_package_attributes(run_tests=True) def test(self): make('test') diff --git a/var/spack/repos/builtin/packages/pfft/package.py b/var/spack/repos/builtin/packages/pfft/package.py index f46526be37..3d05a834e9 100644 --- a/var/spack/repos/builtin/packages/pfft/package.py +++ b/var/spack/repos/builtin/packages/pfft/package.py @@ -67,7 +67,8 @@ class Pfft(AutotoolsPackage): with working_dir('long-double'): make() - def check(self, spec, prefix): + def check(self): + spec = self.spec if '+double' in spec['fftw']: with working_dir('double'): make("check") diff --git a/var/spack/repos/builtin/packages/planck-likelihood/package.py b/var/spack/repos/builtin/packages/planck-likelihood/package.py index c5c5cac6cf..8d7b9c5e34 100644 --- a/var/spack/repos/builtin/packages/planck-likelihood/package.py +++ b/var/spack/repos/builtin/packages/planck-likelihood/package.py @@ -137,8 +137,8 @@ class PlanckLikelihood(Package): run_env.set('CLIK_DATA', join_path(prefix, 'share', 'clik')) run_env.set('CLIK_PLUGIN', 'rel2015') - @on_package_attributes(run_tests=True) @run_after('install') + @on_package_attributes(run_tests=True) def check_install(self): prefix = self.prefix clik_example_C = Executable(join_path(prefix.bin, 'clik_example_C')) diff --git a/var/spack/repos/builtin/packages/pnfft/package.py b/var/spack/repos/builtin/packages/pnfft/package.py index 772bd8f195..3e56b9be4e 100644 --- a/var/spack/repos/builtin/packages/pnfft/package.py +++ b/var/spack/repos/builtin/packages/pnfft/package.py @@ -64,7 +64,8 @@ class Pnfft(AutotoolsPackage): with working_dir('long-double'): make() - def check(self, spec, prefix): + def check(self): + spec = self.spec if '+double' in spec['fftw']: with working_dir('double'): make("check") diff --git a/var/spack/repos/builtin/packages/pocl/package.py b/var/spack/repos/builtin/packages/pocl/package.py index b64ae22837..b6baee7e07 100644 --- a/var/spack/repos/builtin/packages/pocl/package.py +++ b/var/spack/repos/builtin/packages/pocl/package.py @@ -95,6 +95,7 @@ class Pocl(CMakePackage): os.symlink("OpenCL", join_path(self.prefix.include, "CL")) @run_after('install') + @on_package_attributes(run_tests=True) def check_install(self): # Build and run a small program to test the installed OpenCL library spec = self.spec diff --git a/var/spack/repos/builtin/packages/py-keras/package.py b/var/spack/repos/builtin/packages/py-keras/package.py index 541072f987..1ca706b20e 100644 --- a/var/spack/repos/builtin/packages/py-keras/package.py +++ b/var/spack/repos/builtin/packages/py-keras/package.py @@ -32,6 +32,7 @@ class PyKeras(PythonPackage): homepage = "http://keras.io" url = "https://pypi.io/packages/source/K/Keras/Keras-1.2.2.tar.gz" + version('2.0.3', '39ce72a65623cd233a8fa4e867dd0c6b') version('1.2.2', '8e26b25bf16494f6eca726887d232319') version('1.2.1', '95525b9faa890267d80d119b13ce2984') version('1.2.0', 'd24d8b72747f8cc38e659ce8fc92ad3c') diff --git a/var/spack/repos/builtin/packages/py-python-gitlab/package.py b/var/spack/repos/builtin/packages/py-python-gitlab/package.py new file mode 100644 index 0000000000..24feb1c5fa --- /dev/null +++ b/var/spack/repos/builtin/packages/py-python-gitlab/package.py @@ -0,0 +1,41 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyPythonGitlab(PythonPackage): + """Python wrapper for the GitLab API""" + + homepage = "https://github.com/gpocentek/python-gitlab" + url = "https://pypi.io/packages/source/p/python-gitlab/python-gitlab-0.19.tar.gz" + + version('0.19', '6564d7204c2b7e65c54b3fa89ec91df6') + version('0.18', 'c31dae1d0bab3966cb830f2308a96308') + version('0.17', '8a69c602e07dd4731856531d79bb58eb') + version('0.16', 'e0421d930718021e7d796d74d2ad7194') + + depends_on('py-setuptools', type='build') + depends_on('py-six', type=('build', 'run')) + depends_on('py-requests@1.0:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-yt/package.py b/var/spack/repos/builtin/packages/py-yt/package.py index ff50c269a2..cefef2e1d3 100644 --- a/var/spack/repos/builtin/packages/py-yt/package.py +++ b/var/spack/repos/builtin/packages/py-yt/package.py @@ -78,6 +78,7 @@ class PyYt(PythonPackage): rockstar_cfg.write(self.spec['rockstar'].prefix) @run_after('install') + @on_package_attributes(run_tests=True) def check_install(self): # The Python interpreter path can be too long for this # yt = Executable(join_path(prefix.bin, "yt")) diff --git a/var/spack/repos/builtin/packages/vampirtrace/package.py b/var/spack/repos/builtin/packages/vampirtrace/package.py new file mode 100644 index 0000000000..b4e86a82cc --- /dev/null +++ b/var/spack/repos/builtin/packages/vampirtrace/package.py @@ -0,0 +1,73 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Vampirtrace(AutotoolsPackage): + """VampirTrace is an open source library that allows detailed logging of + program execution for parallel applications using message passing (MPI) + and threads (OpenMP, Pthreads).""" + + homepage = "https://tu-dresden.de/zih/forschung/projekte/vampirtrace" + url = "http://wwwpub.zih.tu-dresden.de/~mlieber/dcount/dcount.php?package=vampirtrace&get=VampirTrace-5.14.4.tar.gz" + + version('5.14.4', '1c92b23169df9bcc860e5fc737dbc9c9') + + variant('mpi', default=True, description='Enable MPI support') + + depends_on('mpi', when='+mpi') + depends_on('otf') + depends_on('papi') + depends_on('zlib') + + def patch(self): + path = 'tools/vtwrapper/vt{0}-wrapper-data.txt.in' + + for wrapper in ('cc', 'c++', 'fort'): + filter_file('@VT_WRAPPER_OPARI_TAB_COMPILER@', + '@VT_WRAPPER_CC_COMPILER@', + path.format(wrapper)) + + def configure_args(self): + spec = self.spec + compiler = self.compiler + + args = [ + '--with-extern-otf', + '--with-extern-otf-dir={0}'.format(spec['otf'].prefix), + '--with-papi-dir={0}'.format(spec['papi'].prefix), + '--with-zlib-dir={0}'.format(spec['zlib'].prefix), + '--with-wrapper-cc-compiler={0}'.format(compiler.cc), + '--with-wrapper-cc-cpp={0} -E'.format(compiler.cc), + '--with-wrapper-cxx-compiler={0}'.format(compiler.cxx), + '--with-wrapper-cxx-cpp={0} -E'.format(compiler.cxx), + '--with-wrapper-fc-compiler={0}'.format(compiler.fc), + '--with-wrapper-fc-cpp={0} -E'.format(compiler.fc) + ] + + if '+mpi' in spec: + args.append('--with-mpi-dir={0}'.format(spec['mpi'].prefix)) + + return args |