diff options
-rwxr-xr-x | bin/spack | 2 | ||||
-rw-r--r-- | lib/spack/spack/__init__.py | 15 | ||||
-rw-r--r-- | lib/spack/spack/build_environment.py | 2 | ||||
-rw-r--r-- | var/spack/packages/valgrind/package.py | 55 |
4 files changed, 69 insertions, 5 deletions
@@ -150,7 +150,7 @@ def main(): sys.stderr.write('\n') tty.die("Keyboard interrupt.") - # Allow commands to return values if they want to exit with some ohter code. + # Allow commands to return values if they want to exit with some other code. if return_val is None: sys.exit(0) elif isinstance(return_val, int): diff --git a/lib/spack/spack/__init__.py b/lib/spack/spack/__init__.py index 02eeed01fa..92cb417a85 100644 --- a/lib/spack/spack/__init__.py +++ b/lib/spack/spack/__init__.py @@ -24,6 +24,7 @@ ############################################################################## import os import tempfile +import getpass from llnl.util.filesystem import * # This lives in $prefix/lib/spack/spack/__file__ @@ -111,9 +112,17 @@ use_tmp_stage = True # that it can create. tmp_dirs = [] _default_tmp = tempfile.gettempdir() -if _default_tmp != os.getcwd(): - tmp_dirs.append(os.path.join(_default_tmp, 'spack-stage')) -tmp_dirs.append('/nfs/tmp2/%u/spack-stage') +_tmp_user = getpass.getuser() + +_tmp_candidates = (_default_tmp, '/nfs/tmp2', '/tmp', '/var/tmp') +for path in _tmp_candidates: + # don't add a second username if it's already unique by user. + if not _tmp_user in path: + tmp_dirs.append(join_path(path, '%u', 'spack-stage')) + +for path in _tmp_candidates: + if not path in tmp_dirs: + tmp_dirs.append(join_path(path, 'spack-stage')) # Whether spack should allow installation of unsafe versions of # software. "Unsafe" versions are ones it doesn't have a checksum diff --git a/lib/spack/spack/build_environment.py b/lib/spack/spack/build_environment.py index 20154a55b3..84c2f6015b 100644 --- a/lib/spack/spack/build_environment.py +++ b/lib/spack/spack/build_environment.py @@ -145,7 +145,7 @@ def set_build_environment_variables(pkg): # Install root prefix os.environ[SPACK_INSTALL] = spack.install_path - # Remove these vars from the environment during build becaus they + # Remove these vars from the environment during build because they # can affect how some packages find libraries. We want to make # sure that builds never pull in unintended external dependencies. pop_keys(os.environ, "LD_LIBRARY_PATH", "LD_RUN_PATH", "DYLD_LIBRARY_PATH") diff --git a/var/spack/packages/valgrind/package.py b/var/spack/packages/valgrind/package.py new file mode 100644 index 0000000000..0b030d73e9 --- /dev/null +++ b/var/spack/packages/valgrind/package.py @@ -0,0 +1,55 @@ +############################################################################## +# Copyright (c) 2013, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Written 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 General Public License (as published by +# the Free Software Foundation) version 2.1 dated 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 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 Valgrind(Package): + """ + Valgrind is an instrumentation framework for building dynamic analysis tools. There are Valgrind tools that can + automatically detect many memory management and threading bugs, and profile your programs in detail. You can also + use Valgrind to build new tools. + + Valgrind is Open Source / Free Software, and is freely available under the GNU General Public License, version 2. + """ + homepage = "http://valgrind.org/" + url = "http://valgrind.org/downloads/valgrind-3.11.0.tar.bz2" + + version('3.11.0', '4ea62074da73ae82e0162d6550d3f129') + version('3.10.1', '60ddae962bc79e7c95cfc4667245707f') + version('3.10.0', '7c311a72a20388aceced1aa5573ce970') + + variant('mpi', default=True, description='Activates MPI support for valgrind') + variant('boost', default=True, description='Activates boost support for valgrind') + + depends_on('mpi', when='+mpi') + depends_on('boost', when='+boost') + + def install(self, spec, prefix): + options = ['--prefix=%s' % prefix, + '--enable-ubsan'] + configure(*options) + make() + make("install") |