summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md24
-rwxr-xr-xbin/spack2
-rw-r--r--lib/spack/docs/conf.py6
-rw-r--r--lib/spack/llnl/util/tty/colify.py18
-rw-r--r--lib/spack/llnl/util/tty/color.py5
-rw-r--r--lib/spack/spack/__init__.py14
-rw-r--r--lib/spack/spack/cmd/info.py16
-rw-r--r--lib/spack/spack/directory_layout.py7
-rw-r--r--lib/spack/spack/package.py11
-rwxr-xr-xshare/spack/logo/favicon.icobin0 -> 1150 bytes
-rw-r--r--share/spack/logo/spack-logo-text-64.pngbin0 -> 18644 bytes
-rw-r--r--share/spack/logo/spack-logo-white-text-48.pngbin0 -> 12201 bytes
-rw-r--r--var/spack/packages/activeharmony/package.py15
-rw-r--r--var/spack/packages/binutils/package.py14
-rw-r--r--var/spack/packages/bzip2/package.py4
-rw-r--r--var/spack/packages/gcc/package.py2
-rw-r--r--var/spack/packages/glm/package.py19
-rw-r--r--var/spack/packages/hdf5/package.py3
-rw-r--r--var/spack/packages/libxcb/package.py2
-rw-r--r--var/spack/packages/matio/package.py15
-rw-r--r--var/spack/packages/mpich/package.py9
-rw-r--r--var/spack/packages/ncdu/package.py28
-rw-r--r--var/spack/packages/netcdf/netcdf-4.3.3-mpi.patch25
-rw-r--r--var/spack/packages/netcdf/package.py29
-rw-r--r--var/spack/packages/openmpi/package.py10
-rw-r--r--var/spack/packages/scr/package.py6
-rw-r--r--var/spack/packages/swig/package.py2
-rw-r--r--var/spack/packages/trilinos/package.py50
28 files changed, 256 insertions, 80 deletions
diff --git a/README.md b/README.md
index 74d618ed2f..3a2c535d4e 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
-Spack
-===========
+![image](share/spack/logo/spack-logo-text-64.png "Spack")
+============
Spack is a package management tool designed to support multiple
versions and configurations of software on a wide variety of platforms
@@ -13,7 +13,7 @@ can coexist on the same system.
Most importantly, Spack is simple. It offers a simple spec syntax so
that users can specify versions and configuration options
concisely. Spack is also simple for package authors: package files are
-writtin in pure Python, and specs allow package authors to write a
+written in pure Python, and specs allow package authors to write a
single build script for many different builds of the same package.
See the
@@ -62,21 +62,9 @@ latest stable release.
Authors
----------------
-Spack was written by Todd Gamblin, tgamblin@llnl.gov.
-
-Significant contributions were also made by:
-
- * David Beckingsale
- * David Boehme
- * Alfredo Gimenez
- * Luc Jaulmes
- * Matt Legendre
- * Greg Lee
- * Adam Moody
- * Saravan Pantham
- * Joachim Protze
- * Bob Robey
- * Justin Too
+Many thanks go to Spack's [contributors](https://github.com/scalability-llnl/spack/graphs/contributors).
+
+Spack was originally written by Todd Gamblin, tgamblin@llnl.gov.
Release
----------------
diff --git a/bin/spack b/bin/spack
index 5c042edd2d..127a85f6fe 100755
--- a/bin/spack
+++ b/bin/spack
@@ -118,7 +118,7 @@ def main():
# If the user asked for it, don't check ssl certs.
if args.insecure:
- tty.warn("You asked for --insecure, which does not check SSL certificates or checksums.")
+ tty.warn("You asked for --insecure, which does not check SSL certificates.")
spack.curl.add_default_arg('-k')
# Try to load the particular command asked for and run it
diff --git a/lib/spack/docs/conf.py b/lib/spack/docs/conf.py
index 7303d7fef6..bce9ef0e94 100644
--- a/lib/spack/docs/conf.py
+++ b/lib/spack/docs/conf.py
@@ -149,7 +149,7 @@ html_theme = 'sphinx_rtd_theme'
# Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the
# documentation.
-#html_theme_options = [('show_copyright', False)]
+html_theme_options = { 'logo_only' : True }
# Add any paths that contain custom themes here, relative to this directory.
html_theme_path = ["_themes"]
@@ -163,12 +163,12 @@ html_theme_path = ["_themes"]
# The name of an image file (relative to this directory) to place at the top
# of the sidebar.
-#html_logo = None
+html_logo = '../../../share/spack/logo/spack-logo-white-text-48.png'
# The name of an image file (within the static path) to use as favicon of the
# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
# pixels large.
-#html_favicon = None
+html_favicon = '../../../share/spack/logo/favicon.ico'
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
diff --git a/lib/spack/llnl/util/tty/colify.py b/lib/spack/llnl/util/tty/colify.py
index 66c52c3968..db928444c7 100644
--- a/lib/spack/llnl/util/tty/colify.py
+++ b/lib/spack/llnl/util/tty/colify.py
@@ -33,8 +33,7 @@ import struct
from StringIO import StringIO
from llnl.util.tty import terminal_size
-from llnl.util.tty.color import clen
-
+from llnl.util.tty.color import clen, cextra
class ColumnConfig:
def __init__(self, cols):
@@ -42,7 +41,6 @@ class ColumnConfig:
self.line_length = 0
self.valid = True
self.widths = [0] * cols # does not include ansi colors
- self.cwidths = [0] * cols # includes ansi colors
def __repr__(self):
attrs = [(a,getattr(self, a)) for a in dir(self) if not a.startswith("__")]
@@ -66,8 +64,6 @@ def config_variable_cols(elts, console_width, padding, cols=0):
# Get a bound on the most columns we could possibly have.
# 'clen' ignores length of ansi color sequences.
lengths = [clen(e) for e in elts]
- clengths = [len(e) for e in elts]
-
max_cols = max(1, console_width / (min(lengths) + padding))
max_cols = min(len(elts), max_cols)
@@ -85,7 +81,6 @@ def config_variable_cols(elts, console_width, padding, cols=0):
if conf.widths[col] < (length + p):
conf.line_length += length + p - conf.widths[col]
conf.widths[col] = length + p
- conf.cwidths[col] = clengths[i] + p
conf.valid = (conf.line_length < console_width)
try:
@@ -118,7 +113,6 @@ def config_uniform_cols(elts, console_width, padding, cols=0):
config = ColumnConfig(cols)
config.widths = [max_len] * cols
- config.cwidths = [max_clen] * cols
return config
@@ -147,9 +141,6 @@ def colify(elts, **options):
method=<string> Method to use to fit columns. Options are variable or uniform.
Variable-width columns are tighter, uniform columns are all the
same width and fit less data on the screen.
-
- len=<func> Function to use for calculating string length.
- Useful for ignoring ansi color. Default is 'len'.
"""
# Get keyword arguments or set defaults
cols = options.pop("cols", 0)
@@ -199,9 +190,6 @@ def colify(elts, **options):
raise ValueError("method must be one of: " + allowed_methods)
cols = config.cols
- formats = ["%%-%ds" % width for width in config.cwidths[:-1]]
- formats.append("%s") # last column has no trailing space
-
rows = (len(elts) + cols - 1) / cols
rows_last_col = len(elts) % rows
@@ -209,7 +197,9 @@ def colify(elts, **options):
output.write(" " * indent)
for col in xrange(cols):
elt = col * rows + row
- output.write(formats[col] % elts[elt])
+ width = config.widths[col] + cextra(elts[elt])
+ fmt = '%%-%ds' % width
+ output.write(fmt % elts[elt])
output.write("\n")
row += 1
diff --git a/lib/spack/llnl/util/tty/color.py b/lib/spack/llnl/util/tty/color.py
index 22080a7b37..0d09303da0 100644
--- a/lib/spack/llnl/util/tty/color.py
+++ b/lib/spack/llnl/util/tty/color.py
@@ -158,6 +158,11 @@ def clen(string):
return len(re.sub(r'\033[^m]*m', '', string))
+def cextra(string):
+ """"Length of extra color characters in a string"""
+ return len(''.join(re.findall(r'\033[^m]*m', string)))
+
+
def cwrite(string, stream=sys.stdout, color=None):
"""Replace all color expressions in string with ANSI control
codes and write the result to the stream. If color is
diff --git a/lib/spack/spack/__init__.py b/lib/spack/spack/__init__.py
index caa09eb6e0..6e8d41895f 100644
--- a/lib/spack/spack/__init__.py
+++ b/lib/spack/spack/__init__.py
@@ -27,24 +27,26 @@ import tempfile
from llnl.util.filesystem import *
# This lives in $prefix/lib/spack/spack/__file__
-prefix = ancestor(__file__, 4)
+spack_root = ancestor(__file__, 4)
# The spack script itself
-spack_file = join_path(prefix, "bin", "spack")
+spack_file = join_path(spack_root, "bin", "spack")
# spack directory hierarchy
-etc_path = join_path(prefix, "etc")
-lib_path = join_path(prefix, "lib", "spack")
+lib_path = join_path(spack_root, "lib", "spack")
build_env_path = join_path(lib_path, "env")
module_path = join_path(lib_path, "spack")
compilers_path = join_path(module_path, "compilers")
test_path = join_path(module_path, "test")
hooks_path = join_path(module_path, "hooks")
-var_path = join_path(prefix, "var", "spack")
+var_path = join_path(spack_root, "var", "spack")
stage_path = join_path(var_path, "stage")
+share_path = join_path(spack_root, "share", "spack")
+
+prefix = spack_root
opt_path = join_path(prefix, "opt")
install_path = join_path(opt_path, "spack")
-share_path = join_path(prefix, "share", "spack")
+etc_path = join_path(prefix, "etc")
#
# Set up the packages database.
diff --git a/lib/spack/spack/cmd/info.py b/lib/spack/spack/cmd/info.py
index c6209523f0..085e4db44d 100644
--- a/lib/spack/spack/cmd/info.py
+++ b/lib/spack/spack/cmd/info.py
@@ -65,11 +65,21 @@ def print_text_info(pkg):
print "None"
else:
pad = padder(pkg.variants, 4)
+
+ maxv = max(len(v) for v in sorted(pkg.variants))
+ fmt = "%%-%ss%%-10s%%s" % (maxv + 4)
+
+ print " " + fmt % ('Name', 'Default', 'Description')
+ print
for name in sorted(pkg.variants):
v = pkg.variants[name]
- print " %s%s" % (
- pad(('+' if v.default else '-') + name + ':'),
- "\n".join(textwrap.wrap(v.description)))
+ default = 'on' if v.default else 'off'
+
+ lines = textwrap.wrap(v.description)
+ lines[1:] = [" " + (" " * maxv) + l for l in lines[1:]]
+ desc = "\n".join(lines)
+
+ print " " + fmt % (name, default, desc)
print
print "Dependencies:"
diff --git a/lib/spack/spack/directory_layout.py b/lib/spack/spack/directory_layout.py
index e61929d8fd..85ecc1ce2b 100644
--- a/lib/spack/spack/directory_layout.py
+++ b/lib/spack/spack/directory_layout.py
@@ -187,14 +187,9 @@ class YamlDirectoryLayout(DirectoryLayout):
def relative_path_for_spec(self, spec):
_check_concrete(spec)
- enabled_variants = (
- '-' + v.name for v in spec.variants.values()
- if v.enabled)
-
- dir_name = "%s-%s%s-%s" % (
+ dir_name = "%s-%s-%s" % (
spec.name,
spec.version,
- ''.join(enabled_variants),
spec.dag_hash(self.hash_len))
path = join_path(
diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py
index 3507807373..61606d0590 100644
--- a/lib/spack/spack/package.py
+++ b/lib/spack/spack/package.py
@@ -438,9 +438,16 @@ class Package(object):
raise ValueError("Can only get a stage for a concrete package.")
if self._stage is None:
+ # Construct a mirror path (TODO: get this out of package.py)
mp = spack.mirror.mirror_archive_path(self.spec)
- self._stage = Stage(
- self.fetcher, mirror_path=mp, name=self.spec.short_spec)
+
+ # Construct a path where the stage should build..
+ s = self.spec
+ stage_name = "%s-%s-%s" % (s.name, s.version, s.dag_hash())
+
+ # Build the stage
+ self._stage = Stage(self.fetcher, mirror_path=mp, name=stage_name)
+
return self._stage
diff --git a/share/spack/logo/favicon.ico b/share/spack/logo/favicon.ico
new file mode 100755
index 0000000000..95a67ae5b1
--- /dev/null
+++ b/share/spack/logo/favicon.ico
Binary files differ
diff --git a/share/spack/logo/spack-logo-text-64.png b/share/spack/logo/spack-logo-text-64.png
new file mode 100644
index 0000000000..8dad4c519f
--- /dev/null
+++ b/share/spack/logo/spack-logo-text-64.png
Binary files differ
diff --git a/share/spack/logo/spack-logo-white-text-48.png b/share/spack/logo/spack-logo-white-text-48.png
new file mode 100644
index 0000000000..9e60867e81
--- /dev/null
+++ b/share/spack/logo/spack-logo-white-text-48.png
Binary files differ
diff --git a/var/spack/packages/activeharmony/package.py b/var/spack/packages/activeharmony/package.py
new file mode 100644
index 0000000000..45dcc7c0e8
--- /dev/null
+++ b/var/spack/packages/activeharmony/package.py
@@ -0,0 +1,15 @@
+from spack import *
+
+class Activeharmony(Package):
+ """Active Harmony: a framework for auto-tuning (the automated search for values to improve the performance of a target application)."""
+ homepage = "http://www.dyninst.org/harmony"
+ url = "http://www.dyninst.org/sites/default/files/downloads/harmony/ah-4.5.tar.gz"
+
+ version('4.5', 'caee5b864716d376e2c25d739251b2a9')
+
+ def install(self, spec, prefix):
+ make("CFLAGS=-O3")
+ make("install", 'PREFIX=%s' % prefix)
+
+from spack import *
+
diff --git a/var/spack/packages/binutils/package.py b/var/spack/packages/binutils/package.py
index 5a3059bbcf..0c33bf0426 100644
--- a/var/spack/packages/binutils/package.py
+++ b/var/spack/packages/binutils/package.py
@@ -10,8 +10,20 @@ class Binutils(Package):
version('2.23.2', '4f8fa651e35ef262edc01d60fb45702e')
version('2.20.1', '2b9dc8f2b7dbd5ec5992c6e29de0b764')
+ variant('libiberty', default=False, description='Also install libiberty.')
+
def install(self, spec, prefix):
- configure("--prefix=%s" % prefix)
+ configure_args = [
+ '--prefix=%s' % prefix,
+ '--disable-dependency-tracking',
+ '--enable-interwork',
+ '--enable-multilib',
+ '--enable-64-bit-bfd',
+ '--enable-targets=all']
+
+ if '+libiberty' in spec:
+ configure_args.append('--enable-install-libiberty')
+ configure(*configure_args)
make()
make("install")
diff --git a/var/spack/packages/bzip2/package.py b/var/spack/packages/bzip2/package.py
index fbd5869a53..d88336664d 100644
--- a/var/spack/packages/bzip2/package.py
+++ b/var/spack/packages/bzip2/package.py
@@ -22,8 +22,10 @@ class Bzip2(Package):
bzip2_exe = join_path(prefix.bin, 'bzip2')
install('bzip2-shared', bzip2_exe)
- for libfile in glob('libbz2.so*'):
+ for i, libfile in enumerate(glob('libbz2.so*')):
install(libfile, prefix.lib)
+ if i == 0:
+ symlink(join_path(prefix.lib, libfile), join_path(prefix.lib, 'libbz2.so'))
bunzip2 = join_path(prefix.bin, 'bunzip2')
remove(bunzip2)
diff --git a/var/spack/packages/gcc/package.py b/var/spack/packages/gcc/package.py
index 5e3d1a3efa..2fc6794b70 100644
--- a/var/spack/packages/gcc/package.py
+++ b/var/spack/packages/gcc/package.py
@@ -47,7 +47,7 @@ class Gcc(Package):
depends_on("gmp")
depends_on("mpc") # when @4.5:
depends_on("libelf")
- depends_on("binutils")
+ depends_on("binutils~libiberty")
# Save these until we can do optional deps.
#depends_on("isl")
diff --git a/var/spack/packages/glm/package.py b/var/spack/packages/glm/package.py
new file mode 100644
index 0000000000..d00c301b4c
--- /dev/null
+++ b/var/spack/packages/glm/package.py
@@ -0,0 +1,19 @@
+from spack import *
+
+
+class Glm(Package):
+ """
+ OpenGL Mathematics (GLM) is a header only C++ mathematics library for graphics software based on
+ the OpenGL Shading Language (GLSL) specification.
+ """
+
+ homepage = "https://github.com/g-truc/glm"
+ url = "https://github.com/g-truc/glm/archive/0.9.7.1.tar.gz"
+
+ version('0.9.7.1', '61af6639cdf652d1cdd7117190afced8')
+
+ 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/hdf5/package.py b/var/spack/packages/hdf5/package.py
index 992dd8ec70..15e0ef9338 100644
--- a/var/spack/packages/hdf5/package.py
+++ b/var/spack/packages/hdf5/package.py
@@ -10,7 +10,8 @@ class Hdf5(Package):
url = "http://www.hdfgroup.org/ftp/HDF5/releases/hdf5-1.8.13/src/hdf5-1.8.13.tar.gz"
list_url = "http://www.hdfgroup.org/ftp/HDF5/releases"
list_depth = 3
-
+
+ version('1.8.15', '03cccb5b33dbe975fdcd8ae9dc021f24')
version('1.8.13', 'c03426e9e77d7766944654280b467289')
depends_on("mpi")
diff --git a/var/spack/packages/libxcb/package.py b/var/spack/packages/libxcb/package.py
index 521cd0d475..16a5525c0d 100644
--- a/var/spack/packages/libxcb/package.py
+++ b/var/spack/packages/libxcb/package.py
@@ -10,7 +10,7 @@ class Libxcb(Package):
url = "http://xcb.freedesktop.org/dist/libxcb-1.11.tar.gz"
version('1.11', '1698dd837d7e6e94d029dbe8b3a82deb')
-
+ version('1.11.1', '118623c15a96b08622603a71d8789bf3')
depends_on("python")
depends_on("xcb-proto")
diff --git a/var/spack/packages/matio/package.py b/var/spack/packages/matio/package.py
new file mode 100644
index 0000000000..12cfb80926
--- /dev/null
+++ b/var/spack/packages/matio/package.py
@@ -0,0 +1,15 @@
+from spack import *
+
+
+class Matio(Package):
+ """matio is an C library for reading and writing Matlab MAT files"""
+ homepage = "http://sourceforge.net/projects/matio/"
+ url = "http://downloads.sourceforge.net/project/matio/matio/1.5.2/matio-1.5.2.tar.gz"
+
+ version('1.5.2', '85b007b99916c63791f28398f6a4c6f1')
+
+ def install(self, spec, prefix):
+ configure('--prefix=%s' % prefix)
+
+ make()
+ make("install")
diff --git a/var/spack/packages/mpich/package.py b/var/spack/packages/mpich/package.py
index b6b2dfde21..d48bf878f6 100644
--- a/var/spack/packages/mpich/package.py
+++ b/var/spack/packages/mpich/package.py
@@ -33,10 +33,15 @@ class Mpich(Package):
list_url = "http://www.mpich.org/static/downloads/"
list_depth = 2
+ version('3.1.4', '2ab544607986486562e076b83937bba2')
+ version('3.1.3', '93cb17f91ac758cbf9174ecb03563778')
+ version('3.1.2', '7fbf4b81dcb74b07ae85939d1ceee7f1')
+ version('3.1.1', '40dc408b1e03cc36d80209baaa2d32b7')
+ version('3.1', '5643dd176499bfb7d25079aaff25f2ec')
version('3.0.4', '9c5d5d4fe1e17dd12153f40bc5b6dbc0')
- provides('mpi@:3', when='@3:')
- provides('mpi@:1', when='@1:')
+ provides('mpi@:3.0', when='@3:')
+ provides('mpi@:1.3', when='@1:')
def setup_dependent_environment(self, module, spec, dep_spec):
"""For dependencies, make mpicc's use spack wrapper."""
diff --git a/var/spack/packages/ncdu/package.py b/var/spack/packages/ncdu/package.py
new file mode 100644
index 0000000000..234f9730d6
--- /dev/null
+++ b/var/spack/packages/ncdu/package.py
@@ -0,0 +1,28 @@
+from spack import *
+
+class Ncdu(Package):
+ """
+ Ncdu is a disk usage analyzer with an ncurses interface. It is designed
+ to find space hogs on a remote server where you don't have an entire
+ gaphical setup available, but it is a useful tool even on regular desktop
+ systems. Ncdu aims to be fast, simple and easy to use, and should be able
+ to run in any minimal POSIX-like environment with ncurses installed.
+ """
+
+ homepage = "http://dev.yorhel.nl/ncdu"
+ url = "http://dev.yorhel.nl/download/ncdu-1.11.tar.gz"
+
+ version('1.11', '9e44240a5356b029f05f0e70a63c4d12')
+ version('1.10', '7535decc8d54eca811493e82d4bfab2d')
+ version('1.9' , '93258079db897d28bb8890e2db89b1fb')
+ version('1.8' , '94d7a821f8a0d7ba8ef3dd926226f7d5')
+ version('1.7' , '172047c29d232724cc62e773e82e592a')
+
+ depends_on("ncurses")
+
+ def install(self, spec, prefix):
+ configure('--prefix=%s' % prefix,
+ '--with-ncurses=%s' % spec['ncurses'])
+
+ make()
+ make("install")
diff --git a/var/spack/packages/netcdf/netcdf-4.3.3-mpi.patch b/var/spack/packages/netcdf/netcdf-4.3.3-mpi.patch
new file mode 100644
index 0000000000..46dda5fc9d
--- /dev/null
+++ b/var/spack/packages/netcdf/netcdf-4.3.3-mpi.patch
@@ -0,0 +1,25 @@
+diff -Nur netcdf-4.3.3/CMakeLists.txt netcdf-4.3.3.mpi/CMakeLists.txt
+--- netcdf-4.3.3/CMakeLists.txt 2015-02-12 16:44:35.000000000 -0500
++++ netcdf-4.3.3.mpi/CMakeLists.txt 2015-10-14 16:44:41.176300658 -0400
+@@ -753,6 +753,7 @@
+ SET(USE_PARALLEL OFF CACHE BOOL "")
+ MESSAGE(STATUS "Cannot find HDF5 library built with parallel support. Disabling parallel build.")
+ ELSE()
++ FIND_PACKAGE(MPI REQUIRED)
+ SET(USE_PARALLEL ON CACHE BOOL "")
+ SET(STATUS_PARALLEL "ON")
+ ENDIF()
+diff -Nur netcdf-4.3.3/liblib/CMakeLists.txt netcdf-4.3.3.mpi/liblib/CMakeLists.txt
+--- netcdf-4.3.3/liblib/CMakeLists.txt 2015-02-12 16:44:35.000000000 -0500
++++ netcdf-4.3.3.mpi/liblib/CMakeLists.txt 2015-10-14 16:44:57.757793634 -0400
+@@ -71,6 +71,10 @@
+ SET(TLL_LIBS ${TLL_LIBS} ${CURL_LIBRARY})
+ ENDIF()
+
++IF(USE_PARALLEL)
++ SET(TLL_LIBS ${TLL_LIBS} ${MPI_C_LIBRARIES})
++ENDIF()
++
+ IF(USE_HDF4)
+ SET(TLL_LIBS ${TLL_LIBS} ${HDF4_LIBRARIES})
+ ENDIF()
diff --git a/var/spack/packages/netcdf/package.py b/var/spack/packages/netcdf/package.py
index 34284ea725..e1e0d836c6 100644
--- a/var/spack/packages/netcdf/package.py
+++ b/var/spack/packages/netcdf/package.py
@@ -1,28 +1,27 @@
from spack import *
class Netcdf(Package):
- """NetCDF is a set of software libraries and self-describing, machine-independent
- data formats that support the creation, access, and sharing of array-oriented
- scientific data."""
+ """NetCDF is a set of software libraries and self-describing, machine-independent
+ data formats that support the creation, access, and sharing of array-oriented
+ scientific data."""
homepage = "http://www.unidata.ucar.edu/software/netcdf/"
url = "ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf-4.3.3.tar.gz"
version('4.3.3', '5fbd0e108a54bd82cb5702a73f56d2ae')
+ patch('netcdf-4.3.3-mpi.patch')
+
# Dependencies:
- # >HDF5
+ # >HDF5
depends_on("hdf5")
- def install(self, spec, prefix):
- configure(
- "--prefix=%s" % prefix,
- "--disable-dap", # Disable DAP.
- "--disable-shared", # Don't build shared libraries (use static libs).
- "CPPFLAGS=-I%s/include" % spec['hdf5'].prefix, # Link HDF5's include dir.
- "LDFLAGS=-L%s/lib" % spec['hdf5'].prefix) # Link HDF5's lib dir.
-
- make("install")
+ def install(self, spec, prefix):
+ with working_dir('spack-build', create=True):
+ cmake('..',
+ "-DCMAKE_INSTALL_PREFIX:PATH=%s" % prefix,
+ "-DENABLE_DAP:BOOL=OFF", # Disable DAP.
+ "-DBUILD_SHARED_LIBS:BOOL=OFF") # Don't build shared libraries (use static libs).
- # Check the newly installed netcdf package. Currently disabled.
- # make("check")
+ make()
+ make("install")
diff --git a/var/spack/packages/openmpi/package.py b/var/spack/packages/openmpi/package.py
index 7e84cbaf65..f9d0034878 100644
--- a/var/spack/packages/openmpi/package.py
+++ b/var/spack/packages/openmpi/package.py
@@ -11,15 +11,19 @@ class Openmpi(Package):
homepage = "http://www.open-mpi.org"
- version('1.8.2', 'ab538ed8e328079d566fc797792e016e',
- url='http://www.open-mpi.org/software/ompi/v1.8/downloads/openmpi-1.8.2.tar.gz')
+ version('1.10.0', '280cf952de68369cebaca886c5ce0304',
+ url = "http://www.open-mpi.org/software/ompi/v1.10/downloads/openmpi-1.10.0.tar.bz2")
+ version('1.8.8', '0dab8e602372da1425e9242ae37faf8c',
+ url = 'http://www.open-mpi.org/software/ompi/v1.8/downloads/openmpi-1.8.8.tar.bz2')
version('1.6.5', '03aed2a4aa4d0b27196962a2a65fc475',
url = "http://www.open-mpi.org/software/ompi/v1.6/downloads/openmpi-1.6.5.tar.bz2")
patch('ad_lustre_rwcontig_open_source.patch', when="@1.6.5")
patch('llnl-platforms.patch', when="@1.6.5")
- provides('mpi@:2')
+ provides('mpi@:2.2', when='@1.6.5') # Open MPI 1.6.5 supports MPI-2.2
+ provides('mpi@:3.0', when='@1.8.8') # Open MPI 1.8.8 supports MPI-3.0
+ provides('mpi@:3.0', when='@1.10.0') # Open MPI 1.10.0 supports MPI-3.0
def install(self, spec, prefix):
config_args = ["--prefix=%s" % prefix]
diff --git a/var/spack/packages/scr/package.py b/var/spack/packages/scr/package.py
index 74b75a8742..9fb758f072 100644
--- a/var/spack/packages/scr/package.py
+++ b/var/spack/packages/scr/package.py
@@ -28,12 +28,14 @@ class Scr(Package):
"""SCR caches checkpoint data in storage on the compute nodes of a
Linux cluster to provide a fast, scalable checkpoint/restart
capability for MPI codes"""
+
homepage = "https://computation.llnl.gov/project/scr/"
- url = "http://downloads.sourceforge.net/project/scalablecr/releases/scr-1.1-7.tar.gz"
depends_on("mpi")
+# depends_on("dtcmp")
- version('1.1-7', 'a5930e9ab27d1b7049447c2fd7734ebd')
+ version('1.1-7', 'a5930e9ab27d1b7049447c2fd7734ebd', url='http://downloads.sourceforge.net/project/scalablecr/releases/scr-1.1-7.tar.gz')
+ version('1.1.8', '6a0f11ad18e27fcfc00a271ff587b06e', url='https://github.com/hpc/scr/releases/download/v1.1.8/scr-1.1.8.tar.gz')
def install(self, spec, prefix):
configure("--prefix=" + prefix,
diff --git a/var/spack/packages/swig/package.py b/var/spack/packages/swig/package.py
index d7a3d815b9..ee536d7063 100644
--- a/var/spack/packages/swig/package.py
+++ b/var/spack/packages/swig/package.py
@@ -38,6 +38,8 @@ class Swig(Package):
version('3.0.2', '62f9b0d010cef36a13a010dc530d0d41')
+ depends_on('pcre')
+
def install(self, spec, prefix):
configure("--prefix=%s" % prefix)
make()
diff --git a/var/spack/packages/trilinos/package.py b/var/spack/packages/trilinos/package.py
new file mode 100644
index 0000000000..7c43f796a4
--- /dev/null
+++ b/var/spack/packages/trilinos/package.py
@@ -0,0 +1,50 @@
+from spack import *
+
+
+class Trilinos(Package):
+ """
+ The Trilinos Project is an effort to develop algorithms and enabling technologies within an object-oriented
+ software framework for the solution of large-scale, complex multi-physics engineering and scientific problems.
+ A unique design feature of Trilinos is its focus on packages.
+ """
+ homepage = "https://trilinos.org/"
+ url = "http://trilinos.csbsju.edu/download/files/trilinos-12.2.1-Source.tar.gz"
+
+ version('12.2.1', '6161926ea247863c690e927687f83be9')
+ version('12.0.1', 'bd99741d047471e127b8296b2ec08017')
+ version('11.14.3', '2f4f83f8333e4233c57d0f01c4b57426')
+ version('11.14.2', 'a43590cf896c677890d75bfe75bc6254')
+ version('11.14.1', '40febc57f76668be8b6a77b7607bb67f')
+
+ variant('mpi', default=True, description='Add a dependency on MPI and enables MPI dependent packages')
+
+ # Everything should be compiled with -fpic
+ depends_on('blas')
+ depends_on('lapack')
+ depends_on('boost')
+ depends_on('netcdf')
+ depends_on('matio')
+ depends_on('glm')
+ depends_on('swig')
+ depends_on('mpi', when='+mpi')
+
+ def install(self, spec, prefix):
+
+ options = [
+ '-DTrilinos_ENABLE_ALL_PACKAGES:BOOL=ON',
+ '-DTrilinos_ENABLE_TESTS:BOOL=OFF',
+ '-DTrilinos_ENABLE_EXAMPLES:BOOL=OFF',
+ '-DBUILD_SHARED_LIBS:BOOL=ON',
+ '-DBLAS_LIBRARY_DIRS:PATH=%s' % spec['blas'].prefix,
+ '-DLAPACK_LIBRARY_DIRS:PATH=%s' % spec['lapack'].prefix
+ ]
+ if '+mpi' in spec:
+ mpi_options = ['-DTPL_ENABLE_MPI:BOOL=ON']
+ options.extend(mpi_options)
+
+ # -DCMAKE_INSTALL_PREFIX and all the likes...
+ options.extend(std_cmake_args)
+ with working_dir('spack-build', create=True):
+ cmake('..', *options)
+ make()
+ make('install')