summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbin/spack5
-rwxr-xr-xlib/spack/external/pyqver2.py3
-rw-r--r--lib/spack/spack/cmd/extensions.py8
-rw-r--r--lib/spack/spack/cmd/fetch.py13
-rw-r--r--lib/spack/spack/cmd/mirror.py12
-rw-r--r--lib/spack/spack/cmd/python.py10
-rw-r--r--lib/spack/spack/cmd/uninstall.py9
-rw-r--r--lib/spack/spack/database.py5
-rw-r--r--lib/spack/spack/directory_layout.py4
-rw-r--r--lib/spack/spack/hooks/extensions.py4
-rw-r--r--lib/spack/spack/mirror.py2
-rw-r--r--lib/spack/spack/modules.py4
-rw-r--r--lib/spack/spack/package.py28
-rw-r--r--lib/spack/spack/packages.py15
-rw-r--r--lib/spack/spack/spec.py32
-rw-r--r--lib/spack/spack/test/python_version.py4
-rw-r--r--lib/spack/spack/test/spec_dag.py8
-rwxr-xr-xshare/spack/setup-env.sh16
-rw-r--r--var/spack/packages/SAMRAI/package.py2
-rw-r--r--var/spack/packages/binutils/binutilskrell-2.24.patch52
-rw-r--r--var/spack/packages/binutils/package.py13
-rw-r--r--var/spack/packages/cbtf-argonavis/package.py66
-rw-r--r--var/spack/packages/cbtf-krell/package.py116
-rw-r--r--var/spack/packages/cbtf-lanl/package.py60
-rw-r--r--var/spack/packages/cbtf/package.py62
-rw-r--r--var/spack/packages/cfitsio/package.py18
-rw-r--r--var/spack/packages/cleverleaf/package.py2
-rw-r--r--var/spack/packages/cmake/package.py3
-rw-r--r--var/spack/packages/curl/package.py25
-rw-r--r--var/spack/packages/dyninst/package.py5
-rw-r--r--var/spack/packages/expat/package.py17
-rw-r--r--var/spack/packages/fftw/package.py96
-rw-r--r--var/spack/packages/fontconfig/package.py3
-rw-r--r--var/spack/packages/git/package.py42
-rw-r--r--var/spack/packages/global/package.py6
-rw-r--r--var/spack/packages/gnuplot/package.py61
-rw-r--r--var/spack/packages/gsl/package.py46
-rw-r--r--var/spack/packages/hdf5/package.py15
-rw-r--r--var/spack/packages/libcerf/package.py42
-rw-r--r--var/spack/packages/libgd/package.py53
-rw-r--r--var/spack/packages/libmonitor/libmonitorkrell-0000.patch18
-rw-r--r--var/spack/packages/libmonitor/libmonitorkrell-0001.patch395
-rw-r--r--var/spack/packages/libmonitor/libmonitorkrell-0002.patch106
-rw-r--r--var/spack/packages/libmonitor/package.py7
-rw-r--r--var/spack/packages/libxml2/package.py10
-rw-r--r--var/spack/packages/lmod/package.py26
-rw-r--r--var/spack/packages/mrnet/package.py8
-rw-r--r--var/spack/packages/ncurses/package.py2
-rw-r--r--var/spack/packages/ncurses/patch_gcc_5.txt12
-rw-r--r--var/spack/packages/openspeedshop/package.py216
-rw-r--r--var/spack/packages/papi/package.py2
-rw-r--r--var/spack/packages/paraview/package.py3
-rw-r--r--var/spack/packages/petsc/package.py2
-rw-r--r--var/spack/packages/py-cffi/package.py2
-rw-r--r--var/spack/packages/qt/package.py22
-rw-r--r--var/spack/packages/qt/qt3krell.patch68
-rw-r--r--var/spack/packages/tmuxinator/package.py5
-rw-r--r--var/spack/packages/wx/package.py2
-rw-r--r--var/spack/packages/xerces-c/package.py36
59 files changed, 1844 insertions, 85 deletions
diff --git a/bin/spack b/bin/spack
index ec6a80ff02..a0b260ccaf 100755
--- a/bin/spack
+++ b/bin/spack
@@ -89,6 +89,8 @@ spec expressions:
parser.add_argument('-d', '--debug', action='store_true',
help="Write out debug logs during compile")
+parser.add_argument('-D', '--pdb', action='store_true',
+ help="Run spack under the pdb debugger")
parser.add_argument('-k', '--insecure', action='store_true',
help="Do not check ssl certificates when downloading.")
parser.add_argument('-m', '--mock', action='store_true',
@@ -159,5 +161,8 @@ def main():
if args.profile:
import cProfile
cProfile.run('main()', sort='tottime')
+elif args.pdb:
+ import pdb
+ pdb.run('main()')
else:
main()
diff --git a/lib/spack/external/pyqver2.py b/lib/spack/external/pyqver2.py
index 4a16e2811e..4690239748 100755
--- a/lib/spack/external/pyqver2.py
+++ b/lib/spack/external/pyqver2.py
@@ -30,7 +30,8 @@ import sys
StandardModules = {
"__future__": (2, 1),
"abc": (2, 6),
- "argparse": (2, 7),
+# skip argparse now that it's in lib/spack/external
+# "argparse": (2, 7),
"ast": (2, 6),
"atexit": (2, 0),
"bz2": (2, 3),
diff --git a/lib/spack/spack/cmd/extensions.py b/lib/spack/spack/cmd/extensions.py
index c2cf288877..2ce6f406ca 100644
--- a/lib/spack/spack/cmd/extensions.py
+++ b/lib/spack/spack/cmd/extensions.py
@@ -54,7 +54,9 @@ def extensions(parser, args):
if not args.spec:
tty.die("extensions requires a package spec.")
+ #
# Checks
+ #
spec = spack.cmd.parse_specs(args.spec)
if len(spec) > 1:
tty.die("Can only list extensions for one package.")
@@ -70,7 +72,9 @@ def extensions(parser, args):
if not args.mode:
args.mode = 'short'
+ #
# List package names of extensions
+ #
extensions = spack.db.extensions_for(spec)
if not extensions:
tty.msg("%s has no extensions." % spec.cshort_spec)
@@ -79,7 +83,9 @@ def extensions(parser, args):
tty.msg("%d extensions:" % len(extensions))
colify(ext.name for ext in extensions)
+ #
# List specs of installed extensions.
+ #
installed = [s.spec for s in spack.installed_db.installed_extensions_for(spec)]
print
if not installed:
@@ -88,7 +94,9 @@ def extensions(parser, args):
tty.msg("%d installed:" % len(installed))
spack.cmd.find.display_specs(installed, mode=args.mode)
+ #
# List specs of activated extensions.
+ #
activated = spack.install_layout.extension_map(spec)
print
if not activated:
diff --git a/lib/spack/spack/cmd/fetch.py b/lib/spack/spack/cmd/fetch.py
index 6f9e7ab5e2..57d6f6b63b 100644
--- a/lib/spack/spack/cmd/fetch.py
+++ b/lib/spack/spack/cmd/fetch.py
@@ -34,9 +34,12 @@ def setup_parser(subparser):
'-n', '--no-checksum', action='store_true', dest='no_checksum',
help="Do not check packages against checksum")
subparser.add_argument(
+ '-m', '--missing', action='store_true', help="Also fetch all missing dependencies")
+ subparser.add_argument(
+ '-D', '--dependencies', action='store_true', help="Also fetch all dependencies")
+ subparser.add_argument(
'packages', nargs=argparse.REMAINDER, help="specs of packages to fetch")
-
def fetch(parser, args):
if not args.packages:
tty.die("fetch requires at least one package argument")
@@ -46,5 +49,13 @@ def fetch(parser, args):
specs = spack.cmd.parse_specs(args.packages, concretize=True)
for spec in specs:
+ if args.missing or args.dependencies:
+ to_fetch = set()
+ for s in spec.traverse():
+ package = spack.db.get(s)
+ if args.missing and package.installed:
+ continue
+ package.do_fetch()
+
package = spack.db.get(spec)
package.do_fetch()
diff --git a/lib/spack/spack/cmd/mirror.py b/lib/spack/spack/cmd/mirror.py
index 4a1ce00b75..89d51bbe04 100644
--- a/lib/spack/spack/cmd/mirror.py
+++ b/lib/spack/spack/cmd/mirror.py
@@ -55,6 +55,8 @@ def setup_parser(subparser):
create_parser.add_argument(
'-f', '--file', help="File with specs of packages to put in mirror.")
create_parser.add_argument(
+ '-D', '--dependencies', action='store_true', help="Also fetch all dependencies")
+ create_parser.add_argument(
'-o', '--one-version-per-spec', action='store_const', const=1, default=0,
help="Only fetch one 'preferred' version per spec, not all known versions.")
@@ -118,7 +120,7 @@ def mirror_create(args):
"""Create a directory to be used as a spack mirror, and fill it with
package archives."""
# try to parse specs from the command line first.
- specs = spack.cmd.parse_specs(args.specs)
+ specs = spack.cmd.parse_specs(args.specs, concretize=True)
# If there is a file, parse each line as a spec and add it to the list.
if args.file:
@@ -131,6 +133,14 @@ def mirror_create(args):
specs = [Spec(n) for n in spack.db.all_package_names()]
specs.sort(key=lambda s: s.format("$_$@").lower())
+ if args.dependencies:
+ new_specs = set()
+ for spec in specs:
+ spec.concretize()
+ for s in spec.traverse():
+ new_specs.add(s)
+ specs = list(new_specs)
+
# Default name for directory is spack-mirror-<DATESTAMP>
directory = args.directory
if not directory:
diff --git a/lib/spack/spack/cmd/python.py b/lib/spack/spack/cmd/python.py
index e26b8d3e79..5325e8fd9a 100644
--- a/lib/spack/spack/cmd/python.py
+++ b/lib/spack/spack/cmd/python.py
@@ -32,13 +32,16 @@ import spack
def setup_parser(subparser):
subparser.add_argument(
+ '-c', dest='python_command', help='Command to execute.')
+ subparser.add_argument(
'python_args', nargs=argparse.REMAINDER, help="File to run plus arguments.")
description = "Launch an interpreter as spack would launch a command"
def python(parser, args):
# Fake a main python shell by setting __name__ to __main__.
- console = code.InteractiveConsole({'__name__' : '__main__'})
+ console = code.InteractiveConsole({'__name__' : '__main__',
+ 'spack' : spack})
if "PYTHONSTARTUP" in os.environ:
startup_file = os.environ["PYTHONSTARTUP"]
@@ -47,7 +50,10 @@ def python(parser, args):
console.runsource(startup.read(), startup_file, 'exec')
python_args = args.python_args
- if python_args:
+ python_command = args.python_command
+ if python_command:
+ console.runsource(python_command)
+ elif python_args:
sys.argv = python_args
with open(python_args[0]) as file:
console.runsource(file.read(), python_args[0], 'exec')
diff --git a/lib/spack/spack/cmd/uninstall.py b/lib/spack/spack/cmd/uninstall.py
index 191d9d88e8..03873bb5f8 100644
--- a/lib/spack/spack/cmd/uninstall.py
+++ b/lib/spack/spack/cmd/uninstall.py
@@ -42,9 +42,9 @@ def setup_parser(subparser):
help="Remove regardless of whether other packages depend on this one.")
subparser.add_argument(
'-a', '--all', action='store_true', dest='all',
- help="USE CAREFULLY. Remove ALL installed packages that match each supplied spec. " +
- "i.e., if you say uninstall libelf, ALL versions of libelf are uninstalled. " +
- "This is both useful and dangerous, like rm -r.")
+ help="USE CAREFULLY. Remove ALL installed packages that match each " +
+ "supplied spec. i.e., if you say uninstall libelf, ALL versions of " +
+ "libelf are uninstalled. This is both useful and dangerous, like rm -r.")
subparser.add_argument(
'packages', nargs=argparse.REMAINDER, help="specs of packages to uninstall")
@@ -81,7 +81,8 @@ def uninstall(parser, args):
pkgs.append(s.package)
except spack.packages.UnknownPackageError, e:
- # The package.py file has gone away -- but still want to uninstall.
+ # The package.py file has gone away -- but still want to
+ # uninstall.
spack.Package(s).do_uninstall(force=True)
# Sort packages to be uninstalled by the number of installed dependents
diff --git a/lib/spack/spack/database.py b/lib/spack/spack/database.py
index d62a47547d..a6f1cc5077 100644
--- a/lib/spack/spack/database.py
+++ b/lib/spack/spack/database.py
@@ -54,6 +54,7 @@ import spack.spec
from spack.version import Version
from spack.spec import Spec
from spack.error import SpackError
+from spack.packages import UnknownPackageError
# DB goes in this directory underneath the root
_db_dirname = '.spack-db'
@@ -211,6 +212,10 @@ class Database(object):
child = self._read_spec_from_yaml(dep_hash, installs, hash_key)
spec._add_dependency(child)
+ # Specs from the database need to be marked concrete because
+ # they represent actual installations.
+ spec._mark_concrete()
+
return spec
diff --git a/lib/spack/spack/directory_layout.py b/lib/spack/spack/directory_layout.py
index 056606b429..d91fbe9f4e 100644
--- a/lib/spack/spack/directory_layout.py
+++ b/lib/spack/spack/directory_layout.py
@@ -212,8 +212,8 @@ class YamlDirectoryLayout(DirectoryLayout):
spec = Spec.from_yaml(f)
# Specs read from actual installations are always concrete
- spec._normal = True
- spec._concrete = True
+ spec._mark_concrete()
+
return spec
diff --git a/lib/spack/spack/hooks/extensions.py b/lib/spack/spack/hooks/extensions.py
index b4847d697f..627184cabd 100644
--- a/lib/spack/spack/hooks/extensions.py
+++ b/lib/spack/spack/hooks/extensions.py
@@ -27,9 +27,7 @@ import spack
def pre_uninstall(pkg):
- # Need to do this b/c uninstall does not automatically do it.
- # TODO: store full graph info in stored .spec file.
- pkg.spec.normalize()
+ assert(pkg.spec.concrete)
if pkg.is_extension:
if pkg.activated:
diff --git a/lib/spack/spack/mirror.py b/lib/spack/spack/mirror.py
index ee0bf6de11..6fbf82de14 100644
--- a/lib/spack/spack/mirror.py
+++ b/lib/spack/spack/mirror.py
@@ -146,7 +146,7 @@ def create(path, specs, **kwargs):
stage = None
try:
# create a subdirectory for the current package@version
- archive_path = os.path.abspath(join_path(path, mirror_archive_path(spec)))
+ archive_path = os.path.abspath(join_path(mirror_root, mirror_archive_path(spec)))
subdir = os.path.dirname(archive_path)
mkdirp(subdir)
diff --git a/lib/spack/spack/modules.py b/lib/spack/spack/modules.py
index 59ed9f893e..7036626e29 100644
--- a/lib/spack/spack/modules.py
+++ b/lib/spack/spack/modules.py
@@ -29,11 +29,11 @@ The various types of modules are installed by post-install hooks and
removed after an uninstall by post-uninstall hooks. This class
consolidates the logic for creating an abstract description of the
information that module systems need. Currently that includes a
-number directories to be appended to paths in the user's environment:
+number of directories to be appended to paths in the user's environment:
* /bin directories to be appended to PATH
* /lib* directories for LD_LIBRARY_PATH
- * /man* and /share/man* directories for LD_LIBRARY_PATH
+ * /man* and /share/man* directories for MANPATH
* the package prefix for CMAKE_PREFIX_PATH
This module also includes logic for coming up with unique names for
diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py
index daba5cd352..4d75726e06 100644
--- a/lib/spack/spack/package.py
+++ b/lib/spack/spack/package.py
@@ -487,9 +487,15 @@ class Package(object):
if name == dep.name:
return dep
- # Otherwise return the spec from the extends() directive
- spec, kwargs = self.extendees[name]
- return spec
+ # if the spec is concrete already, then it extends something
+ # that is an *optional* dependency, and the dep isn't there.
+ if self.spec._concrete:
+ return None
+ else:
+ # If it's not concrete, then return the spec from the
+ # extends() directive since that is all we know so far.
+ spec, kwargs = self.extendees[name]
+ return spec
@property
@@ -497,18 +503,28 @@ class Package(object):
"""Spec of the extendee of this package, or None if it is not an extension."""
if not self.extendees:
return None
+
+ # TODO: allow multiple extendees.
name = next(iter(self.extendees))
return self.extendees[name][1]
@property
def is_extension(self):
- return len(self.extendees) > 0
+ # if it is concrete, it's only an extension if it actually
+ # dependes on the extendee.
+ if self.spec._concrete:
+ return self.extendee_spec is not None
+ else:
+ # If not, then it's an extension if it *could* be an extension
+ return bool(self.extendees)
def extends(self, spec):
- return (spec.name in self.extendees and
- spec.satisfies(self.extendees[spec.name][0]))
+ if not spec.name in self.extendees:
+ return False
+ s = self.extendee_spec
+ return s and s.satisfies(spec)
@property
diff --git a/lib/spack/spack/packages.py b/lib/spack/spack/packages.py
index f6f4cbf025..080644fb90 100644
--- a/lib/spack/spack/packages.py
+++ b/lib/spack/spack/packages.py
@@ -67,27 +67,28 @@ class PackageDB(object):
if spec.virtual:
raise UnknownPackageError(spec.name)
+ key = hash(spec)
if kwargs.get('new', False):
- if spec in self.instances:
- del self.instances[spec]
+ if key in self.instances:
+ del self.instances[key]
- if not spec in self.instances:
+ if not key in self.instances:
package_class = self.get_class_for_package_name(spec.name)
try:
- copy = spec.copy()
- self.instances[copy] = package_class(copy)
+ copy = spec.copy() # defensive copy. Package owns its spec.
+ self.instances[key] = package_class(copy)
except Exception, e:
if spack.debug:
sys.excepthook(*sys.exc_info())
raise FailedConstructorError(spec.name, e)
- return self.instances[spec]
+ return self.instances[key]
@_autospec
def delete(self, spec):
"""Force a package to be recreated."""
- del self.instances[spec]
+ del self.instances[spec.dag_hash()]
def purge(self):
diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py
index f62182ce76..037ec97a5e 100644
--- a/lib/spack/spack/spec.py
+++ b/lib/spack/spack/spec.py
@@ -833,7 +833,18 @@ class Spec(object):
changed = any(changes)
force=True
- self._concrete = True
+ self._mark_concrete()
+
+
+ def _mark_concrete(self):
+ """Mark this spec and its dependencies as concrete.
+
+ Only for internal use -- client code should use "concretize"
+ unless there is a need to force a spec to be concrete.
+ """
+ for s in self.traverse():
+ s._normal = True
+ s._concrete = True
def concretized(self):
@@ -1481,8 +1492,11 @@ class Spec(object):
def _cmp_node(self):
"""Comparison key for just *this node* and not its deps."""
- return (self.name, self.versions, self.variants,
- self.architecture, self.compiler)
+ return (self.name,
+ self.versions,
+ self.variants,
+ self.architecture,
+ self.compiler)
def eq_node(self, other):
@@ -1496,11 +1510,15 @@ class Spec(object):
def _cmp_key(self):
- """Comparison key for this node and all dependencies *without*
- considering structure. This is the default, as
- normalization will restore structure.
+ """This returns a key for the spec *including* DAG structure.
+
+ The key is the concatenation of:
+ 1. A tuple describing this node in the DAG.
+ 2. The hash of each of this node's dependencies' cmp_keys.
"""
- return self._cmp_node() + (self.sorted_deps(),)
+ return self._cmp_node() + (
+ tuple(hash(self.dependencies[name])
+ for name in sorted(self.dependencies)),)
def colorized(self):
diff --git a/lib/spack/spack/test/python_version.py b/lib/spack/spack/test/python_version.py
index ba570b416f..2ea5febb11 100644
--- a/lib/spack/spack/test/python_version.py
+++ b/lib/spack/spack/test/python_version.py
@@ -63,10 +63,6 @@ class PythonVersionTest(unittest.TestCase):
all_issues = {}
for fn in files:
- if fn != '/Users/gamblin2/src/spack/var/spack/packages/vim/package.py':
- continue
- print fn
-
with open(fn) as pyfile:
versions = pyqver2.get_versions(pyfile.read())
for ver, reasons in versions.items():
diff --git a/lib/spack/spack/test/spec_dag.py b/lib/spack/spack/test/spec_dag.py
index 94438b6a0c..d3a4d77b32 100644
--- a/lib/spack/spack/test/spec_dag.py
+++ b/lib/spack/spack/test/spec_dag.py
@@ -340,16 +340,18 @@ class SpecDagTest(MockPackagesTest):
self.assertEqual(spec, expected_flat)
self.assertTrue(spec.eq_dag(expected_flat))
- self.assertEqual(spec, expected_normalized)
+ # Normalized has different DAG structure, so NOT equal.
+ self.assertNotEqual(spec, expected_normalized)
self.assertFalse(spec.eq_dag(expected_normalized))
- self.assertEqual(spec, non_unique_nodes)
+ # Again, different DAG structure so not equal.
+ self.assertNotEqual(spec, non_unique_nodes)
self.assertFalse(spec.eq_dag(non_unique_nodes))
spec.normalize()
# After normalizing, spec_dag_equal should match the normalized spec.
- self.assertEqual(spec, expected_flat)
+ self.assertNotEqual(spec, expected_flat)
self.assertFalse(spec.eq_dag(expected_flat))
self.assertEqual(spec, expected_normalized)
diff --git a/share/spack/setup-env.sh b/share/spack/setup-env.sh
index c96a94195d..47202f6087 100755
--- a/share/spack/setup-env.sh
+++ b/share/spack/setup-env.sh
@@ -56,6 +56,12 @@
# spack dotfiles.
########################################################################
function spack {
+ # save raw arguments into an array before butchering them
+ args=()
+ for a in "$@"; do
+ # yup, this is awful, blame bash2 compat
+ args=("${args[@]}" "$a")
+ done
# accumulate initial flags for main spack command
_sp_flags=""
while [[ "$1" =~ ^- ]]; do
@@ -116,7 +122,7 @@ function spack {
esac
;;
*)
- command spack $_sp_flags $_sp_subcommand $_sp_spec
+ command spack "${args[@]}"
;;
esac
}
@@ -167,8 +173,8 @@ fi
#
_sp_share_dir=$(cd "$(dirname $_sp_source_file)" && pwd)
_sp_prefix=$(cd "$(dirname $(dirname $_sp_share_dir))" && pwd)
+_spack_pathadd PATH "${_sp_prefix%/}/bin"
-# TODO: fix SYS_TYPE to something non-LLNL-specific
-_spack_pathadd DK_NODE "$_sp_share_dir/dotkit/$SYS_TYPE"
-_spack_pathadd MODULEPATH "$_sp_share_dir/modules/$SYS_TYPE"
-_spack_pathadd PATH "$_sp_prefix/bin"
+_sp_sys_type=$(spack-python -c 'print(spack.architecture.sys_type())')
+_spack_pathadd DK_NODE "${_sp_share_dir%/}/dotkit/$_sp_sys_type"
+_spack_pathadd MODULEPATH "${_sp_share_dir%/}/modules/$_sp_sys_type"
diff --git a/var/spack/packages/SAMRAI/package.py b/var/spack/packages/SAMRAI/package.py
index a17aea9c99..2c3b9180af 100644
--- a/var/spack/packages/SAMRAI/package.py
+++ b/var/spack/packages/SAMRAI/package.py
@@ -25,7 +25,7 @@ class Samrai(Package):
depends_on("mpi")
depends_on("zlib")
- depends_on("hdf5")
+ depends_on("hdf5+mpi")
depends_on("boost")
# don't build tools with gcc
diff --git a/var/spack/packages/binutils/binutilskrell-2.24.patch b/var/spack/packages/binutils/binutilskrell-2.24.patch
new file mode 100644
index 0000000000..f48291a6c9
--- /dev/null
+++ b/var/spack/packages/binutils/binutilskrell-2.24.patch
@@ -0,0 +1,52 @@
+--- binutils-2.24/libiberty/Makefile.in 2013-11-04 10:33:40.000000000 -0500
++++ binutils-2.24-fixes/libiberty/Makefile.in 2014-10-17 16:22:31.413655000 -0400
+@@ -66,6 +66,7 @@
+ MAKEOVERRIDES =
+
+ TARGETLIB = ./libiberty.a
++TARGETLIBPIC = ./libiberty_pic.a
+ TESTLIB = ./testlib.a
+
+ LIBOBJS = @LIBOBJS@
+@@ -355,27 +356,27 @@
+ # since it will be passed the multilib flags.
+ MULTIOSDIR = `$(CC) $(CFLAGS) -print-multi-os-directory`
+ install_to_libdir: all
+- if test -n "${target_header_dir}"; then \
+- ${mkinstalldirs} $(DESTDIR)$(libdir)/$(MULTIOSDIR); \
+- $(INSTALL_DATA) $(TARGETLIB) $(DESTDIR)$(libdir)/$(MULTIOSDIR)/$(TARGETLIB)n; \
+- ( cd $(DESTDIR)$(libdir)/$(MULTIOSDIR) ; chmod 644 $(TARGETLIB)n ;$(RANLIB) $(TARGETLIB)n ); \
+- mv -f $(DESTDIR)$(libdir)/$(MULTIOSDIR)/$(TARGETLIB)n $(DESTDIR)$(libdir)/$(MULTIOSDIR)/$(TARGETLIB); \
+- case "${target_header_dir}" in \
+- /*) thd=${target_header_dir};; \
+- *) thd=${includedir}/${target_header_dir};; \
+- esac; \
+- ${mkinstalldirs} $(DESTDIR)$${thd}; \
+- for h in ${INSTALLED_HEADERS}; do \
+- ${INSTALL_DATA} $$h $(DESTDIR)$${thd}; \
+- done; \
+- fi
++ ${mkinstalldirs} $(DESTDIR)$(libdir)/$(MULTIOSDIR); \
++ $(INSTALL_DATA) $(TARGETLIB) $(DESTDIR)$(libdir)/$(MULTIOSDIR)/$(TARGETLIB)n; \
++ $(INSTALL_DATA) pic/$(TARGETLIB) $(DESTDIR)$(libdir)/$(MULTIOSDIR)/$(TARGETLIBPIC)n; \
++ ( cd $(DESTDIR)$(libdir)/$(MULTIOSDIR) ; chmod 644 $(TARGETLIB)n ;$(RANLIB) $(TARGETLIB)n ); \
++ ( cd $(DESTDIR)$(libdir)/$(MULTIOSDIR) ; chmod 644 $(TARGETLIBPIC)n ;$(RANLIB) $(TARGETLIBPIC)n ); \
++ mv -f $(DESTDIR)$(libdir)/$(MULTIOSDIR)/$(TARGETLIB)n $(DESTDIR)$(libdir)/$(MULTIOSDIR)/$(TARGETLIB); \
++ mv -f $(DESTDIR)$(libdir)/$(MULTIOSDIR)/$(TARGETLIBPIC)n $(DESTDIR)$(libdir)/$(MULTIOSDIR)/$(TARGETLIBPIC); \
++ ${mkinstalldirs} $(DESTDIR)$${includedir}; \
++ for h in ${INSTALLED_HEADERS}; do \
++ ${INSTALL_DATA} $$h $(DESTDIR)$${includedir}; \
++ done;
+ @$(MULTIDO) $(FLAGS_TO_PASS) multi-do DO=install
+
+ install_to_tooldir: all
+ ${mkinstalldirs} $(DESTDIR)$(tooldir)/lib/$(MULTIOSDIR)
+ $(INSTALL_DATA) $(TARGETLIB) $(DESTDIR)$(tooldir)/lib/$(MULTIOSDIR)/$(TARGETLIB)n
++ $(INSTALL_DATA) pic/$(TARGETLIB) $(DESTDIR)$(tooldir)/lib/$(MULTIOSDIR)/$(TARGETLIBPIC)n
+ ( cd $(DESTDIR)$(tooldir)/lib/$(MULTIOSDIR) ; chmod 644 $(TARGETLIB)n; $(RANLIB) $(TARGETLIB)n )
++ ( cd $(DESTDIR)$(tooldir)/lib/$(MULTIOSDIR) ; chmod 644 $(TARGETLIBPIC)n; $(RANLIB) $(TARGETLIBPIC)n )
+ mv -f $(DESTDIR)$(tooldir)/lib/$(MULTIOSDIR)/$(TARGETLIB)n $(DESTDIR)$(tooldir)/lib/$(MULTIOSDIR)/$(TARGETLIB)
++ mv -f $(DESTDIR)$(tooldir)/lib/$(MULTIOSDIR)/$(TARGETLIBPIC)n $(DESTDIR)$(tooldir)/lib/$(MULTIOSDIR)/$(TARGETLIBPIC)
+ @$(MULTIDO) $(FLAGS_TO_PASS) multi-do DO=install
+
+ # required-list was used when building a shared bfd/opcodes/libiberty
diff --git a/var/spack/packages/binutils/package.py b/var/spack/packages/binutils/package.py
index be5a9b714b..123f4598f6 100644
--- a/var/spack/packages/binutils/package.py
+++ b/var/spack/packages/binutils/package.py
@@ -3,12 +3,15 @@ from spack import *
class Binutils(Package):
"""GNU binutils, which contain the linker, assembler, objdump and others"""
homepage = "http://www.gnu.org/software/binutils/"
- url = "ftp://ftp.gnu.org/gnu/binutils/binutils-2.25.tar.bz2"
- version('2.25', 'd9f3303f802a5b6b0bb73a335ab89d66')
- version('2.24', 'e0f71a7b2ddab0f8612336ac81d9636b')
- version('2.23.2', '4f8fa651e35ef262edc01d60fb45702e')
- version('2.20.1', '2b9dc8f2b7dbd5ec5992c6e29de0b764')
+ version('2.25', 'd9f3303f802a5b6b0bb73a335ab89d66',url="ftp://ftp.gnu.org/gnu/binutils/binutils-2.25.tar.bz2")
+ version('2.24', 'e0f71a7b2ddab0f8612336ac81d9636b',url="ftp://ftp.gnu.org/gnu/binutils/binutils-2.24.tar.bz2")
+ version('2.23.2', '4f8fa651e35ef262edc01d60fb45702e',url="ftp://ftp.gnu.org/gnu/binutils/binutils-2.23.2.tar.bz2")
+ version('2.20.1', '2b9dc8f2b7dbd5ec5992c6e29de0b764',url="ftp://ftp.gnu.org/gnu/binutils/binutils-2.20.1.tar.bz2")
+
+ # Add a patch that creates binutils libiberty_pic.a which is preferred by OpenSpeedShop and cbtf-krell
+ variant('krellpatch', default=False, description="build with openspeedshop based patch.")
+ patch('binutilskrell-2.24.patch', when='@2.24+krellpatch')
variant('libiberty', default=False, description='Also install libiberty.')
diff --git a/var/spack/packages/cbtf-argonavis/package.py b/var/spack/packages/cbtf-argonavis/package.py
new file mode 100644
index 0000000000..7b07933911
--- /dev/null
+++ b/var/spack/packages/cbtf-argonavis/package.py
@@ -0,0 +1,66 @@
+################################################################################
+# Copyright (c) 2015 Krell Institute. All Rights Reserved.
+#
+# 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; either version 2 of the License, or (at your option) any later
+# version.
+#
+# 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 GNU General Public License for more
+# details.
+#
+# You should have received a copy of the GNU 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 CbtfArgonavis(Package):
+ """CBTF Argo Navis project contains the CUDA collector and supporting
+ libraries that was done as a result of a DOE SBIR grant."""
+ homepage = "http://sourceforge.net/p/cbtf/wiki/Home/"
+
+ # Mirror access template example
+ #url = "file:/g/g24/jeg/cbtf-argonavis-1.5.tar.gz"
+ #version('1.5', '1f7f6512f55409ed2135cfceabe26b82')
+
+ version('1.6', branch='master', git='http://git.code.sf.net/p/cbtf-argonavis/cbtf-argonavis')
+
+ depends_on("cmake@3.0.2:")
+ depends_on("papi")
+ depends_on("cbtf")
+ depends_on("cbtf-krell")
+ depends_on("cuda")
+
+ parallel = False
+
+ def install(self, spec, prefix):
+
+ # Look for package installation information in the cbtf and cbtf-krell prefixes
+ cmake_prefix_path = join_path(spec['cbtf'].prefix) + ':' + join_path(spec['cbtf-krell'].prefix)
+
+ # FIXME, hard coded for testing purposes, we will alter when the external package feature is available
+ cuda_prefix_path = "/usr/local/cudatoolkit-6.0"
+ cupti_prefix_path = "/usr/local/cudatoolkit-6.0/extras/CUPTI"
+
+
+ with working_dir('CUDA'):
+ with working_dir('build', create=True):
+ cmake('..',
+ '-DCMAKE_INSTALL_PREFIX=%s' % prefix,
+ '-DCMAKE_LIBRARY_PATH=%s' % prefix.lib64,
+ '-DCMAKE_PREFIX_PATH=%s' % cmake_prefix_path,
+ '-DCUDA_INSTALL_PATH=%s' % cuda_prefix_path,
+ '-DCUDA_ROOT=%s' % cuda_prefix_path,
+ '-DCUPTI_ROOT=%s' % cupti_prefix_path,
+ '-DCUDA_DIR=%s' % cuda_prefix_path,
+ '-DPAPI_ROOT=%s' % spec['papi'].prefix,
+ '-DCBTF_PREFIX=%s' % spec['cbtf'].prefix,
+ *std_cmake_args)
+ make("clean")
+ make()
+ make("install")
+
diff --git a/var/spack/packages/cbtf-krell/package.py b/var/spack/packages/cbtf-krell/package.py
new file mode 100644
index 0000000000..9458ac113c
--- /dev/null
+++ b/var/spack/packages/cbtf-krell/package.py
@@ -0,0 +1,116 @@
+################################################################################
+# Copyright (c) 2015 Krell Institute. All Rights Reserved.
+#
+# 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; either version 2 of the License, or (at your option) any later
+# version.
+#
+# 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 GNU General Public License for more
+# details.
+#
+# You should have received a copy of the GNU 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 CbtfKrell(Package):
+ """CBTF Krell project contains the Krell Institute contributions to the CBTF project.
+ These contributions include many performance data collectors and support
+ libraries as well as some example tools that drive the data collection at
+ HPC levels of scale."""
+ homepage = "http://sourceforge.net/p/cbtf/wiki/Home/"
+
+ # optional mirror access template
+ #url = "file:/g/g24/jeg/cbtf-krell-1.5.tar.gz"
+ #version('1.5', 'b13f6df6a93c44149d977773dd776d2f')
+
+ version('1.6', branch='master', git='http://git.code.sf.net/p/cbtf-krell/cbtf-krell')
+
+
+ # Dependencies for cbtf-krell
+
+ # For binutils service
+ depends_on("binutils@2.24+krellpatch")
+
+ # collectionTool
+ depends_on("boost@1.50.0")
+ depends_on("dyninst@8.2.1")
+ depends_on("mrnet@4.1.0:+lwthreads")
+ depends_on("xerces-c@3.1.1:")
+ depends_on("cbtf")
+
+ # for services and collectors
+ depends_on("libmonitor+krellpatch")
+ depends_on("libunwind")
+ depends_on("papi")
+
+ # MPI Installations
+ # These have not worked either for build or execution, commenting out for now
+ #depends_on("openmpi")
+ #depends_on("mvapich2@2.0")
+ #depends_on("mpich")
+
+ parallel = False
+
+ def install(self, spec, prefix):
+
+ # Add in paths for finding package config files that tell us where to find these packages
+ cmake_prefix_path = join_path(spec['cbtf'].prefix) + ':' + join_path(spec['dyninst'].prefix)
+
+ # FIXME - hard code path until external package support is available
+ # Need to change this path and/or add additional paths for MPI experiment support on different platforms
+ #openmpi_prefix_path = "/opt/openmpi-1.8.2"
+ #mvapich_prefix_path = "/usr/local/tools/mvapich-gnu"
+
+ # Other possibilities, they will need a -DMVAPICH_DIR=, etc clause in the cmake command to be recognized
+ # mvapich_prefix_path = "<mvapich install path>"
+ # mvapich2_prefix_path = "<mvapich2 install path>"
+ # mpich2_prefix_path = "<mpich2 install path>"
+ # mpich_prefix_path = "<mpich install path>"
+ # mpt_prefix_path = "<mpt install path>"
+
+ # Add in paths for cuda if requested via the cuda variant
+ # FIXME - hard code path until external package support is available
+ #if '+cuda' in spec:
+ # cuda_prefix_path = "/usr/local/cuda-6.0"
+ # cupti_prefix_path = "/usr/local/cuda-6.0/extras/CUPTI"
+ #else:
+ # cuda_prefix_path = ""
+ # cupti_prefix_path = ""
+
+ #'-DMVAPICH2_DIR=%s' % spec['mvapich2'].prefix,
+ #'-DOPENMPI_DIR=%s' % spec['openmpi'].prefix,
+ #'-DMPICH_DIR=%s' % spec['mpich'].prefix,
+ #'-DCMAKE_LIBRARY_PATH=%s' % prefix.lib64,
+ #'-DOPENMPI_DIR=%s' % openmpi_prefix_path,
+ #'-DMVAPICH_DIR=%s' % mvapich_prefix_path,
+ #'-DLIB_SUFFIX=64',
+ #'-DCUDA_DIR=%s' % cuda_prefix_path,
+ #'-DCUPTI_DIR=%s' % cupti_prefix_path,
+
+ # Build cbtf-krell with cmake
+ with working_dir('build_cbtf_krell', create=True):
+ cmake('..',
+ '-DCMAKE_BUILD_TYPE=Debug',
+ '-DCMAKE_INSTALL_PREFIX=%s' % prefix,
+ '-DCBTF_DIR=%s' % spec['cbtf'].prefix,
+ '-DBINUTILS_DIR=%s' % spec['binutils'].prefix,
+ '-DLIBMONITOR_DIR=%s' % spec['libmonitor'].prefix,
+ '-DLIBUNWIND_DIR=%s' % spec['libunwind'].prefix,
+ '-DPAPI_DIR=%s' % spec['papi'].prefix,
+ '-DBOOST_DIR=%s' % spec['boost'].prefix,
+ '-DMRNET_DIR=%s' % spec['mrnet'].prefix,
+ '-DDYNINST_DIR=%s' % spec['dyninst'].prefix,
+ '-DXERCESC_DIR=%s' % spec['xerces-c'].prefix,
+ '-DCMAKE_PREFIX_PATH=%s' % cmake_prefix_path,
+ *std_cmake_args)
+
+ make("clean")
+ make()
+ make("install")
+
diff --git a/var/spack/packages/cbtf-lanl/package.py b/var/spack/packages/cbtf-lanl/package.py
new file mode 100644
index 0000000000..2da9e8a1f7
--- /dev/null
+++ b/var/spack/packages/cbtf-lanl/package.py
@@ -0,0 +1,60 @@
+################################################################################
+# Copyright (c) 2015 Krell Institute. All Rights Reserved.
+#
+# 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; either version 2 of the License, or (at your option) any later
+# version.
+#
+# 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 GNU General Public License for more
+# details.
+#
+# You should have received a copy of the GNU 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 CbtfLanl(Package):
+ """CBTF LANL project contains a memory tool and data center type system command monitoring tool."""
+ homepage = "http://sourceforge.net/p/cbtf/wiki/Home/"
+
+
+ # Mirror access template example
+ #url = "file:/g/g24/jeg/cbtf-lanl-1.5.tar.gz"
+ #version('1.5', 'c3f78f967b0a42c6734ce4be0e602426')
+
+ version('1.6', branch='master', git='http://git.code.sf.net/p/cbtf-lanl/cbtf-lanl')
+
+
+ # Dependencies for cbtf-krell
+ depends_on("boost@1.50")
+ depends_on("mrnet@4.1.0:+lwthreads")
+ depends_on("xerces-c@3.1.1:")
+ depends_on("cbtf")
+ depends_on("cbtf-krell")
+
+ parallel = False
+
+ def install(self, spec, prefix):
+
+ # Add in paths for finding package config files that tell us where to find these packages
+ cmake_prefix_path = join_path(spec['cbtf'].prefix) + ':' + join_path(spec['cbtf-krell'].prefix)
+
+ with working_dir('build', create=True):
+ cmake('..',
+ '-DCBTF_DIR=%s' % spec['cbtf'].prefix,
+ '-DCBTF_KRELL_DIR=%s' % spec['cbtf-krell'].prefix,
+ '-DMRNET_DIR=%s' % spec['mrnet'].prefix,
+ '-DXERCESC_DIR=%s' % spec['xerces-c'].prefix,
+ '-DCMAKE_PREFIX_PATH=%s' % cmake_prefix_path,
+ '-DCMAKE_MODULE_PATH=%s' % join_path(prefix.share,'KrellInstitute','cmake'),
+ *std_cmake_args)
+
+ make("clean")
+ make()
+ make("install")
+
diff --git a/var/spack/packages/cbtf/package.py b/var/spack/packages/cbtf/package.py
new file mode 100644
index 0000000000..52e6a07020
--- /dev/null
+++ b/var/spack/packages/cbtf/package.py
@@ -0,0 +1,62 @@
+################################################################################
+# Copyright (c) 2015 Krell Institute. All Rights Reserved.
+#
+# 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; either version 2 of the License, or (at your option) any later
+# version.
+#
+# 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 GNU General Public License for more
+# details.
+#
+# You should have received a copy of the GNU 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 Cbtf(Package):
+ """CBTF project contains the base code for CBTF that supports creating components,
+ component networks and the support to connect these components and component
+ networks into sequential and distributed network tools."""
+ homepage = "http://sourceforge.net/p/cbtf/wiki/Home"
+
+ # Mirror access template example
+ #url = "file:/g/g24/jeg/cbtf-1.5.tar.gz"
+ #version('1.6', '1ca88a8834759c4c74452cb97fe7b70a')
+
+ # Use when the git repository is available
+ version('1.6', branch='master', git='http://git.code.sf.net/p/cbtf/cbtf')
+
+ depends_on("cmake")
+ #depends_on("boost@1.42.0:")
+ depends_on("boost@1.50.0")
+ depends_on("mrnet@4.1.0+lwthreads")
+ depends_on("xerces-c@3.1.1:")
+ depends_on("libxml2")
+
+ parallel = False
+
+ def install(self, spec, prefix):
+ with working_dir('build', create=True):
+
+ # Boost_NO_SYSTEM_PATHS Set to TRUE to suppress searching
+ # in system paths (or other locations outside of BOOST_ROOT
+ # or BOOST_INCLUDEDIR). Useful when specifying BOOST_ROOT.
+ # Defaults to OFF.
+
+ cmake('..',
+ '--debug-output',
+ '-DBoost_NO_SYSTEM_PATHS=TRUE',
+ '-DXERCESC_DIR=%s' % spec['xerces-c'].prefix,
+ '-DBOOST_ROOT=%s' % spec['boost'].prefix,
+ '-DMRNET_DIR=%s' % spec['mrnet'].prefix,
+ '-DCMAKE_MODULE_PATH=%s' % join_path(prefix.share,'KrellInstitute','cmake'),
+ *std_cmake_args)
+
+ make("clean")
+ make()
+ make("install")
diff --git a/var/spack/packages/cfitsio/package.py b/var/spack/packages/cfitsio/package.py
new file mode 100644
index 0000000000..ff450cb5f3
--- /dev/null
+++ b/var/spack/packages/cfitsio/package.py
@@ -0,0 +1,18 @@
+from spack import *
+
+class Cfitsio(Package):
+ """
+ CFITSIO is a library of C and Fortran subroutines for reading and writing
+ data files in FITS (Flexible Image Transport System) data format.
+ """
+ homepage = 'http://heasarc.gsfc.nasa.gov/fitsio/'
+ version('3.370', 'abebd2d02ba5b0503c633581e3bfa116')
+
+ def url_for_version(self, v):
+ url = 'ftp://heasarc.gsfc.nasa.gov/software/fitsio/c/cfitsio{0}.tar.gz'
+ return url.format(str(v).replace('.', ''))
+
+ def install(self, spec, prefix):
+ configure('--prefix=' + prefix)
+ make()
+ make('install')
diff --git a/var/spack/packages/cleverleaf/package.py b/var/spack/packages/cleverleaf/package.py
index 4e7e6a855a..fb400b25c3 100644
--- a/var/spack/packages/cleverleaf/package.py
+++ b/var/spack/packages/cleverleaf/package.py
@@ -14,7 +14,7 @@ class Cleverleaf(Package):
version('develop', git='https://github.com/UK-MAC/CleverLeaf_ref.git', branch='develop')
depends_on("SAMRAI@3.8.0:")
- depends_on("hdf5")
+ depends_on("hdf5+mpi")
depends_on("boost")
def install(self, spec, prefix):
diff --git a/var/spack/packages/cmake/package.py b/var/spack/packages/cmake/package.py
index c24a80748c..cb54c92d69 100644
--- a/var/spack/packages/cmake/package.py
+++ b/var/spack/packages/cmake/package.py
@@ -43,6 +43,7 @@ class Cmake(Package):
def install(self, spec, prefix):
configure('--prefix=' + prefix,
- '--parallel=' + str(make_jobs))
+ '--parallel=' + str(make_jobs),
+ '--', '-DCMAKE_USE_OPENSSL=ON')
make()
make('install')
diff --git a/var/spack/packages/curl/package.py b/var/spack/packages/curl/package.py
new file mode 100644
index 0000000000..9e684445c7
--- /dev/null
+++ b/var/spack/packages/curl/package.py
@@ -0,0 +1,25 @@
+from spack import *
+
+class Curl(Package):
+ """cURL is an open source command line tool and library for
+ transferring data with URL syntax"""
+
+ homepage = "http://curl.haxx.se"
+ url = "http://curl.haxx.se/download/curl-7.46.0.tar.bz2"
+
+ version('7.46.0', '9979f989a2a9930d10f1b3deeabc2148')
+ version('7.45.0', '62c1a352b28558f25ba6209214beadc8')
+ version('7.44.0', '6b952ca00e5473b16a11f05f06aa8dae')
+ version('7.43.0', '11bddbb452a8b766b932f859aaeeed39')
+ version('7.42.1', '296945012ce647b94083ed427c1877a8')
+
+ depends_on("openssl")
+ depends_on("zlib")
+
+ def install(self, spec, prefix):
+ configure('--prefix=%s' % prefix,
+ '--with-zlib=%s' % spec['zlib'].prefix,
+ '--with-ssl=%s' % spec['openssl'].prefix)
+
+ make()
+ make("install")
diff --git a/var/spack/packages/dyninst/package.py b/var/spack/packages/dyninst/package.py
index 7f8598e0e5..0111dcbe08 100644
--- a/var/spack/packages/dyninst/package.py
+++ b/var/spack/packages/dyninst/package.py
@@ -49,14 +49,15 @@ class Dyninst(Package):
with working_dir('spack-build', create=True):
cmake('..',
- '-DBoost_INCLUDE_DIR=%s' % spec['boost'].prefix.include,
- '-DBoost_LIBRARY_DIR=%s' % spec['boost'].prefix.lib,
+ '-DBoost_INCLUDE_DIR=%s' % spec['boost'].prefix.include,
+ '-DBoost_LIBRARY_DIR=%s' % spec['boost'].prefix.lib,
'-DBoost_NO_SYSTEM_PATHS=TRUE',
'-DLIBELF_INCLUDE_DIR=%s' % join_path(libelf.include, 'libelf'),
'-DLIBELF_LIBRARIES=%s' % join_path(libelf.lib, 'libelf.so'),
'-DLIBDWARF_INCLUDE_DIR=%s' % libdwarf.include,
'-DLIBDWARF_LIBRARIES=%s' % join_path(libdwarf.lib, 'libdwarf.so'),
*std_cmake_args)
+
make()
make("install")
diff --git a/var/spack/packages/expat/package.py b/var/spack/packages/expat/package.py
new file mode 100644
index 0000000000..082da5bf0b
--- /dev/null
+++ b/var/spack/packages/expat/package.py
@@ -0,0 +1,17 @@
+from spack import *
+
+class Expat(Package):
+ """<eXpat/> is an XML parser library written in C"""
+ homepage = "http://expat.sourceforge.net/"
+ url = "http://downloads.sourceforge.net/project/expat/expat/2.1.0/expat-2.1.0.tar.gz"
+
+ version('2.1.0', 'dd7dab7a5fea97d2a6a43f511449b7cd')
+
+
+ def install(self, spec, prefix):
+
+ with working_dir('spack-build', create=True):
+ cmake('..', *std_cmake_args)
+ make()
+ make('install')
+
diff --git a/var/spack/packages/fftw/package.py b/var/spack/packages/fftw/package.py
new file mode 100644
index 0000000000..5f71762c4f
--- /dev/null
+++ b/var/spack/packages/fftw/package.py
@@ -0,0 +1,96 @@
+##############################################################################
+# 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 Fftw(Package):
+ """
+ FFTW is a C subroutine library for computing the discrete Fourier transform (DFT) in one or more dimensions, of
+ arbitrary input size, and of both real and complex data (as well as of even/odd data, i.e. the discrete cosine/sine
+ transforms or DCT/DST). We believe that FFTW, which is free software, should become the FFT library of choice for
+ most applications.
+ """
+ homepage = "http://www.fftw.org"
+ url = "http://www.fftw.org/fftw-3.3.4.tar.gz"
+
+ version('3.3.4', '2edab8c06b24feeb3b82bbb3ebf3e7b3')
+
+ ##########
+ # Floating point precision
+ FLOAT = 'float'
+ LONG_DOUBLE = 'long_double'
+ QUAD_PRECISION = 'quad'
+ PRECISION_OPTIONS = {
+ FLOAT: '--enable-float',
+ LONG_DOUBLE: '--enable--long-double',
+ QUAD_PRECISION: '--enable-quad-precision'
+ }
+ variant(FLOAT, default=False, description='Produces a single precision version of the library')
+ variant(LONG_DOUBLE, default=False, description='Produces a long double precision version of the library')
+ variant(QUAD_PRECISION, default=False, description='Produces a quad precision version of the library (works only with GCC and libquadmath)')
+ ##########
+
+ variant('mpi', default=False, description='Activate MPI support')
+
+ depends_on('mpi', when='+mpi')
+
+ @staticmethod
+ def enabled(x):
+ """
+ Given a variant name returns the string that means the variant is enabled
+
+ :param x: variant name
+ """
+ # FIXME : duplicated from MVAPICH2
+ return '+' + x
+
+ def check_fortran_availability(self, options):
+ if not self.compiler.f77 or not self.compiler.fc:
+ options.append("--disable-fortran")
+
+ def set_floating_point_precision(self, spec, options):
+ l = [option for variant, option in Fftw.PRECISION_OPTIONS.iteritems() if self.enabled(variant) in spec]
+ if len(l) > 1:
+ raise RuntimeError('At most one floating point precision variant may activated per build.')
+ options.extend(l)
+
+ def install(self, spec, prefix):
+
+ options = ['--prefix=%s' % prefix,
+ '--enable-shared',
+ '--enable-threads',
+ '--enable-openmp']
+ self.check_fortran_availability(options)
+ self.set_floating_point_precision(spec, options)
+
+ if '+mpi' in spec:
+ options.append('--enable-mpi')
+
+ configure(*options)
+ make()
+ make("install")
+
diff --git a/var/spack/packages/fontconfig/package.py b/var/spack/packages/fontconfig/package.py
index 89b13604e8..517c9d1813 100644
--- a/var/spack/packages/fontconfig/package.py
+++ b/var/spack/packages/fontconfig/package.py
@@ -8,9 +8,10 @@ class Fontconfig(Package):
version('2.11.1' , 'e75e303b4f7756c2b16203a57ac87eba')
depends_on('freetype')
+ depends_on('libxml2')
def install(self, spec, prefix):
- configure("--prefix=%s" % prefix)
+ configure("--prefix=%s" % prefix, "--enable-libxml2")
make()
make("install")
diff --git a/var/spack/packages/git/package.py b/var/spack/packages/git/package.py
index 0f1a3ba05b..28c7aa8161 100644
--- a/var/spack/packages/git/package.py
+++ b/var/spack/packages/git/package.py
@@ -7,10 +7,25 @@ class Git(Package):
homepage = "http://git-scm.com"
url = "https://www.kernel.org/pub/software/scm/git/git-2.2.1.tar.xz"
+ version('2.6.3', '5a6375349c3f13c8dbbabfc327bae429')
+ version('2.6.2', '32ae5ad29763fc927bfcaeab55385fd9')
+ version('2.6.1', 'dd4a3a7fe96598c553edd39d40c9c290')
+ version('2.6.0', '6b7d43d615fb3f0dfecf4d131e23f438')
+ version('2.5.4', 'ec118fcd1cf984edc17eb6588b78e81b')
version('2.2.1', '43e01f9d96ba8c11611e0eef0d9f9f28')
- # Use system openssl.
- # depends_on("openssl")
+
+ # Git compiles with curl support by default on but if your system
+ # does not have it you will not be able to clone https repos
+ variant("curl", default=False, description="Add the internal support of curl for https clone")
+
+ # Git compiles with expat support by default on but if your system
+ # does not have it you will not be able to push https repos
+ variant("expat", default=False, description="Add the internal support of expat for https push")
+
+ depends_on("openssl")
+ depends_on("curl", when="+curl")
+ depends_on("expat", when="+expat")
# Use system perl for now.
# depends_on("perl")
@@ -19,9 +34,26 @@ class Git(Package):
depends_on("zlib")
def install(self, spec, prefix):
- configure("--prefix=%s" % prefix,
- "--without-pcre",
- "--without-python")
+ configure_args = [
+ "--prefix=%s" % prefix,
+ "--without-pcre",
+ "--with-openssl=%s" % spec['openssl'].prefix,
+ "--with-zlib=%s" % spec['zlib'].prefix
+ ]
+ if '+curl' in spec:
+ configure_args.append("--with-curl=%s" % spec['curl'].prefix)
+
+ if '+expat' in spec:
+ configure_args.append("--with-expat=%s" % spec['expat'].prefix)
+
+ configure(*configure_args)
make()
make("install")
+
+
+
+
+
+
+
diff --git a/var/spack/packages/global/package.py b/var/spack/packages/global/package.py
index a77b1bdc09..e8f06516d9 100644
--- a/var/spack/packages/global/package.py
+++ b/var/spack/packages/global/package.py
@@ -4,7 +4,7 @@ import os
class Global(Package):
""" The Gnu Global tagging system """
- # FIXME: add a proper url for your package's homepage here.
+
homepage = "http://www.gnu.org/software/global"
url = "http://tamacom.com/global/global-6.5.tar.gz"
@@ -13,9 +13,9 @@ class Global(Package):
depends_on('exuberant-ctags')
def install(self, spec, prefix):
- config_args = ['--prefix={}'.format(prefix)]
+ config_args = ['--prefix={0}'.format(prefix)]
- config_args.append('--with-exuberant-ctags={}'.format(
+ config_args.append('--with-exuberant-ctags={0}'.format(
os.path.join(spec['exuberant-ctags'].prefix.bin, 'ctags')))
configure(*config_args)
diff --git a/var/spack/packages/gnuplot/package.py b/var/spack/packages/gnuplot/package.py
new file mode 100644
index 0000000000..71c09bd43d
--- /dev/null
+++ b/var/spack/packages/gnuplot/package.py
@@ -0,0 +1,61 @@
+##############################################################################
+# 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 *
+
+import os
+
+class Gnuplot(Package):
+ """
+ Gnuplot is a portable command-line driven graphing utility for Linux, OS/2, MS Windows, OSX, VMS, and many other
+ platforms. The source code is copyrighted but freely distributed (i.e., you don't have to pay for it). It was
+ originally created to allow scientists and students to visualize mathematical functions and data interactively,
+ but has grown to support many non-interactive uses such as web scripting. It is also used as a plotting engine by
+ third-party applications like Octave. Gnuplot has been supported and under active development since 1986
+ """
+ homepage = "http://www.gnuplot.info"
+ url = "http://downloads.sourceforge.net/project/gnuplot/gnuplot/5.0.1/gnuplot-5.0.1.tar.gz"
+
+ version('5.0.1', '79b4f9e203728f76b60b28bcd402d3c7')
+
+ depends_on('readline')
+ depends_on('libcerf')
+ depends_on('libgd')
+ depends_on('cairo')
+ depends_on('pango')
+ depends_on('wx', when='+wx')
+
+ variant('wx', default=False, description='Activates wxWidgets terminal')
+
+ def install(self, spec, prefix):
+ # It seems there's an open bug for wxWidgets support
+ # See : http://sourceforge.net/p/gnuplot/bugs/1694/
+ os.environ['TERMLIBS'] = '-lX11'
+
+ options = ['--prefix=%s' % prefix]
+
+ configure(*options)
+ make()
+ make("install")
diff --git a/var/spack/packages/gsl/package.py b/var/spack/packages/gsl/package.py
new file mode 100644
index 0000000000..789eb49d85
--- /dev/null
+++ b/var/spack/packages/gsl/package.py
@@ -0,0 +1,46 @@
+##############################################################################
+# 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 Gsl(Package):
+ """
+ The GNU Scientific Library (GSL) is a numerical library for C and C++ programmers. It is free software under the
+ GNU General Public License. The library provides a wide range of mathematical routines such as random number
+ generators, special functions and least-squares fitting. There are over 1000 functions in total with an extensive
+ test suite.
+ """
+ homepage = "http://www.gnu.org/software/gsl"
+ url = "http://mirror.switch.ch/ftp/mirror/gnu/gsl/gsl-2.1.tar.gz"
+
+ version('2.1' , 'd8f70abafd3e9f0bae03c52d1f4e8de5')
+ version('2.0' , 'ae44cdfed78ece40e73411b63a78c375')
+ version('1.16', 'e49a664db13d81c968415cd53f62bc8b')
+
+ def install(self, spec, prefix):
+ configure('--prefix=%s' % prefix)
+ make()
+ make("install")
diff --git a/var/spack/packages/hdf5/package.py b/var/spack/packages/hdf5/package.py
index 48997425cd..44d4ede278 100644
--- a/var/spack/packages/hdf5/package.py
+++ b/var/spack/packages/hdf5/package.py
@@ -15,19 +15,28 @@ class Hdf5(Package):
version('1.8.15', '03cccb5b33dbe975fdcd8ae9dc021f24')
version('1.8.13', 'c03426e9e77d7766944654280b467289')
- depends_on("mpi")
+ variant('mpi', default=False, description='Enable MPI support')
+
+ depends_on("mpi", when='+mpi')
depends_on("zlib")
# TODO: currently hard-coded to use OpenMPI
def install(self, spec, prefix):
+ extra_args = []
+ if '+mpi' in spec:
+ extra_args.extend([
+ "--enable-parallel",
+ "CC=%s" % spec['mpich'].prefix.bin + "/mpicc",
+ "CXX=%s" % spec['mpich'].prefix.bin + "/mpic++",
+ ])
configure(
"--prefix=%s" % prefix,
"--with-zlib=%s" % spec['zlib'].prefix,
- "--enable-parallel",
"--enable-shared",
"CC=%s" % spec['mpi'].prefix.bin + "/mpicc",
- "CXX=%s" % spec['mpi'].prefix.bin + "/mpic++")
+ "CXX=%s" % spec['mpi'].prefix.bin + "/mpic++",
+ *extra_args)
make()
make("install")
diff --git a/var/spack/packages/libcerf/package.py b/var/spack/packages/libcerf/package.py
new file mode 100644
index 0000000000..15e87ce4fe
--- /dev/null
+++ b/var/spack/packages/libcerf/package.py
@@ -0,0 +1,42 @@
+##############################################################################
+# 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 Libcerf(Package):
+ """
+ A self-contained C library providing complex error functions, based on Faddeeva's plasma dispersion function
+ w(z). Also provides Dawson's integral and Voigt's convolution of a Gaussian and a Lorentzian
+ """
+ homepage = "http://sourceforge.net/projects/libcerf"
+ url = "http://downloads.sourceforge.net/project/libcerf/libcerf-1.3.tgz"
+
+ version('1.3', 'b3504c467204df71e62aeccf73a25612')
+
+ def install(self, spec, prefix):
+ configure('--prefix=%s' % prefix)
+ make()
+ make("install")
diff --git a/var/spack/packages/libgd/package.py b/var/spack/packages/libgd/package.py
new file mode 100644
index 0000000000..d920957ef1
--- /dev/null
+++ b/var/spack/packages/libgd/package.py
@@ -0,0 +1,53 @@
+##############################################################################
+# 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 Libgd(Package):
+ """
+ GD is an open source code library for the dynamic creation of images by programmers. GD is written in C, and
+ "wrappers" are available for Perl, PHP and other languages. GD creates PNG, JPEG, GIF, WebP, XPM, BMP images,
+ among other formats. GD is commonly used to generate charts, graphics, thumbnails, and most anything else, on the
+ fly. While not restricted to use on the web, the most common applications of GD involve website development.
+ """
+
+ homepage = "https://github.com/libgd/libgd"
+ url = "https://github.com/libgd/libgd/archive/gd-2.1.1.tar.gz"
+
+ version('2.1.1', 'e91a1a99903e460e7ba00a794e72cc1e')
+
+ depends_on('libpng')
+
+ def install(self, spec, prefix):
+
+ with working_dir('spack-build', create=True):
+ cmake('..',
+ '-DENABLE_JPEG:BOOL=ON',
+ '-DENABLE_PNG:BOOL=ON',
+ '-DENABLE_TIFF:BOOL=ON',
+ *std_cmake_args)
+ make()
+ make("install")
diff --git a/var/spack/packages/libmonitor/libmonitorkrell-0000.patch b/var/spack/packages/libmonitor/libmonitorkrell-0000.patch
new file mode 100644
index 0000000000..3a90106850
--- /dev/null
+++ b/var/spack/packages/libmonitor/libmonitorkrell-0000.patch
@@ -0,0 +1,18 @@
+--- libmonitor-20130218/configure 2013-02-17 23:08:32.000000000 -0800
++++ libmonitor-20130218-fixes/configure 2013-02-18 10:34:05.237918411 -0800
+@@ -3600,13 +3600,13 @@
+ CFLAGS=$ac_save_CFLAGS
+ elif test $ac_cv_prog_cc_g = yes; then
+ if test "$GCC" = yes; then
+- CFLAGS="-g -O2"
++ CFLAGS="-g -O0"
+ else
+ CFLAGS="-g"
+ fi
+ else
+ if test "$GCC" = yes; then
+- CFLAGS="-O2"
++ CFLAGS="-O0"
+ else
+ CFLAGS=
+ fi
diff --git a/var/spack/packages/libmonitor/libmonitorkrell-0001.patch b/var/spack/packages/libmonitor/libmonitorkrell-0001.patch
new file mode 100644
index 0000000000..85d69595c0
--- /dev/null
+++ b/var/spack/packages/libmonitor/libmonitorkrell-0001.patch
@@ -0,0 +1,395 @@
+--- libmonitor-20130218/src/callback.c 2013-02-17 23:08:32.000000000 -0800
++++ libmonitor-20130218-fixes/src/callback.c 2013-02-18 10:34:17.839842826 -0800
+@@ -173,3 +173,18 @@
+ MONITOR_DEBUG1("(default callback)\n");
+ return 0;
+ }
++
++
++void __attribute__ ((weak))
++monitor_mpi_post_comm_rank(void)
++{
++ MONITOR_DEBUG1("(default callback)\n");
++}
++
++void __attribute__ ((weak))
++monitor_mpi_pcontrol(int level)
++{
++ MONITOR_DEBUG("(default callback) level = %d\n", level);
++}
++
++
+--- libmonitor-20130218/src/main.c 2013-02-17 23:08:32.000000000 -0800
++++ libmonitor-20130218-fixes/src/main.c 2013-02-18 10:34:17.839842826 -0800
+@@ -230,6 +230,44 @@
+ monitor_fini_library_called = 1;
+ }
+
++/*
++ * Internal monitor functions.
++ */
++
++struct monitor_thread_node * __attribute__ ((weak))
++monitor_get_tn(void)
++{
++ return &monitor_main_tn;
++}
++
++int __attribute__ ((weak))
++monitor_get_thread_num(void)
++{
++ return (0);
++}
++
++void __attribute__ ((weak))
++monitor_reset_thread_list(struct monitor_thread_node *main_tn)
++{
++ MONITOR_DEBUG1("(weak)\n");
++ return;
++}
++
++void __attribute__ ((weak))
++monitor_thread_release(void)
++{
++ MONITOR_DEBUG1("(weak)\n");
++ return;
++}
++
++void __attribute__ ((weak))
++monitor_thread_shootdown(void)
++{
++ MONITOR_DEBUG1("(weak)\n");
++ return;
++}
++
++
+ void
+ monitor_begin_process_fcn(void *user_data, int is_fork)
+ {
+@@ -625,12 +663,6 @@
+ return (monitor_main_tn.tn_user_data);
+ }
+
+-int __attribute__ ((weak))
+-monitor_get_thread_num(void)
+-{
+- return (0);
+-}
+-
+ void * __attribute__ ((weak))
+ monitor_get_addr_thread_start(void)
+ {
+@@ -691,33 +723,3 @@
+ MONITOR_DEBUG1("(weak)\n");
+ return (FALSE);
+ }
+-
+-/*
+- * Internal monitor functions.
+- */
+-struct monitor_thread_node * __attribute__ ((weak))
+-monitor_get_tn(void)
+-{
+- return &monitor_main_tn;
+-}
+-
+-void __attribute__ ((weak))
+-monitor_reset_thread_list(struct monitor_thread_node *main_tn)
+-{
+- MONITOR_DEBUG1("(weak)\n");
+- return;
+-}
+-
+-void __attribute__ ((weak))
+-monitor_thread_release(void)
+-{
+- MONITOR_DEBUG1("(weak)\n");
+- return;
+-}
+-
+-void __attribute__ ((weak))
+-monitor_thread_shootdown(void)
+-{
+- MONITOR_DEBUG1("(weak)\n");
+- return;
+-}
+--- libmonitor-20130218/src/monitor.h 2013-02-17 23:08:32.000000000 -0800
++++ libmonitor-20130218-fixes/src/monitor.h 2013-02-18 10:34:17.840842821 -0800
+@@ -73,6 +73,11 @@
+ extern void monitor_fini_mpi(void);
+ extern void monitor_mpi_post_fini(void);
+
++extern void monitor_mpi_post_comm_rank(void);
++extern void monitor_mpi_pcontrol(int level);
++
++
++
+ /*
+ * Monitor support functions.
+ */
+--- libmonitor-20130218/src/mpi_comm_c.c 2013-02-17 23:08:32.000000000 -0800
++++ libmonitor-20130218-fixes/src/mpi_comm_c.c 2013-02-18 10:34:17.878842622 -0800
+@@ -36,5 +36,8 @@
+ ret = (*real_mpi_comm_rank)(comm, rank);
+ monitor_set_mpi_size_rank(size, *rank);
+
++ monitor_mpi_post_comm_rank();
++
++
+ return (ret);
+ }
+--- libmonitor-20130218/src/mpi_comm_f0.c 2013-02-17 23:08:32.000000000 -0800
++++ libmonitor-20130218-fixes/src/mpi_comm_f0.c 2013-02-18 10:34:17.879842617 -0800
+@@ -34,4 +34,5 @@
+ (*real_mpi_comm_size)(comm, &size, ierror);
+ (*real_mpi_comm_rank)(comm, rank, ierror);
+ monitor_set_mpi_size_rank(size, *rank);
++ monitor_mpi_post_comm_rank();
+ }
+--- libmonitor-20130218/src/mpi_comm_f1.c 2013-02-17 23:08:32.000000000 -0800
++++ libmonitor-20130218-fixes/src/mpi_comm_f1.c 2013-02-18 10:34:17.880842612 -0800
+@@ -34,4 +34,5 @@
+ (*real_mpi_comm_size)(comm, &size, ierror);
+ (*real_mpi_comm_rank)(comm, rank, ierror);
+ monitor_set_mpi_size_rank(size, *rank);
++ monitor_mpi_post_comm_rank();
+ }
+--- libmonitor-20130218/src/mpi_comm_f2.c 2013-02-17 23:08:32.000000000 -0800
++++ libmonitor-20130218-fixes/src/mpi_comm_f2.c 2013-02-18 10:34:17.880842612 -0800
+@@ -34,4 +34,5 @@
+ (*real_mpi_comm_size)(comm, &size, ierror);
+ (*real_mpi_comm_rank)(comm, rank, ierror);
+ monitor_set_mpi_size_rank(size, *rank);
++ monitor_mpi_post_comm_rank();
+ }
+--- libmonitor-20130218/src/pmpi.c 2013-02-17 23:08:32.000000000 -0800
++++ libmonitor-20130218-fixes/src/pmpi.c 2013-02-18 10:34:17.881842607 -0800
+@@ -52,11 +52,15 @@
+ typedef int mpi_init_thread_fcn_t(int *, char ***, int, int *);
+ typedef int mpi_finalize_fcn_t(void);
+ typedef int mpi_comm_fcn_t(void *, int *);
++typedef int mpi_pcontrol_fcn_t(int );
++
+
+ typedef void f_mpi_init_fcn_t(int *);
+ typedef void f_mpi_init_thread_fcn_t(int *, int *, int *);
+ typedef void f_mpi_finalize_fcn_t(int *);
+ typedef void f_mpi_comm_fcn_t(int *, int *, int *);
++typedef int f_mpi_pcontrol_fcn_t(int );
++
+
+ static mpi_init_fcn_t *real_pmpi_init = NULL;
+ static f_mpi_init_fcn_t *real_pmpi_init_f0 = NULL;
+@@ -83,6 +87,12 @@
+ static f_mpi_comm_fcn_t *real_pmpi_comm_rank_f1 = NULL;
+ static f_mpi_comm_fcn_t *real_pmpi_comm_rank_f2 = NULL;
+
++static mpi_pcontrol_fcn_t *real_pmpi_pcontrol = NULL;
++static f_mpi_pcontrol_fcn_t *real_pmpi_pcontrol_f0 = NULL;
++static f_mpi_pcontrol_fcn_t *real_pmpi_pcontrol_f1 = NULL;
++static f_mpi_pcontrol_fcn_t *real_pmpi_pcontrol_f2 = NULL;
++
++
+ /*
+ *----------------------------------------------------------------------
+ * PMPI_INIT OVERRIDE FUNCTIONS
+@@ -297,6 +307,7 @@
+ ret = (*real_pmpi_comm_size)(comm, &size);
+ ret = (*real_pmpi_comm_rank)(comm, rank);
+ monitor_set_mpi_size_rank(size, *rank);
++ monitor_mpi_post_comm_rank();
+
+ return (ret);
+ }
+@@ -308,7 +319,9 @@
+ MONITOR_GET_REAL_NAME_WRAP(rank_var, rank_fcn); \
+ (*size_var)(comm, &size, ierror); \
+ (*rank_var)(comm, rank, ierror); \
+- monitor_set_mpi_size_rank(size, *rank);
++ monitor_set_mpi_size_rank(size, *rank); \
++ monitor_mpi_post_comm_rank();
++
+
+ /*
+ * In Fortran, MPI_Comm is always int.
+@@ -333,3 +346,48 @@
+ FORTRAN_COMM_RANK_BODY(real_pmpi_comm_size_f2, pmpi_comm_size__,
+ real_pmpi_comm_rank_f2, pmpi_comm_rank__);
+ }
++
++
++/*
++ *----------------------------------------------------------------------
++ * PMPI_PCONTROL OVERRIDE FUNCTIONS
++ *----------------------------------------------------------------------
++ */
++
++int
++MONITOR_WRAP_NAME(PMPI_Pcontrol)(int level)
++{
++ int ret;
++
++ MONITOR_DEBUG("level = %d\n", level); \
++ MONITOR_GET_REAL_NAME_WRAP(real_pmpi_pcontrol, PMPI_Pcontrol);
++ ret = (*real_pmpi_pcontrol) (level) ;
++ monitor_mpi_pcontrol(level);
++
++ return (ret);
++}
++
++#define FORTRAN_PCONTROL_BODY(var_name, fcn_name)\
++ int ret; \
++ MONITOR_DEBUG("level = %d\n", level); \
++ MONITOR_GET_REAL_NAME_WRAP(var_name, fcn_name); \
++ ret = (*var_name) (level) ; \
++ monitor_mpi_pcontrol(level);
++
++int
++MONITOR_WRAP_NAME(pmpi_pcontrol)(int level)
++{
++ FORTRAN_PCONTROL_BODY(real_pmpi_pcontrol_f0, pmpi_pcontrol);
++}
++
++int
++MONITOR_WRAP_NAME(pmpi_pcontrol_)(int level)
++{
++ FORTRAN_PCONTROL_BODY(real_pmpi_pcontrol_f1, pmpi_pcontrol_);
++}
++
++int
++MONITOR_WRAP_NAME(pmpi_pcontrol__)(int level)
++{
++ FORTRAN_PCONTROL_BODY(real_pmpi_pcontrol_f2, pmpi_pcontrol__);
++}
+--- libmonitor-20130218/src/mpi_pcontrol_c.c 1969-12-31 16:00:00.000000000 -0800
++++ libmonitor-20130218-fixes/src/mpi_pcontrol_c.c 2013-02-18 10:34:17.882842602 -0800
+@@ -0,0 +1,30 @@
++/*
++ * Override MPI_Pcontrol in C/C++.
++ *
++ *
++ */
++
++#include "config.h"
++#include "common.h"
++#include "monitor.h"
++
++typedef int mpi_pcontrol_fcn_t(int level);
++#ifdef MONITOR_STATIC
++extern mpi_pcontrol_fcn_t __real_MPI_Pcontrol;
++#endif
++static mpi_pcontrol_fcn_t *real_mpi_pcontrol = NULL;
++
++int
++MONITOR_WRAP_NAME(MPI_Pcontrol)(int level)
++{
++ int ret, count;
++
++ MONITOR_DEBUG("level = %d\n", level); \
++
++ MONITOR_GET_REAL_NAME_WRAP(real_mpi_pcontrol, MPI_Pcontrol);
++ ret = (*real_mpi_pcontrol)(level);
++ monitor_mpi_pcontrol(level);
++
++
++ return (ret);
++}
+--- libmonitor-20130218/src/mpi_pcontrol_f0.c 1969-12-31 16:00:00.000000000 -0800
++++ libmonitor-20130218-fixes/src/mpi_pcontrol_f0.c 2013-02-18 10:34:17.882842602 -0800
+@@ -0,0 +1,24 @@
++/*
++ * Override mpi_pcontrol in Fortran.
++ *
++ */
++
++#include "config.h"
++#include "common.h"
++#include "monitor.h"
++
++typedef void mpi_pcontrol_fcn_t(int level);
++#ifdef MONITOR_STATIC
++extern mpi_pcontrol_fcn_t __real_mpi_pcontrol;
++#endif
++static mpi_pcontrol_fcn_t *real_mpi_pcontrol = NULL;
++
++int
++MONITOR_WRAP_NAME(mpi_pcontrol)(int level)
++{
++ int count;
++
++ MONITOR_DEBUG1("\n");
++ MONITOR_GET_REAL_NAME_WRAP(real_mpi_pcontrol, mpi_pcontrol);
++ (*real_mpi_pcontrol)(level);
++}
+--- libmonitor-20130218/src/mpi_pcontrol_f1.c 1969-12-31 16:00:00.000000000 -0800
++++ libmonitor-20130218-fixes/src/mpi_pcontrol_f1.c 2013-02-18 10:34:17.883842597 -0800
+@@ -0,0 +1,24 @@
++/*
++ * Override mpi_pcontrol_ in Fortran.
++ *
++ */
++
++#include "config.h"
++#include "common.h"
++#include "monitor.h"
++
++typedef void mpi_pcontrol_fcn_t(int level);
++#ifdef MONITOR_STATIC
++extern mpi_pcontrol_fcn_t __real_mpi_pcontrol_;
++#endif
++static mpi_pcontrol_fcn_t *real_mpi_pcontrol = NULL;
++
++int
++MONITOR_WRAP_NAME(mpi_pcontrol_)(int level)
++{
++ int count;
++
++ MONITOR_DEBUG1("\n");
++ MONITOR_GET_REAL_NAME_WRAP(real_mpi_pcontrol, mpi_pcontrol_);
++ (*real_mpi_pcontrol)(level);
++}
+--- libmonitor-20130218/src/mpi_pcontrol_f2.c 1969-12-31 16:00:00.000000000 -0800
++++ libmonitor-20130218-fixes/src/mpi_pcontrol_f2.c 2013-02-18 10:34:17.883842597 -0800
+@@ -0,0 +1,24 @@
++/*
++ * Override mpi_pcontrol__ in Fortran.
++ *
++ */
++
++#include "config.h"
++#include "common.h"
++#include "monitor.h"
++
++typedef void mpi_pcontrol_fcn_t(int level);
++#ifdef MONITOR_STATIC
++extern mpi_pcontrol_fcn_t __real_mpi_pcontrol__;
++#endif
++static mpi_pcontrol_fcn_t *real_mpi_pcontrol = NULL;
++
++int
++MONITOR_WRAP_NAME(mpi_pcontrol__)(int level)
++{
++ int count;
++
++ MONITOR_DEBUG1("\n");
++ MONITOR_GET_REAL_NAME_WRAP(real_mpi_pcontrol, mpi_pcontrol__);
++ (*real_mpi_pcontrol)(level);
++}
+--- libmonitor-20130218/src/Makefile.am 2013-02-17 23:08:32.000000000 -0800
++++ libmonitor-20130218-fixes/src/Makefile.am 2013-02-18 10:34:17.931842343 -0800
+@@ -38,10 +38,11 @@
+ MONITOR_THREAD_FILES = pthread.c
+ MONITOR_SCRIPT_FILES = monitor-link monitor-run
+ MONITOR_MPI_FILES = \
+- mpi_init_c.c mpi_init_thread_c.c mpi_final_c.c mpi_comm_c.c \
+- mpi_init_f0.c mpi_init_thread_f0.c mpi_final_f0.c mpi_comm_f0.c \
+- mpi_init_f1.c mpi_init_thread_f1.c mpi_final_f1.c mpi_comm_f1.c \
+- mpi_init_f2.c mpi_init_thread_f2.c mpi_final_f2.c mpi_comm_f2.c
++ mpi_init_c.c mpi_init_thread_c.c mpi_final_c.c mpi_comm_c.c mpi_pcontrol_c.c \
++ mpi_init_f0.c mpi_init_thread_f0.c mpi_final_f0.c mpi_comm_f0.c mpi_pcontrol_f0.c \
++ mpi_init_f1.c mpi_init_thread_f1.c mpi_final_f1.c mpi_comm_f1.c mpi_pcontrol_f1.c \
++ mpi_init_f2.c mpi_init_thread_f2.c mpi_final_f2.c mpi_comm_f2.c mpi_pcontrol_f2.c
++
+
+ include_HEADERS = monitor.h
+ bin_SCRIPTS =
diff --git a/var/spack/packages/libmonitor/libmonitorkrell-0002.patch b/var/spack/packages/libmonitor/libmonitorkrell-0002.patch
new file mode 100644
index 0000000000..514dfdf13e
--- /dev/null
+++ b/var/spack/packages/libmonitor/libmonitorkrell-0002.patch
@@ -0,0 +1,106 @@
+--- libmonitor-20130218/src/pmpi.c 2013-02-18 11:34:17.000000000 -0700
++++ libmonitor-20130218-fixed/src/pmpi.c 2013-04-11 10:03:59.300550393 -0600
+@@ -355,7 +355,7 @@
+ */
+
+ int
+-MONITOR_WRAP_NAME(PMPI_Pcontrol)(int level)
++MONITOR_WRAP_NAME(PMPI_Pcontrol)(int level, int *ierror )
+ {
+ int ret;
+
+@@ -375,19 +375,19 @@
+ monitor_mpi_pcontrol(level);
+
+ int
+-MONITOR_WRAP_NAME(pmpi_pcontrol)(int level)
++MONITOR_WRAP_NAME(pmpi_pcontrol)(int level, int *ierror )
+ {
+ FORTRAN_PCONTROL_BODY(real_pmpi_pcontrol_f0, pmpi_pcontrol);
+ }
+
+ int
+-MONITOR_WRAP_NAME(pmpi_pcontrol_)(int level)
++MONITOR_WRAP_NAME(pmpi_pcontrol_)(int level, int *ierror )
+ {
+ FORTRAN_PCONTROL_BODY(real_pmpi_pcontrol_f1, pmpi_pcontrol_);
+ }
+
+ int
+-MONITOR_WRAP_NAME(pmpi_pcontrol__)(int level)
++MONITOR_WRAP_NAME(pmpi_pcontrol__)(int level, int *ierror )
+ {
+ FORTRAN_PCONTROL_BODY(real_pmpi_pcontrol_f2, pmpi_pcontrol__);
+ }
+--- libmonitor-20130218/src/mpi_pcontrol_f0.c 2013-02-18 11:34:17.000000000 -0700
++++ libmonitor-20130218-fixed/src/mpi_pcontrol_f0.c 2013-04-11 10:13:47.783002000 -0600
+@@ -7,18 +7,18 @@
+ #include "common.h"
+ #include "monitor.h"
+
+-typedef void mpi_pcontrol_fcn_t(int level);
++typedef void mpi_pcontrol_fcn_t(int level, int *ierror);
+ #ifdef MONITOR_STATIC
+ extern mpi_pcontrol_fcn_t __real_mpi_pcontrol;
+ #endif
+ static mpi_pcontrol_fcn_t *real_mpi_pcontrol = NULL;
+
+ int
+-MONITOR_WRAP_NAME(mpi_pcontrol)(int level)
++MONITOR_WRAP_NAME(mpi_pcontrol)(int level, int *ierror)
+ {
+ int count;
+
+ MONITOR_DEBUG1("\n");
+ MONITOR_GET_REAL_NAME_WRAP(real_mpi_pcontrol, mpi_pcontrol);
+- (*real_mpi_pcontrol)(level);
++ (*real_mpi_pcontrol)(level, ierror);
+ }
+--- libmonitor-20130218/src/mpi_pcontrol_f1.c 2013-02-18 11:34:17.000000000 -0700
++++ libmonitor-20130218-fixed/src/mpi_pcontrol_f1.c 2013-04-11 10:14:08.039214000 -0600
+@@ -7,18 +7,18 @@
+ #include "common.h"
+ #include "monitor.h"
+
+-typedef void mpi_pcontrol_fcn_t(int level);
++typedef void mpi_pcontrol_fcn_t(int level, int *ierror);
+ #ifdef MONITOR_STATIC
+ extern mpi_pcontrol_fcn_t __real_mpi_pcontrol_;
+ #endif
+ static mpi_pcontrol_fcn_t *real_mpi_pcontrol = NULL;
+
+ int
+-MONITOR_WRAP_NAME(mpi_pcontrol_)(int level)
++MONITOR_WRAP_NAME(mpi_pcontrol_)(int level, int *ierror)
+ {
+ int count;
+
+ MONITOR_DEBUG1("\n");
+ MONITOR_GET_REAL_NAME_WRAP(real_mpi_pcontrol, mpi_pcontrol_);
+- (*real_mpi_pcontrol)(level);
++ (*real_mpi_pcontrol)(level, ierror);
+ }
+--- libmonitor-20130218/src/mpi_pcontrol_f2.c 2013-02-18 11:34:17.000000000 -0700
++++ libmonitor-20130218-fixed/src/mpi_pcontrol_f2.c 2013-04-11 10:14:19.000960000 -0600
+@@ -7,18 +7,18 @@
+ #include "common.h"
+ #include "monitor.h"
+
+-typedef void mpi_pcontrol_fcn_t(int level);
++typedef void mpi_pcontrol_fcn_t(int level, int *ierror);
+ #ifdef MONITOR_STATIC
+ extern mpi_pcontrol_fcn_t __real_mpi_pcontrol__;
+ #endif
+ static mpi_pcontrol_fcn_t *real_mpi_pcontrol = NULL;
+
+ int
+-MONITOR_WRAP_NAME(mpi_pcontrol__)(int level)
++MONITOR_WRAP_NAME(mpi_pcontrol__)(int level, int *ierror)
+ {
+ int count;
+
+ MONITOR_DEBUG1("\n");
+ MONITOR_GET_REAL_NAME_WRAP(real_mpi_pcontrol, mpi_pcontrol__);
+- (*real_mpi_pcontrol)(level);
++ (*real_mpi_pcontrol)(level, ierror);
+ }
diff --git a/var/spack/packages/libmonitor/package.py b/var/spack/packages/libmonitor/package.py
index c75e1a7947..eecf1963e3 100644
--- a/var/spack/packages/libmonitor/package.py
+++ b/var/spack/packages/libmonitor/package.py
@@ -29,6 +29,13 @@ class Libmonitor(Package):
homepage = "http://hpctoolkit.org"
version('20130218', svn='http://libmonitor.googlecode.com/svn/trunk/', revision=146)
+ variant('krellpatch', default=False, description="build with openspeedshop based patch.")
+
+
+ patch('libmonitorkrell-0000.patch', when='@20130218+krellpatch')
+ patch('libmonitorkrell-0001.patch', when='@20130218+krellpatch')
+ patch('libmonitorkrell-0002.patch', when='@20130218+krellpatch')
+
def install(self, spec, prefix):
configure("--prefix=" + prefix)
diff --git a/var/spack/packages/libxml2/package.py b/var/spack/packages/libxml2/package.py
index 5d84fad22d..134e596963 100644
--- a/var/spack/packages/libxml2/package.py
+++ b/var/spack/packages/libxml2/package.py
@@ -1,4 +1,5 @@
from spack import *
+import os
class Libxml2(Package):
"""Libxml2 is the XML C parser and toolkit developed for the Gnome
@@ -11,18 +12,19 @@ class Libxml2(Package):
variant('python', default=False, description='Enable Python support')
- extends('python', when='+python')
+ extends('python', when='+python', ignore=r'(bin.*$)|(include.*$)|(share.*$)|(lib/libxml2.*$)|(lib/xml2.*$)|(lib/cmake.*$)')
depends_on('zlib')
depends_on('xz')
def install(self, spec, prefix):
if '+python' in spec:
- python_arg = "--with-python=%s" % spec['python'].prefix
+ site_packages_dir = os.path.join(prefix, 'lib/python%s.%s/site-packages' %(spec['python'].version[:2]))
+ python_args = ["--with-python=%s" % spec['python'].prefix, "--with-python-install-dir=%s" % site_packages_dir]
else:
- python_arg = "--without-python"
+ python_args = ["--without-python"]
configure("--prefix=%s" % prefix,
- python_arg)
+ *python_args)
make()
make("install")
diff --git a/var/spack/packages/lmod/package.py b/var/spack/packages/lmod/package.py
new file mode 100644
index 0000000000..d642594f92
--- /dev/null
+++ b/var/spack/packages/lmod/package.py
@@ -0,0 +1,26 @@
+from spack import *
+import os
+
+class Lmod(Package):
+ """
+ Lmod is a Lua based module system that easily handles the MODULEPATH
+ Hierarchical problem. Environment Modules provide a convenient way to
+ dynamically change the users' environment through modulefiles. This
+ includes easily adding or removing directories to the PATH environment
+ variable. Modulefiles for Library packages provide environment variables
+ that specify where the library and header files can be found.
+ """
+ homepage = "https://www.tacc.utexas.edu/research-development/tacc-projects/lmod"
+ url = "http://sourceforge.net/projects/lmod/files/Lmod-6.0.1.tar.bz2/download"
+
+ version('6.0.1', '91abf52fe5033bd419ffe2842ebe7af9')
+
+ depends_on("lua@5.2:")
+
+ def install(self, spec, prefix):
+ # Add our lua to PATH
+ os.environ['PATH'] = spec['lua'].prefix.bin + ';' + os.environ['PATH']
+
+ configure('--prefix=%s' % prefix)
+ make()
+ make("install")
diff --git a/var/spack/packages/mrnet/package.py b/var/spack/packages/mrnet/package.py
index 6e9766f275..fed944e45f 100644
--- a/var/spack/packages/mrnet/package.py
+++ b/var/spack/packages/mrnet/package.py
@@ -7,13 +7,19 @@ class Mrnet(Package):
version('4.0.0', 'd00301c078cba57ef68613be32ceea2f')
version('4.1.0', '5a248298b395b329e2371bf25366115c')
+ version('5.0.1', '17f65738cf1b9f9b95647ff85f69ecdd')
+ variant('lwthreads', default=False, description="Also build the MRNet LW threadsafe libraries")
parallel = False
depends_on("boost")
def install(self, spec, prefix):
- configure("--prefix=%s" %prefix, "--enable-shared")
+ # Build the MRNet LW thread safe libraries when the krelloptions variant is present
+ if '+lwthreads' in spec:
+ configure("--prefix=%s" %prefix, "--enable-shared", "--enable-ltwt-threadsafe")
+ else:
+ configure("--prefix=%s" %prefix, "--enable-shared")
make()
make("install")
diff --git a/var/spack/packages/ncurses/package.py b/var/spack/packages/ncurses/package.py
index cc180bbae1..31f53b6c43 100644
--- a/var/spack/packages/ncurses/package.py
+++ b/var/spack/packages/ncurses/package.py
@@ -14,6 +14,8 @@ class Ncurses(Package):
version('6.0', 'ee13d052e1ead260d7c28071f46eefb1',
url='http://ftp.gnu.org/pub/gnu/ncurses/ncurses-6.0.tar.gz')
+ patch('patch_gcc_5.txt', when='%gcc@5.0:')
+
def install(self, spec, prefix):
configure("--prefix=%s" % prefix,
"--with-shared",
diff --git a/var/spack/packages/ncurses/patch_gcc_5.txt b/var/spack/packages/ncurses/patch_gcc_5.txt
new file mode 100644
index 0000000000..f85e07cb8d
--- /dev/null
+++ b/var/spack/packages/ncurses/patch_gcc_5.txt
@@ -0,0 +1,12 @@
+diff -Naur ncurses-6.0/ncurses/Makefile.in ncurses-6.0-patched/ncurses/Makefile.in
+--- ncurses-6.0/ncurses/Makefile.in 2015-08-06 01:15:41.000000000 +0200
++++ ncurses-6.0-patched/ncurses/Makefile.in 2015-12-15 14:58:52.710199407 +0100
+@@ -219,7 +219,7 @@
+ $(SHELL) -e $(tinfo)/MKfallback.sh $(TERMINFO) $(TERMINFO_SRC) $(TIC_PATH) $(FALLBACK_LIST) >$@
+
+ ./lib_gen.c : $(base)/MKlib_gen.sh ../include/curses.h
+- $(SHELL) -e $(base)/MKlib_gen.sh "$(CPP) $(CPPFLAGS)" "$(AWK)" generated <../include/curses.h >$@
++ $(SHELL) -e $(base)/MKlib_gen.sh "$(CPP) $(CPPFLAGS) -P" "$(AWK)" generated <../include/curses.h >$@
+
+ init_keytry.h: make_keys$(BUILD_EXEEXT) keys.list
+ ./make_keys$(BUILD_EXEEXT) keys.list > $@
diff --git a/var/spack/packages/openspeedshop/package.py b/var/spack/packages/openspeedshop/package.py
new file mode 100644
index 0000000000..8c71bcb7c3
--- /dev/null
+++ b/var/spack/packages/openspeedshop/package.py
@@ -0,0 +1,216 @@
+################################################################################
+# Copyright (c) 2015 Krell Institute. All Rights Reserved.
+#
+# 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; either version 2 of the License, or (at your option) any later
+# version.
+#
+# 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 GNU General Public License for more
+# details.
+#
+# You should have received a copy of the GNU 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 Openspeedshop(Package):
+ """OpenSpeedShop is a community effort by The Krell Institute with current direct funding from DOEs NNSA.
+ It builds on top of a broad list of community infrastructures, most notably Dyninst and MRNet from UW,
+ libmonitor from Rice, and PAPI from UTK. OpenSpeedShop is an open source multi platform Linux performance
+ tool which is targeted to support performance analysis of applications running on both single node and
+ large scale IA64, IA32, EM64T, AMD64, PPC, ARM, Blue Gene and Cray platforms. OpenSpeedShop development
+ is hosted by the Krell Institute. The infrastructure and base components of OpenSpeedShop are released
+ as open source code primarily under LGPL.
+ """
+
+
+ homepage = "http://www.openspeedshop.org"
+ url = "http://sourceforge.net/projects/openss/files/openss/openspeedshop-2.2/openspeedshop-2.2.tar.gz/download"
+ version('2.2', '16cb051179c2038de4e8a845edf1d573')
+
+ #homepage = "http://www.openspeedshop.org"
+ #url = "http://sourceforge.net/projects/openss/files/openss/openspeedshop-2.1/openspeedshop-2.1.tar.gz/download"
+ #version('2.1', 'bdaa57c1a0db9d0c3e0303fd8496c507')
+
+ # optional mirror template
+ #url = "file:/g/g24/jeg/openspeedshop-2.1.tar.gz"
+ #version('2.1', '64ee17166519838c7b94a1adc138e94f')
+
+
+
+ parallel = False
+
+ variant('offline', default=True, description="build with offline instrumentor enabled.")
+ variant('cbtf', default=False, description="build with cbtf instrumentor enabled.")
+ variant('runtime', default=False, description="build only the runtime libraries and collectors.")
+ variant('frontend', default=False, description="build only the front-end tool using the runtime_dir to point to the target build.")
+ variant('cuda', default=False, description="build with cuda packages included.")
+ variant('ptgf', default=False, description="build with the PTGF based gui package enabled.")
+ variant('intelmic', default=False, description="build for the Intel MIC platform.")
+ variant('cray', default=False, description="build for Cray platforms.")
+ variant('bluegene', default=False, description="build for Cray platforms.")
+ variant('rtfe', default=False, description="build for generic cluster platforms that have different processors on the fe and be nodes.")
+
+ # Dependencies for openspeedshop that are common to all the variants of the OpenSpeedShop build
+ depends_on("bison")
+ depends_on("flex")
+ depends_on("binutils@2.24+krellpatch")
+ depends_on("libelf")
+ depends_on("libdwarf")
+ depends_on("sqlite")
+ depends_on("boost@1.50.0")
+ depends_on("dyninst@8.2.1")
+ depends_on("python")
+ depends_on("qt@3.3.8b+krellpatch")
+
+ # Dependencies only for the openspeedshop offline package.
+ depends_on("libunwind", when='+offline')
+ depends_on("papi", when='+offline')
+ depends_on("libmonitor+krellpatch", when='+offline')
+ #depends_on("openmpi+krelloptions", when='+offline')
+ #depends_on("openmpi", when='+offline')
+ #depends_on("mpich", when='+offline')
+
+ # Dependencies only for the openspeedshop cbtf package.
+ depends_on("cbtf", when='+cbtf')
+ depends_on("cbtf-krell", when='+cbtf')
+ depends_on("cbtf-argonavis", when='+cbtf')
+ depends_on("mrnet@4.1.0:+lwthreads", when='+cbtf')
+
+ def install(self, spec, prefix):
+
+ #openmpi_prefix_path = "/opt/openmpi-1.8.2"
+ #mvapich_prefix_path = "/usr/local/tools/mvapich-gnu"
+ #'-DOPENMPI_DIR=%s' % spec['openmpi'].prefix,
+ #'-DOPENMPI_DIR=%s' % openmpi_prefix_path,
+ #'-DMVAPICH_DIR=%s' % mvapich_prefix_path,
+
+ # FIXME: How do we make this dynamic in spack? That is, can we specify the paths to cuda dynamically?
+ # WAITING for external package support.
+ #if '+cuda' in spec:
+ # cuda_prefix_path = "/usr/local/cuda-6.0"
+ # cupti_prefix_path = "/usr/local/cuda-6.0/extras/CUPTI"
+
+ if '+offline' in spec:
+ instrumentor_setting = "offline"
+ if '+runtime' in spec:
+ with working_dir('build_runtime', create=True):
+ cmake('..',
+ '-DCMAKE_INSTALL_PREFIX=%s' % prefix,
+ '-DCMAKE_LIBRARY_PATH=%s' % prefix.lib64,
+ '-DINSTRUMENTOR=%s' % instrumentor_setting,
+ '-DLIBMONITOR_DIR=%s' % spec['libmonitor'].prefix,
+ '-DLIBUNWIND_DIR=%s' % spec['libunwind'].prefix,
+ '-DPAPI_DIR=%s' % spec['papi'].prefix,
+ *std_cmake_args)
+ make("clean")
+ make()
+ make("install")
+ else:
+ cmake_prefix_path = join_path(spec['dyninst'].prefix)
+ with working_dir('build', create=True):
+ #python_vers=join_path(spec['python'].version[:2])
+ #'-DOPENMPI_DIR=%s' % openmpi_prefix_path,
+ #'-DMVAPICH_DIR=%s' % mvapich_prefix_path,
+ python_vers='%d.%d' % spec['python'].version[:2]
+ cmake('..',
+ '-DCMAKE_INSTALL_PREFIX=%s' % prefix,
+ '-DCMAKE_LIBRARY_PATH=%s' % prefix.lib64,
+ '-DCMAKE_PREFIX_PATH=%s' % cmake_prefix_path,
+ '-DINSTRUMENTOR=%s' % instrumentor_setting,
+ '-DBINUTILS_DIR=%s' % spec['binutils'].prefix,
+ '-DLIBELF_DIR=%s' % spec['libelf'].prefix,
+ '-DLIBDWARF_DIR=%s' % spec['libdwarf'].prefix,
+ '-DLIBMONITOR_DIR=%s' % spec['libmonitor'].prefix,
+ '-DLIBUNWIND_DIR=%s' % spec['libunwind'].prefix,
+ '-DPAPI_DIR=%s' % spec['papi'].prefix,
+ '-DSQLITE3_DIR=%s' % spec['sqlite'].prefix,
+ '-DQTLIB_DIR=%s' % spec['qt'].prefix,
+ '-DPYTHON_EXECUTABLE=%s' % join_path(spec['python'].prefix + '/bin/python'),
+ '-DPYTHON_INCLUDE_DIR=%s' % join_path(spec['python'].prefix.include) + '/python' + python_vers,
+ '-DPYTHON_LIBRARY=%s' % join_path(spec['python'].prefix.lib) + '/libpython' + python_vers + '.so',
+ '-DBoost_NO_SYSTEM_PATHS=TRUE',
+ '-DBOOST_ROOT=%s' % spec['boost'].prefix,
+ '-DDYNINST_DIR=%s' % spec['dyninst'].prefix,
+ *std_cmake_args)
+ make("clean")
+ make()
+ make("install")
+
+ elif '+cbtf' in spec:
+ instrumentor_setting = "cbtf"
+ cmake_prefix_path = join_path(spec['cbtf'].prefix) + ':' + join_path(spec['cbtf-krell'].prefix) + ':' + join_path(spec['dyninst'].prefix)
+ if '+runtime' in spec:
+ with working_dir('build_cbtf_runtime', create=True):
+ python_vers='%d.%d' % spec['python'].version[:2]
+ cmake('..',
+ '-DCMAKE_INSTALL_PREFIX=%s' % prefix,
+ '-DCMAKE_LIBRARY_PATH=%s' % prefix.lib64,
+ '-DCMAKE_PREFIX_PATH=%s' % cmake_prefix_path,
+ '-DINSTRUMENTOR=%s' % instrumentor_setting,
+ '-DBINUTILS_DIR=%s' % spec['binutils'].prefix,
+ '-DLIBELF_DIR=%s' % spec['libelf'].prefix,
+ '-DLIBDWARF_DIR=%s' % spec['libdwarf'].prefix,
+ '-DCBTF_DIR=%s' % spec['cbtf'].prefix,
+ '-DCBTF_KRELL_DIR=%s' % spec['cbtf-krell'].prefix,
+ '-DPYTHON_EXECUTABLE=%s' % join_path(spec['python'].prefix + '/bin/python'),
+ '-DPYTHON_INCLUDE_DIR=%s' % join_path(spec['python'].prefix.include) + '/python' + python_vers,
+ '-DPYTHON_LIBRARY=%s' % join_path(spec['python'].prefix.lib) + '/libpython' + python_vers + '.so',
+ '-DBoost_NO_SYSTEM_PATHS=TRUE',
+ '-DBOOST_ROOT=%s' % spec['boost'].prefix,
+ '-DDYNINST_DIR=%s' % spec['dyninst'].prefix,
+ '-DMRNET_DIR=%s' % spec['mrnet'].prefix,
+ *std_cmake_args)
+ make("clean")
+ make()
+ make("install")
+
+ else:
+ with working_dir('build_cbtf', create=True):
+ python_vers='%d.%d' % spec['python'].version[:2]
+ #python_vers=join_path(spec['python'].version[:2])
+ cmake('..',
+ '-DCMAKE_INSTALL_PREFIX=%s' % prefix,
+ '-DCMAKE_LIBRARY_PATH=%s' % prefix.lib64,
+ '-DCMAKE_PREFIX_PATH=%s' % cmake_prefix_path,
+ '-DINSTRUMENTOR=%s' % instrumentor_setting,
+ '-DBINUTILS_DIR=%s' % spec['binutils'].prefix,
+ '-DLIBELF_DIR=%s' % spec['libelf'].prefix,
+ '-DLIBDWARF_DIR=%s' % spec['libdwarf'].prefix,
+ '-DSQLITE3_DIR=%s' % spec['sqlite'].prefix,
+ '-DCBTF_DIR=%s' % spec['cbtf'].prefix,
+ '-DCBTF_KRELL_DIR=%s' % spec['cbtf-krell'].prefix,
+ '-DQTLIB_DIR=%s' % spec['qt'].prefix,
+ '-DPYTHON_EXECUTABLE=%s' % join_path(spec['python'].prefix + '/bin/python'),
+ '-DPYTHON_INCLUDE_DIR=%s' % join_path(spec['python'].prefix.include) + '/python' + python_vers,
+ '-DPYTHON_LIBRARY=%s' % join_path(spec['python'].prefix.lib) + '/libpython' + python_vers + '.so',
+ '-DBoost_NO_SYSTEM_PATHS=TRUE',
+ '-DBOOST_ROOT=%s' % spec['boost'].prefix,
+ '-DDYNINST_DIR=%s' % spec['dyninst'].prefix,
+ '-DMRNET_DIR=%s' % spec['mrnet'].prefix,
+ *std_cmake_args)
+ make("clean")
+ make()
+ make("install")
+
+ #if '+frontend' in spec:
+ # with working_dir('build_frontend', create=True):
+ # tbd
+
+
+ #if '+intelmic' in spec:
+ # with working_dir('build_intelmic_compute', create=True):
+ # tbd
+ # with working_dir('build_intelmic_frontend', create=True):
+ # tbd
+
+ #if '+cray' in spec:
+ # with working_dir('build_cray_compute', create=True):
+ # tbd
+ # with working_dir('build_cray_frontend', create=True):
+ # tbd
diff --git a/var/spack/packages/papi/package.py b/var/spack/packages/papi/package.py
index 097b8c41ec..910e0aa9f9 100644
--- a/var/spack/packages/papi/package.py
+++ b/var/spack/packages/papi/package.py
@@ -11,8 +11,8 @@ class Papi(Package):
components that expose performance measurement opportunites
across the hardware and software stack."""
homepage = "http://icl.cs.utk.edu/papi/index.html"
- url = "http://icl.cs.utk.edu/projects/papi/downloads/papi-5.3.0.tar.gz"
+ url = "http://icl.cs.utk.edu/projects/papi/downloads/papi-5.4.1.tar.gz"
version('5.4.1', '9134a99219c79767a11463a76b0b01a2')
version('5.3.0', '367961dd0ab426e5ae367c2713924ffb')
diff --git a/var/spack/packages/paraview/package.py b/var/spack/packages/paraview/package.py
index b0893237e9..1d99b34899 100644
--- a/var/spack/packages/paraview/package.py
+++ b/var/spack/packages/paraview/package.py
@@ -24,7 +24,8 @@ class Paraview(Package):
depends_on('bzip2')
depends_on('freetype')
- depends_on('hdf5') # drags in mpi
+ depends_on('hdf5')
+ depends_on('hdf5+mpi', when='+mpi')
depends_on('jpeg')
depends_on('libpng')
depends_on('libtiff')
diff --git a/var/spack/packages/petsc/package.py b/var/spack/packages/petsc/package.py
index 4864e39bf1..f3ed3d72ec 100644
--- a/var/spack/packages/petsc/package.py
+++ b/var/spack/packages/petsc/package.py
@@ -18,7 +18,7 @@ class Petsc(Package):
depends_on("hypre")
depends_on("parmetis")
depends_on("metis")
- depends_on("hdf5")
+ depends_on("hdf5+mpi")
depends_on("mpi")
def install(self, spec, prefix):
diff --git a/var/spack/packages/py-cffi/package.py b/var/spack/packages/py-cffi/package.py
index a4d37483fe..909049a67c 100644
--- a/var/spack/packages/py-cffi/package.py
+++ b/var/spack/packages/py-cffi/package.py
@@ -4,7 +4,7 @@ class PyCffi(Package):
"""Foreign Function Interface for Python calling C code"""
homepage = "http://cffi.readthedocs.org/en/latest/"
# base https://pypi.python.org/pypi/cffi
- url = "https://pypi.python.org/packages/source/c/cffi/cffi-1.1.2.tar.gz#md5="
+ url = "https://pypi.python.org/packages/source/c/cffi/cffi-1.1.2.tar.gz"
version('1.1.2', 'ca6e6c45b45caa87aee9adc7c796eaea')
diff --git a/var/spack/packages/qt/package.py b/var/spack/packages/qt/package.py
index 0e4abe3b1d..e8d843519d 100644
--- a/var/spack/packages/qt/package.py
+++ b/var/spack/packages/qt/package.py
@@ -10,14 +10,23 @@ class Qt(Package):
version('5.4.0', 'e8654e4b37dd98039ba20da7a53877e6',
url='http://download.qt-project.org/official_releases/qt/5.4/5.4.0/single/qt-everywhere-opensource-src-5.4.0.tar.gz')
+
version('5.3.2', 'febb001129927a70174467ecb508a682',
url='http://download.qt.io/archive/qt/5.3/5.3.2/single/qt-everywhere-opensource-src-5.3.2.tar.gz')
version('5.2.1', 'a78408c887c04c34ce615da690e0b4c8',
url='http://download.qt.io/archive/qt/5.2/5.2.1/single/qt-everywhere-opensource-src-5.2.1.tar.gz')
+
version('4.8.6', '2edbe4d6c2eff33ef91732602f3518eb',
url="http://download.qt-project.org/official_releases/qt/4.8/4.8.6/qt-everywhere-opensource-src-4.8.6.tar.gz")
+ version('3.3.8b', '9f05b4125cfe477cc52c9742c3c09009',
+ url="http://download.qt.io/archive/qt/3/qt-x11-free-3.3.8b.tar.gz")
+
+ # Add patch for compile issues with qt3 found with use in the OpenSpeedShop project
+ variant('krellpatch', default=False, description="build with openspeedshop based patch.")
+ patch('qt3krell.patch', when='@3.3.8b+krellpatch')
+
# Use system openssl for security.
#depends_on("openssl")
@@ -25,7 +34,7 @@ class Qt(Package):
depends_on("gtkplus")
depends_on("libxml2")
depends_on("zlib")
- depends_on("dbus")
+ depends_on("dbus", when='@4:')
depends_on("libtiff")
depends_on("libpng")
depends_on("libmng")
@@ -39,7 +48,7 @@ class Qt(Package):
# depends_on("icu4c")
# OpenGL hardware acceleration
- depends_on("mesa")
+ depends_on("mesa", when='@4:')
depends_on("libxcb")
@@ -85,6 +94,15 @@ class Qt(Package):
# Don't disable all the database drivers, but should
# really get them into spack at some point.
+ @when('@3')
+ def configure(self):
+ configure('-prefix', self.prefix,
+ '-v',
+ '-thread',
+ '-shared',
+ '-release',
+ '-fast'
+ )
@when('@4')
def configure(self):
diff --git a/var/spack/packages/qt/qt3krell.patch b/var/spack/packages/qt/qt3krell.patch
new file mode 100644
index 0000000000..3333eeacd4
--- /dev/null
+++ b/var/spack/packages/qt/qt3krell.patch
@@ -0,0 +1,68 @@
+--- qt-x11-free-3.3.8b/src/tools/qmap.h 2008-01-15 13:09:13.000000000 -0600
++++ qt-x11-free-3.3.8b-fixes/src/tools/qmap.h 2015-07-08 15:47:34.757565247 -0500
+@@ -52,6 +52,7 @@
+ #ifndef QT_NO_STL
+ #include <iterator>
+ #include <map>
++#include <cstddef>
+ #endif
+
+ //#define QT_CHECK_MAP_RANGE
+--- qt-x11-free-3.3.8b/src/tools/qvaluelist.h 2008-01-15 13:09:13.000000000 -0600
++++ qt-x11-free-3.3.8b-fixes/src/tools/qvaluelist.h 2015-07-08 15:47:34.758565247 -0500
+@@ -50,6 +50,7 @@
+ #ifndef QT_NO_STL
+ #include <iterator>
+ #include <list>
++#include <cstddef>
+ #endif
+
+ //#define QT_CHECK_VALUELIST_RANGE
+--- qt-x11-free-3.3.8b/src/tools/qvaluevector.h 2008-01-15 13:09:13.000000000 -0600
++++ qt-x11-free-3.3.8b-fixes/src/tools/qvaluevector.h 2015-07-08 15:47:34.758565247 -0500
+@@ -47,6 +47,7 @@
+
+ #ifndef QT_NO_STL
+ #include <vector>
++#include <cstddef>
+ #endif
+
+ template <class T>
+--- qt-x11-free-3.3.8b/configure 2008-01-15 13:09:15.000000000 -0600
++++ qt-x11-free-3.3.8b-fixes/configure 2015-07-08 15:49:03.379560633 -0500
+@@ -2339,7 +2339,7 @@
+ else
+ echo "Do you accept the terms of the $TheLicense? \c"
+ fi
+- read acceptance
++ acceptance=yes
+ echo
+ if [ "$acceptance" = yes ]; then
+ break
+@@ -2397,7 +2397,7 @@
+ else
+ echo "Do you accept the terms of $affix license? \c"
+ fi
+- read acceptance
++ acceptance=yes
+ echo
+ if [ "$acceptance" = "yes" ]; then
+ break
+@@ -2443,7 +2443,7 @@
+ else
+ echo "Do you accept the terms of the license? \c"
+ fi
+- read acceptance
++ acceptance=yes
+ echo
+ if [ "$acceptance" = "yes" ]; then
+ break
+@@ -2524,7 +2524,7 @@
+ else
+ echo "Do you accept the terms of the $Platform License? \c"
+ fi
+- read acceptance
++ acceptance=yes
+ echo
+ if [ "$acceptance" = "yes" ]; then
+ break
diff --git a/var/spack/packages/tmuxinator/package.py b/var/spack/packages/tmuxinator/package.py
index 26c061cbd6..77ae063e5d 100644
--- a/var/spack/packages/tmuxinator/package.py
+++ b/var/spack/packages/tmuxinator/package.py
@@ -5,7 +5,7 @@ class Tmuxinator(Package):
homepage = "https://github.com/tmuxinator/tmuxinator"
url = "https://github.com/tmuxinator/tmuxinator"
- version('0.6.11',
+ version('0.6.11',
git='https://github.com/tmuxinator/tmuxinator',
tag='v0.6.11')
@@ -13,5 +13,4 @@ class Tmuxinator(Package):
def install(self, spec, prefix):
gem('build', 'tmuxinator.gemspec')
- gem('install', 'tmuxinator-{}.gem'.format(self.version))
-
+ gem('install', 'tmuxinator-{0}.gem'.format(self.version))
diff --git a/var/spack/packages/wx/package.py b/var/spack/packages/wx/package.py
index 1813a8c8a5..206fde7775 100644
--- a/var/spack/packages/wx/package.py
+++ b/var/spack/packages/wx/package.py
@@ -16,6 +16,8 @@ class Wx(Package):
version('3.0.1', 'dad1f1cd9d4c370cbc22700dc492da31',
url="https://sourceforge.net/projects/wxwindows/files/3.0.1/wxWidgets-3.0.1.tar.bz2")
+ depends_on('gtkplus')
+
def install(self, spec, prefix):
configure("--prefix=%s" % prefix, "--enable-unicode", "--disable-precomp-headers")
diff --git a/var/spack/packages/xerces-c/package.py b/var/spack/packages/xerces-c/package.py
new file mode 100644
index 0000000000..b59ab178ae
--- /dev/null
+++ b/var/spack/packages/xerces-c/package.py
@@ -0,0 +1,36 @@
+# FIXME:
+# This is a template package file for Spack. We've conveniently
+# put "FIXME" labels next to all the things you'll want to change.
+#
+# Once you've edited all the FIXME's, delete this whole message,
+# save this file, and test out your package like this:
+#
+# spack install xerces-c
+#
+# You can always get back here to change things with:
+#
+# spack edit xerces-c
+#
+# See the spack documentation for more information on building
+# packages.
+#
+from spack import *
+
+class XercesC(Package):
+ """ Xerces-C++ is a validating XML parser written in a portable subset of C++.
+ Xerces-C++ makes it easy to give your application the ability to read and
+ write XML data. A shared library is provided for parsing, generating,
+ manipulating, and validating XML documents using the DOM, SAX, and SAX2 APIs.
+ """
+
+ homepage = "https://xerces.apache.org/xerces-c"
+ url = "https://www.apache.org/dist/xerces/c/3/sources/xerces-c-3.1.2.tar.gz"
+ version('3.1.2', '9eb1048939e88d6a7232c67569b23985')
+
+ def install(self, spec, prefix):
+ configure("--prefix=%s" % prefix,
+ "--disable-network")
+ make("clean")
+ make()
+ make("install")
+