summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbin/spack5
-rw-r--r--lib/spack/spack/database.py4
-rw-r--r--lib/spack/spack/directory_layout.py4
-rw-r--r--lib/spack/spack/modules.py4
-rw-r--r--lib/spack/spack/packages.py15
-rw-r--r--lib/spack/spack/spec.py32
-rw-r--r--lib/spack/spack/test/spec_dag.py8
-rw-r--r--var/spack/packages/SAMRAI/package.py2
-rw-r--r--var/spack/packages/cleverleaf/package.py2
-rw-r--r--var/spack/packages/fftw/package.py96
-rw-r--r--var/spack/packages/fontconfig/package.py3
-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/ncurses/package.py2
-rw-r--r--var/spack/packages/ncurses/patch_gcc_5.txt12
-rw-r--r--var/spack/packages/paraview/package.py3
-rw-r--r--var/spack/packages/petsc/package.py2
-rw-r--r--var/spack/packages/wx/package.py2
21 files changed, 384 insertions, 29 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/spack/database.py b/lib/spack/spack/database.py
index d62a47547d..bf54055a24 100644
--- a/lib/spack/spack/database.py
+++ b/lib/spack/spack/database.py
@@ -211,6 +211,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/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/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/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/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/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/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/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/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/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/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")