summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/spack/spack/__init__.py15
-rw-r--r--var/spack/packages/valgrind/package.py55
2 files changed, 67 insertions, 3 deletions
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/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")