summaryrefslogtreecommitdiff
path: root/var
diff options
context:
space:
mode:
Diffstat (limited to 'var')
-rw-r--r--var/spack/repos/builtin/packages/R/package.py2
-rw-r--r--var/spack/repos/builtin/packages/adios/adios_1100.patch29
-rw-r--r--var/spack/repos/builtin/packages/adios/package.py22
-rw-r--r--var/spack/repos/builtin/packages/armadillo/package.py14
-rw-r--r--var/spack/repos/builtin/packages/arpack-ng/package.py34
-rw-r--r--var/spack/repos/builtin/packages/atlas/package.py36
-rw-r--r--var/spack/repos/builtin/packages/bamtools/package.py45
-rw-r--r--var/spack/repos/builtin/packages/bash-completion/package.py64
-rw-r--r--var/spack/repos/builtin/packages/bedtools2/package.py43
-rw-r--r--var/spack/repos/builtin/packages/binutils/package.py4
-rw-r--r--var/spack/repos/builtin/packages/boost/package.py29
-rw-r--r--var/spack/repos/builtin/packages/bpp-suite/package.py1
-rw-r--r--var/spack/repos/builtin/packages/cantera/package.py3
-rw-r--r--var/spack/repos/builtin/packages/cdo/package.py85
-rw-r--r--var/spack/repos/builtin/packages/cereal/package.py1
-rw-r--r--var/spack/repos/builtin/packages/cgal/package.py49
-rw-r--r--var/spack/repos/builtin/packages/charm/mpi.patch19
-rw-r--r--var/spack/repos/builtin/packages/charm/package.py172
-rw-r--r--var/spack/repos/builtin/packages/clhep/darwin/CLHEP.patch11
-rw-r--r--var/spack/repos/builtin/packages/clhep/package.py81
-rw-r--r--var/spack/repos/builtin/packages/cmake/package.py12
-rw-r--r--var/spack/repos/builtin/packages/cp2k/package.py54
-rw-r--r--var/spack/repos/builtin/packages/cube/package.py13
-rw-r--r--var/spack/repos/builtin/packages/cuda/package.py2
-rw-r--r--var/spack/repos/builtin/packages/curl/package.py2
-rw-r--r--var/spack/repos/builtin/packages/daal/package.py2
-rw-r--r--var/spack/repos/builtin/packages/darshan-runtime/package.py65
-rw-r--r--var/spack/repos/builtin/packages/darshan-util/package.py41
-rw-r--r--var/spack/repos/builtin/packages/dealii/package.py17
-rw-r--r--var/spack/repos/builtin/packages/elk/package.py6
-rw-r--r--var/spack/repos/builtin/packages/elpa/package.py31
-rw-r--r--var/spack/repos/builtin/packages/espresso/package.py2
-rw-r--r--var/spack/repos/builtin/packages/extrae/package.py10
-rw-r--r--var/spack/repos/builtin/packages/fenics/hdf5~cxx-detection.patch11
-rw-r--r--var/spack/repos/builtin/packages/fenics/package.py35
-rw-r--r--var/spack/repos/builtin/packages/fontconfig/package.py5
-rw-r--r--var/spack/repos/builtin/packages/gcc/package.py14
-rw-r--r--var/spack/repos/builtin/packages/gdb/package.py11
-rw-r--r--var/spack/repos/builtin/packages/geant4/package.py85
-rw-r--r--var/spack/repos/builtin/packages/git-lfs/package.py23
-rw-r--r--var/spack/repos/builtin/packages/git/package.py16
-rw-r--r--var/spack/repos/builtin/packages/glib/no-Werror=format-security.patch16
-rw-r--r--var/spack/repos/builtin/packages/glib/package.py19
-rw-r--r--var/spack/repos/builtin/packages/gmake/package.py42
-rw-r--r--var/spack/repos/builtin/packages/gmp/package.py5
-rw-r--r--var/spack/repos/builtin/packages/gmsh/package.py6
-rw-r--r--var/spack/repos/builtin/packages/go-bootstrap/package.py56
-rw-r--r--var/spack/repos/builtin/packages/go/package.py57
-rw-r--r--var/spack/repos/builtin/packages/grackle/Make.mach.template71
-rw-r--r--var/spack/repos/builtin/packages/grackle/package.py89
-rw-r--r--var/spack/repos/builtin/packages/grib-api/package.py80
-rw-r--r--var/spack/repos/builtin/packages/h5hut/package.py70
-rw-r--r--var/spack/repos/builtin/packages/hadoop/package.py53
-rw-r--r--var/spack/repos/builtin/packages/harfbuzz/package.py3
-rw-r--r--var/spack/repos/builtin/packages/hdf/package.py14
-rw-r--r--var/spack/repos/builtin/packages/hdf5/package.py3
-rw-r--r--var/spack/repos/builtin/packages/hepmc/package.py55
-rw-r--r--var/spack/repos/builtin/packages/heppdt/package.py48
-rw-r--r--var/spack/repos/builtin/packages/hpctoolkit-externals/package.py39
-rw-r--r--var/spack/repos/builtin/packages/hpctoolkit/package.py55
-rw-r--r--var/spack/repos/builtin/packages/hpl/package.py2
-rw-r--r--var/spack/repos/builtin/packages/hwloc/package.py1
-rw-r--r--var/spack/repos/builtin/packages/hypre/package.py14
-rw-r--r--var/spack/repos/builtin/packages/icu4c/package.py23
-rw-r--r--var/spack/repos/builtin/packages/intel-parallel-studio/package.py49
-rw-r--r--var/spack/repos/builtin/packages/intel/package.py2
-rw-r--r--var/spack/repos/builtin/packages/ipopt/package.py5
-rw-r--r--var/spack/repos/builtin/packages/ipp/package.py2
-rw-r--r--var/spack/repos/builtin/packages/itstool/package.py44
-rw-r--r--var/spack/repos/builtin/packages/jdk/package.py6
-rw-r--r--var/spack/repos/builtin/packages/jemalloc/package.py2
-rw-r--r--var/spack/repos/builtin/packages/julia/package.py9
-rw-r--r--var/spack/repos/builtin/packages/libemos/package.py52
-rw-r--r--var/spack/repos/builtin/packages/libgd/package.py35
-rw-r--r--var/spack/repos/builtin/packages/libint/package.py104
-rw-r--r--var/spack/repos/builtin/packages/libmesh/package.py42
-rw-r--r--var/spack/repos/builtin/packages/libpng/package.py4
-rw-r--r--var/spack/repos/builtin/packages/libquo/package.py68
-rw-r--r--var/spack/repos/builtin/packages/libuuid/package.py3
-rw-r--r--var/spack/repos/builtin/packages/libxc/package.py20
-rw-r--r--var/spack/repos/builtin/packages/libxstream/package.py50
-rw-r--r--var/spack/repos/builtin/packages/llvm/package.py155
-rw-r--r--var/spack/repos/builtin/packages/lulesh/package.py55
-rw-r--r--var/spack/repos/builtin/packages/lulesh/remove_defaults.patch60
-rw-r--r--var/spack/repos/builtin/packages/m4/package.py6
-rw-r--r--var/spack/repos/builtin/packages/magics/no_hardcoded_python.patch5
-rw-r--r--var/spack/repos/builtin/packages/magics/package.py115
-rw-r--r--var/spack/repos/builtin/packages/magics/resolve_isnan_ambiguity.patch73
-rw-r--r--var/spack/repos/builtin/packages/mbedtls/package.py1
-rw-r--r--var/spack/repos/builtin/packages/mercurial/package.py35
-rw-r--r--var/spack/repos/builtin/packages/metis/package.py157
-rw-r--r--var/spack/repos/builtin/packages/mfem/package.py3
-rw-r--r--var/spack/repos/builtin/packages/mkl/package.py51
-rw-r--r--var/spack/repos/builtin/packages/moab/package.py2
-rw-r--r--var/spack/repos/builtin/packages/mpip/package.py44
-rw-r--r--var/spack/repos/builtin/packages/mumps/package.py8
-rw-r--r--var/spack/repos/builtin/packages/mvapich2/package.py13
-rw-r--r--var/spack/repos/builtin/packages/ncurses/package.py5
-rw-r--r--var/spack/repos/builtin/packages/ncview/package.py1
-rw-r--r--var/spack/repos/builtin/packages/netcdf/package.py14
-rw-r--r--var/spack/repos/builtin/packages/netlib-lapack/package.py35
-rw-r--r--var/spack/repos/builtin/packages/netlib-scalapack/package.py46
-rw-r--r--var/spack/repos/builtin/packages/nwchem/package.py13
-rw-r--r--var/spack/repos/builtin/packages/octopus/package.py8
-rw-r--r--var/spack/repos/builtin/packages/openblas/package.py50
-rw-r--r--var/spack/repos/builtin/packages/openmpi/package.py5
-rw-r--r--var/spack/repos/builtin/packages/openssl/package.py23
-rw-r--r--var/spack/repos/builtin/packages/opium/package.py10
-rw-r--r--var/spack/repos/builtin/packages/pango/package.py1
-rw-r--r--var/spack/repos/builtin/packages/papi/package.py1
-rw-r--r--var/spack/repos/builtin/packages/parmetis/package.py18
-rw-r--r--var/spack/repos/builtin/packages/pdt/package.py13
-rw-r--r--var/spack/repos/builtin/packages/petsc/package.py17
-rw-r--r--var/spack/repos/builtin/packages/pexsi/package.py4
-rw-r--r--var/spack/repos/builtin/packages/pgi/package.py2
-rw-r--r--var/spack/repos/builtin/packages/pixman/package.py1
-rw-r--r--var/spack/repos/builtin/packages/plumed/package.py8
-rw-r--r--var/spack/repos/builtin/packages/psi4/package.py11
-rw-r--r--var/spack/repos/builtin/packages/py-beautifulsoup4/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-numpy/package.py6
-rw-r--r--var/spack/repos/builtin/packages/py-pil/package.py3
-rw-r--r--var/spack/repos/builtin/packages/py-pillow/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-proj/package.py52
-rw-r--r--var/spack/repos/builtin/packages/py-py2neo/package.py7
-rw-r--r--var/spack/repos/builtin/packages/py-scipy/package.py20
-rw-r--r--var/spack/repos/builtin/packages/py-yt/package.py78
-rw-r--r--var/spack/repos/builtin/packages/python/ncurses.patch11
-rw-r--r--var/spack/repos/builtin/packages/python/package.py4
-rw-r--r--var/spack/repos/builtin/packages/qt/package.py93
-rw-r--r--var/spack/repos/builtin/packages/qt/qt4-corewlan-new-osx.patch16
-rw-r--r--var/spack/repos/builtin/packages/qt/qt4-el-capitan.patch31
-rw-r--r--var/spack/repos/builtin/packages/qt/qt4-pcre-include-conflict.patch16
-rw-r--r--var/spack/repos/builtin/packages/qthreads/ldflags.patch11
-rw-r--r--var/spack/repos/builtin/packages/qthreads/package.py22
-rw-r--r--var/spack/repos/builtin/packages/r-stringi/package.py2
-rw-r--r--var/spack/repos/builtin/packages/root/math_uint.patch115
-rw-r--r--var/spack/repos/builtin/packages/root/package.py89
-rw-r--r--var/spack/repos/builtin/packages/root/root6-60606-mathmore.patch29
-rw-r--r--var/spack/repos/builtin/packages/samtools/package.py3
-rw-r--r--var/spack/repos/builtin/packages/silo/package.py3
-rw-r--r--var/spack/repos/builtin/packages/spark/package.py75
-rw-r--r--var/spack/repos/builtin/packages/stat/package.py4
-rw-r--r--var/spack/repos/builtin/packages/subversion/package.py3
-rw-r--r--var/spack/repos/builtin/packages/suite-sparse/package.py7
-rw-r--r--var/spack/repos/builtin/packages/sundials/package.py10
-rw-r--r--var/spack/repos/builtin/packages/superlu-dist/package.py5
-rw-r--r--var/spack/repos/builtin/packages/superlu-mt/package.py2
-rw-r--r--var/spack/repos/builtin/packages/superlu/package.py2
-rw-r--r--var/spack/repos/builtin/packages/tmux/package.py5
-rw-r--r--var/spack/repos/builtin/packages/trilinos/package.py18
-rw-r--r--var/spack/repos/builtin/packages/turbomole/package.py16
-rw-r--r--var/spack/repos/builtin/packages/uberftp/package.py44
-rw-r--r--var/spack/repos/builtin/packages/vim/package.py3
-rw-r--r--var/spack/repos/builtin/packages/visit/package.py5
-rw-r--r--var/spack/repos/builtin/packages/vtk/gcc.patch21
-rw-r--r--var/spack/repos/builtin/packages/vtk/package.py2
-rw-r--r--var/spack/repos/builtin/packages/wannier90/make.sys7
-rw-r--r--var/spack/repos/builtin/packages/wannier90/package.py116
-rw-r--r--var/spack/repos/builtin/packages/xorg-util-macros/package.py2
-rw-r--r--var/spack/repos/builtin/packages/xrootd/package.py (renamed from var/spack/repos/builtin/packages/icu/package.py)34
-rw-r--r--var/spack/repos/builtin/packages/zoltan/package.py115
161 files changed, 3985 insertions, 714 deletions
diff --git a/var/spack/repos/builtin/packages/R/package.py b/var/spack/repos/builtin/packages/R/package.py
index e880a3aa66..a0899084d0 100644
--- a/var/spack/repos/builtin/packages/R/package.py
+++ b/var/spack/repos/builtin/packages/R/package.py
@@ -58,7 +58,7 @@ class R(Package):
# Concrete dependencies
depends_on('readline')
depends_on('ncurses')
- depends_on('icu')
+ depends_on('icu4c')
depends_on('glib')
depends_on('zlib')
depends_on('bzip2')
diff --git a/var/spack/repos/builtin/packages/adios/adios_1100.patch b/var/spack/repos/builtin/packages/adios/adios_1100.patch
new file mode 100644
index 0000000000..7a9f857c32
--- /dev/null
+++ b/var/spack/repos/builtin/packages/adios/adios_1100.patch
@@ -0,0 +1,29 @@
+From 3b21a8a4150962c6938baeceacd04f619cea2fbc Mon Sep 17 00:00:00 2001
+From: Norbert Podhorszki <pnorbert@ornl.gov>
+Date: Thu, 1 Sep 2016 16:26:23 -0400
+Subject: [PATCH] ifdef around 'bool' type. hdf5 1.10 defines bool and breaks
+ compiling bp2h5.c
+
+---
+ utils/bp2h5/bp2h5.c | 8 +++++---
+ 1 file changed, 5 insertions(+), 3 deletions(-)
+
+diff --git a/utils/bp2h5/bp2h5.c b/utils/bp2h5/bp2h5.c
+index 9c500c7..fa746bd 100644
+--- a/utils/bp2h5/bp2h5.c
++++ b/utils/bp2h5/bp2h5.c
+@@ -43,9 +43,11 @@
+ #include "dmalloc.h"
+ #endif
+
+-typedef int bool;
+-#define false 0
+-#define true 1
++#ifndef bool
++ typedef int bool;
++# define false 0
++# define true 1
++#endif
+
+ bool noindex = false; // do no print array indices with data
+ bool printByteAsChar = false; // print 8 bit integer arrays as string
diff --git a/var/spack/repos/builtin/packages/adios/package.py b/var/spack/repos/builtin/packages/adios/package.py
index 01834383b8..e240ce0858 100644
--- a/var/spack/repos/builtin/packages/adios/package.py
+++ b/var/spack/repos/builtin/packages/adios/package.py
@@ -36,6 +36,8 @@ class Adios(Package):
homepage = "http://www.olcf.ornl.gov/center-projects/adios/"
url = "https://github.com/ornladios/ADIOS/archive/v1.10.0.tar.gz"
+ version('develop', git='https://github.com/ornladios/ADIOS.git',
+ branch='master')
version('1.10.0', 'eff450a4c0130479417cfd63186957f3')
version('1.9.0', '310ff02388bbaa2b1c1710ee970b5678')
@@ -48,14 +50,14 @@ class Adios(Package):
variant('mpi', default=True, description='Enable MPI support')
variant('infiniband', default=False, description='Enable infiniband support')
+ # transforms
variant('zlib', default=True, description='Enable szip transform support')
variant('szip', default=False, description='Enable szip transform support')
- variant('hdf5', default=False, description='Enable HDF5 transport support')
- variant('netcdf', default=False, description='Enable NetCDF transport support')
+ # transports and serial file converters
+ variant('hdf5', default=False, description='Enable parallel HDF5 transport and serial bp2h5 converter')
# Lots of setting up here for this package
# module swap PrgEnv-intel PrgEnv-$COMP
- # module load cray-netcdf/4.3.3.1
# module load cray-hdf5/1.8.14
# module load python/2.7.10
@@ -69,9 +71,13 @@ class Adios(Package):
# optional transformations
depends_on('zlib', when='+zlib')
depends_on('szip', when='+szip')
- # optional transports
- depends_on('hdf5', when='+hdf5')
- depends_on('netcdf', when='+netcdf')
+ # optional transports & file converters
+ depends_on('hdf5@1.8:+mpi', when='+hdf5')
+
+ # Fix ADIOS <=1.10.0 compile error on HDF5 1.10+
+ # https://github.com/ornladios/ADIOS/commit/3b21a8a41509
+ # https://github.com/LLNL/spack/issues/1683
+ patch('adios_1100.patch', when='@:1.10.0^hdf5@1.10:')
def validate(self, spec):
"""
@@ -114,9 +120,7 @@ class Adios(Package):
if '+szip' in spec:
extra_args.append('--with-szip=%s' % spec['szip'].prefix)
if '+hdf5' in spec:
- extra_args.append('--with-hdf5=%s' % spec['hdf5'].prefix)
- if '+netcdf' in spec:
- extra_args.append('--with-netcdf=%s' % spec['netcdf'].prefix)
+ extra_args.append('--with-phdf5=%s' % spec['hdf5'].prefix)
sh = which('sh')
sh('./autogen.sh')
diff --git a/var/spack/repos/builtin/packages/armadillo/package.py b/var/spack/repos/builtin/packages/armadillo/package.py
index 4356f60aca..fdd682f5e5 100644
--- a/var/spack/repos/builtin/packages/armadillo/package.py
+++ b/var/spack/repos/builtin/packages/armadillo/package.py
@@ -46,18 +46,20 @@ class Armadillo(Package):
depends_on('hdf5', when='+hdf5')
def install(self, spec, prefix):
+ arpack = find_libraries(['libarpack'], root=spec[
+ 'arpack-ng'].prefix.lib, shared=True)
+ superlu = find_libraries(['libsuperlu'], root=spec[
+ 'superlu'].prefix, shared=False, recurse=True)
cmake_args = [
# ARPACK support
- '-DARPACK_LIBRARY={0}/libarpack.{1}'.format(
- spec['arpack-ng'].prefix.lib, dso_suffix),
+ '-DARPACK_LIBRARY={0}'.format(arpack.joined()),
# BLAS support
- '-DBLAS_LIBRARY={0}'.format(spec['blas'].blas_shared_lib),
+ '-DBLAS_LIBRARY={0}'.format(spec['blas'].blas_libs.joined()),
# LAPACK support
- '-DLAPACK_LIBRARY={0}'.format(spec['lapack'].lapack_shared_lib),
+ '-DLAPACK_LIBRARY={0}'.format(spec['lapack'].lapack_libs.joined()),
# SuperLU support
'-DSuperLU_INCLUDE_DIR={0}'.format(spec['superlu'].prefix.include),
- '-DSuperLU_LIBRARY={0}/libsuperlu.a'.format(
- spec['superlu'].prefix.lib64),
+ '-DSuperLU_LIBRARY={0}'.format(superlu.joined()),
# HDF5 support
'-DDETECT_HDF5={0}'.format('ON' if '+hdf5' in spec else 'OFF')
]
diff --git a/var/spack/repos/builtin/packages/arpack-ng/package.py b/var/spack/repos/builtin/packages/arpack-ng/package.py
index 0e71125d41..87ab2bbaac 100644
--- a/var/spack/repos/builtin/packages/arpack-ng/package.py
+++ b/var/spack/repos/builtin/packages/arpack-ng/package.py
@@ -88,17 +88,16 @@ class ArpackNg(Package):
options.append('-DCMAKE_INSTALL_NAME_DIR:PATH=%s/lib' % prefix)
# Make sure we use Spack's blas/lapack:
+ lapack_libs = spec['lapack'].lapack_libs.joined(';')
+ blas_libs = spec['blas'].blas_libs.joined(';')
+
options.extend([
'-DLAPACK_FOUND=true',
- '-DLAPACK_INCLUDE_DIRS=%s' % spec['lapack'].prefix.include,
- '-DLAPACK_LIBRARIES=%s' % (
- spec['lapack'].lapack_shared_lib if '+shared' in spec else
- spec['lapack'].lapack_static_lib),
+ '-DLAPACK_INCLUDE_DIRS={0}'.format(spec['lapack'].prefix.include),
+ '-DLAPACK_LIBRARIES={0}'.format(lapack_libs),
'-DBLAS_FOUND=true',
- '-DBLAS_INCLUDE_DIRS=%s' % spec['blas'].prefix.include,
- '-DBLAS_LIBRARIES=%s' % (
- spec['blas'].blas_shared_lib if '+shared' in spec else
- spec['blas'].blas_static_lib)
+ '-DBLAS_INCLUDE_DIRS={0}'.format(spec['blas'].prefix.include),
+ '-DBLAS_LIBRARIES={0}'.format(blas_libs)
])
if '+mpi' in spec:
@@ -129,19 +128,12 @@ class ArpackNg(Package):
'F77=%s' % spec['mpi'].mpif77
])
- if '+shared' in spec:
- options.extend([
- '--with-blas=%s' % to_link_flags(
- spec['blas'].blas_shared_lib),
- '--with-lapack=%s' % to_link_flags(
- spec['lapack'].lapack_shared_lib)
- ])
- else:
- options.extend([
- '--with-blas=%s' % spec['blas'].blas_static_lib,
- '--with-lapack=%s' % spec['lapack'].lapack_static_lib,
- '--enable-shared=no'
- ])
+ options.extend([
+ '--with-blas={0}'.format(spec['blas'].blas_libs.ld_flags),
+ '--with-lapack={0}'.format(spec['lapack'].lapack_libs.ld_flags)
+ ])
+ if '+shared' not in spec:
+ options.append('--enable-shared=no')
bootstrap()
configure(*options)
diff --git a/var/spack/repos/builtin/packages/atlas/package.py b/var/spack/repos/builtin/packages/atlas/package.py
index f9d5da6166..b31e365336 100644
--- a/var/spack/repos/builtin/packages/atlas/package.py
+++ b/var/spack/repos/builtin/packages/atlas/package.py
@@ -51,6 +51,7 @@ class Atlas(Package):
url='http://sourceforge.net/projects/math-atlas/files/Developer%20%28unstable%29/3.11.34/atlas3.11.34.tar.bz2')
variant('shared', default=True, description='Builds shared library')
+ variant('pthread', default=False, description='Use multithreaded libraries')
provides('blas')
provides('lapack')
@@ -107,18 +108,32 @@ class Atlas(Package):
make("install")
self.install_test()
- def setup_dependent_package(self, module, dspec):
+ @property
+ def blas_libs(self):
# libsatlas.[so,dylib,dll ] contains all serial APIs (serial lapack,
# serial BLAS), and all ATLAS symbols needed to support them. Whereas
# libtatlas.[so,dylib,dll ] is parallel (multithreaded) version.
- name = 'libsatlas.%s' % dso_suffix
- libdir = find_library_path(name,
- self.prefix.lib64,
- self.prefix.lib)
-
+ is_threaded = '+pthread' in self.spec
if '+shared' in self.spec:
- self.spec.blas_shared_lib = join_path(libdir, name)
- self.spec.lapack_shared_lib = self.spec.blas_shared_lib
+ to_find = ['libtatlas'] if is_threaded else ['libsatlas']
+ shared = True
+ else:
+ interfaces = [
+ 'libptcblas',
+ 'libptf77blas'
+ ] if is_threaded else [
+ 'libcblas',
+ 'libf77blas'
+ ]
+ to_find = ['liblapack'] + interfaces + ['libatlas']
+ shared = False
+ return find_libraries(
+ to_find, root=self.prefix, shared=shared, recurse=True
+ )
+
+ @property
+ def lapack_libs(self):
+ return self.blas_libs
def install_test(self):
source_file = join_path(os.path.dirname(self.module.__file__),
@@ -126,9 +141,8 @@ class Atlas(Package):
blessed_file = join_path(os.path.dirname(self.module.__file__),
'test_cblas_dgemm.output')
- include_flags = ["-I%s" % join_path(self.spec.prefix, "include")]
- link_flags = ["-L%s" % join_path(self.spec.prefix, "lib"),
- "-lsatlas"]
+ include_flags = ["-I%s" % self.spec.prefix.include]
+ link_flags = self.lapack_libs.ld_flags.split()
output = compile_c_and_execute(source_file, include_flags, link_flags)
compare_output_file(output, blessed_file)
diff --git a/var/spack/repos/builtin/packages/bamtools/package.py b/var/spack/repos/builtin/packages/bamtools/package.py
new file mode 100644
index 0000000000..7bb1985003
--- /dev/null
+++ b/var/spack/repos/builtin/packages/bamtools/package.py
@@ -0,0 +1,45 @@
+##############################################################################
+# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
+# Produced at the Lawrence Livermore National Laboratory.
+#
+# This file is part of Spack.
+# Created 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 Lesser General Public License (as
+# published by the Free Software Foundation) version 2.1, 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 Lesser 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 Bamtools(Package):
+ """C++ API & command-line toolkit for working with BAM data."""
+
+ homepage = "https://github.com/pezmaster31/bamtools"
+ url = "https://github.com/pezmaster31/bamtools/archive/v2.4.0.tar.gz"
+
+ version('2.4.0', '6139d00c1b1fe88fe15d094d8a74d8b9')
+ version('2.3.0', 'd327df4ba037d6eb8beef65d7da75ebc')
+ version('2.2.3', '6eccd3e45e4ba12a68daa3298998e76d')
+
+ depends_on('cmake', type='build')
+
+ def install(self, spec, prefix):
+ with working_dir('spack-build', create=True):
+ cmake('..', *std_cmake_args)
+
+ make()
+ make('install')
diff --git a/var/spack/repos/builtin/packages/bash-completion/package.py b/var/spack/repos/builtin/packages/bash-completion/package.py
new file mode 100644
index 0000000000..666a1bef13
--- /dev/null
+++ b/var/spack/repos/builtin/packages/bash-completion/package.py
@@ -0,0 +1,64 @@
+##############################################################################
+# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
+# Produced at the Lawrence Livermore National Laboratory.
+#
+# This file is part of Spack.
+# Created 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 Lesser General Public License (as
+# published by the Free Software Foundation) version 2.1, 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 Lesser 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 BashCompletion(Package):
+ """Programmable completion functions for bash."""
+ homepage = "https://github.com/scop/bash-completion"
+ url = "https://github.com/scop/bash-completion/archive/2.3.tar.gz"
+
+ version('2.3', '67e50f5f3c804350b43f2b664c33dde811d24292')
+ version('develop', git='https://github.com/scop/bash-completion.git')
+
+ # Build dependencies
+ depends_on('automake', type='build')
+ depends_on('autoconf', type='build')
+ depends_on('libtool', type='build')
+
+ # Other dependencies
+ depends_on('bash@4.1:', type='run')
+
+ def install(self, spec, prefix):
+ make_args = ['--prefix=%s' % prefix]
+
+ autoreconf('-i')
+ configure(*make_args)
+ make()
+ # make("check") # optional, requires dejagnu and tcllib
+ make("install",
+ parallel=False)
+
+ # Guidelines for individual user as provided by the author at
+ # https://github.com/scop/bash-completion
+ print('=====================================================')
+ print('Bash completion has been installed. To use it, please')
+ print('include the following lines in your ~/.bash_profile :')
+ print('')
+ print('# Use bash-completion, if available')
+ print('[[ $PS1 && -f %s/share/bash-completion/bash_completion ]] && \ ' % prefix) # NOQA: ignore=E501
+ print(' . %s/share/bash-completion/bash_completion' % prefix)
+ print('')
+ print('=====================================================')
diff --git a/var/spack/repos/builtin/packages/bedtools2/package.py b/var/spack/repos/builtin/packages/bedtools2/package.py
new file mode 100644
index 0000000000..46f3185154
--- /dev/null
+++ b/var/spack/repos/builtin/packages/bedtools2/package.py
@@ -0,0 +1,43 @@
+##############################################################################
+# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
+# Produced at the Lawrence Livermore National Laboratory.
+#
+# This file is part of Spack.
+# Created 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 Lesser General Public License (as
+# published by the Free Software Foundation) version 2.1, 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 Lesser 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 Bedtools2(Package):
+ """Collectively, the bedtools utilities are a swiss-army knife of
+ tools for a wide-range of genomics analysis tasks. The most
+ widely-used tools enable genome arithmetic: that is, set theory
+ on the genome."""
+
+ homepage = "https://github.com/arq5x/bedtools2"
+ url = "https://github.com/arq5x/bedtools2/archive/v2.26.0.tar.gz"
+
+ version('2.26.0', '52227e7efa6627f0f95d7d734973233d')
+ version('2.25.0', '534fb4a7bf0d0c3f05be52a0160d8e3d')
+
+ depends_on('zlib')
+
+ def install(self, spec, prefix):
+ make("prefix=%s" % prefix, "install")
diff --git a/var/spack/repos/builtin/packages/binutils/package.py b/var/spack/repos/builtin/packages/binutils/package.py
index e329e6fd7a..bf49ca9405 100644
--- a/var/spack/repos/builtin/packages/binutils/package.py
+++ b/var/spack/repos/builtin/packages/binutils/package.py
@@ -31,9 +31,9 @@ class Binutils(Package):
homepage = "http://www.gnu.org/software/binutils/"
url = "https://ftp.gnu.org/gnu/binutils/binutils-2.25.tar.bz2"
- # 2.26 is incompatible with py-pillow build for some reason.
+ version('2.27', '2869c9bf3e60ee97c74ac2a6bf4e9d68')
version('2.26', '64146a0faa3b411ba774f47d41de239f')
- version('2.25', 'd9f3303f802a5b6b0bb73a335ab89d66', preferred=True)
+ version('2.25', 'd9f3303f802a5b6b0bb73a335ab89d66')
version('2.24', 'e0f71a7b2ddab0f8612336ac81d9636b')
version('2.23.2', '4f8fa651e35ef262edc01d60fb45702e')
version('2.20.1', '2b9dc8f2b7dbd5ec5992c6e29de0b764')
diff --git a/var/spack/repos/builtin/packages/boost/package.py b/var/spack/repos/builtin/packages/boost/package.py
index 0d4ccc7ea3..22351a2c3a 100644
--- a/var/spack/repos/builtin/packages/boost/package.py
+++ b/var/spack/repos/builtin/packages/boost/package.py
@@ -41,6 +41,7 @@ class Boost(Package):
list_url = "http://sourceforge.net/projects/boost/files/boost/"
list_depth = 2
+ version('1.62.0', '5fb94629535c19e48703bdb2b2e9490f')
version('1.61.0', '6095876341956f65f9d35939ccea1a9f')
version('1.60.0', '65a840e1a0b13a558ff19eeb2c4f0cbe')
version('1.59.0', '6aa9a5c6a4ca1016edd0ed1178e3cb87')
@@ -111,12 +112,12 @@ class Boost(Package):
description="Build multi-threaded versions of libraries")
variant('singlethreaded', default=True,
description="Build single-threaded versions of libraries")
- variant('icu_support', default=False,
- description="Include ICU support (for regex/locale libraries)")
+ variant('icu', default=False,
+ description="Build with Unicode and ICU suport")
variant('graph', default=False,
description="Build the Boost Graph library")
- depends_on('icu', when='+icu_support')
+ depends_on('icu4c', when='+icu')
depends_on('python', when='+python')
depends_on('mpi', when='+mpi')
depends_on('bzip2', when='+iostreams')
@@ -138,15 +139,13 @@ class Boost(Package):
def determine_toolset(self, spec):
if spec.satisfies("platform=darwin"):
return 'darwin'
- else:
- platform = 'linux'
toolsets = {'g++': 'gcc',
'icpc': 'intel',
'clang++': 'clang'}
if spec.satisfies('@1.47:'):
- toolsets['icpc'] += '-' + platform
+ toolsets['icpc'] += '-linux'
for cc, toolset in toolsets.iteritems():
if cc in self.compiler.cxx_names:
return toolset
@@ -164,6 +163,16 @@ class Boost(Package):
join_path(spec['python'].prefix.bin, 'python'))
with open('user-config.jam', 'w') as f:
+ # Boost may end up using gcc even though clang+gfortran is set in
+ # compilers.yaml. Make sure this does not happen:
+ if not spec.satisfies('%intel'):
+ # using intel-linux : : spack_cxx in user-config.jam leads to
+ # error: at project-config.jam:12
+ # error: duplicate initialization of intel-linux with the following parameters: # noqa
+ # error: version = <unspecified>
+ # error: previous initialization at ./user-config.jam:1
+ f.write("using {0} : : {1} ;\n".format(boostToolsetId,
+ spack_cxx))
if '+mpi' in spec:
f.write('using mpi : %s ;\n' %
@@ -204,7 +213,13 @@ class Boost(Package):
options.extend([
'link=%s' % ','.join(linkTypes),
- '--layout=tagged'])
+ '--layout=tagged'
+ ])
+
+ if not spec.satisfies('%intel'):
+ options.extend([
+ 'toolset=%s' % self.determine_toolset(spec)
+ ])
return threadingOpts
diff --git a/var/spack/repos/builtin/packages/bpp-suite/package.py b/var/spack/repos/builtin/packages/bpp-suite/package.py
index ef7f25a7ce..d15030622e 100644
--- a/var/spack/repos/builtin/packages/bpp-suite/package.py
+++ b/var/spack/repos/builtin/packages/bpp-suite/package.py
@@ -34,7 +34,6 @@ class BppSuite(Package):
version('2.2.0', 'd8b29ad7ccf5bd3a7beb701350c9e2a4')
- # FIXME: Add dependencies if required.
depends_on('cmake', type='build')
depends_on('texinfo', type='build')
depends_on('bpp-core')
diff --git a/var/spack/repos/builtin/packages/cantera/package.py b/var/spack/repos/builtin/packages/cantera/package.py
index 9c9c035325..9a9bc5bdbd 100644
--- a/var/spack/repos/builtin/packages/cantera/package.py
+++ b/var/spack/repos/builtin/packages/cantera/package.py
@@ -85,8 +85,9 @@ class Cantera(Package):
# BLAS/LAPACK support
if '+lapack' in spec:
+ lapack_blas = spec['lapack'].lapack_libs + spec['blas'].blas_libs
options.extend([
- 'blas_lapack_libs=lapack,blas',
+ 'blas_lapack_libs={0}'.format(','.join(lapack_blas.names)),
'blas_lapack_dir={0}'.format(spec['lapack'].prefix.lib)
])
diff --git a/var/spack/repos/builtin/packages/cdo/package.py b/var/spack/repos/builtin/packages/cdo/package.py
index a2f04e5b35..775dc31cf3 100644
--- a/var/spack/repos/builtin/packages/cdo/package.py
+++ b/var/spack/repos/builtin/packages/cdo/package.py
@@ -30,17 +30,88 @@ class Cdo(Package):
Climate and NWP model Data. """
homepage = "https://code.zmaw.de/projects/cdo"
- url = "https://code.zmaw.de/attachments/download/10198/cdo-1.6.9.tar.gz"
- version('1.6.9', 'bf0997bf20e812f35e10188a930e24e2')
+ version('1.7.2', 'f08e4ce8739a4f2b63fc81a24db3ee31', url='https://code.zmaw.de/attachments/download/12760/cdo-1.7.2.tar.gz')
+ version('1.6.9', 'bf0997bf20e812f35e10188a930e24e2', url='https://code.zmaw.de/attachments/download/10198/cdo-1.6.9.tar.gz')
- variant('mpi', default=True)
+ variant('szip', default=True, description='Enable szip compression for GRIB1')
+ variant('hdf5', default=False, description='Enable HDF5 support')
+ variant('netcdf', default=True, description='Enable NetCDF support')
+ variant('udunits2', default=True, description='Enable UDUNITS2 support')
+ variant('grib', default=True, description='Enable GRIB_API support')
+ variant('libxml2', default=True, description='Enable libxml2 support')
+ variant('proj', default=True, description='Enable PROJ library for cartographic projections')
+ variant('curl', default=True, description='Enable curl support')
+ variant('fftw', default=True, description='Enable support for fftw3')
+ variant('magics', default=True, description='Enable Magics library support')
- depends_on('netcdf')
- depends_on('netcdf+mpi', when='+mpi')
- depends_on('netcdf~mpi', when='~mpi')
+ depends_on('szip', when='+szip')
+ depends_on('netcdf', when='+netcdf')
+ depends_on('hdf5+threadsafe', when='+hdf5')
+ depends_on('udunits2', when='+udunits2')
+ depends_on('grib-api', when='+grib')
+ depends_on('libxml2', when='+libxml2')
+ depends_on('proj', when='+proj')
+ depends_on('curl', when='+curl')
+ depends_on('fftw', when='+fftw')
+ depends_on('magics', when='+magics')
def install(self, spec, prefix):
- configure('--prefix={0}'.format(prefix))
+ config_args = ["--prefix=" + prefix,
+ "--enable-shared",
+ "--enable-static"]
+
+ if '+szip' in spec:
+ config_args.append('--with-szlib=' + spec['szip'].prefix)
+ else:
+ config_args.append('--without-szlib')
+
+ if '+hdf5' in spec:
+ config_args.append('--with-hdf5=' + spec['hdf5'].prefix)
+ else:
+ config_args.append('--without-hdf5')
+
+ if '+netcdf' in spec:
+ config_args.append('--with-netcdf=' + spec['netcdf'].prefix)
+ else:
+ config_args.append('--without-netcdf')
+
+ if '+udunits2' in spec:
+ config_args.append('--with-udunits2=' + spec['udunits2'].prefix)
+ else:
+ config_args.append('--without-udunits2')
+
+ if '+grib' in spec:
+ config_args.append('--with-grib_api=' + spec['grib-api'].prefix)
+ else:
+ config_args.append('--without-grib_api')
+
+ if '+libxml2' in spec:
+ config_args.append('--with-libxml2=' + spec['libxml2'].prefix)
+ else:
+ config_args.append('--without-libxml2')
+
+ if '+proj' in spec:
+ config_args.append('--with-proj=' + spec['proj'].prefix)
+ else:
+ config_args.append('--without-proj')
+
+ if '+curl' in spec:
+ config_args.append('--with-curl=' + spec['curl'].prefix)
+ else:
+ config_args.append('--without-curl')
+
+ if '+fftw' in spec:
+ config_args.append('--with-fftw3')
+ else:
+ config_args.append('--without-fftw3')
+
+ if '+magics' in spec:
+ config_args.append('--with-magics=' + spec['magics'].prefix)
+ else:
+ config_args.append('--without-magics')
+
+ configure(*config_args)
+
make()
make('install')
diff --git a/var/spack/repos/builtin/packages/cereal/package.py b/var/spack/repos/builtin/packages/cereal/package.py
index 716e0103d1..0ce6ec593c 100644
--- a/var/spack/repos/builtin/packages/cereal/package.py
+++ b/var/spack/repos/builtin/packages/cereal/package.py
@@ -39,6 +39,7 @@ class Cereal(Package):
homepage = "http://uscilab.github.io/cereal/"
url = "https://github.com/USCiLab/cereal/archive/v1.1.2.tar.gz"
+ version('1.2.1', '64476ed74c19068ee543b53ad3992261')
version('1.2.0', 'e372c9814696481dbdb7d500e1410d2b')
version('1.1.2', '34d4ad174acbff005c36d4d10e48cbb9')
version('1.1.1', '0ceff308c38f37d5b5f6df3927451c27')
diff --git a/var/spack/repos/builtin/packages/cgal/package.py b/var/spack/repos/builtin/packages/cgal/package.py
index e522b4a5a0..d986f77487 100644
--- a/var/spack/repos/builtin/packages/cgal/package.py
+++ b/var/spack/repos/builtin/packages/cgal/package.py
@@ -22,44 +22,57 @@
# 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 Cgal(Package):
- """CGAL is a software project that provides easy access to efficient and
- reliable geometric algorithms in the form of a C++ library. CGAL
- is used in various areas needing geometric computation, such as
- geographic information systems, computer aided design, molecular
- biology, medical imaging, computer graphics, and robotics.
-
+ """The Computational Geometry Algorithms Library (CGAL) is a C++ library
+ that aims to provide easy access to efficient and reliable algorithms in
+ computational geometry. CGAL is used in various areas needing geometric
+ computation, such as geographic information systems, computer aided design,
+ molecular biology, medical imaging, computer graphics, and robotics.
"""
homepage = 'http://www.cgal.org/'
url = 'https://github.com/CGAL/cgal/archive/releases/CGAL-4.7.tar.gz'
+ version('4.9', '7b628db3e5614347f776c046b7666089')
version('4.7', '4826714810f3b4c65cac96b90fb03b67')
version('4.6.3', 'e8ee2ecc8d2b09b94a121c09257b576d')
- # Installation instructions :
- # http://doc.cgal.org/latest/Manual/installation.html
variant('shared', default=True,
description='Enables the build of shared libraries')
variant('debug', default=False,
description='Builds a debug version of the libraries')
+ # Essential Third Party Libraries
depends_on('boost')
- depends_on('mpfr')
depends_on('gmp')
+ depends_on('mpfr')
depends_on('zlib')
- depends_on('cmake', type='build')
+ # depends_on('opengl')
+ depends_on('qt@5:')
- # FIXME : Qt5 dependency missing (needs Qt5 and OpenGL)
- # FIXME : Optional third party libraries missing
+ # Optional Third Party Libraries
+ # depends_on('leda')
+ # depends_on('mpfi')
+ # depends_on('rs')
+ # depends_on('rs3')
+ # depends_on('ntl')
+ # depends_on('eigen')
+ # depends_on('libqglviewer')
+ # depends_on('esbtl')
+ # depends_on('intel-tbb')
+
+ # Build dependencies
+ depends_on('cmake', type='build')
def install(self, spec, prefix):
+ # Installation instructions:
+ # http://doc.cgal.org/latest/Manual/installation.html
options = []
options.extend(std_cmake_args)
+
# CGAL supports only Release and Debug build type. Any other build type
# will raise an error at configure time
if '+debug' in spec:
@@ -72,9 +85,7 @@ class Cgal(Package):
else:
options.append('-DBUILD_SHARED_LIBS:BOOL=OFF')
- build_directory = join_path(self.stage.path, 'spack-build')
- source_directory = self.stage.source_path
- with working_dir(build_directory, create=True):
- cmake(source_directory, *options)
- make()
- make("install")
+ cmake('.', *options)
+
+ make()
+ make('install')
diff --git a/var/spack/repos/builtin/packages/charm/mpi.patch b/var/spack/repos/builtin/packages/charm/mpi.patch
new file mode 100644
index 0000000000..e909d5f876
--- /dev/null
+++ b/var/spack/repos/builtin/packages/charm/mpi.patch
@@ -0,0 +1,19 @@
+--- old/src/scripts/configure
++++ new/src/scripts/configure
+@@ -3293,10 +3293,16 @@
+ test_link "whether -lmpi" "ok" "no" "-lmpi"
+ if test $pass -eq 1
+ then
+ add_flag CMK_SYSLIBS='"$CMK_SYSLIBS -lmpi"' "mpi lib"
+ else
++ test_link "whether -lmpi -lmpi_cxx" "ok" "no" "-lmpi -lmpi_cxx"
++ if test $pass -eq 1
++ then
++ add_flag CMK_SYSLIBS='"$CMK_SYSLIBS -lmpi -lmpi_cxx"' "mpi lib"
++ else
+ echo "Error: can not find mpi library"
+ test_finish 1
++ fi
+ fi
+ fi
+ else
diff --git a/var/spack/repos/builtin/packages/charm/package.py b/var/spack/repos/builtin/packages/charm/package.py
new file mode 100644
index 0000000000..d67ac80de1
--- /dev/null
+++ b/var/spack/repos/builtin/packages/charm/package.py
@@ -0,0 +1,172 @@
+##############################################################################
+# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
+# Produced at the Lawrence Livermore National Laboratory.
+#
+# This file is part of Spack.
+# Created 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 Lesser General Public License (as
+# published by the Free Software Foundation) version 2.1, 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 Lesser 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
+##############################################################################
+
+import platform
+import shutil
+import sys
+from spack import *
+
+
+class Charm(Package):
+ """Charm++ is a parallel programming framework in C++ supported by
+ an adaptive runtime system, which enhances user productivity and
+ allows programs to run portably from small multicore computers
+ (your laptop) to the largest supercomputers."""
+
+ homepage = "http://charmplusplus.org"
+ url = "http://charm.cs.illinois.edu/distrib/charm-6.7.1.tar.gz"
+
+ version("6.7.1", "a8e20cf85e9c8721158f5bbd0ade48d9")
+ version("6.7.0", "35a39a7975f1954a7db2d76736158231")
+ version("6.6.1", "9554230f741e2599deaaac4d9d93d7ab")
+ version("6.6.0", "31e95901b3f7324d52107e6ad000fcc8")
+ version("6.5.1", "034d99458474a3ab96d8bede8a691a5d")
+
+ # Support OpenMPI; see
+ # <https://charm.cs.illinois.edu/redmine/issues/1206>
+ patch("mpi.patch")
+
+ # Communication mechanisms (choose exactly one)
+ # TODO: Support Blue Gene/Q PAMI, Cray GNI, Cray shmem, CUDA
+ variant("mpi", default=False,
+ description="Use MPI as communication mechanism")
+ variant("multicore", default=False,
+ description="Disable inter-node communication")
+ variant("net", default=False,
+ description="Use net communication mechanism")
+ variant("netlrts", default=True,
+ description="Use netlrts communication mechanism")
+ variant("verbs", default=False,
+ description="Use Infiniband as communication mechanism")
+
+ # Other options
+ # Something is off with PAPI -- there are build errors. Maybe
+ # Charm++ expects a particular version?
+ variant("papi", default=False, description="Enable PAPI integration")
+ variant("smp", default=True,
+ description=(
+ "Enable SMP parallelism (does not work with +multicore)"))
+ variant("tcp", default=False,
+ description="Use TCP as transport mechanism (requires +net)")
+
+ # Note: We could add variants for AMPI, LIBS, bigemulator, msa, Tau
+ # Note: We could support shared libraries
+
+ depends_on("mpi", when="+mpi")
+ depends_on("papi", when="+papi")
+
+ def install(self, spec, prefix):
+ target = "charm++"
+
+ # Note: Turn this into a multi-valued variant, once these
+ # exist in Spack
+ if sum(["+mpi" in spec,
+ "+multicore" in spec,
+ "+net" in spec,
+ "+netlrts" in spec,
+ "+verbs" in spec]) != 1:
+ raise InstallError(
+ "Exactly one communication mechanism "
+ "(+mpi, +multicore, +net, +netlrts, or +verbs) "
+ "must be enabled")
+ if "+mpi" in spec:
+ comm = "mpi"
+ if "+multicore" in spec:
+ comm = "multicore"
+ if "+net" in spec:
+ comm = "net"
+ if "+netlrts" in spec:
+ comm = "netlrts"
+ if "+verbs" in spec:
+ comm = "verbs"
+
+ plat = sys.platform
+ if plat.startswith("linux"):
+ plat = "linux"
+ mach = platform.machine()
+
+ # Define Charm++ version names for various (plat, mach, comm)
+ # combinations. Note that not all combinations are supported.
+ versions = {
+ ("darwin", "i386", "multicore"): "multicore-darwin-x86",
+ ("darwin", "i386", "net"): "net-darwin-x86",
+ ("darwin", "x86_64", "mpi"): "mpi-darwin-x86_64",
+ ("darwin", "x86_64", "multicore"): "multicore-darwin-x86_64",
+ ("darwin", "x86_64", "net"): "net-darwin-x86_64",
+ ("darwin", "x86_64", "netlrts"): "netlrts-darwin-x86_64",
+ ("linux", "i386", "mpi"): "mpi-linux",
+ ("linux", "i386", "multicore"): "multicore-linux32",
+ ("linux", "i386", "net"): "net-linux",
+ ("linux", "i386", "netlrts"): "netlrts-linux",
+ ("linux", "x86_64", "mpi"): "mpi-linux-x86_64",
+ ("linux", "x86_64", "multicore"): "multicore-linux64",
+ ("linux", "x86_64", "net"): "net-linux-x86_64",
+ ("linux", "x86_64", "netlrts"): "netlrts-linux-x86_64",
+ ("linux", "x86_64", "verbs"): "verbs-linux-x86_64",
+ }
+ if (plat, mach, comm) not in versions:
+ raise InstallError(
+ "The communication mechanism %s is not supported "
+ "on a %s platform with a %s CPU" %
+ (comm, plat, mach))
+ version = versions[(plat, mach, comm)]
+
+ # We assume that Spack's compiler wrappers make this work. If
+ # not, then we need to query the compiler vendor from Spack
+ # here.
+ compiler = "gcc"
+
+ options = [compiler,
+ "--with-production", # Note: turn this into a variant
+ "-j%d" % make_jobs,
+ "--destination=%s" % prefix]
+ if "+mpi" in spec:
+ options.append("--basedir=%s" % spec["mpi"].prefix)
+ if "+papi" in spec:
+ options.extend(["papi", "--basedir=%s" % spec["papi"].prefix])
+ if "+smp" in spec:
+ if "+multicore" in spec:
+ # This is a Charm++ limitation; it would lead to a
+ # build error
+ raise InstallError("Cannot combine +smp with +multicore")
+ options.append("smp")
+ if "+tcp" in spec:
+ if "+net" not in spec:
+ # This is a Charm++ limitation; it would lead to a
+ # build error
+ raise InstallError(
+ "The +tcp variant requires "
+ "the +net communication mechanism")
+ options.append("tcp")
+
+ # Call "make" via the build script
+ # Note: This builds Charm++ in the "tmp" subdirectory of the
+ # install directory. Maybe we could set up a symbolic link
+ # back to the build tree to prevent this? Alternatively, we
+ # could dissect the build script; the build instructions say
+ # this wouldn't be difficult.
+ build = Executable(join_path(".", "build"))
+ build(target, version, *options)
+ shutil.rmtree(join_path(prefix, "tmp"))
diff --git a/var/spack/repos/builtin/packages/clhep/darwin/CLHEP.patch b/var/spack/repos/builtin/packages/clhep/darwin/CLHEP.patch
new file mode 100644
index 0000000000..ca1d96574a
--- /dev/null
+++ b/var/spack/repos/builtin/packages/clhep/darwin/CLHEP.patch
@@ -0,0 +1,11 @@
+--- CLHEP/CMakeLists.txt 2016-06-20 14:41:12.000000000 -0500
++++ CLHEP/CMakeLists.txt 2016-06-20 14:40:57.000000000 -0500
+@@ -37,7 +37,7 @@
+ # If Policy CMP0042 exists, use OLD to prefer the use of install names
+ # instead of the new @rpath default.
+ if(POLICY CMP0042)
+- cmake_policy(SET CMP0042 NEW)
++ cmake_policy(SET CMP0042 OLD)
+ endif()
+
+ set(CMAKE_MODULE_PATH
diff --git a/var/spack/repos/builtin/packages/clhep/package.py b/var/spack/repos/builtin/packages/clhep/package.py
new file mode 100644
index 0000000000..02a9da9e27
--- /dev/null
+++ b/var/spack/repos/builtin/packages/clhep/package.py
@@ -0,0 +1,81 @@
+##############################################################################
+# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
+# Produced at the Lawrence Livermore National Laboratory.
+#
+# This file is part of Spack.
+# Created 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 Lesser General Public License (as
+# published by the Free Software Foundation) version 2.1, 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 Lesser 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 Clhep(Package):
+ """CLHEP is a C++ Class Library for High Energy Physics. """
+ homepage = "http://proj-clhep.web.cern.ch/proj-clhep/"
+ url = "http://proj-clhep.web.cern.ch/proj-clhep/DISTRIBUTION/tarFiles/clhep-2.2.0.5.tgz"
+ list_url = "https://proj-clhep.web.cern.ch/proj-clhep/DISTRIBUTION/"
+
+ version('2.3.2.2', '567b304b0fa017e1e9fbf199f456ebe9')
+ version('2.3.1.1', '16efca7641bc118c9d217cc96fe90bf5')
+ version('2.3.1.0', 'b084934fc26a4182a08c09c292e19161')
+ version('2.3.0.0', 'a00399a2ca867f2be902c22fc71d7e2e')
+ version('2.2.0.8', '5a23ed3af785ac100a25f6cb791846af')
+ version('2.2.0.5', '1584e8ce6ebf395821aed377df315c7c')
+ version('2.2.0.4', '71d2c7c2e39d86a0262e555148de01c1')
+
+ variant('debug', default=False, description="Switch to the debug version of CLHEP.")
+ variant('cxx11', default=True, description="Compile using c++11 dialect.")
+ variant('cxx14', default=False, description="Compile using c++14 dialect.")
+
+ depends_on('cmake@2.8.12.2:', when='@2.2.0.4:2.3.0.0', type='build')
+ depends_on('cmake@3.2:', when='@2.3.0.1:', type='build')
+
+ def patch(self):
+ filter_file('SET CMP0042 OLD',
+ 'SET CMP0042 NEW',
+ '%s/%s/CLHEP/CMakeLists.txt'
+ % (self.stage.path, self.spec.version))
+
+ def install(self, spec, prefix):
+ # Handle debug
+ # Pull out the BUILD_TYPE so we can change it (Release is default)
+ cmake_args = [arg for arg in std_cmake_args if 'BUILD_TYPE' not in arg]
+ build_type = 'Debug' if '+debug' in spec else 'MinSizeRel'
+ cmake_args.extend(['-DCMAKE_BUILD_TYPE=' + build_type])
+
+ if '+cxx11' in spec:
+ env['CXXFLAGS'] = self.compiler.cxx11_flag
+ cmake_args.append('-DCLHEP_BUILD_CXXSTD=' +
+ self.compiler.cxx11_flag)
+
+ if '+cxx14' in spec:
+ env['CXXFLAGS'] = self.compiler.cxx14_flag
+ cmake_args.append('-DCLHEP_BUILD_CXXSTD=' +
+ self.compiler.cxx14_flag)
+
+ # Note that the tar file is unusual in that there's a
+ # CLHEP directory (addtional layer)
+ cmake_args.append("../CLHEP")
+
+ # Run cmake in a build directory
+ with working_dir('build', create=True):
+ cmake(*cmake_args)
+ make()
+ make("install")
diff --git a/var/spack/repos/builtin/packages/cmake/package.py b/var/spack/repos/builtin/packages/cmake/package.py
index 0c16adcef7..83a68fda07 100644
--- a/var/spack/repos/builtin/packages/cmake/package.py
+++ b/var/spack/repos/builtin/packages/cmake/package.py
@@ -88,11 +88,13 @@ class Cmake(Package):
options = [
'--prefix={0}'.format(prefix),
- '--parallel={0}'.format(make_jobs),
- # jsoncpp requires CMake to build
- # use CMake-provided library to avoid circular dependency
- '--no-system-jsoncpp'
- ]
+ '--parallel={0}'.format(make_jobs)]
+ if spec.satisfies("@3:"):
+ options.append(
+ # jsoncpp requires CMake to build
+ # use CMake-provided library to avoid circular dependency
+ '--no-system-jsoncpp'
+ )
if '+ownlibs' in spec:
# Build and link to the CMake-provided third-party libraries
diff --git a/var/spack/repos/builtin/packages/cp2k/package.py b/var/spack/repos/builtin/packages/cp2k/package.py
index 052c7a971c..3a175ea1a2 100644
--- a/var/spack/repos/builtin/packages/cp2k/package.py
+++ b/var/spack/repos/builtin/packages/cp2k/package.py
@@ -47,19 +47,18 @@ class Cp2k(Package):
depends_on('lapack')
depends_on('blas')
depends_on('fftw')
+ depends_on('libint@:1.2', when='@3.0')
depends_on('mpi', when='+mpi')
depends_on('scalapack', when='+mpi')
depends_on('plumed+shared+mpi', when='+plumed+mpi')
depends_on('plumed+shared~mpi', when='+plumed~mpi')
depends_on('pexsi', when='+mpi')
+ depends_on('wannier90', when='+mpi')
+ depends_on('elpa', when='+mpi')
- # TODO : add dependency on libint
# TODO : add dependency on libsmm, libxsmm
- # TODO : add dependency on elpa
# TODO : add dependency on CUDA
- # TODO : add dependency on QUIP
- # TODO : add dependency on libwannier90
parallel = False
@@ -88,15 +87,20 @@ class Cp2k(Package):
}
cppflags = [
'-D__FFTW3',
- '-D__LIBPEXSI',
+ '-D__LIBINT',
'-I' + spec['fftw'].prefix.include
]
fcflags = copy.deepcopy(optflags[self.spec.compiler.name])
fcflags.extend([
'-I' + spec['fftw'].prefix.include
])
- ldflags = ['-L' + spec['fftw'].prefix.lib]
- libs = []
+ fftw = find_libraries(['libfftw3'], root=spec['fftw'].prefix.lib)
+ ldflags = [fftw.search_flags]
+ libs = [
+ join_path(spec['libint'].prefix.lib, 'libint.so'),
+ join_path(spec['libint'].prefix.lib, 'libderiv.so'),
+ join_path(spec['libint'].prefix.lib, 'libr12.so')
+ ]
if '+plumed' in self.spec:
# Include Plumed.inc in the Makefile
mkf.write('include {0}\n'.format(
@@ -109,7 +113,8 @@ class Cp2k(Package):
# Add required macro
cppflags.extend(['-D__PLUMED2'])
libs.extend([
- join_path(self.spec['plumed'].prefix.lib, 'libplumed.so')
+ join_path(self.spec['plumed'].prefix.lib,
+ 'libplumed.{0}'.format(dso_suffix))
])
mkf.write('CC = {0.compiler.cc}\n'.format(self))
@@ -143,15 +148,26 @@ class Cp2k(Package):
if '+mpi' in self.spec:
cppflags.extend([
'-D__parallel',
+ '-D__LIBPEXSI',
+ '-D__WANNIER90',
+ '-D__ELPA3',
'-D__SCALAPACK'
])
fcflags.extend([
+ '-I' + join_path(
+ spec['elpa'].prefix,
+ 'include',
+ 'elpa-{0}'.format(str(spec['elpa'].version)),
+ 'modules'
+ ),
'-I' + join_path(spec['pexsi'].prefix, 'fortran')
])
- ldflags.extend([
- '-L' + spec['scalapack'].prefix.lib
- ])
+ scalapack = spec['scalapack'].scalapack_libs
+ ldflags.append(scalapack.search_flags)
libs.extend([
+ join_path(spec['elpa'].prefix.lib,
+ 'libelpa.{0}'.format(dso_suffix)),
+ join_path(spec['wannier90'].prefix.lib, 'libwannier.a'),
join_path(spec['pexsi'].prefix.lib, 'libpexsi.a'),
join_path(spec['superlu-dist'].prefix.lib,
'libsuperlu_dist.a'),
@@ -164,19 +180,15 @@ class Cp2k(Package):
'libmetis.{0}'.format(dso_suffix)
),
])
- libs.extend(spec['scalapack'].scalapack_shared_libs)
+ libs.extend(scalapack)
libs.extend(self.spec['mpi'].mpicxx_shared_libs)
libs.extend(self.compiler.stdcxx_libs)
# LAPACK / BLAS
- ldflags.extend([
- '-L' + spec['lapack'].prefix.lib,
- '-L' + spec['blas'].prefix.lib
- ])
- libs.extend([
- join_path(spec['fftw'].prefix.lib, 'libfftw3.so'),
- spec['lapack'].lapack_shared_lib,
- spec['blas'].blas_shared_lib
- ])
+ lapack = spec['lapack'].lapack_libs
+ blas = spec['blas'].blas_libs
+
+ ldflags.append((lapack + blas).search_flags)
+ libs.extend([str(x) for x in (fftw, lapack, blas)])
# Write compiler flags to file
mkf.write('CPPFLAGS = {0}\n'.format(' '.join(cppflags)))
diff --git a/var/spack/repos/builtin/packages/cube/package.py b/var/spack/repos/builtin/packages/cube/package.py
index 8c835b3886..9cea3c40e8 100644
--- a/var/spack/repos/builtin/packages/cube/package.py
+++ b/var/spack/repos/builtin/packages/cube/package.py
@@ -43,14 +43,19 @@ class Cube(Package):
version('4.2.3', '8f95b9531f5a8f8134f279c2767c9b20',
url="http://apps.fz-juelich.de/scalasca/releases/cube/4.2/dist/cube-4.2.3.tar.gz")
- # TODO : add variant that builds GUI on top of Qt
+ variant('gui', default=False, description='Build CUBE GUI')
depends_on('zlib')
+ depends_on('qt@4.6:', when='+gui')
def install(self, spec, prefix):
configure_args = ["--prefix=%s" % prefix,
- "--without-paraver",
- "--without-gui"]
+ "--without-paraver"]
+
+ # TODO : need to handle cross compiling build
+ if '+gui' not in spec:
+ configure_args.append('--without-gui')
+
configure(*configure_args)
- make(parallel=False)
+ make()
make("install", parallel=False)
diff --git a/var/spack/repos/builtin/packages/cuda/package.py b/var/spack/repos/builtin/packages/cuda/package.py
index 558535bec6..36cf3058d7 100644
--- a/var/spack/repos/builtin/packages/cuda/package.py
+++ b/var/spack/repos/builtin/packages/cuda/package.py
@@ -39,7 +39,7 @@ class Cuda(Package):
Type, select runfile and click Download. Spack will search your
current directory for this file. Alternatively, add this file to a
mirror so that Spack can find it. For instructions on how to set up a
- mirror, see http://software.llnl.gov/spack/mirrors.html
+ mirror, see http://spack.readthedocs.io/en/latest/mirrors.html.
Note: This package does not currently install the drivers necessary
to run CUDA. These will need to be installed manually. See:
diff --git a/var/spack/repos/builtin/packages/curl/package.py b/var/spack/repos/builtin/packages/curl/package.py
index 4954e435c0..a22ac52714 100644
--- a/var/spack/repos/builtin/packages/curl/package.py
+++ b/var/spack/repos/builtin/packages/curl/package.py
@@ -32,6 +32,8 @@ class Curl(Package):
homepage = "http://curl.haxx.se"
url = "http://curl.haxx.se/download/curl-7.46.0.tar.bz2"
+ version('7.50.3', 'bd177fd6deecce00cfa7b5916d831c5e')
+ version('7.50.2', '6e161179f7af4b9f8b6ea21420132719')
version('7.50.1', '015f6a0217ca6f2c5442ca406476920b')
version('7.49.1', '6bb1f7af5b58b30e4e6414b8c1abccab')
version('7.47.1', '9ea3123449439bbd960cd25cf98796fb')
diff --git a/var/spack/repos/builtin/packages/daal/package.py b/var/spack/repos/builtin/packages/daal/package.py
index e13dd80e19..35cb6cbce8 100644
--- a/var/spack/repos/builtin/packages/daal/package.py
+++ b/var/spack/repos/builtin/packages/daal/package.py
@@ -9,7 +9,7 @@ class Daal(IntelInstaller):
Note: You will have to add the download file to a
mirror so that Spack can find it. For instructions on how to set up a
- mirror, see http://software.llnl.gov/spack/mirrors.html"""
+ mirror, see http://spack.readthedocs.io/en/latest/mirrors.html"""
homepage = "https://software.intel.com/en-us/daal"
diff --git a/var/spack/repos/builtin/packages/darshan-runtime/package.py b/var/spack/repos/builtin/packages/darshan-runtime/package.py
new file mode 100644
index 0000000000..640573fdc1
--- /dev/null
+++ b/var/spack/repos/builtin/packages/darshan-runtime/package.py
@@ -0,0 +1,65 @@
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License (as
+# published by the Free Software Foundation) version 2.1, 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 Lesser 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 DarshanRuntime(Package):
+ """Darshan (runtime) is a scalable HPC I/O characterization tool
+ designed to capture an accurate picture of application I/O behavior,
+ including properties such as patterns of access within files, with
+ minimum overhead. DarshanRuntime package should be installed on
+ systems where you intend to instrument MPI applications."""
+
+ homepage = "http://www.mcs.anl.gov/research/projects/darshan/"
+ url = "ftp://ftp.mcs.anl.gov/pub/darshan/releases/darshan-3.1.0.tar.gz"
+
+ version('3.1.0', '439d717323e6265b2612ed127886ae52')
+ version('3.0.0', '732577fe94238936268d74d7d74ebd08')
+
+ depends_on('mpi')
+ depends_on('zlib')
+
+ variant('slurm', default=False, description='Use Slurm Job ID')
+ variant('cobalt', default=False, description='Use Coblat Job Id')
+ variant('pbs', default=False, description='Use PBS Job Id')
+
+ def install(self, spec, prefix):
+
+ job_id = 'NONE'
+ if '+slurm' in spec:
+ job_id = 'SLURM_JOBID'
+ if '+cobalt' in spec:
+ job_id = 'COBALT_JOBID'
+ if '+pbs' in spec:
+ job_id = 'PBS_JOBID'
+
+ # TODO: BG-Q and other platform configure options
+ options = ['CC=%s' % spec['mpi'].mpicc,
+ '--with-mem-align=8',
+ '--with-log-path-by-env=DARSHAN_LOG_DIR_PATH',
+ '--with-jobid-env=%s' % job_id,
+ '--with-zlib=%s' % spec['zlib'].prefix]
+
+ with working_dir('spack-build', create=True):
+ configure = Executable('../darshan-runtime/configure')
+ configure('--prefix=%s' % prefix, *options)
+ make()
+ make('install')
+
+ def setup_environment(self, spack_env, run_env):
+ # default path for log file, could be user or site specific setting
+ darshan_log_dir = '%s' % os.environ['HOME']
+ run_env.set('DARSHAN_LOG_DIR_PATH', darshan_log_dir)
diff --git a/var/spack/repos/builtin/packages/darshan-util/package.py b/var/spack/repos/builtin/packages/darshan-util/package.py
new file mode 100644
index 0000000000..3446104a83
--- /dev/null
+++ b/var/spack/repos/builtin/packages/darshan-util/package.py
@@ -0,0 +1,41 @@
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License (as
+# published by the Free Software Foundation) version 2.1, 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 Lesser 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 DarshanUtil(Package):
+ """Darshan (util) is collection of tools for parsing and summarizing log
+ files produced by Darshan (runtime) instrumentation. This package is
+ typically installed on systems (front-end) where you intend to analyze
+ log files produced by Darshan (runtime)."""
+
+ homepage = "http://www.mcs.anl.gov/research/projects/darshan/"
+ url = "ftp://ftp.mcs.anl.gov/pub/darshan/releases/darshan-3.1.0.tar.gz"
+
+ version('3.1.0', '439d717323e6265b2612ed127886ae52')
+ version('3.0.0', '732577fe94238936268d74d7d74ebd08')
+
+ depends_on('zlib')
+
+ def install(self, spec, prefix):
+
+ options = ['CC=%s' % self.compiler.cc,
+ '--with-zlib=%s' % spec['zlib'].prefix]
+
+ with working_dir('spack-build', create=True):
+ configure = Executable('../darshan-util/configure')
+ configure('--prefix=%s' % prefix, *options)
+ make()
+ make('install')
diff --git a/var/spack/repos/builtin/packages/dealii/package.py b/var/spack/repos/builtin/packages/dealii/package.py
index 939d8fc013..0d293e5d92 100644
--- a/var/spack/repos/builtin/packages/dealii/package.py
+++ b/var/spack/repos/builtin/packages/dealii/package.py
@@ -32,6 +32,7 @@ class Dealii(Package):
homepage = "https://www.dealii.org"
url = "https://github.com/dealii/dealii/releases/download/v8.4.1/dealii-8.4.1.tar.gz"
+ version('8.4.2', '84c6bd3f250d3e0681b645d24cb987a7')
version('8.4.1', 'efbaf16f9ad59cfccad62302f36c3c1d')
version('8.4.0', 'ac5dbf676096ff61e092ce98c80c2b00')
version('8.3.0', 'fc6cdcb16309ef4bea338a4f014de6fa')
@@ -67,11 +68,11 @@ class Dealii(Package):
# Boost 1.58 is blacklisted, see
# https://github.com/dealii/dealii/issues/1591
# Require at least 1.59
- # +python won't affect @:8.4.1
+ # +python won't affect @:8.4.2
depends_on("boost@1.59.0:+thread+system+serialization+iostreams",
- when='@:8.4.1~mpi')
+ when='@:8.4.2~mpi')
depends_on("boost@1.59.0:+thread+system+serialization+iostreams+mpi",
- when='@:8.4.1+mpi')
+ when='@:8.4.2+mpi')
# since @8.5.0: (and @develop) python bindings are introduced:
depends_on("boost@1.59.0:+thread+system+serialization+iostreams",
when='@8.5.0:~mpi~python')
@@ -102,8 +103,9 @@ class Dealii(Package):
depends_on("netcdf-cxx", when='+netcdf+mpi')
depends_on("oce", when='+oce')
depends_on("p4est", when='+p4est+mpi')
- depends_on("petsc+mpi", when='@8.5.0:+petsc+mpi')
- depends_on("slepc", when='@8.5.0:+slepc+petsc+mpi')
+ depends_on("petsc+mpi", when='@8.4.2:+petsc+mpi')
+ depends_on('python', when='@8.5.0:+python')
+ depends_on("slepc", when='@8.4.2:+slepc+petsc+mpi')
depends_on("petsc@:3.6.4+mpi", when='@:8.4.1+petsc+mpi')
depends_on("slepc@:3.6.3", when='@:8.4.1+slepc+petsc+mpi')
depends_on("trilinos", when='+trilinos+mpi')
@@ -122,6 +124,7 @@ class Dealii(Package):
options.remove(word)
dsuf = 'dylib' if sys.platform == 'darwin' else 'so'
+ lapack_blas = spec['lapack'].lapack_libs + spec['blas'].blas_libs
options.extend([
'-DCMAKE_BUILD_TYPE=DebugRelease',
'-DDEAL_II_COMPONENT_EXAMPLES=ON',
@@ -134,9 +137,7 @@ class Dealii(Package):
'-DLAPACK_FOUND=true',
'-DLAPACK_INCLUDE_DIRS=%s;%s' % (
spec['lapack'].prefix.include, spec['blas'].prefix.include),
- '-DLAPACK_LIBRARIES=%s;%s' % (
- spec['lapack'].lapack_shared_lib,
- spec['blas'].blas_shared_lib),
+ '-DLAPACK_LIBRARIES=%s' % lapack_blas.joined(';'),
'-DMUPARSER_DIR=%s' % spec['muparser'].prefix,
'-DUMFPACK_DIR=%s' % spec['suite-sparse'].prefix,
'-DTBB_DIR=%s' % spec['tbb'].prefix,
diff --git a/var/spack/repos/builtin/packages/elk/package.py b/var/spack/repos/builtin/packages/elk/package.py
index b089e585dd..acaf863935 100644
--- a/var/spack/repos/builtin/packages/elk/package.py
+++ b/var/spack/repos/builtin/packages/elk/package.py
@@ -87,12 +87,12 @@ class Elk(Package):
# BLAS/LAPACK support
# Note: BLAS/LAPACK must be compiled with OpenMP support
# if the +openmp variant is chosen
- blas = 'blas.a'
+ blas = 'blas.a'
lapack = 'lapack.a'
if '+blas' in spec:
- blas = spec['blas'].blas_shared_lib
+ blas = spec['blas'].blas_libs.joined()
if '+lapack' in spec:
- lapack = spec['lapack'].lapack_shared_lib
+ lapack = spec['lapack'].lapack_libs.joined()
# lapack must come before blas
config['LIB_LPK'] = ' '.join([lapack, blas])
diff --git a/var/spack/repos/builtin/packages/elpa/package.py b/var/spack/repos/builtin/packages/elpa/package.py
index f28d63f6c3..b433bf40b0 100644
--- a/var/spack/repos/builtin/packages/elpa/package.py
+++ b/var/spack/repos/builtin/packages/elpa/package.py
@@ -34,8 +34,16 @@ class Elpa(Package):
homepage = 'http://elpa.mpcdf.mpg.de/'
url = 'http://elpa.mpcdf.mpg.de/elpa-2015.11.001.tar.gz'
- version('2015.11.001', 'de0f35b7ee7c971fd0dca35c900b87e6',
- url='http://elpa.mpcdf.mpg.de/elpa-2015.11.001.tar.gz')
+ version(
+ '2016.05.003',
+ '88a9f3f3bfb63e16509dd1be089dcf2c',
+ url='http://elpa.mpcdf.mpg.de/html/Releases/2016.05.003/elpa-2016.05.003.tar.gz'
+ )
+ version(
+ '2015.11.001',
+ 'de0f35b7ee7c971fd0dca35c900b87e6',
+ url='http://elpa.mpcdf.mpg.de/elpa-2015.11.001.tar.gz'
+ )
variant('openmp', default=False, description='Activates OpenMP support')
@@ -46,7 +54,24 @@ class Elpa(Package):
def install(self, spec, prefix):
- options = ["--prefix=%s" % prefix]
+ options = [
+ 'CC={0}'.format(self.spec['mpi'].mpicc),
+ 'FC={0}'.format(self.spec['mpi'].mpifc),
+ 'CXX={0}'.format(self.spec['mpi'].mpicxx),
+ 'FCFLAGS={0}'.format(
+ spec['lapack'].lapack_libs.joined()
+ ),
+ 'LDFLAGS={0}'.format(
+ spec['lapack'].lapack_libs.joined()
+ ),
+ 'SCALAPACK_FCFLAGS={0}'.format(
+ spec['scalapack'].scalapack_libs.joined()
+ ),
+ 'SCALAPACK_LDFLAGS={0}'.format(
+ spec['scalapack'].scalapack_libs.joined()
+ ),
+ '--prefix={0}'.format(self.prefix)
+ ]
if '+openmp' in spec:
options.append("--enable-openmp")
diff --git a/var/spack/repos/builtin/packages/espresso/package.py b/var/spack/repos/builtin/packages/espresso/package.py
index 3dca1ba187..d2c825513c 100644
--- a/var/spack/repos/builtin/packages/espresso/package.py
+++ b/var/spack/repos/builtin/packages/espresso/package.py
@@ -88,7 +88,7 @@ class Espresso(Package):
# Add a list of directories to search
search_list = []
- for name, dependency_spec in spec.dependencies.iteritems():
+ for dependency_spec in spec.dependencies():
search_list.extend([dependency_spec.prefix.lib,
dependency_spec.prefix.lib64])
diff --git a/var/spack/repos/builtin/packages/extrae/package.py b/var/spack/repos/builtin/packages/extrae/package.py
index 72bfbe6326..cb20a8109e 100644
--- a/var/spack/repos/builtin/packages/extrae/package.py
+++ b/var/spack/repos/builtin/packages/extrae/package.py
@@ -53,8 +53,8 @@ class Extrae(Package):
programming models either alone or in conjunction with MPI :
OpenMP, CUDA, OpenCL, pthread, OmpSs"""
homepage = "http://www.bsc.es/computer-sciences/extrae"
- url = "http://www.bsc.es/ssl/apps/performanceTools/files/extrae-3.0.1.tar.bz2"
- version('3.0.1', 'a6a8ca96cd877723cd8cc5df6bdb922b')
+ url = "http://www.bsc.es/ssl/apps/performanceTools/files/extrae-3.3.0.tar.bz2"
+ version('3.3.0', 'f46e3f1a6086b5b3ac41c9585b42952d')
depends_on("mpi")
depends_on("dyninst")
@@ -62,6 +62,9 @@ class Extrae(Package):
depends_on("boost")
depends_on("libdwarf")
depends_on("papi")
+ depends_on("libelf")
+ depends_on("libxml2")
+ depends_on("binutils+libiberty")
def install(self, spec, prefix):
if 'openmpi' in spec:
@@ -80,6 +83,9 @@ class Extrae(Package):
"--with-papi=%s" % spec['papi'].prefix,
"--with-dyninst-headers=%s" % spec[
'dyninst'].prefix.include,
+ "--with-elf=%s" % spec['libelf'].prefix,
+ "--with-xml-prefix=%s" % spec['libxml2'].prefix,
+ "--with-binutils=%s" % spec['binutils'].prefix,
"--with-dyninst-libs=%s" % spec['dyninst'].prefix.lib)
make()
diff --git a/var/spack/repos/builtin/packages/fenics/hdf5~cxx-detection.patch b/var/spack/repos/builtin/packages/fenics/hdf5~cxx-detection.patch
new file mode 100644
index 0000000000..52e36ab00b
--- /dev/null
+++ b/var/spack/repos/builtin/packages/fenics/hdf5~cxx-detection.patch
@@ -0,0 +1,11 @@
+--- a/CMakeLists.txt 2016-08-16 02:30:13.466078087 +0200
++++ b/CMakeLists.txt 2016-08-16 02:30:36.879586772 +0200
+@@ -553,7 +553,7 @@
+ set(ENV{HDF5_ROOT} "$ENV{HDF5_DIR}")
+ endif()
+ set(HDF5_PREFER_PARALLEL TRUE)
+- find_package(HDF5)
++ find_package(HDF5 COMPONENTS C)
+ set_package_properties(HDF5 PROPERTIES TYPE OPTIONAL
+ DESCRIPTION "Hierarchical Data Format 5 (HDF5)"
+ URL "https://www.hdfgroup.org/HDF5")
diff --git a/var/spack/repos/builtin/packages/fenics/package.py b/var/spack/repos/builtin/packages/fenics/package.py
index eeeefc540d..fd9a37df1b 100644
--- a/var/spack/repos/builtin/packages/fenics/package.py
+++ b/var/spack/repos/builtin/packages/fenics/package.py
@@ -62,17 +62,15 @@ class Fenics(Package):
# variant('slepc4py', default=True, description='Uses SLEPc4py')
# variant('pastix', default=True, description='Compile with Pastix')
- patch('petsc-3.7.patch', when='^petsc@3.7:')
+ patch('petsc-3.7.patch', when='@1.6.1^petsc@3.7:')
patch('petsc-version-detection.patch', when='@:1.6.1')
+ patch('hdf5~cxx-detection.patch')
extends('python')
- depends_on('py-numpy')
- depends_on('py-ply')
- depends_on('py-six')
- depends_on('py-sphinx@1.0.1:', when='+doc')
- depends_on('eigen@3.2.0:')
- depends_on('boost')
+ depends_on('eigen@3.2.0:', type='build')
+ depends_on('boost+filesystem+program_options+system+iostreams+timer+regex+chrono')
+
depends_on('mpi', when='+mpi')
depends_on('hdf5', when='+hdf5')
depends_on('parmetis@4.0.2:^metis+real64', when='+parmetis')
@@ -85,13 +83,28 @@ class Fenics(Package):
depends_on('suite-sparse', when='+suite-sparse')
depends_on('qt', when='+qt')
- # This are the build dependencies
- depends_on('py-setuptools')
- depends_on('cmake@2.8.12:')
- depends_on('swig@3.0.3:')
+ depends_on('py-ply', type=nolink)
+ depends_on('py-six', type=nolink)
+ depends_on('py-numpy', type=nolink)
+ depends_on('py-sympy', type=nolink)
+ depends_on('swig@3.0.3:', type=nolink)
+ depends_on('cmake@2.8.12:', type=nolink)
+
+ depends_on('py-setuptools', type='build')
+ depends_on('py-sphinx@1.0.1:', when='+doc', type='build')
releases = [
{
+ 'version': '2016.1.0',
+ 'md5': '92e8d00f6487a575987201f0b0d19173',
+ 'resources': {
+ 'ffc': '35457ae164e481ba5c9189ebae060a47',
+ 'fiat': 'ac0c49942831ee434301228842bcc280',
+ 'instant': '0e3dbb464c4d90d691f31f0fdd63d4f6',
+ 'ufl': '37433336e5c9b58d1d5ab4acca9104a7',
+ }
+ },
+ {
'version': '1.6.0',
'md5': '35cb4baf7ab4152a40fb7310b34d5800',
'resources': {
diff --git a/var/spack/repos/builtin/packages/fontconfig/package.py b/var/spack/repos/builtin/packages/fontconfig/package.py
index 0d7e47f228..311156378a 100644
--- a/var/spack/repos/builtin/packages/fontconfig/package.py
+++ b/var/spack/repos/builtin/packages/fontconfig/package.py
@@ -34,9 +34,12 @@ class Fontconfig(Package):
depends_on('freetype')
depends_on('libxml2')
+ depends_on('pkg-config', type='build')
def install(self, spec, prefix):
- configure("--prefix=%s" % prefix, "--enable-libxml2")
+ configure("--prefix=%s" % prefix,
+ "--enable-libxml2",
+ "--disable-docs")
make()
make("install")
diff --git a/var/spack/repos/builtin/packages/gcc/package.py b/var/spack/repos/builtin/packages/gcc/package.py
index 3be3948b59..d152ce61c7 100644
--- a/var/spack/repos/builtin/packages/gcc/package.py
+++ b/var/spack/repos/builtin/packages/gcc/package.py
@@ -3,6 +3,7 @@ from spack import *
from contextlib import closing
from glob import glob
import sys
+from os.path import isfile
class Gcc(Package):
@@ -68,6 +69,19 @@ class Gcc(Package):
if spec.satisfies("@4.7.1:") and sys.platform != 'darwin':
enabled_languages.add('go')
+ # Fix a standard header file for OS X Yosemite that
+ # is GCC incompatible by replacing non-GCC compliant macros
+ if 'yosemite' in spec.architecture:
+ if isfile(r'/usr/include/dispatch/object.h'):
+ new_dispatch_dir = join_path(prefix, 'include', 'dispatch')
+ mkdirp(new_dispatch_dir)
+ cp = which('cp')
+ new_header = join_path(new_dispatch_dir, 'object.h')
+ cp(r'/usr/include/dispatch/object.h', new_header)
+ filter_file(r'typedef void \(\^dispatch_block_t\)\(void\)',
+ 'typedef void* dispatch_block_t',
+ new_header)
+
# Generic options to compile GCC
options = ["--prefix=%s" % prefix, "--libdir=%s/lib64" % prefix,
"--disable-multilib",
diff --git a/var/spack/repos/builtin/packages/gdb/package.py b/var/spack/repos/builtin/packages/gdb/package.py
index a14e166ed4..f90e4e7ff0 100644
--- a/var/spack/repos/builtin/packages/gdb/package.py
+++ b/var/spack/repos/builtin/packages/gdb/package.py
@@ -41,9 +41,18 @@ class Gdb(Package):
version('7.9', '8f8ced422fe462a00e0135a643544f17')
version('7.8.2', '8b0ea8b3559d3d90b3ff4952f0aeafbc')
+ variant('python', default=True, description='Compile with Python support')
+
+ # Required dependency
depends_on('texinfo', type='build')
+ # Optional dependency
+ depends_on('python', when='+python')
+
def install(self, spec, prefix):
- configure('--prefix=%s' % prefix)
+ options = ['--prefix=%s' % prefix]
+ if '+python' in spec:
+ options.extend(['--with-python'])
+ configure(*options)
make()
make("install")
diff --git a/var/spack/repos/builtin/packages/geant4/package.py b/var/spack/repos/builtin/packages/geant4/package.py
new file mode 100644
index 0000000000..239ef6d586
--- /dev/null
+++ b/var/spack/repos/builtin/packages/geant4/package.py
@@ -0,0 +1,85 @@
+##############################################################################
+# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
+# Produced at the Lawrence Livermore National Laboratory.
+#
+# This file is part of Spack.
+# Created 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 Lesser General Public License (as
+# published by the Free Software Foundation) version 2.1, 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 Lesser 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 Geant4(Package):
+ """Geant4 is a toolkit for the simulation of the passage of particles
+ through matter. Its areas of application include high energy, nuclear
+ and accelerator physics, as well as studies in medical and space
+ science."""
+
+ homepage = "http://geant4.cern.ch/"
+ url = "http://geant4.cern.ch/support/source/geant4.10.01.p03.tar.gz"
+
+ version('10.02.p01', 'b81f7082a15f6a34b720b6f15c6289cfe4ddbbbdcef0dc52719f71fac95f7f1c')
+ version('10.01.p03', '4fb4175cc0dabcd517443fbdccd97439')
+
+ variant('qt', default=False, description='Enable Qt support')
+
+ depends_on('cmake@3.5:', type='build')
+
+ depends_on("clhep@2.3.1.1~cxx11+cxx14", when="@10.02.p01")
+ depends_on("clhep@2.2.0.4~cxx11+cxx14", when="@10.01.p03")
+ depends_on("expat")
+ depends_on("zlib")
+ depends_on("xerces-c")
+ depends_on("qt@4.8:", when="+qt")
+
+ def install(self, spec, prefix):
+ cmake_args = list(std_cmake_args)
+ cmake_args.append('-DXERCESC_ROOT_DIR:STRING=%s' %
+ spec['xerces-c'].prefix)
+ cmake_args.append('-DGEANT4_BUILD_CXXSTD=c++14')
+
+ cmake_args += ['-DGEANT4_USE_GDML=ON',
+ '-DGEANT4_USE_SYSTEM_EXPAT=ON',
+ '-DGEANT4_USE_SYSTEM_ZLIB=ON',
+ '-DGEANT4_USE_SYSTEM_CLHEP=ON']
+
+ # fixme: turn off data for now and maybe each data set should
+ # go into a separate package to cut down on disk usage between
+ # different code versions using the same data versions.
+ cmake_args.append('-DGEANT4_INSTALL_DATA=OFF')
+
+ # http://geant4.web.cern.ch/geant4/UserDocumentation/UsersGuides/InstallationGuide/html/ch02s03.html
+ # fixme: likely things that need addressing:
+ # -DGEANT4_USE_OPENGL_X11=ON
+
+ if '+qt' in spec:
+ cmake_args.append('-DGEANT4_USE_QT=ON')
+
+ build_directory = join_path(self.stage.path, 'spack-build')
+ source_directory = self.stage.source_path
+
+ with working_dir(build_directory, create=True):
+ cmake(source_directory, *cmake_args)
+ make()
+ make("install")
+
+ def url_for_version(self, version):
+ """Handle Geant4's unusual version string."""
+ return "http://geant4.cern.ch/support/source/geant4.%s.tar.gz" % version
diff --git a/var/spack/repos/builtin/packages/git-lfs/package.py b/var/spack/repos/builtin/packages/git-lfs/package.py
index a080660721..25e440ff6d 100644
--- a/var/spack/repos/builtin/packages/git-lfs/package.py
+++ b/var/spack/repos/builtin/packages/git-lfs/package.py
@@ -26,17 +26,28 @@ from spack import *
class GitLfs(Package):
- """Tool for managing large files with Git."""
+ """Git LFS is a system for managing and versioning large files in
+ association with a Git repository. Instead of storing the large files
+ within the Git repository as blobs, Git LFS stores special "pointer
+ files" in the repository, while storing the actual file contents on a
+ Git LFS server."""
homepage = "https://git-lfs.github.com"
- url = "https://github.com/github/git-lfs/archive/v1.4.1.tar.gz"
+ git_url = "https://github.com/github/git-lfs.git"
- version('1.4.1', 'c62a314d96d3a30af4d98fa3305ad317')
+ version('1.4.1', git=git_url, tag='v1.4.1')
+ version('1.3.1', git=git_url, tag='v1.3.1')
+
+ # TODO: Implement this by following the instructions at this location:
+ # https://github.com/github/git-lfs/blob/master/CONTRIBUTING.md#building
+ # variant('test', default=True, description='Build and run tests as part of the build.') # NOQA: E501
depends_on('go@1.5:', type='build')
depends_on('git@1.8.2:', type='run')
def install(self, spec, prefix):
- bootstrap = Executable('./scripts/bootstrap')
- bootstrap()
- install('bin/git-lfs', prefix.bin)
+ bootstrap_script = Executable(join_path('script', 'bootstrap'))
+ bootstrap_script()
+
+ mkdirp(prefix.bin)
+ install(join_path('bin', 'git-lfs'), prefix.bin)
diff --git a/var/spack/repos/builtin/packages/git/package.py b/var/spack/repos/builtin/packages/git/package.py
index ed058e0a68..ac97ad392b 100644
--- a/var/spack/repos/builtin/packages/git/package.py
+++ b/var/spack/repos/builtin/packages/git/package.py
@@ -22,6 +22,7 @@
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
+import sys
from spack import *
@@ -54,28 +55,33 @@ class Git(Package):
# version('2.5.4', '3eca2390cf1fa698b48e2a233563a76b')
# version('2.2.1', 'ff41fdb094eed1ec430aed8ee9b9849c')
- depends_on("openssl")
depends_on("autoconf", type='build')
depends_on("curl")
depends_on("expat")
depends_on("gettext")
- depends_on("zlib")
+ depends_on("libiconv")
+ depends_on("openssl")
depends_on("pcre")
depends_on("perl")
+ depends_on("zlib")
def install(self, spec, prefix):
env['LDFLAGS'] = "-L%s" % spec['gettext'].prefix.lib + " -lintl"
configure_args = [
"--prefix=%s" % prefix,
- "--with-libpcre=%s" % spec['pcre'].prefix,
- "--with-openssl=%s" % spec['openssl'].prefix,
- "--with-zlib=%s" % spec['zlib'].prefix,
"--with-curl=%s" % spec['curl'].prefix,
"--with-expat=%s" % spec['expat'].prefix,
+ "--with-iconv=%s" % spec['libiconv'].prefix,
+ "--with-libpcre=%s" % spec['pcre'].prefix,
+ "--with-openssl=%s" % spec['openssl'].prefix,
"--with-perl=%s" % join_path(spec['perl'].prefix.bin, 'perl'),
+ "--with-zlib=%s" % spec['zlib'].prefix,
]
which('autoreconf')('-i')
configure(*configure_args)
+ if sys.platform == "darwin":
+ # Don't link with -lrt; the system has no (and needs no) librt
+ filter_file(r' -lrt$', '', 'Makefile')
make()
make("install")
diff --git a/var/spack/repos/builtin/packages/glib/no-Werror=format-security.patch b/var/spack/repos/builtin/packages/glib/no-Werror=format-security.patch
new file mode 100644
index 0000000000..cfcfe424be
--- /dev/null
+++ b/var/spack/repos/builtin/packages/glib/no-Werror=format-security.patch
@@ -0,0 +1,16 @@
+--- a/configure.ac 2016-08-16 11:57:34.000000000 -0400
++++ b/configure.ac 2016-08-16 11:57:36.000000000 -0400
+@@ -3357,11 +3357,11 @@
+ enable_compile_warnings=yes)
+ AS_IF([test "x$enable_compile_warnings" = xyes], [
+ CC_CHECK_FLAGS_APPEND([GLIB_WARN_CFLAGS], [CFLAGS], [\
+ -Wall -Wstrict-prototypes -Werror=declaration-after-statement \
+ -Werror=missing-prototypes -Werror=implicit-function-declaration \
+- -Werror=pointer-arith -Werror=init-self -Werror=format-security \
+- -Werror=format=2 -Werror=missing-include-dirs])
++ -Werror=pointer-arith -Werror=init-self \
++ -Werror=missing-include-dirs])
+ ])
+ AC_SUBST(GLIB_WARN_CFLAGS)
+
+ #
diff --git a/var/spack/repos/builtin/packages/glib/package.py b/var/spack/repos/builtin/packages/glib/package.py
index 94ef95e7ab..3e687ccd95 100644
--- a/var/spack/repos/builtin/packages/glib/package.py
+++ b/var/spack/repos/builtin/packages/glib/package.py
@@ -23,6 +23,7 @@
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
from spack import *
+import os
class Glib(Package):
@@ -38,14 +39,20 @@ class Glib(Package):
version('2.48.1', '67bd3b75c9f6d5587b457dc01cdcd5bb')
version('2.42.1', '89c4119e50e767d3532158605ee9121a')
+ depends_on('autoconf', type='build')
+ depends_on('automake', type='build')
+ depends_on('libtool', type='build')
+ depends_on('pkg-config', type='build')
depends_on('libffi')
depends_on('zlib')
- depends_on('pkg-config', type='build')
depends_on('gettext')
depends_on('pcre+utf', when='@2.48:')
# The following patch is needed for gcc-6.1
patch('g_date_strftime.patch', when='@2.42.1')
+ # Clang doesn't seem to acknowledge the pragma lines to disable the -Werror
+ # around a legitimate usage.
+ patch('no-Werror=format-security.patch')
def url_for_version(self, version):
"""Handle glib's version-based custom URLs."""
@@ -53,6 +60,16 @@ class Glib(Package):
return url + '/%s/glib-%s.tar.xz' % (version.up_to(2), version)
def install(self, spec, prefix):
+ autoreconf = which("autoreconf")
+ autoreconf("--install", "--verbose", "--force",
+ "-I", "config",
+ "-I", os.path.join(spec['pkg-config'].prefix,
+ "share", "aclocal"),
+ "-I", os.path.join(spec['automake'].prefix,
+ "share", "aclocal"),
+ "-I", os.path.join(spec['libtool'].prefix,
+ "share", "aclocal"),
+ )
configure("--prefix=%s" % prefix)
make()
make("install", parallel=False)
diff --git a/var/spack/repos/builtin/packages/gmake/package.py b/var/spack/repos/builtin/packages/gmake/package.py
new file mode 100644
index 0000000000..ca296350a4
--- /dev/null
+++ b/var/spack/repos/builtin/packages/gmake/package.py
@@ -0,0 +1,42 @@
+##############################################################################
+# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
+# Produced at the Lawrence Livermore National Laboratory.
+#
+# This file is part of Spack.
+# Created 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 Lesser General Public License (as
+# published by the Free Software Foundation) version 2.1, 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 Lesser 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 Gmake(Package):
+ """GNU Make."""
+
+ homepage = "http://gnu.org/gnu/make"
+ url = "ftp://ftp.gnu.org/gnu/make/make-4.0.tar.gz"
+
+ version('4.0', 'b5e558f981326d9ca1bfdb841640721a')
+
+ def install(self, spec, prefix):
+ configure('--prefix={0}'.format(prefix))
+
+ make()
+ make('install')
+ with working_dir(prefix.bin):
+ symlink('make', 'gmake')
diff --git a/var/spack/repos/builtin/packages/gmp/package.py b/var/spack/repos/builtin/packages/gmp/package.py
index bd1f653bd7..ddc2dbb935 100644
--- a/var/spack/repos/builtin/packages/gmp/package.py
+++ b/var/spack/repos/builtin/packages/gmp/package.py
@@ -37,4 +37,7 @@ class Gmp(AutotoolsPackage):
version('6.0.0a', 'b7ff2d88cae7f8085bd5006096eed470')
version('6.0.0', '6ef5869ae735db9995619135bd856b84')
- depends_on("m4", type='build')
+ depends_on('m4', type='build')
+
+ def configure_args(self):
+ return ['--enable-cxx']
diff --git a/var/spack/repos/builtin/packages/gmsh/package.py b/var/spack/repos/builtin/packages/gmsh/package.py
index 1d375f2186..dd142866e5 100644
--- a/var/spack/repos/builtin/packages/gmsh/package.py
+++ b/var/spack/repos/builtin/packages/gmsh/package.py
@@ -87,9 +87,9 @@ class Gmsh(Package):
options.append('-DENABLE_OS_SPECIFIC_INSTALL=OFF')
# Make sure GMSH picks up correct BlasLapack by providing linker flags
- options.append('-DBLAS_LAPACK_LIBRARIES=%s %s' %
- (to_link_flags(spec['lapack'].lapack_shared_lib),
- to_link_flags(spec['blas'].blas_shared_lib)))
+ blas_lapack = spec['lapack'].lapack_libs + spec['blas'].blas_libs
+ options.append(
+ '-DBLAS_LAPACK_LIBRARIES={0}'.format(blas_lapack.ld_flags))
# Gmsh does not have an option to compile against external metis.
# Its own Metis, however, fails to build
diff --git a/var/spack/repos/builtin/packages/go-bootstrap/package.py b/var/spack/repos/builtin/packages/go-bootstrap/package.py
index b0e2109fd3..d48c7c9756 100644
--- a/var/spack/repos/builtin/packages/go-bootstrap/package.py
+++ b/var/spack/repos/builtin/packages/go-bootstrap/package.py
@@ -1,3 +1,27 @@
+##############################################################################
+# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
+# Produced at the Lawrence Livermore National Laboratory.
+#
+# This file is part of Spack.
+# Created 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 Lesser General Public License (as
+# published by the Free Software Foundation) version 2.1, 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 Lesser 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
+##############################################################################
import os
import shutil
import glob
@@ -17,25 +41,37 @@ class GoBootstrap(Package):
extendable = True
- # temporary fix until tags are pulled correctly
+ # NOTE: Go@1.4.2 is the only supported bootstrapping compiler because all
+ # later versions require a Go compiler to build.
+ # See: https://golang.org/doc/install/source
version('1.4.2', git='https://go.googlesource.com/go', tag='go1.4.2')
- variant('test',
- default=True,
- description="Run tests as part of build, a good idea but quite"
- " time consuming")
+ variant('test', default=True, description='Build and run tests as part of the build.')
provides('golang@:1.4.2')
- depends_on('git')
+ depends_on('git', type='alldeps')
+
+ # NOTE: Older versions of Go attempt to download external files that have
+ # since been moved while running the test suite. This patch modifies the
+ # test files so that these tests don't cause false failures.
+ # See: https://github.com/golang/go/issues/15694
+ @when('@:1.4.3')
+ def patch(self):
+ test_suite_file = FileFilter(join_path('src', 'run.bash'))
+ test_suite_file.filter(
+ r'^(.*)(\$GOROOT/src/cmd/api/run.go)(.*)$',
+ r'# \1\2\3',
+ )
+
+ @when('@1.5.0:')
+ def patch(self):
+ pass
def install(self, spec, prefix):
bash = which('bash')
with working_dir('src'):
- if '+test' in spec:
- bash('all.bash')
- else:
- bash('make.bash')
+ bash('{0}.bash'.format('all' if '+test' in spec else 'make'))
try:
os.makedirs(prefix)
diff --git a/var/spack/repos/builtin/packages/go/package.py b/var/spack/repos/builtin/packages/go/package.py
index 259498c145..5fa3017ab5 100644
--- a/var/spack/repos/builtin/packages/go/package.py
+++ b/var/spack/repos/builtin/packages/go/package.py
@@ -1,3 +1,27 @@
+##############################################################################
+# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
+# Produced at the Lawrence Livermore National Laboratory.
+#
+# This file is part of Spack.
+# Created 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 Lesser General Public License (as
+# published by the Free Software Foundation) version 2.1, 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 Lesser 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
+##############################################################################
import os
import shutil
import glob
@@ -12,28 +36,39 @@ class Go(Package):
extendable = True
- version('1.5.4', git='https://go.googlesource.com/go', tag='go1.5.4')
version('1.6.2', git='https://go.googlesource.com/go', tag='go1.6.2')
+ version('1.5.4', git='https://go.googlesource.com/go', tag='go1.5.4')
+ version('1.4.2', git='https://go.googlesource.com/go', tag='go1.4.2')
- variant('test',
- default=True,
- description="Run tests as part of build, a good idea but quite"
- " time consuming")
+ variant('test', default=True, description='Build and run tests as part of the build.')
provides('golang')
- # to-do, make non-c self-hosting compilers feasible without backflips
+ depends_on('git', type='alldeps')
+ # TODO: Make non-c self-hosting compilers feasible without backflips
# should be a dep on external go compiler
depends_on('go-bootstrap', type='build')
- depends_on('git', type='alldeps')
+
+ # NOTE: Older versions of Go attempt to download external files that have
+ # since been moved while running the test suite. This patch modifies the
+ # test files so that these tests don't cause false failures.
+ # See: https://github.com/golang/go/issues/15694
+ @when('@:1.4.3')
+ def patch(self):
+ test_suite_file = FileFilter(join_path('src', 'run.bash'))
+ test_suite_file.filter(
+ r'^(.*)(\$GOROOT/src/cmd/api/run.go)(.*)$',
+ r'# \1\2\3',
+ )
+
+ @when('@1.5.0:')
+ def patch(self):
+ pass
def install(self, spec, prefix):
bash = which('bash')
with working_dir('src'):
- if '+test' in spec:
- bash('all.bash')
- else:
- bash('make.bash')
+ bash('{0}.bash'.format('all' if '+test' in spec else 'make'))
try:
os.makedirs(prefix)
diff --git a/var/spack/repos/builtin/packages/grackle/Make.mach.template b/var/spack/repos/builtin/packages/grackle/Make.mach.template
new file mode 100644
index 0000000000..83abaa26d1
--- /dev/null
+++ b/var/spack/repos/builtin/packages/grackle/Make.mach.template
@@ -0,0 +1,71 @@
+MACH_TEXT = Generic Linux
+MACH_VALID = 1
+MACH_FILE = Make.mach.@ARCHITECTURE
+
+#-----------------------------------------------------------------------
+# Install paths (local variables)
+#-----------------------------------------------------------------------
+
+LOCAL_HDF5_INSTALL = @HDF5_ROOT
+
+#-----------------------------------------------------------------------
+# Compiler settings
+#-----------------------------------------------------------------------
+
+MACH_CC_NOMPI = @CC # C compiler
+MACH_CXX_NOMPI = @CXX # C++ compiler
+MACH_FC_NOMPI = @F77 # Fortran 77
+MACH_F90_NOMPI = @FC # Fortran 90
+MACH_LD_NOMPI = @FC # Linker
+@LINK_VARIABLES_DEFINITION
+
+#-----------------------------------------------------------------------
+# Machine-dependent defines
+#-----------------------------------------------------------------------
+
+MACH_DEFINES = -DLINUX -DH5_USE_16_API -fPIC
+
+#-----------------------------------------------------------------------
+# Compiler flag settings
+#-----------------------------------------------------------------------
+
+MACH_CPPFLAGS = -P -traditional
+MACH_CFLAGS =
+MACH_CXXFLAGS =
+MACH_FFLAGS = -fno-second-underscore -ffixed-line-length-132
+MACH_F90FLAGS = -fno-second-underscore
+MACH_LDFLAGS = @STDCXX_LIB
+
+#-----------------------------------------------------------------------
+# Optimization flags
+#-----------------------------------------------------------------------
+
+MACH_OPT_WARN = -Wall -g
+MACH_OPT_DEBUG = -g
+MACH_OPT_HIGH = -O2
+MACH_OPT_AGGRESSIVE = -O3 -g
+
+#-----------------------------------------------------------------------
+# Includes
+#-----------------------------------------------------------------------
+
+LOCAL_INCLUDES_HDF5 = -I@HDF5_ROOT/include # HDF5 includes
+
+MACH_INCLUDES = $(LOCAL_INCLUDES_HDF5)
+
+#-----------------------------------------------------------------------
+# Libraries
+#-----------------------------------------------------------------------
+
+LOCAL_LIBS_HDF5 = -L@HDF5_ROOT/lib -lhdf5 # HDF5 libraries
+LOCAL_LIBS_MACH = # Machine-dependent libraries
+
+MACH_LIBS = $(LOCAL_LIBS_HDF5) $(LOCAL_LIBS_MACH)
+
+#-----------------------------------------------------------------------
+# Installation
+#-----------------------------------------------------------------------
+
+MACH_INSTALL_PREFIX = @PREFIX
+MACH_INSTALL_LIB_DIR =
+MACH_INSTALL_INCLUDE_DIR =
diff --git a/var/spack/repos/builtin/packages/grackle/package.py b/var/spack/repos/builtin/packages/grackle/package.py
new file mode 100644
index 0000000000..7e3777158f
--- /dev/null
+++ b/var/spack/repos/builtin/packages/grackle/package.py
@@ -0,0 +1,89 @@
+##############################################################################
+# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
+# Produced at the Lawrence Livermore National Laboratory.
+#
+# This file is part of Spack.
+# Created 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 Lesser General Public License (as
+# published by the Free Software Foundation) version 2.1, 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 Lesser 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
+##############################################################################
+import os.path
+import shutil
+import inspect
+
+from spack import *
+
+
+class Grackle(Package):
+ """Grackle is a chemistry and radiative cooling library for astrophysical
+ simulations with interfaces for C, C++, and Fortran codes. It is a
+ generalized and trimmed down version of the chemistry network of the Enzo
+ simulation code
+ """
+ homepage = 'http://grackle.readthedocs.io/en/grackle-2.2/'
+ url = 'https://bitbucket.org/grackle/grackle/get/grackle-2.0.1.tar.bz2'
+
+ version('2.2', 'ec49ed1db5a42db21f478285150c2ba3')
+ version('2.0.1', 'a9624ad13a60c592c1a0a4ea8e1ae86d')
+
+ depends_on('libtool', when='@2.2')
+
+ depends_on('mpi')
+ depends_on('hdf5+mpi')
+
+ parallel = False
+
+ def install(self, spec, prefix):
+ template_name = '{0.architecture}-{0.compiler.name}'
+ grackle_architecture = template_name.format(spec)
+ link_variables = 'MACH_AR = ar' if spec.version < Version(2.2) else 'MACH_LIBTOOL = libtool' # NOQA: ignore=E501
+ substitutions = {
+ '@ARCHITECTURE': grackle_architecture,
+ '@CC': spec['mpi'].mpicc,
+ '@CXX': spec['mpi'].mpicxx,
+ '@FC': spec['mpi'].mpifc,
+ '@F77': spec['mpi'].mpif77,
+ '@STDCXX_LIB': ' '.join(self.compiler.stdcxx_libs),
+ '@HDF5_ROOT': spec['hdf5'].prefix,
+ '@PREFIX': prefix,
+ '@LINK_VARIABLES_DEFINITION': link_variables
+ }
+
+ template = join_path(
+ os.path.dirname(inspect.getmodule(self).__file__),
+ 'Make.mach.template'
+ )
+ makefile = join_path(
+ self.stage.source_path,
+ 'src',
+ 'clib',
+ 'Make.mach.{0}'.format(grackle_architecture)
+ )
+ shutil.copy(template, makefile)
+ for key, value in substitutions.items():
+ filter_file(key, value, makefile)
+
+ configure()
+ with working_dir('src/clib'):
+ make('clean')
+ make('machine-{0}'.format(grackle_architecture))
+ make('opt-high')
+ make('show-config')
+ make()
+ mkdirp(prefix.lib)
+ make('install')
diff --git a/var/spack/repos/builtin/packages/grib-api/package.py b/var/spack/repos/builtin/packages/grib-api/package.py
new file mode 100644
index 0000000000..8b81e14a27
--- /dev/null
+++ b/var/spack/repos/builtin/packages/grib-api/package.py
@@ -0,0 +1,80 @@
+##############################################################################
+# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
+# Produced at the Lawrence Livermore National Laboratory.
+#
+# This file is part of Spack.
+# Created 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 Lesser General Public License (as
+# published by the Free Software Foundation) version 2.1, 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 Lesser 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 GribApi(Package):
+ """The ECMWF GRIB API is an application program interface accessible from
+ C, FORTRAN and Python programs developed for encoding and decoding WMO
+ FM-92 GRIB edition 1 and edition 2 messages."""
+
+ homepage = "https://software.ecmwf.int/wiki/display/GRIB/Home"
+ url = "https://software.ecmwf.int/wiki/download/attachments/3473437/grib_api-1.17.0-Source.tar.gz"
+
+ version('1.17.0', 'bca7114d2c3100501a08190a146818d2')
+ version('1.16.0', '8c7fdee03344e4379d400ae20976a460')
+
+ variant('netcdf', default=False, description='Enable netcdf encoding/decoding using netcdf library')
+ variant('jpeg', default=True, description='Enable jpeg 2000 for grib 2 decoding/encoding')
+ variant('png', default=False, description='Enable png for decoding/encoding')
+
+ depends_on('cmake', type='build')
+ depends_on('libpng', when='+png')
+ depends_on('netcdf', when='+netcdf')
+ depends_on('jasper', when='+jpeg')
+
+ def install(self, spec, prefix):
+ options = []
+ options.extend(std_cmake_args)
+ options.append('-DBUILD_SHARED_LIBS=BOTH')
+
+ # We will add python support later.
+ options.append('-DENABLE_PYTHON=OFF')
+
+ # Disable FORTRAN interface if we don't have it.
+ if (self.compiler.f77 is None) or (self.compiler.fc is None):
+ options.append('-DENABLE_FORTRAN=OFF')
+
+ if '+netcdf' in spec:
+ options.append('-DENABLE_NETCDF=ON')
+ options.append('-DNETCDF_PATH=%s' % spec['netcdf'].prefix)
+ else:
+ options.append('-DENABLE_NETCDF=OFF')
+
+ if '+jpeg' in spec:
+ options.append('-DENABLE_JPG=ON')
+ options.append('-DJASPER_PATH=%s' % spec['jasper'].prefix)
+ else:
+ options.append('-DENABLE_JPG=OFF')
+
+ if '+png' in spec:
+ options.append('-DENABLE_PNG=ON')
+ else:
+ options.append('-DENABLE_PNG=OFF')
+
+ with working_dir('spack-build', create=True):
+ cmake('..', *options)
+ make()
+ make('install')
diff --git a/var/spack/repos/builtin/packages/h5hut/package.py b/var/spack/repos/builtin/packages/h5hut/package.py
new file mode 100644
index 0000000000..1501384493
--- /dev/null
+++ b/var/spack/repos/builtin/packages/h5hut/package.py
@@ -0,0 +1,70 @@
+##############################################################################
+# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
+# Produced at the Lawrence Livermore National Laboratory.
+#
+# This file is part of Spack.
+# Created 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 Lesser General Public License (as
+# published by the Free Software Foundation) version 2.1, 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 Lesser 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 H5hut(Package):
+ """H5hut (HDF5 Utility Toolkit)
+ High-Performance I/O Library for Particle-based Simulations
+ """
+
+ homepage = "https://amas.psi.ch/H5hut/"
+ url = "https://amas.psi.ch/H5hut/raw-attachment/wiki/DownloadSources/H5hut-1.99.13.tar.gz"
+
+ version("1.99.13", "2a07a449afe50534de006ac6954a421a")
+
+ variant("fortran", default=True, description="Enable Fortran support")
+ variant("mpi", default=False, description="Enable MPI support")
+
+ depends_on("autoconf @2.60:", type="build")
+ depends_on("automake", type="build")
+ depends_on("hdf5 +mpi", when="+mpi")
+ depends_on("hdf5 @1.8:")
+ # h5hut +mpi uses the obsolete function H5Pset_fapl_mpiposix:
+ depends_on("hdf5 @:1.8.12", when="+mpi")
+ depends_on("libtool", type="build")
+ depends_on("mpi", when="+mpi")
+
+ def install(self, spec, prefix):
+ autogen = Executable("./autogen.sh")
+ autogen()
+ configopts = ["--prefix={0}".format(prefix)]
+ if "+fortran" in spec:
+ if not self.compiler.fc:
+ raise RuntimeError(
+ "Cannot build Fortran variant without a Fortran compiler")
+ configopts.append("--enable-fortran")
+ if "+mpi" in spec:
+ configopts.extend([
+ "--enable-parallel",
+ "CC=%s" % spec["mpi"].mpicc,
+ "CXX=%s" % spec["mpi"].mpicxx])
+ if "+fortran" in spec:
+ configopts.append("FC=%s" % spec["mpi"].mpifc)
+ configure(*configopts)
+
+ make()
+ make("install")
diff --git a/var/spack/repos/builtin/packages/hadoop/package.py b/var/spack/repos/builtin/packages/hadoop/package.py
new file mode 100644
index 0000000000..fdcac10335
--- /dev/null
+++ b/var/spack/repos/builtin/packages/hadoop/package.py
@@ -0,0 +1,53 @@
+##############################################################################
+# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
+# Produced at the Lawrence Livermore National Laboratory.
+#
+# This file is part of Spack.
+# Created by Alfredo Gimenez, gimenez1@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 Lesser General Public License (as
+# published by the Free Software Foundation) version 2.1, 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 Lesser 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 Hadoop(Package):
+ """The Apache Hadoop software library is a framework that
+ allows for the distributed processing of large data sets
+ across clusters of computers using simple programming models.
+ """
+
+ homepage = "http://hadoop.apache.org/"
+ url = "http://mirrors.ocf.berkeley.edu/apache/hadoop/common/hadoop-2.6.4/hadoop-2.6.4.tar.gz"
+
+ version('2.6.4', '37019f13d7dcd819727be158440b9442')
+
+ depends_on('jdk', type='run')
+
+ def install(self, spec, prefix):
+
+ def install_dir(dirname):
+ install_tree(dirname, join_path(prefix, dirname))
+
+ install_dir('bin')
+ install_dir('etc')
+ install_dir('include')
+ install_dir('lib')
+ install_dir('libexec')
+ install_dir('sbin')
+ install_dir('share')
diff --git a/var/spack/repos/builtin/packages/harfbuzz/package.py b/var/spack/repos/builtin/packages/harfbuzz/package.py
index f8d73d651b..7c98c2a96a 100644
--- a/var/spack/repos/builtin/packages/harfbuzz/package.py
+++ b/var/spack/repos/builtin/packages/harfbuzz/package.py
@@ -32,8 +32,9 @@ class Harfbuzz(Package):
version('0.9.37', 'bfe733250e34629a188d82e3b971bc1e')
+ depends_on("pkg-config", type="build")
depends_on("glib")
- depends_on("icu")
+ depends_on("icu4c")
depends_on("freetype")
depends_on("cairo")
depends_on("zlib")
diff --git a/var/spack/repos/builtin/packages/hdf/package.py b/var/spack/repos/builtin/packages/hdf/package.py
index aafb345be6..9a44184256 100644
--- a/var/spack/repos/builtin/packages/hdf/package.py
+++ b/var/spack/repos/builtin/packages/hdf/package.py
@@ -38,13 +38,12 @@ class Hdf(Package):
variant('szip', default=False, description="Enable szip support")
- depends_on("jpeg")
- depends_on("szip", when='+szip')
- depends_on("zlib")
+ depends_on('jpeg')
+ depends_on('szip', when='+szip')
+ depends_on('zlib')
- def url_for_version(self, version):
- return "https://www.hdfgroup.org/ftp/HDF/releases/HDF" + str(
- version) + "/src/hdf-" + str(version) + ".tar.gz"
+ depends_on('bison', type='build')
+ depends_on('flex', type='build')
def install(self, spec, prefix):
config_args = [
@@ -66,4 +65,5 @@ class Hdf(Package):
configure(*config_args)
make()
- make("install")
+ make('check')
+ make('install')
diff --git a/var/spack/repos/builtin/packages/hdf5/package.py b/var/spack/repos/builtin/packages/hdf5/package.py
index 601e3278e5..b5a7a65083 100644
--- a/var/spack/repos/builtin/packages/hdf5/package.py
+++ b/var/spack/repos/builtin/packages/hdf5/package.py
@@ -43,6 +43,7 @@ class Hdf5(AutotoolsPackage):
version('1.8.16', 'b8ed9a36ae142317f88b0c7ef4b9c618')
version('1.8.15', '03cccb5b33dbe975fdcd8ae9dc021f24')
version('1.8.13', 'c03426e9e77d7766944654280b467289')
+ version('1.8.12', 'd804802feb99b87fc668a90e6fa34411')
variant('debug', default=False,
description='Builds a debug version of the library')
@@ -52,7 +53,7 @@ class Hdf5(AutotoolsPackage):
variant('cxx', default=True, description='Enable C++ support')
variant('fortran', default=True, description='Enable Fortran support')
- variant('mpi', default=False, description='Enable MPI support')
+ variant('mpi', default=True, description='Enable MPI support')
variant('szip', default=False, description='Enable szip support')
variant('threadsafe', default=False,
description='Enable thread-safe capabilities')
diff --git a/var/spack/repos/builtin/packages/hepmc/package.py b/var/spack/repos/builtin/packages/hepmc/package.py
new file mode 100644
index 0000000000..ab80dcf6ba
--- /dev/null
+++ b/var/spack/repos/builtin/packages/hepmc/package.py
@@ -0,0 +1,55 @@
+##############################################################################
+# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
+# Produced at the Lawrence Livermore National Laboratory.
+#
+# This file is part of Spack.
+# Created 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 Lesser General Public License (as
+# published by the Free Software Foundation) version 2.1, 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 Lesser 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 Hepmc(Package):
+ """The HepMC package is an object oriented, C++ event record for
+ High Energy Physics Monte Carlo generators and simulation."""
+
+ homepage = "http://hepmc.web.cern.ch/hepmc/"
+ url = "http://hepmc.web.cern.ch/hepmc/releases/hepmc2.06.09.tgz"
+
+ version('2.06.09', 'c47627ced4255b40e731b8666848b087')
+ version('2.06.08', 'a2e889114cafc4f60742029d69abd907')
+ version('2.06.07', '11d7035dccb0650b331f51520c6172e7')
+ version('2.06.06', '102e5503537a3ecd6ea6f466aa5bc4ae')
+ version('2.06.05', '2a4a2a945adf26474b8bdccf4f881d9c')
+
+ depends_on("cmake", type='build')
+
+ def install(self, spec, prefix):
+ build_directory = join_path(self.stage.path, 'spack-build')
+ source_directory = self.stage.source_path
+ options = [source_directory]
+ options.append('-Dmomentum:STRING=GEV')
+ options.append('-Dlength:STRING=MM')
+ options.extend(std_cmake_args)
+
+ with working_dir(build_directory, create=True):
+ cmake(*options)
+ make()
+ make('install')
diff --git a/var/spack/repos/builtin/packages/heppdt/package.py b/var/spack/repos/builtin/packages/heppdt/package.py
new file mode 100644
index 0000000000..54c846ae33
--- /dev/null
+++ b/var/spack/repos/builtin/packages/heppdt/package.py
@@ -0,0 +1,48 @@
+##############################################################################
+# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
+# Produced at the Lawrence Livermore National Laboratory.
+#
+# This file is part of Spack.
+# Created 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 Lesser General Public License (as
+# published by the Free Software Foundation) version 2.1, 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 Lesser 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 Heppdt(Package):
+ """The HepPID library contains translation methods for particle ID's
+ to and from various Monte Carlo generators and the PDG standard
+ numbering scheme. We realize that the generators adhere closely
+ to the standard, but there are occasional differences."""
+ homepage = "http://lcgapp.cern.ch/project/simu/HepPDT/"
+ url = "http://lcgapp.cern.ch/project/simu/HepPDT/download/HepPDT-2.06.01.tar.gz"
+
+ version('3.04.01', 'a8e93c7603d844266b62d6f189f0ac7e')
+ version('3.04.00', '2d2cd7552d3e9539148febacc6287db2')
+ version('3.03.02', '0b85f1809bb8b0b28a46f23c718b2773')
+ version('3.03.01', 'd411f3bfdf9c4350d802241ba2629cc2')
+ version('3.03.00', 'cd84d0a0454be982dcd8c285e060a7b3')
+ version('2.06.01', '5688b4bdbd84b48ed5dd2545a3dc33c0')
+
+ def install(self, spec, prefix):
+ configure('--prefix=%s' % prefix)
+
+ make()
+ make("install")
diff --git a/var/spack/repos/builtin/packages/hpctoolkit-externals/package.py b/var/spack/repos/builtin/packages/hpctoolkit-externals/package.py
new file mode 100644
index 0000000000..64b5d17851
--- /dev/null
+++ b/var/spack/repos/builtin/packages/hpctoolkit-externals/package.py
@@ -0,0 +1,39 @@
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License (as
+# published by the Free Software Foundation) version 2.1, 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 Lesser 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 HpctoolkitExternals(Package):
+ """HPCToolkit performance analysis tool has many prerequisites and
+ HpctoolkitExternals package provides all these prerequisites."""
+
+ homepage = "http://hpctoolkit.org"
+
+ # Note: No precise release tags/branches provided
+ version('5.4',
+ git='https://github.com/HPCToolkit/hpctoolkit-externals.git',
+ commit='3d2953623357bb06e9a4b51eca90a4b039c2710e')
+
+ parallel = False
+
+ def install(self, spec, prefix):
+
+ options = ['CC=%s' % self.compiler.cc,
+ 'CXX=%s' % self.compiler.cxx]
+
+ with working_dir('spack-build', create=True):
+ configure = Executable('../configure')
+ configure('--prefix=%s' % prefix, *options)
+ make('install')
diff --git a/var/spack/repos/builtin/packages/hpctoolkit/package.py b/var/spack/repos/builtin/packages/hpctoolkit/package.py
new file mode 100644
index 0000000000..aac22ef829
--- /dev/null
+++ b/var/spack/repos/builtin/packages/hpctoolkit/package.py
@@ -0,0 +1,55 @@
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License (as
+# published by the Free Software Foundation) version 2.1, 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 Lesser 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 Hpctoolkit(Package):
+ """HPCToolkit is an integrated suite of tools for measurement and analysis
+ of program performance on computers ranging from multicore desktop systems
+ to the nation's largest supercomputers. By using statistical sampling of
+ timers and hardware performance counters, HPCToolkit collects accurate
+ measurements of a program's work, resource consumption, and inefficiency
+ and attributes them to the full calling context in which they occur."""
+
+ homepage = "http://hpctoolkit.org"
+
+ # Note: No precise release tags/branches provided
+ version('5.4', git='https://github.com/HPCToolkit/hpctoolkit.git',
+ commit='d9ca2112762e5a06ea31b5295d793e4a83272d19')
+
+ variant('mpi', default=True, description='Enable MPI supoort')
+ variant('papi', default=True, description='Enable PAPI counter support')
+
+ depends_on('hpctoolkit-externals')
+ depends_on('papi', when='+papi')
+ depends_on('mpi', when='+mpi')
+
+ def install(self, spec, prefix):
+
+ options = ['CC=%s' % self.compiler.cc,
+ 'CXX=%s' % self.compiler.cxx,
+ '--with-externals=%s' % spec['hpctoolkit-externals'].prefix]
+
+ if '+mpi' in spec:
+ options.extend(['MPICXX=%s' % spec['mpi'].mpicxx])
+
+ if '+papi' in spec:
+ options.extend(['--with-papi=%s' % spec['papi'].prefix])
+
+ # TODO: BG-Q configure option
+ with working_dir('spack-build', create=True):
+ configure = Executable('../configure')
+ configure('--prefix=%s' % prefix, *options)
+ make('install')
diff --git a/var/spack/repos/builtin/packages/hpl/package.py b/var/spack/repos/builtin/packages/hpl/package.py
index efd5c8bb1d..fa0013de17 100644
--- a/var/spack/repos/builtin/packages/hpl/package.py
+++ b/var/spack/repos/builtin/packages/hpl/package.py
@@ -78,7 +78,7 @@ class Hpl(Package):
'MPlib = -L{0}'.format(spec['mpi'].prefix.lib),
# Linear Algebra library (BLAS or VSIPL)
'LAinc = {0}'.format(spec['blas'].prefix.include),
- 'LAlib = {0}'.format(spec['blas'].blas_shared_lib),
+ 'LAlib = {0}'.format(spec['blas'].blas_libs.joined()),
# F77 / C interface
'F2CDEFS = -DAdd_ -DF77_INTEGER=int -DStringSunStyle',
# HPL includes / libraries / specifics
diff --git a/var/spack/repos/builtin/packages/hwloc/package.py b/var/spack/repos/builtin/packages/hwloc/package.py
index c163628840..111c424b22 100644
--- a/var/spack/repos/builtin/packages/hwloc/package.py
+++ b/var/spack/repos/builtin/packages/hwloc/package.py
@@ -42,6 +42,7 @@ class Hwloc(Package):
list_url = "http://www.open-mpi.org/software/hwloc/"
list_depth = 3
+ version('1.11.4', 'b6f23eb59074fd09fdd84905d50b103d')
version('1.11.3', 'c1d36a9de6028eac1d18ea4782ef958f')
version('1.11.2', 'e4ca55c2a5c5656da4a4e37c8fc51b23')
version('1.11.1', 'feb4e416a1b25963ed565d8b42252fdc')
diff --git a/var/spack/repos/builtin/packages/hypre/package.py b/var/spack/repos/builtin/packages/hypre/package.py
index fdc236dcf4..f22303a864 100644
--- a/var/spack/repos/builtin/packages/hypre/package.py
+++ b/var/spack/repos/builtin/packages/hypre/package.py
@@ -54,19 +54,15 @@ class Hypre(Package):
os.environ['CXX'] = spec['mpi'].mpicxx
os.environ['F77'] = spec['mpi'].mpif77
- # Since +shared does not build on macOS and also Atlas does not have
- # a single static lib to build against, link against shared libs with
- # a hope that --whole-archive linker option (or alike) was used
- # to command the linker to include whole static libs' content into the
- # shared lib
# Note: --with-(lapack|blas)_libs= needs space separated list of names
+ lapack = spec['lapack'].lapack_libs
+ blas = spec['blas'].blas_libs
+
configure_args = [
'--prefix=%s' % prefix,
- '--with-lapack-libs=%s' % to_lib_name(
- spec['lapack'].lapack_shared_lib),
+ '--with-lapack-libs=%s' % ' '.join(lapack.names),
'--with-lapack-lib-dirs=%s' % spec['lapack'].prefix.lib,
- '--with-blas-libs=%s' % to_lib_name(
- spec['blas'].blas_shared_lib),
+ '--with-blas-libs=%s' % ' '.join(blas.names),
'--with-blas-lib-dirs=%s' % spec['blas'].prefix.lib
]
diff --git a/var/spack/repos/builtin/packages/icu4c/package.py b/var/spack/repos/builtin/packages/icu4c/package.py
index 2bcf86cd13..848ebfdeac 100644
--- a/var/spack/repos/builtin/packages/icu4c/package.py
+++ b/var/spack/repos/builtin/packages/icu4c/package.py
@@ -27,18 +27,23 @@ from spack import *
class Icu4c(Package):
"""ICU is a mature, widely used set of C/C++ and Java libraries providing
- Unicode and Globalization support for software applications.
-
- """
+ Unicode and Globalization support for software applications. ICU4C is the
+ C/C++ interface."""
homepage = "http://site.icu-project.org/"
- url = "http://downloads.sourceforge.net/project/icu/ICU4C/54.1/icu4c-54_1-src.tgz"
+ url = "http://download.icu-project.org/files/icu4c/57.1/icu4c-57_1-src.tgz"
+
+ version('57.1', '976734806026a4ef8bdd17937c8898b9')
- version('54_1', 'e844caed8f2ca24c088505b0d6271bc0')
+ def url_for_version(self, version):
+ base_url = "http://download.icu-project.org/files/icu4c"
+ return "{0}/{1}/icu4c-{2}-src.tgz".format(
+ base_url, version, version.underscored)
def install(self, spec, prefix):
- cd("source")
- configure("--prefix=%s" % prefix)
+ with working_dir('source'):
+ configure('--prefix={0}'.format(prefix))
- make()
- make("install")
+ make()
+ make('check')
+ make('install')
diff --git a/var/spack/repos/builtin/packages/intel-parallel-studio/package.py b/var/spack/repos/builtin/packages/intel-parallel-studio/package.py
index 65db3351a1..efa30f9305 100644
--- a/var/spack/repos/builtin/packages/intel-parallel-studio/package.py
+++ b/var/spack/repos/builtin/packages/intel-parallel-studio/package.py
@@ -11,7 +11,7 @@ class IntelParallelStudio(IntelInstaller):
Note: You will have to add the download file to a
mirror so that Spack can find it. For instructions on how to set up a
- mirror, see http://software.llnl.gov/spack/mirrors.html"""
+ mirror, see http://spack.readthedocs.io/en/latest/mirrors.html"""
homepage = "https://software.intel.com/en-us/intel-parallel-studio-xe"
@@ -45,6 +45,10 @@ class IntelParallelStudio(IntelInstaller):
variant('tools', default=True, description="Install the Intel Advisor, "
"VTune Amplifier, and Inspector tools")
+ variant('shared', default=True, description='Builds shared library')
+ variant('ilp64', default=False, description='64 bit integers')
+ variant('openmp', default=False, description='OpenMP multithreading layer')
+
provides('mpi', when='@cluster:+mpi')
provides('mkl', when='+mkl')
provides('daal', when='+daal')
@@ -55,6 +59,31 @@ class IntelParallelStudio(IntelInstaller):
provides('lapack', when='+mkl')
# TODO: MKL also provides implementation of Scalapack.
+ @property
+ def blas_libs(self):
+ shared = True if '+shared' in self.spec else False
+ suffix = dso_suffix if '+shared' in self.spec else 'a'
+ mkl_integer = ['libmkl_intel_ilp64'] if '+ilp64' in self.spec else ['libmkl_intel_lp64'] # NOQA: ignore=E501
+ mkl_threading = ['libmkl_sequential']
+ if '+openmp' in self.spec:
+ mkl_threading = ['libmkl_intel_thread', 'libiomp5'] if '%intel' in self.spec else ['libmkl_gnu_thread'] # NOQA: ignore=E501
+ # TODO: TBB threading: ['libmkl_tbb_thread', 'libtbb', 'libstdc++']
+ mkl_libs = find_libraries(
+ mkl_integer + ['libmkl_core'] + mkl_threading,
+ root=join_path(self.prefix.lib, 'intel64'),
+ shared=shared
+ )
+ system_libs = [
+ 'libpthread.{0}'.format(suffix),
+ 'libm.{0}'.format(suffix),
+ 'libdl.{0}'.format(suffix)
+ ]
+ return mkl_libs + system_libs
+
+ @property
+ def lapack_libs(self):
+ return self.blas_libs
+
def check_variants(self, spec):
error_message = '\t{variant} can not be turned off if "+all" is set'
@@ -171,24 +200,6 @@ class IntelParallelStudio(IntelInstaller):
os.symlink(os.path.join(self.prefix.man, "common", "man1"),
os.path.join(self.prefix.man, "man1"))
- def setup_dependent_package(self, module, dspec):
- # For now use Single Dynamic Library:
- # To set the threading layer at run time, use the
- # mkl_set_threading_layer function or set MKL_THREADING_LAYER
- # variable to one of the following values: INTEL, SEQUENTIAL, PGI.
- # To set interface layer at run time, use the mkl_set_interface_layer
- # function or set the MKL_INTERFACE_LAYER variable to LP64 or ILP64.
-
- # Otherwise one would need to specify several libraries
- # (e.g. mkl_intel_lp64;mkl_sequential;mkl_core), which reflect
- # different interface and threading layers.
-
- name = 'libmkl_rt.%s' % dso_suffix
- libdir = find_library_path(name, self.prefix.lib64, self.prefix.lib)
-
- self.spec.blas_shared_lib = join_path(libdir, name)
- self.spec.lapack_shared_lib = self.spec.blas_shared_lib
-
def setup_environment(self, spack_env, run_env):
# TODO: Determine variables needed for the professional edition.
diff --git a/var/spack/repos/builtin/packages/intel/package.py b/var/spack/repos/builtin/packages/intel/package.py
index 26134a12ae..5b9c26df0e 100644
--- a/var/spack/repos/builtin/packages/intel/package.py
+++ b/var/spack/repos/builtin/packages/intel/package.py
@@ -77,7 +77,7 @@ class Intel(IntelInstaller):
Note: You will have to add the download file to a
mirror so that Spack can find it. For instructions on how to set up a
- mirror, see http://software.llnl.gov/spack/mirrors.html"""
+ mirror, see http://spack.readthedocs.io/en/latest/mirrors.html"""
homepage = "https://software.intel.com/en-us/intel-parallel-studio-xe"
diff --git a/var/spack/repos/builtin/packages/ipopt/package.py b/var/spack/repos/builtin/packages/ipopt/package.py
index d5981e9975..bd1e5f36ef 100644
--- a/var/spack/repos/builtin/packages/ipopt/package.py
+++ b/var/spack/repos/builtin/packages/ipopt/package.py
@@ -53,9 +53,8 @@ class Ipopt(Package):
mumps_flags = "-ldmumps -lmumps_common -lpord -lmpiseq"
mumps_libcmd = "-L%s " % mumps_dir.lib + mumps_flags
- # By convention, spack links blas & lapack libs to libblas & liblapack
- blas_lib = "-L%s" % blas_dir.lib + " -lblas"
- lapack_lib = "-L%s" % lapack_dir.lib + " -llapack"
+ blas_lib = spec['blas'].blas_libs.ld_flags
+ lapack_lib = spec['lapack'].lapack_libs.ld_flags
configure_args = [
"--prefix=%s" % prefix,
diff --git a/var/spack/repos/builtin/packages/ipp/package.py b/var/spack/repos/builtin/packages/ipp/package.py
index 2bd931d5bd..93c5284695 100644
--- a/var/spack/repos/builtin/packages/ipp/package.py
+++ b/var/spack/repos/builtin/packages/ipp/package.py
@@ -9,7 +9,7 @@ class Ipp(IntelInstaller):
Note: You will have to add the download file to a
mirror so that Spack can find it. For instructions on how to set up a
- mirror, see http://software.llnl.gov/spack/mirrors.html"""
+ mirror, see http://spack.readthedocs.io/en/latest/mirrors.html"""
homepage = "https://software.intel.com/en-us/intel-ipp"
diff --git a/var/spack/repos/builtin/packages/itstool/package.py b/var/spack/repos/builtin/packages/itstool/package.py
new file mode 100644
index 0000000000..b8b2b4459f
--- /dev/null
+++ b/var/spack/repos/builtin/packages/itstool/package.py
@@ -0,0 +1,44 @@
+##############################################################################
+# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
+# Produced at the Lawrence Livermore National Laboratory.
+#
+# This file is part of Spack.
+# Created 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 Lesser General Public License (as
+# published by the Free Software Foundation) version 2.1, 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 Lesser 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 Itstool(Package):
+ """ITS Tool allows you to translate your XML documents with PO files, using
+ rules from the W3C Internationalization Tag Set (ITS) to determine what
+ to translate and how to separate it into PO file messages."""
+
+ homepage = "http://itstool.org/"
+ url = "http://files.itstool.org/itstool/itstool-2.0.2.tar.bz2"
+
+ version('2.0.2', 'd472d877a7bc49899a73d442085b2f93')
+ version('2.0.1', '40935cfb08228488bd45575e5f001a34')
+ version('2.0.0', 'd8c702c3e8961db83d04182c2aa4730b')
+ version('1.2.0', 'c0925f6869e33af8e7fe56848c129152')
+
+ def install(self, spec, prefix):
+ configure("--prefix=%s" % prefix)
+ make()
+ make('install')
diff --git a/var/spack/repos/builtin/packages/jdk/package.py b/var/spack/repos/builtin/packages/jdk/package.py
index 63bf6514cb..bab0920434 100644
--- a/var/spack/repos/builtin/packages/jdk/package.py
+++ b/var/spack/repos/builtin/packages/jdk/package.py
@@ -68,3 +68,9 @@ class Jdk(Package):
def install(self, spec, prefix):
distutils.dir_util.copy_tree(".", prefix)
+
+ def setup_environment(self, spack_env, run_env):
+ run_env.set('JAVA_HOME', self.spec.prefix)
+
+ def setup_dependent_environment(self, spack_env, run_env, dependent_spec):
+ spack_env.set('JAVA_HOME', self.spec.prefix)
diff --git a/var/spack/repos/builtin/packages/jemalloc/package.py b/var/spack/repos/builtin/packages/jemalloc/package.py
index f5a983b7a9..e13d4292f8 100644
--- a/var/spack/repos/builtin/packages/jemalloc/package.py
+++ b/var/spack/repos/builtin/packages/jemalloc/package.py
@@ -31,6 +31,8 @@ class Jemalloc(Package):
homepage = "http://www.canonware.com/jemalloc/"
url = "https://github.com/jemalloc/jemalloc/releases/download/4.0.4/jemalloc-4.0.4.tar.bz2"
+ version('4.2.1', '094b0a7b8c77c464d0dc8f0643fd3901')
+ version('4.2.0', 'e6b5d5a1ea93a04207528d274efdd144')
version('4.1.0', 'c4e53c947905a533d5899e5cc3da1f94')
version('4.0.4', '687c5cc53b9a7ab711ccd680351ff988')
diff --git a/var/spack/repos/builtin/packages/julia/package.py b/var/spack/repos/builtin/packages/julia/package.py
index 6ccaa11c90..033e27fb64 100644
--- a/var/spack/repos/builtin/packages/julia/package.py
+++ b/var/spack/repos/builtin/packages/julia/package.py
@@ -37,9 +37,11 @@ class Julia(Package):
git='https://github.com/JuliaLang/julia.git', branch='master')
version('release-0.5',
git='https://github.com/JuliaLang/julia.git', branch='release-0.5')
+ version('0.5.0', 'b61385671ba74767ab452363c43131fb', preferred=True)
version('release-0.4',
git='https://github.com/JuliaLang/julia.git', branch='release-0.4')
- version('0.4.6', 'd88db18c579049c23ab8ef427ccedf5d', preferred=True)
+ version('0.4.7', '75a7a7dd882b7840829d8f165e9b9078')
+ version('0.4.6', 'd88db18c579049c23ab8ef427ccedf5d')
version('0.4.5', '69141ff5aa6cee7c0ec8c85a34aa49a6')
version('0.4.3', '8a4a59fd335b05090dd1ebefbbe5aaac')
@@ -68,7 +70,8 @@ class Julia(Package):
depends_on("binutils", when='+binutils')
depends_on("cmake @2.8:")
depends_on("curl")
- depends_on("git") # I think Julia @0.5: doesn't use git any more
+ depends_on("git", when='@:0.4')
+ depends_on("git", when='@release-0.4')
depends_on("openssl")
depends_on("python @2.7:2.999")
@@ -162,7 +165,7 @@ class Julia(Package):
# Configure Julia
with open(join_path(prefix, "etc", "julia", "juliarc.jl"),
"a") as juliarc:
- if "@master" in spec or "@release-0.5" in spec:
+ if "@master" in spec or "@release-0.5" in spec or "@0.5:" in spec:
# This is required for versions @0.5:
juliarc.write(
'# Point package manager to working certificates\n')
diff --git a/var/spack/repos/builtin/packages/libemos/package.py b/var/spack/repos/builtin/packages/libemos/package.py
new file mode 100644
index 0000000000..0275c7ede9
--- /dev/null
+++ b/var/spack/repos/builtin/packages/libemos/package.py
@@ -0,0 +1,52 @@
+##############################################################################
+# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
+# Produced at the Lawrence Livermore National Laboratory.
+#
+# This file is part of Spack.
+# Created 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 Lesser General Public License (as
+# published by the Free Software Foundation) version 2.1, 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 Lesser 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 Libemos(Package):
+ """The Interpolation library (EMOSLIB) includes Interpolation software and
+ BUFR & CREX encoding/decoding routines."""
+
+ homepage = "https://software.ecmwf.int/wiki/display/EMOS/Emoslib"
+ url = "https://software.ecmwf.int/wiki/download/attachments/3473472/libemos-4.4.2-Source.tar.gz"
+
+ version('4.4.2', 'f15a9aff0f40861f3f046c9088197376')
+
+ depends_on('cmake', type='build')
+ depends_on('grib-api')
+
+ def install(self, spec, prefix):
+ options = []
+ options.extend(std_cmake_args)
+
+ options.append('-DGRIB_API_PATH=%s' % spec['grib_api'].prefix)
+
+ # To support long pathnames that spack generates
+ options.append('-DCMAKE_Fortran_FLAGS=-ffree-line-length-none')
+
+ with working_dir('spack-build', create=True):
+ cmake('..', *options)
+ make()
+ make('install')
diff --git a/var/spack/repos/builtin/packages/libgd/package.py b/var/spack/repos/builtin/packages/libgd/package.py
index acfdebb972..6329adf8f3 100644
--- a/var/spack/repos/builtin/packages/libgd/package.py
+++ b/var/spack/repos/builtin/packages/libgd/package.py
@@ -40,18 +40,33 @@ class Libgd(Package):
homepage = "https://github.com/libgd/libgd"
url = "https://github.com/libgd/libgd/archive/gd-2.1.1.tar.gz"
+ version('2.2.3', 'a67bd15fa33d4aac0a1c7904aed19f49')
version('2.1.1', 'e91a1a99903e460e7ba00a794e72cc1e')
+ # Build dependencies
+ depends_on('autoconf', type='build')
+ depends_on('automake', type='build')
+ depends_on('libtool', type='build')
+ depends_on('m4', type='build')
+ depends_on('gettext', type='build')
+ depends_on('pkg-config', type='build')
+
depends_on('libpng')
- depends_on('cmake', type='build')
+ depends_on('libtiff')
+ depends_on('fontconfig')
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")
+ autoreconf("--install", "--force",
+ "-I", "m4",
+ "-I", join_path(spec['gettext'].prefix,
+ "share", "aclocal"),
+ "-I", join_path(spec['pkg-config'].prefix,
+ "share", "aclocal"),
+ "-I", join_path(spec['automake'].prefix,
+ "share", "aclocal"),
+ "-I", join_path(spec['libtool'].prefix,
+ "share", "aclocal")
+ )
+ configure('--prefix={0}'.format(prefix))
+ make()
+ make("install")
diff --git a/var/spack/repos/builtin/packages/libint/package.py b/var/spack/repos/builtin/packages/libint/package.py
new file mode 100644
index 0000000000..2ad5e93191
--- /dev/null
+++ b/var/spack/repos/builtin/packages/libint/package.py
@@ -0,0 +1,104 @@
+##############################################################################
+# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
+# Produced at the Lawrence Livermore National Laboratory.
+#
+# This file is part of Spack.
+# Created 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 Lesser General Public License (as
+# published by the Free Software Foundation) version 2.1, 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 Lesser 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 Libint(Package):
+ """Libint is a high-performance library for computing
+ Gaussian integrals in quantum mechanics."""
+
+ homepage = "https://github.com/evaleev/libint"
+ url = "https://github.com/evaleev/libint/archive/v2.1.0.tar.gz"
+
+ version('2.1.0', 'd0dcb985fe32ddebc78fe571ce37e2d6')
+ version('1.1.6', '990f67b55f49ecc18f32c58da9240684')
+ version('1.1.5', '379b7d0718ff398715d6898807adf628')
+
+ # Build dependencies
+ depends_on('autoconf@2.52:', type='build')
+ depends_on('automake', type='build')
+ depends_on('libtool', type='build')
+
+ # Libint 2 dependencies
+ depends_on('boost', when='@2:')
+ depends_on('gmp', when='@2:')
+
+ def url_for_version(self, version):
+ base_url = "https://github.com/evaleev/libint/archive"
+ if version == Version('1.0.0'):
+ return "{0}/LIBINT_1_00.tar.gz".format(base_url)
+ elif version < Version('2.1.0'):
+ return "{0}/release-{1}.tar.gz".format(base_url, version.dashed)
+ else:
+ return "{0}/v{1}.tar.gz".format(base_url, version)
+
+ def install(self, spec, prefix):
+ # Generate configure
+ libtoolize()
+ aclocal('-I', 'lib/autoconf')
+ autoconf()
+
+ config_args = [
+ '--prefix={0}'.format(prefix),
+ '--enable-shared'
+ ]
+
+ # Optimizations for the Intel compiler, suggested by CP2K
+ optflags = '-O2'
+ if self.compiler.name == 'intel':
+ optflags += ' -xAVX -axCORE-AVX2 -ipo'
+ if which('xiar'):
+ env['AR'] = 'xiar'
+
+ env['CFLAGS'] = optflags
+ env['CXXFLAGS'] = optflags
+
+ # Optimization flag names have changed in libint 2
+ if self.version < Version('2.0.0'):
+ config_args.extend([
+ '--with-cc-optflags={0}'.format(optflags),
+ '--with-cxx-optflags={0}'.format(optflags)
+ ])
+ else:
+ config_args.extend([
+ '--with-cxx-optflags={0}'.format(optflags),
+ '--with-cxxgen-optflags={0}'.format(optflags)
+ ])
+
+ # Options required by CP2K, removed in libint 2
+ if self.version < Version('2.0.0'):
+ config_args.extend([
+ '--with-libint-max-am=5',
+ '--with-libderiv-max-am1=4'
+ ])
+
+ configure(*config_args)
+ make()
+
+ # Testing suite was added in libint 2
+ if self.version >= Version('2.0.0'):
+ make('check')
+
+ make('install')
diff --git a/var/spack/repos/builtin/packages/libmesh/package.py b/var/spack/repos/builtin/packages/libmesh/package.py
new file mode 100644
index 0000000000..ea81f5da73
--- /dev/null
+++ b/var/spack/repos/builtin/packages/libmesh/package.py
@@ -0,0 +1,42 @@
+##############################################################################
+# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
+# Produced at the Lawrence Livermore National Laboratory.
+#
+# This file is part of Spack.
+# Created 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 Lesser General Public License (as
+# published by the Free Software Foundation) version 2.1, 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 Lesser 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 Libmesh(Package):
+ """The libMesh library provides a framework for the numerical simulation of
+ partial differential equations using arbitrary unstructured
+ discretizations on serial and parallel platforms."""
+
+ homepage = "http://libmesh.github.io/"
+ url = "https://github.com/libMesh/libmesh/releases/download/v1.0.0/libmesh-1.0.0.tar.bz2"
+
+ version('1.0.0', 'cb464fc63ea0b71b1e69fa3f5d4f93a4')
+
+ def install(self, spec, prefix):
+ configure('--prefix={0}'.format(prefix))
+
+ make()
+ make('install')
diff --git a/var/spack/repos/builtin/packages/libpng/package.py b/var/spack/repos/builtin/packages/libpng/package.py
index 1afe4911e6..c3a595d12d 100644
--- a/var/spack/repos/builtin/packages/libpng/package.py
+++ b/var/spack/repos/builtin/packages/libpng/package.py
@@ -30,6 +30,7 @@ class Libpng(Package):
homepage = "http://www.libpng.org/pub/png/libpng.html"
url = "http://download.sourceforge.net/libpng/libpng-1.6.16.tar.gz"
+ version('1.6.24', '65213080dd30a9b16193d9b83adc1ee9')
version('1.6.16', '1a4ad377919ab15b54f6cb6a3ae2622d')
version('1.6.15', '829a256f3de9307731d4f52dc071916d')
version('1.6.14', '2101b3de1d5f348925990f9aa8405660')
@@ -37,9 +38,10 @@ class Libpng(Package):
version('1.4.19', '89bcbc4fc8b31f4a403906cf4f662330')
version('1.2.56', '9508fc59d10a1ffadd9aae35116c19ee')
- depends_on('zlib')
+ depends_on('zlib@1.0.4:') # 1.2.5 or later recommended
def install(self, spec, prefix):
configure("--prefix=%s" % prefix)
make()
+ make("check")
make("install")
diff --git a/var/spack/repos/builtin/packages/libquo/package.py b/var/spack/repos/builtin/packages/libquo/package.py
new file mode 100644
index 0000000000..8856913bb2
--- /dev/null
+++ b/var/spack/repos/builtin/packages/libquo/package.py
@@ -0,0 +1,68 @@
+##############################################################################
+# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
+# Produced at the Lawrence Livermore National Laboratory.
+#
+# This file is part of Spack.
+# Created 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 Lesser General Public License (as
+# published by the Free Software Foundation) version 2.1, 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 Lesser 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 Libquo(Package):
+ """A high-level, easy to use programming interface tailored specifically
+ for MPI/MPI+X codes that may benefit from evolving process binding
+ policies during their execution. QUO allows for arbitrary process binding
+ policies to be enacted and reverted during the execution of an MPI/MPI+X
+ application as different computational phases are entered and exited,
+ respectively."""
+
+ homepage = "https://github.com/losalamos/libquo"
+ url = "https://github.com/losalamos/libquo/archive/v1.2.9.tar.gz"
+
+ version('1.2.9', 'ca82ab33f13e2b89983f81e7c02e98c2')
+
+ depends_on('mpi')
+ depends_on('autoconf', type='build')
+ depends_on('automake', type='build')
+ depends_on('libtool', type='build')
+
+ def install(self, spec, prefix):
+ autoreconf_options = [
+ '--install',
+ '--verbose',
+ '--force',
+ '-I', 'config',
+ '-I', os.path.join(spec['automake'].prefix,
+ 'share', 'aclocal'),
+ '-I', os.path.join(spec['libtool'].prefix,
+ 'share', 'aclocal')
+ ]
+ autoreconf(*autoreconf_options)
+
+ configure_options = [
+ '--prefix={0}'.format(prefix),
+ 'CC=%s' % join_path(spec['mpi'].prefix.bin, "mpicc"),
+ 'FC=%s' % join_path(spec['mpi'].prefix.bin, "mpif90")
+ ]
+ configure(*configure_options)
+
+ make()
+ make('install')
diff --git a/var/spack/repos/builtin/packages/libuuid/package.py b/var/spack/repos/builtin/packages/libuuid/package.py
index 553f0dddb8..b8f6b1cc3a 100644
--- a/var/spack/repos/builtin/packages/libuuid/package.py
+++ b/var/spack/repos/builtin/packages/libuuid/package.py
@@ -27,7 +27,7 @@ from spack import *
class Libuuid(Package):
"""Portable uuid C library"""
- # FIXME: add a proper url for your package's homepage here.
+
homepage = "http://sourceforge.net/projects/libuuid/"
url = "http://downloads.sourceforge.net/project/libuuid/libuuid-1.0.3.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Flibuuid%2F&ts=1433881396&use_mirror=iweb"
@@ -36,6 +36,5 @@ class Libuuid(Package):
def install(self, spec, prefix):
configure("--prefix=%s" % prefix)
- # FIXME: Add logic to build and install here
make()
make("install")
diff --git a/var/spack/repos/builtin/packages/libxc/package.py b/var/spack/repos/builtin/packages/libxc/package.py
index 9ea4d1c326..fe82613ce2 100644
--- a/var/spack/repos/builtin/packages/libxc/package.py
+++ b/var/spack/repos/builtin/packages/libxc/package.py
@@ -32,11 +32,27 @@ class Libxc(Package):
homepage = "http://www.tddft.org/programs/octopus/wiki/index.php/Libxc"
url = "http://www.tddft.org/programs/octopus/down.php?file=libxc/libxc-2.2.2.tar.gz"
+ version('3.0.0', '8227fa3053f8fc215bd9d7b0d36de03c')
version('2.2.2', 'd9f90a0d6e36df6c1312b6422280f2ec')
def install(self, spec, prefix):
- configure('--prefix=%s' % prefix,
+ # Optimizations for the Intel compiler, suggested by CP2K
+ optflags = '-O2'
+ if self.compiler.name == 'intel':
+ optflags += ' -xAVX -axCORE-AVX2 -ipo'
+ if which('xiar'):
+ env['AR'] = 'xiar'
+
+ env['CFLAGS'] = optflags
+ env['FCFLAGS'] = optflags
+
+ configure('--prefix={0}'.format(prefix),
'--enable-shared')
make()
- make("install")
+
+ # libxc provides a testsuite, but many tests fail
+ # http://www.tddft.org/pipermail/libxc/2013-February/000032.html
+ # make('check')
+
+ make('install')
diff --git a/var/spack/repos/builtin/packages/libxstream/package.py b/var/spack/repos/builtin/packages/libxstream/package.py
new file mode 100644
index 0000000000..3201b58620
--- /dev/null
+++ b/var/spack/repos/builtin/packages/libxstream/package.py
@@ -0,0 +1,50 @@
+##############################################################################
+# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
+# Produced at the Lawrence Livermore National Laboratory.
+#
+# This file is part of Spack.
+# Created 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 Lesser General Public License (as
+# published by the Free Software Foundation) version 2.1, 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 Lesser 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 Libxstream(Package):
+ '''LIBXSTREAM is a library to work with streams, events, and code regions
+ that are able to run asynchronous while preserving the usual stream
+ conditions.'''
+
+ homepage = 'https://github.com/hfp/libxstream'
+ url = 'https://github.com/hfp/libxstream.git'
+
+ version('0.9.0', git='https://github.com/hfp/libxstream.git')
+
+ def patch(self):
+ kwargs = {'ignore_absent': False, 'backup': True, 'string': True}
+ makefile = FileFilter('Makefile.inc')
+
+ makefile.filter('CC =', 'CC ?=', **kwargs)
+ makefile.filter('CXX =', 'CXX ?=', **kwargs)
+ makefile.filter('FC =', 'FC ?=', **kwargs)
+
+ def install(self, spec, prefix):
+ make()
+ install_tree('lib', prefix.lib)
+ install_tree('include', prefix.include)
+ install_tree('documentation', prefix.share + '/libxstream/doc/')
diff --git a/var/spack/repos/builtin/packages/llvm/package.py b/var/spack/repos/builtin/packages/llvm/package.py
index 61ea8daac4..06572ea312 100644
--- a/var/spack/repos/builtin/packages/llvm/package.py
+++ b/var/spack/repos/builtin/packages/llvm/package.py
@@ -22,9 +22,10 @@
# 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
+from spack import *
+
class Llvm(Package):
"""The LLVM Project is a collection of modular and reusable compiler and
@@ -32,11 +33,13 @@ class Llvm(Package):
with traditional virtual machines, though it does provide helpful
libraries that can be used to build them. The name "LLVM" itself
is not an acronym; it is the full name of the project.
-
"""
+
homepage = 'http://llvm.org/'
url = 'http://llvm.org/releases/3.7.1/llvm-3.7.1.src.tar.xz'
+ family = 'compiler' # Used by lmod
+
# currently required by mesa package
version('3.0', 'a8e5f5f1c1adebae7b4a654c376a6005',
url='http://llvm.org/releases/3.0/llvm-3.0.tar.gz')
@@ -111,7 +114,7 @@ class Llvm(Package):
'destination': 'projects',
'placement': 'libcxxabi',
},
- 'clang': {
+ 'cfe': {
'url': base_url % {'pkg': 'cfe'},
'destination': 'tools',
'placement': 'clang',
@@ -141,63 +144,93 @@ class Llvm(Package):
{
'version': 'trunk',
'repo': 'http://llvm.org/svn/llvm-project/llvm/trunk',
- 'resources': {
- 'compiler-rt': 'http://llvm.org/svn/llvm-project/compiler-rt/trunk',
- 'openmp': 'http://llvm.org/svn/llvm-project/openmp/trunk',
- 'polly': 'http://llvm.org/svn/llvm-project/polly/trunk',
- 'libcxx': 'http://llvm.org/svn/llvm-project/libcxx/trunk',
- 'libcxxabi': 'http://llvm.org/svn/llvm-project/libcxxabi/trunk',
- 'clang': 'http://llvm.org/svn/llvm-project/cfe/trunk',
- 'clang-tools-extra': 'http://llvm.org/svn/llvm-project/clang-tools-extra/trunk',
- 'lldb': 'http://llvm.org/svn/llvm-project/lldb/trunk',
- 'llvm-libunwind': 'http://llvm.org/svn/llvm-project/libunwind/trunk',
- }
- },
- {
- 'version': '3.8.0',
- 'md5': '07a7a74f3c6bd65de4702bf941b511a0',
- 'resources': {
- 'compiler-rt': 'd6fcbe14352ffb708e4d1ac2e48bb025',
- 'openmp': '8fd7cc35d48051613cf1e750e9f22e40',
- 'polly': '1b3b20f52d34a4024e21a4ea7112caa7',
- 'libcxx': 'd6e0bdbbee39f7907ad74fd56d03b88a',
- 'libcxxabi': 'bbe6b4d72c7c5978550d370af529bcf7',
- 'clang': 'cc99e7019bb74e6459e80863606250c5',
- 'clang-tools-extra': 'c2344f50e0eea0b402f0092a80ddc036',
- 'lldb': 'a5da35ed9cc8c8817ee854e3dbfba00e',
- 'llvm-libunwind': '162ade468607f153cca12be90b5194fa',
- }
- },
- {
- 'version': '3.7.1',
- 'md5': 'bf8b3a2c79e61212c5409041dfdbd319',
- 'resources': {
- 'compiler-rt': '1c6975daf30bb3b0473b53c3a1a6ff01',
- 'openmp': 'b4ad08cda4e5c22e42b66062b140438e',
- 'polly': '3a2a7367002740881637f4d47bca4dc3',
- 'libcxx': 'f9c43fa552a10e14ff53b94d04bea140',
- 'libcxxabi': '52d925afac9f97e9dcac90745255c169',
- 'clang': '0acd026b5529164197563d135a8fd83e',
- 'clang-tools-extra': '5d49ff745037f061a7c86aeb6a24c3d2',
- 'lldb': 'a106d8a0d21fc84d76953822fbaf3398',
- 'llvm-libunwind': '814bd52c9247c5d04629658fbcb3ab8c',
- }
- },
- {
- 'version': '3.7.0',
- 'md5': 'b98b9495e5655a672d6cb83e1a180f8e',
'resources': {
- 'compiler-rt': '383c10affd513026f08936b5525523f5',
- 'openmp': 'f482c86fdead50ba246a1a2b0bbf206f',
- 'polly': '32f93ffc9cc7e042df22089761558f8b',
- 'libcxx': '46aa5175cbe1ad42d6e9c995968e56dd',
- 'libcxxabi': '5aa769e2fca79fa5335cfae8f6258772',
- 'clang': '8f9d27335e7331cf0a4711e952f21f01',
- 'clang-tools-extra': 'd5a87dacb65d981a427a536f6964642e',
- 'lldb': 'e5931740400d1dc3e7db4c7ba2ceff68',
- 'llvm-libunwind': '9a75392eb7eb8ed5c0840007e212baf5',
- }
- },
+ 'compiler-rt': 'http://llvm.org/svn/llvm-project/compiler-rt/trunk',
+ 'openmp': 'http://llvm.org/svn/llvm-project/openmp/trunk',
+ 'polly': 'http://llvm.org/svn/llvm-project/polly/trunk',
+ 'libcxx': 'http://llvm.org/svn/llvm-project/libcxx/trunk',
+ 'libcxxabi': 'http://llvm.org/svn/llvm-project/libcxxabi/trunk',
+ 'cfe': 'http://llvm.org/svn/llvm-project/cfe/trunk',
+ 'clang-tools-extra': 'http://llvm.org/svn/llvm-project/clang-tools-extra/trunk',
+ 'lldb': 'http://llvm.org/svn/llvm-project/lldb/trunk',
+ 'llvm-libunwind': 'http://llvm.org/svn/llvm-project/libunwind/trunk',
+ }
+ },
+ {
+ 'version': '3.9.0',
+ 'md5': 'f2093e98060532449eb7d2fcfd0bc6c6',
+ 'resources': {
+ 'compiler-rt': 'b7ea34c9d744da16ffc0217b6990d095',
+ 'openmp': '5390164f2374e1444e82393541ecf6c7',
+ 'polly': '1cf328cbae25267749b68cfa6f113674',
+ 'libcxx': '0a11efefd864ce6f321194e441f7e569',
+ 'libcxxabi': 'd02642308e22e614af6b061b9b4fedfa',
+ 'cfe': '29e1d86bee422ab5345f5e9fb808d2dc',
+ 'clang-tools-extra': 'f4f663068c77fc742113211841e94d5e',
+ 'lldb': '968d053c3c3d7297983589164c6999e9',
+ 'llvm-libunwind': '3e5c87c723a456be599727a444b1c166',
+ }
+ },
+ {
+ 'version': '3.8.1',
+ 'md5': '538467e6028bbc9259b1e6e015d25845',
+ 'resources': {
+ 'compiler-rt': 'f140db073d2453f854fbe01cc46f3110',
+ 'openmp': '078b8d4c51ad437a4f8b5989f5ec4156',
+ 'polly': '8a40e697a4ba1c8b640b85d074bd6e25',
+ 'libcxx': '1bc60150302ff76a0d79d6f9db22332e',
+ 'libcxxabi': '3c63b03ba2f30a01279ca63384a67773',
+ 'cfe': '4ff2f8844a786edb0220f490f7896080',
+ 'clang-tools-extra': '6e49f285d0b366cc3cab782d8c92d382',
+ 'lldb': '9e4787b71be8e432fffd31e13ac87623',
+ 'llvm-libunwind': 'd66e2387e1d37a8a0c8fe6a0063a3bab',
+ }
+ },
+ {
+ 'version': '3.8.0',
+ 'md5': '07a7a74f3c6bd65de4702bf941b511a0',
+ 'resources': {
+ 'compiler-rt': 'd6fcbe14352ffb708e4d1ac2e48bb025',
+ 'openmp': '8fd7cc35d48051613cf1e750e9f22e40',
+ 'polly': '1b3b20f52d34a4024e21a4ea7112caa7',
+ 'libcxx': 'd6e0bdbbee39f7907ad74fd56d03b88a',
+ 'libcxxabi': 'bbe6b4d72c7c5978550d370af529bcf7',
+ 'cfe': 'cc99e7019bb74e6459e80863606250c5',
+ 'clang-tools-extra': 'c2344f50e0eea0b402f0092a80ddc036',
+ 'lldb': 'a5da35ed9cc8c8817ee854e3dbfba00e',
+ 'llvm-libunwind': '162ade468607f153cca12be90b5194fa',
+ }
+ },
+ {
+ 'version': '3.7.1',
+ 'md5': 'bf8b3a2c79e61212c5409041dfdbd319',
+ 'resources': {
+ 'compiler-rt': '1c6975daf30bb3b0473b53c3a1a6ff01',
+ 'openmp': 'b4ad08cda4e5c22e42b66062b140438e',
+ 'polly': '3a2a7367002740881637f4d47bca4dc3',
+ 'libcxx': 'f9c43fa552a10e14ff53b94d04bea140',
+ 'libcxxabi': '52d925afac9f97e9dcac90745255c169',
+ 'cfe': '0acd026b5529164197563d135a8fd83e',
+ 'clang-tools-extra': '5d49ff745037f061a7c86aeb6a24c3d2',
+ 'lldb': 'a106d8a0d21fc84d76953822fbaf3398',
+ 'llvm-libunwind': '814bd52c9247c5d04629658fbcb3ab8c',
+ }
+ },
+ {
+ 'version': '3.7.0',
+ 'md5': 'b98b9495e5655a672d6cb83e1a180f8e',
+ 'resources': {
+ 'compiler-rt': '383c10affd513026f08936b5525523f5',
+ 'openmp': 'f482c86fdead50ba246a1a2b0bbf206f',
+ 'polly': '32f93ffc9cc7e042df22089761558f8b',
+ 'libcxx': '46aa5175cbe1ad42d6e9c995968e56dd',
+ 'libcxxabi': '5aa769e2fca79fa5335cfae8f6258772',
+ 'cfe': '8f9d27335e7331cf0a4711e952f21f01',
+ 'clang-tools-extra': 'd5a87dacb65d981a427a536f6964642e',
+ 'lldb': 'e5931740400d1dc3e7db4c7ba2ceff68',
+ 'llvm-libunwind': '9a75392eb7eb8ed5c0840007e212baf5',
+ }
+ },
{
'version': '3.6.2',
'md5': '0c1ee3597d75280dee603bae9cbf5cc2',
@@ -206,7 +239,7 @@ class Llvm(Package):
'openmp': '65dd5863b9b270960a96817e9152b123',
'libcxx': '22214c90697636ef960a49aef7c1823a',
'libcxxabi': '17518e361e4e228f193dd91e8ef54ba2',
- 'clang': 'ff862793682f714bb7862325b9c06e20',
+ 'cfe': 'ff862793682f714bb7862325b9c06e20',
'clang-tools-extra': '3ebc1dc41659fcec3db1b47d81575e06',
'lldb': '51e5eb552f777b950bb0ff326e60d5f0',
}
@@ -219,7 +252,7 @@ class Llvm(Package):
'openmp': '121ddb10167d7fc38b1f7e4b029cf059',
'libcxx': '406f09b1dab529f3f7879f4d548329d2',
'libcxxabi': 'b22c707e8d474a99865ad3c521c3d464',
- 'clang': '93f9532f8f7e6f1d8e5c1116907051cb',
+ 'cfe': '93f9532f8f7e6f1d8e5c1116907051cb',
'clang-tools-extra': 'f13f31ed3038acadc6fa63fef812a246',
'lldb': 'cc5ea8a414c62c33e760517f8929a204',
}
diff --git a/var/spack/repos/builtin/packages/lulesh/package.py b/var/spack/repos/builtin/packages/lulesh/package.py
new file mode 100644
index 0000000000..e880d4fa14
--- /dev/null
+++ b/var/spack/repos/builtin/packages/lulesh/package.py
@@ -0,0 +1,55 @@
+##############################################################################
+# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
+# Produced at the Lawrence Livermore National Laboratory.
+#
+# This file is part of Spack.
+# Created 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 Lesser General Public License (as
+# published by the Free Software Foundation) version 2.1, 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 Lesser 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 Lulesh(Package):
+ """Livermore Unstructured Lagrangian Explicit Shock Hydrodynamics (LULESH)
+ """
+
+ homepage = "https://codesign.llnl.gov/lulesh.php"
+ url = "https://codesign.llnl.gov/lulesh/lulesh2.0.3.tgz"
+
+ version("2.0.3", "336644a8750f71c7c6b9d2960976e7aa")
+
+ patch("remove_defaults.patch")
+
+ variant('mpip', default=False)
+
+ depends_on("mpi", type="build")
+ depends_on("mpip", when="+mpip")
+
+ def install(self, spec, prefix):
+ if '+mpip' in spec:
+ os.environ["LDFLAGS"] = " -lmpiP -ldwarf -lelf"
+
+ if os.uname()[4] == "x86_64":
+ os.environ["LDFLAGS"] += " -lunwind"
+
+ os.environ["CXX"] = spec['mpi'].mpicxx + " -DUSE_MPI=1"
+ os.environ["PREFIX"] = prefix
+ make()
+ make("install")
diff --git a/var/spack/repos/builtin/packages/lulesh/remove_defaults.patch b/var/spack/repos/builtin/packages/lulesh/remove_defaults.patch
new file mode 100644
index 0000000000..36cce25ba1
--- /dev/null
+++ b/var/spack/repos/builtin/packages/lulesh/remove_defaults.patch
@@ -0,0 +1,60 @@
+--- a/Makefile
++++ b/Makefile
+@@ -1,17 +1,9 @@
+ #default build suggestion of MPI + OPENMP with gcc on Livermore machines you might have to change the compiler name
+
+-SHELL = /bin/sh
+ .SUFFIXES: .cc .o
+
+ LULESH_EXEC = lulesh2.0
+
+-MPI_INC = /opt/local/include/openmpi
+-MPI_LIB = /opt/local/lib
+-
+-SERCXX = g++ -DUSE_MPI=0
+-MPICXX = mpig++ -DUSE_MPI=1
+-CXX = $(MPICXX)
+-
+ SOURCES2.0 = \
+ lulesh.cc \
+ lulesh-comm.cc \
+@@ -20,28 +12,6 @@
+ lulesh-init.cc
+ OBJECTS2.0 = $(SOURCES2.0:.cc=.o)
+
+-#Default build suggestions with OpenMP for g++
+-CXXFLAGS = -g -O3 -fopenmp -I. -Wall
+-LDFLAGS = -g -O3 -fopenmp
+-
+-#Below are reasonable default flags for a serial build
+-#CXXFLAGS = -g -O3 -I. -Wall
+-#LDFLAGS = -g -O3
+-
+-#common places you might find silo on the Livermore machines.
+-#SILO_INCDIR = /opt/local/include
+-#SILO_LIBDIR = /opt/local/lib
+-#SILO_INCDIR = ./silo/4.9/1.8.10.1/include
+-#SILO_LIBDIR = ./silo/4.9/1.8.10.1/lib
+-
+-#If you do not have silo and visit you can get them at:
+-#silo: https://wci.llnl.gov/codes/silo/downloads.html
+-#visit: https://wci.llnl.gov/codes/visit/download.html
+-
+-#below is and example of how to make with silo, hdf5 to get vizulization by default all this is turned off. All paths are Livermore specific.
+-#CXXFLAGS = -g -DVIZ_MESH -I${SILO_INCDIR} -Wall -Wno-pragmas
+-#LDFLAGS = -g -L${SILO_LIBDIR} -Wl,-rpath -Wl,${SILO_LIBDIR} -lsiloh5 -lhdf5
+-
+ .cc.o: lulesh.h
+ @echo "Building $<"
+ $(CXX) -c $(CXXFLAGS) -o $@ $<
+@@ -56,6 +26,7 @@
+ /bin/rm -f *.o *~ $(OBJECTS) $(LULESH_EXEC)
+ /bin/rm -rf *.dSYM
+
+-tar: clean
+- cd .. ; tar cvf lulesh-2.0.tar LULESH-2.0 ; mv lulesh-2.0.tar LULESH-2.0
+-
++install: lulesh2.0
++ @echo "Installing"
++ mkdir -p $(PREFIX)/bin
++ install --mode=755 lulesh2.0 $(PREFIX)/bin/
diff --git a/var/spack/repos/builtin/packages/m4/package.py b/var/spack/repos/builtin/packages/m4/package.py
index b3bb5e61ce..f7150727fe 100644
--- a/var/spack/repos/builtin/packages/m4/package.py
+++ b/var/spack/repos/builtin/packages/m4/package.py
@@ -23,6 +23,7 @@
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
from spack import *
+import sys
class M4(Package):
@@ -47,6 +48,11 @@ class M4(Package):
else:
configure_args.append('--without-libsigsegv-prefix')
+ # http://lists.gnu.org/archive/html/bug-m4/2016-09/msg00002.html
+ if (sys.platform == "darwin") and (spec.satisfies('%gcc')) and \
+ (spec.architecture.platform_os.version == "10.12"):
+ configure_args.append('ac_cv_type_struct_sched_param=yes')
+
configure("--prefix=%s" % prefix, *configure_args)
make()
make("install")
diff --git a/var/spack/repos/builtin/packages/magics/no_hardcoded_python.patch b/var/spack/repos/builtin/packages/magics/no_hardcoded_python.patch
new file mode 100644
index 0000000000..e2e2a5d1ba
--- /dev/null
+++ b/var/spack/repos/builtin/packages/magics/no_hardcoded_python.patch
@@ -0,0 +1,5 @@
+--- a/tools/xml2mv.py 2016-06-27 17:49:27.000000000 +0200
++++ a/tools/xml2mv.py 2016-09-13 16:25:17.246960456 +0200
+@@ -1 +1 @@
+-#!/usr/bin/python
++#!/usr/bin/env python
diff --git a/var/spack/repos/builtin/packages/magics/package.py b/var/spack/repos/builtin/packages/magics/package.py
new file mode 100644
index 0000000000..cd793ae051
--- /dev/null
+++ b/var/spack/repos/builtin/packages/magics/package.py
@@ -0,0 +1,115 @@
+##############################################################################
+# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
+# Produced at the Lawrence Livermore National Laboratory.
+#
+# This file is part of Spack.
+# Created 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 Lesser General Public License (as
+# published by the Free Software Foundation) version 2.1, 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 Lesser 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 Magics(Package):
+ """Magics is the latest generation of the ECMWF's Meteorological plotting
+ software MAGICS. Although completely redesigned in C++, it is intended
+ to be as backwards-compatible as possible with the Fortran interface."""
+
+ homepage = "https://software.ecmwf.int/wiki/display/MAGP/Magics"
+ url = "https://software.ecmwf.int/wiki/download/attachments/3473464/Magics-2.29.0-Source.tar.gz"
+
+ # Maintainers of Magics do not keep tarballs of minor releases. Once the
+ # next minor released is published the previous one becomes unavailable.
+ # That is why the preferred version is the latest stable one.
+ version('2.29.4', '91c561f413316fb665b3bb563f3878d1')
+ version('2.29.0', 'db20a4d3c51a2da5657c31ae3de59709', preferred=True)
+
+ # The patch changes the hardcoded path to python in shebang to enable the
+ # usage of the first python installation that appears in $PATH
+ patch('no_hardcoded_python.patch')
+
+ # The patch reorders includes and adds namespaces where necessary to
+ # resolve ambiguity of invocations of isnan and isinf functions. The
+ # patch is not needed since the version 2.29.1
+ patch('resolve_isnan_ambiguity.patch', when='@2.29.0')
+
+ variant('bufr', default=False, description='Enable BUFR support')
+ variant('netcdf', default=False, description='Enable NetCDF support')
+ variant('cairo', default=True, description='Enable cairo support[png/jpeg]')
+ variant('metview', default=False, description='Enable metview support')
+ variant('qt', default=False, description='Enable metview support with qt')
+
+ depends_on('cmake', type='build')
+ depends_on('pkg-config', type='build')
+
+ # Currently python is only necessary to run
+ # building preprocessing scripts.
+ depends_on('python', type='build')
+ depends_on('grib-api')
+ depends_on('proj')
+ depends_on('boost')
+ depends_on('expat')
+ depends_on('pango', when='+cairo')
+ depends_on('netcdf-cxx', when='+netcdf')
+ depends_on('libemos', when='+bufr')
+ depends_on('qt', when='+metview+qt')
+
+ def install(self, spec, prefix):
+ options = []
+ options.extend(std_cmake_args)
+ options.append('-DENABLE_ODB=OFF')
+ options.append('-DENABLE_PYTHON=OFF')
+ options.append('-DBOOST_ROOT=%s' % spec['boost'].prefix)
+ options.append('-DPROJ4_PATH=%s' % spec['proj'].prefix)
+ options.append('-DGRIB_API_PATH=%s' % spec['grib-api'].prefix)
+ options.append('-DENABLE_TESTS=OFF')
+
+ if '+bufr' in spec:
+ options.append('-DENABLE_BUFR=ON')
+ options.append('-DLIBEMOS_PATH=%s' % spec['libemos'].prefix)
+ else:
+ options.append('-DENABLE_BUFR=OFF')
+
+ if '+netcdf' in spec:
+ options.append('-DENABLE_NETCDF=ON')
+ options.append('-DNETCDF_PATH=%s' % spec['netcdf-cxx'].prefix)
+ else:
+ options.append('-DENABLE_NETCDF=OFF')
+
+ if '+cairo' in spec:
+ options.append('-DENABLE_CAIRO=ON')
+ else:
+ options.append('-DENABLE_CAIRO=OFF')
+
+ if '+metview' in spec:
+ if '+qt' in spec:
+ options.append('-DENABLE_METVIEW=ON')
+ if spec['qt'].version.up_to(1) == '5':
+ options.append('-DENABLE_QT5=ON')
+ else:
+ options.append('-DENABLE_METVIEW_NO_QT=ON')
+ else:
+ options.append('-DENABLE_METVIEW=OFF')
+
+ if (self.compiler.f77 is None) or (self.compiler.fc is None):
+ options.append('-DENABLE_FORTRAN=OFF')
+
+ with working_dir('spack-build', create=True):
+ cmake('..', *options)
+ make()
+ make('install')
diff --git a/var/spack/repos/builtin/packages/magics/resolve_isnan_ambiguity.patch b/var/spack/repos/builtin/packages/magics/resolve_isnan_ambiguity.patch
new file mode 100644
index 0000000000..54b96ae88e
--- /dev/null
+++ b/var/spack/repos/builtin/packages/magics/resolve_isnan_ambiguity.patch
@@ -0,0 +1,73 @@
+--- a/src/common/Polyline.cc 2016-04-28 14:38:09.000000000 +0200
++++ b/src/common/Polyline.cc 2016-09-14 13:31:35.784617803 +0200
+@@ -31,2 +30,0 @@
+-#include "TeCoord2D.h"
+-#include "TeGeometryAlgorithms.h"
+--- a/src/decoders/GribRegularInterpretor.cc 2016-04-28 14:38:09.000000000 +0200
++++ b/src/decoders/GribRegularInterpretor.cc 2016-09-14 13:43:41.673614590 +0200
+@@ -2083,2 +2083,2 @@
+- if (isnan(val1)) {
+- if (isnan(val2)) {
++ if (std::isnan(val1)) {
++ if (std::isnan(val2)) {
+@@ -2090 +2090 @@
+- if (isnan(val2)) {
++ if (std::isnan(val2)) {
+@@ -2101 +2101 @@
+- if (isnan(val) || isinf(val) || isinf(-val)) {
++ if (std::isnan(val) || std::isinf(val) || std::isinf(-val)) {
+@@ -2105 +2105 @@
+- if (isnan(val))
++ if (std::isnan(val))
+--- a/src/decoders/GribSatelliteInterpretor.cc 2016-04-28 14:38:09.000000000 +0200
++++ b/src/decoders/GribSatelliteInterpretor.cc 2016-09-14 13:48:55.243699910 +0200
+@@ -33,5 +32,0 @@
+-#include "TeProjection.h"
+-#include "TeDataTypes.h"
+-#include "TeRasterParams.h"
+-#include "TeDecoderMemory.h"
+-#include "TeRasterRemap.h"
+--- a/src/decoders/NetcdfGeoMatrixInterpretor.cc 2016-04-28 14:38:09.000000000 +0200
++++ b/src/decoders/NetcdfGeoMatrixInterpretor.cc 2016-09-14 13:52:37.481201085 +0200
+@@ -93 +93 @@
+- if ( !isnan(*d) ) {
++ if ( !std::isnan(*d) ) {
+--- a/src/decoders/NetcdfOrcaInterpretor.cc 2016-04-28 14:38:09.000000000 +0200
++++ b/src/decoders/NetcdfOrcaInterpretor.cc 2016-09-14 13:51:16.248650570 +0200
+@@ -210,2 +210,2 @@
+- if ( isnan(val1) ) {
+- if ( isnan(val2) ) {
++ if ( std::isnan(val1) ) {
++ if ( std::isnan(val2) ) {
+@@ -218 +218 @@
+- if ( isnan(val2) ) {
++ if ( std::isnan(val2) ) {
+@@ -226 +226 @@
+- if (isnan(val) || isinf(val) || isinf(-val) ) {
++ if (std::isnan(val) || std::isinf(val) || std::isinf(-val) ) {
+@@ -230 +230 @@
+- if (isnan(val) ) val = missing;
++ if (std::isnan(val) ) val = missing;
+@@ -296 +296 @@
+- if (isnan(value) )
++ if (std::isnan(value) )
+--- a/src/terralib/kernel/TeCentroid.cpp 2016-04-28 14:38:09.000000000 +0200
++++ b/src/terralib/kernel/TeCentroid.cpp 2016-09-14 14:17:31.675996554 +0200
+@@ -23,0 +24,2 @@
++#include "TeGeometryAlgorithms.h"
++
+@@ -30 +31,0 @@
+-#include "TeGeometryAlgorithms.h"
+--- a/src/terralib/kernel/TeDatabase.h 2014-11-07 17:39:24.000000000 +0100
++++ b/src/terralib/kernel/TeDatabase.h 2016-09-14 14:20:01.041100590 +0200
+@@ -33,0 +34 @@
++#include "TeGeometry.h"
+@@ -38 +38,0 @@
+-#include "TeGeometry.h"
+--- a/src/terralib/kernel/TeOverlayUtils.h 2014-11-07 17:39:24.000000000 +0100
++++ b/src/terralib/kernel/TeOverlayUtils.h 2016-09-14 14:21:51.649920405 +0200
+@@ -37,0 +38,2 @@
++#include "TeGeometry.h"
++
+@@ -44 +45,0 @@
+-#include "TeGeometry.h"
diff --git a/var/spack/repos/builtin/packages/mbedtls/package.py b/var/spack/repos/builtin/packages/mbedtls/package.py
index e1a42c0d9a..493ea59f0b 100644
--- a/var/spack/repos/builtin/packages/mbedtls/package.py
+++ b/var/spack/repos/builtin/packages/mbedtls/package.py
@@ -35,6 +35,7 @@ class Mbedtls(Package):
homepage = "https://tls.mbed.org"
url = "https://github.com/ARMmbed/mbedtls/archive/mbedtls-2.2.1.tar.gz"
+ version('2.3.0', '98158e1160a0825a3e8db38881a177a0')
version('2.2.1', '73a38f96898d6d03e32f55dd9f9a67be')
version('2.2.0', 'eaf4586c1ef93ae872e606b6c1203942')
version('2.1.4', '40cdf67b6c6d92c9cbcfd552d39ea3ae')
diff --git a/var/spack/repos/builtin/packages/mercurial/package.py b/var/spack/repos/builtin/packages/mercurial/package.py
index e51069662f..ea77953f15 100644
--- a/var/spack/repos/builtin/packages/mercurial/package.py
+++ b/var/spack/repos/builtin/packages/mercurial/package.py
@@ -22,23 +22,48 @@
# 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 llnl.util.tty as tty
+import os
class Mercurial(Package):
"""Mercurial is a free, distributed source control management tool."""
+
homepage = "https://www.mercurial-scm.org"
url = "https://www.mercurial-scm.org/release/mercurial-3.9.tar.gz"
- version('3.9' , 'e2b355da744e94747daae3a5339d28a0')
+ version('3.9.1', '3759dd10edb8c1a6dfb8ff0ce82658ce')
+ version('3.9', 'e2b355da744e94747daae3a5339d28a0')
version('3.8.4', 'cec2c3db688cb87142809089c6ae13e9')
version('3.8.3', '97aced7018614eeccc9621a3dea35fda')
version('3.8.2', 'c38daa0cbe264fc621dc3bb05933b0b3')
version('3.8.1', '172a8c588adca12308c2aca16608d7f4')
- depends_on("python @2.6:2.7.999")
- depends_on("py-docutils", type="build")
+ extends('python')
+ depends_on('python@2.6:2.8')
+ depends_on('py-docutils', type='build')
def install(self, spec, prefix):
- make('PREFIX=%s' % prefix, 'install')
+ make('install', 'PREFIX={0}'.format(prefix))
+
+ # Configuration of HTTPS certificate authorities
+ # https://www.mercurial-scm.org/wiki/CACertificates
+ hgrc_filename = join_path(prefix.etc, 'mercurial', 'hgrc')
+ mkdirp(os.path.dirname(hgrc_filename))
+
+ with open(hgrc_filename, 'w') as hgrc:
+ if os.path.exists('/etc/ssl/certs/ca-certificates.crt'):
+ # Debian/Ubuntu/Gentoo/Arch Linux
+ hgrc.write('[web]\ncacerts = /etc/ssl/certs/ca-certificates.crt') # noqa
+ elif os.path.exists('/etc/pki/tls/certs/ca-bundle.crt'):
+ # Fedora/RHEL/CentOS
+ hgrc.write('[web]\ncacerts = /etc/pki/tls/certs/ca-bundle.crt')
+ elif os.path.exists('/etc/ssl/ca-bundle.pem'):
+ # openSUSE/SLE
+ hgrc.write('[web]\ncacerts = /etc/ssl/ca-bundle.pem')
+ else:
+ tty.warn('CA certificate not found. You may not be able to '
+ 'connect to an HTTPS server. If your CA certificate '
+ 'is in a non-standard location, you should add it to '
+ '{0}'.format(hgrc_filename))
diff --git a/var/spack/repos/builtin/packages/metis/package.py b/var/spack/repos/builtin/packages/metis/package.py
index 9f8ed5c9e8..ca48a47817 100644
--- a/var/spack/repos/builtin/packages/metis/package.py
+++ b/var/spack/repos/builtin/packages/metis/package.py
@@ -43,16 +43,12 @@ class Metis(Package):
version('5.0.2', 'acb521a4e8c2e6dd559a7f9abd0468c5')
version('4.0.3', 'd3848b454532ef18dc83e4fb160d1e10')
- variant('shared', default=True,
- description='Enables the build of shared libraries')
- variant('debug', default=False,
- description='Builds the library in debug mode')
- variant('gdb', default=False, description='Enables gdb support')
+ variant('shared', default=True, description='Enables the build of shared libraries.')
+ variant('debug', default=False, description='Builds the library in debug mode.')
+ variant('gdb', default=False, description='Enables gdb support.')
- variant('idx64', default=False,
- description='Use int64_t as default index type')
- variant('real64', default=False,
- description='Use double precision floating point types')
+ variant('idx64', default=False, description='Sets the bit width of METIS\'s index type to 64.')
+ variant('real64', default=False, description='Sets the bit width of METIS\'s real type to 64.')
depends_on('cmake@2.8:', when='@5:', type='build')
@@ -63,12 +59,37 @@ class Metis(Package):
return '%s/%smetis-%s.tar.gz' % (Metis.base_url, verdir, version)
@when('@:4')
+ def patch(self):
+ pass
+
+ @when('@5:')
+ def patch(self):
+ source_path = self.stage.source_path
+ metis_header = FileFilter(join_path(source_path, 'include', 'metis.h'))
+
+ metis_header.filter(
+ r'(\b)(IDXTYPEWIDTH )(\d+)(\b)',
+ r'\1\2{0}\4'.format('64' if '+idx64' in self.spec else '32'),
+ )
+ metis_header.filter(
+ r'(\b)(REALTYPEWIDTH )(\d+)(\b)',
+ r'\1\2{0}\4'.format('64' if '+real64' in self.spec else '32'),
+ )
+
+ # Make clang 7.3 happy.
+ # Prevents "ld: section __DATA/__thread_bss extends beyond end of file"
+ # See upstream LLVM issue https://llvm.org/bugs/show_bug.cgi?id=27059
+ # and https://github.com/Homebrew/homebrew-science/blob/master/metis.rb
+ if self.spec.satisfies('%clang@7.3.0'):
+ filter_file('#define MAX_JBUFS 128', '#define MAX_JBUFS 24',
+ join_path(source_path, 'GKlib', 'error.c'))
+
+ @when('@:4')
def install(self, spec, prefix):
# Process library spec and options
- unsupp_vars = [v for v in ('+gdb', '+idx64', '+real64') if v in spec]
- if unsupp_vars:
- msg = 'Given variants %s are unsupported by METIS 4!' % unsupp_vars
- raise InstallError(msg)
+ if any('+{0}'.format(v) in spec for v in ['gdb', 'idx64', 'real64']):
+ raise InstallError('METIS@:4 does not support the following '
+ 'variants: gdb, idx64, real64.')
options = ['COPTIONS=-fPIC']
if '+debug' in spec:
@@ -118,49 +139,48 @@ class Metis(Package):
join_path('Programs', 'io.o'), join_path('Test', 'mtest.c'),
'-o', '%s/mtest' % prefix.bin, '-lmetis', '-lm')
- test_bin = lambda testname: join_path(prefix.bin, testname)
- test_graph = lambda graphname: join_path(prefix.share, graphname)
-
- graph = test_graph('4elt.graph')
- os.system('%s %s' % (test_bin('mtest'), graph))
- os.system('%s %s 40' % (test_bin('kmetis'), graph))
- os.system('%s %s' % (test_bin('onmetis'), graph))
- graph = test_graph('test.mgraph')
- os.system('%s %s 2' % (test_bin('pmetis'), graph))
- os.system('%s %s 2' % (test_bin('kmetis'), graph))
- os.system('%s %s 5' % (test_bin('kmetis'), graph))
- graph = test_graph('metis.mesh')
- os.system('%s %s 10' % (test_bin('partnmesh'), graph))
- os.system('%s %s 10' % (test_bin('partdmesh'), graph))
- os.system('%s %s' % (test_bin('mesh2dual'), graph))
-
- # FIXME: The following code should replace the testing code in the
- # block above since it causes installs to fail when one or more of the
- # Metis tests fail, but it currently doesn't work because the 'mtest',
- # 'onmetis', and 'partnmesh' tests return error codes that trigger
- # false positives for failure.
- """
- Executable(test_bin('mtest'))(test_graph('4elt.graph'))
- Executable(test_bin('kmetis'))(test_graph('4elt.graph'), '40')
- Executable(test_bin('onmetis'))(test_graph('4elt.graph'))
-
- Executable(test_bin('pmetis'))(test_graph('test.mgraph'), '2')
- Executable(test_bin('kmetis'))(test_graph('test.mgraph'), '2')
- Executable(test_bin('kmetis'))(test_graph('test.mgraph'), '5')
-
- Executable(test_bin('partnmesh'))(test_graph('metis.mesh'), '10')
- Executable(test_bin('partdmesh'))(test_graph('metis.mesh'), '10')
- Executable(test_bin('mesh2dual'))(test_graph('metis.mesh'))
- """
+ if self.run_tests:
+ test_bin = lambda testname: join_path(prefix.bin, testname)
+ test_graph = lambda graphname: join_path(prefix.share, graphname)
+
+ graph = test_graph('4elt.graph')
+ os.system('%s %s' % (test_bin('mtest'), graph))
+ os.system('%s %s 40' % (test_bin('kmetis'), graph))
+ os.system('%s %s' % (test_bin('onmetis'), graph))
+ graph = test_graph('test.mgraph')
+ os.system('%s %s 2' % (test_bin('pmetis'), graph))
+ os.system('%s %s 2' % (test_bin('kmetis'), graph))
+ os.system('%s %s 5' % (test_bin('kmetis'), graph))
+ graph = test_graph('metis.mesh')
+ os.system('%s %s 10' % (test_bin('partnmesh'), graph))
+ os.system('%s %s 10' % (test_bin('partdmesh'), graph))
+ os.system('%s %s' % (test_bin('mesh2dual'), graph))
+
+ # FIXME: The following code should replace the testing code in the
+ # block above since it causes installs to fail when one or more of
+ # the Metis tests fail, but it currently doesn't work because the
+ # 'mtest', 'onmetis', and 'partnmesh' tests return error codes that
+ # trigger false positives for failure.
+ """
+ Executable(test_bin('mtest'))(test_graph('4elt.graph'))
+ Executable(test_bin('kmetis'))(test_graph('4elt.graph'), '40')
+ Executable(test_bin('onmetis'))(test_graph('4elt.graph'))
+
+ Executable(test_bin('pmetis'))(test_graph('test.mgraph'), '2')
+ Executable(test_bin('kmetis'))(test_graph('test.mgraph'), '2')
+ Executable(test_bin('kmetis'))(test_graph('test.mgraph'), '5')
+
+ Executable(test_bin('partnmesh'))(test_graph('metis.mesh'), '10')
+ Executable(test_bin('partdmesh'))(test_graph('metis.mesh'), '10')
+ Executable(test_bin('mesh2dual'))(test_graph('metis.mesh'))
+ """
@when('@5:')
def install(self, spec, prefix):
- options = []
- options.extend(std_cmake_args)
-
- build_directory = join_path(self.stage.path, 'spack-build')
source_directory = self.stage.source_path
+ build_directory = join_path(source_directory, 'build')
+ options = std_cmake_args[:]
options.append('-DGKLIB_PATH:PATH=%s/GKlib' % source_directory)
options.append('-DCMAKE_INSTALL_NAME_DIR:PATH=%s/lib' % prefix)
@@ -172,26 +192,24 @@ class Metis(Package):
if '+gdb' in spec:
options.append('-DGDB:BOOL=ON')
- metis_header = join_path(source_directory, 'include', 'metis.h')
- if '+idx64' in spec:
- filter_file('IDXTYPEWIDTH 32', 'IDXTYPEWIDTH 64', metis_header)
- if '+real64' in spec:
- filter_file('REALTYPEWIDTH 32', 'REALTYPEWIDTH 64', metis_header)
-
- # Make clang 7.3 happy.
- # Prevents "ld: section __DATA/__thread_bss extends beyond end of file"
- # See upstream LLVM issue https://llvm.org/bugs/show_bug.cgi?id=27059
- # and https://github.com/Homebrew/homebrew-science/blob/master/metis.rb
- if spec.satisfies('%clang@7.3.0'):
- filter_file('#define MAX_JBUFS 128', '#define MAX_JBUFS 24',
- join_path(source_directory, 'GKlib', 'error.c'))
-
with working_dir(build_directory, create=True):
cmake(source_directory, *options)
make()
make('install')
- # now run some tests:
+ # install GKlib headers, which will be needed for ParMETIS
+ GKlib_dist = join_path(prefix.include, 'GKlib')
+ mkdirp(GKlib_dist)
+ hfiles = glob.glob(join_path(source_directory, 'GKlib', '*.h'))
+ for hfile in hfiles:
+ install(hfile, GKlib_dist)
+
+ if self.run_tests:
+ # FIXME: On some systems, the installed binaries for METIS cannot
+ # be executed without first being read.
+ ls = which('ls')
+ ls('-a', '-l', prefix.bin)
+
for f in ['4elt', 'copter2', 'mdual']:
graph = join_path(source_directory, 'graphs', '%s.graph' % f)
Executable(join_path(prefix.bin, 'graphchk'))(graph)
@@ -202,10 +220,3 @@ class Metis(Package):
Executable(join_path(prefix.bin, 'gpmetis'))(graph, '2')
graph = join_path(source_directory, 'graphs', 'metis.mesh')
Executable(join_path(prefix.bin, 'mpmetis'))(graph, '2')
-
- # install GKlib headers, which will be needed for ParMETIS
- GKlib_dist = join_path(prefix.include, 'GKlib')
- mkdirp(GKlib_dist)
- hfiles = glob.glob(join_path(source_directory, 'GKlib', '*.h'))
- for hfile in hfiles:
- install(hfile, GKlib_dist)
diff --git a/var/spack/repos/builtin/packages/mfem/package.py b/var/spack/repos/builtin/packages/mfem/package.py
index fd91f705eb..cbf9059f65 100644
--- a/var/spack/repos/builtin/packages/mfem/package.py
+++ b/var/spack/repos/builtin/packages/mfem/package.py
@@ -89,8 +89,7 @@ class Mfem(Package):
options = ['PREFIX=%s' % prefix]
if '+lapack' in spec:
- lapack_lib = '-L{0} -llapack -L{1} -lblas'.format(
- spec['lapack'].prefix.lib, spec['blas'].prefix.lib)
+ lapack_lib = (spec['lapack'].lapack_libs + spec['blas'].blas_libs).ld_flags # NOQA: ignore=E501
options.extend([
'MFEM_USE_LAPACK=YES',
'LAPACK_OPT=-I%s' % spec['lapack'].prefix.include,
diff --git a/var/spack/repos/builtin/packages/mkl/package.py b/var/spack/repos/builtin/packages/mkl/package.py
index 71a233ff3e..8a31858bf5 100644
--- a/var/spack/repos/builtin/packages/mkl/package.py
+++ b/var/spack/repos/builtin/packages/mkl/package.py
@@ -9,7 +9,7 @@ class Mkl(IntelInstaller):
Note: You will have to add the download file to a
mirror so that Spack can find it. For instructions on how to set up a
- mirror, see http://software.llnl.gov/spack/mirrors.html.
+ mirror, see http://spack.readthedocs.io/en/latest/mirrors.html.
To set the threading layer at run time set MKL_THREADING_LAYER
variable to one of the following values: INTEL (default), SEQUENTIAL, PGI.
@@ -24,13 +24,41 @@ class Mkl(IntelInstaller):
version('11.3.3.210', 'f72546df27f5ebb0941b5d21fd804e34',
url="file://%s/l_mkl_11.3.3.210.tgz" % os.getcwd())
+ variant('shared', default=True, description='Builds shared library')
+ variant('ilp64', default=False, description='64 bit integers')
+ variant('openmp', default=False, description='OpenMP multithreading layer')
+
# virtual dependency
provides('blas')
provides('lapack')
# TODO: MKL also provides implementation of Scalapack.
- def install(self, spec, prefix):
+ @property
+ def blas_libs(self):
+ shared = True if '+shared' in self.spec else False
+ suffix = dso_suffix if '+shared' in self.spec else 'a'
+ mkl_integer = ['libmkl_intel_ilp64'] if '+ilp64' in self.spec else ['libmkl_intel_lp64'] # NOQA: ignore=E501
+ mkl_threading = ['libmkl_sequential']
+ if '+openmp' in self.spec:
+ mkl_threading = ['libmkl_intel_thread', 'libiomp5'] if '%intel' in self.spec else ['libmkl_gnu_thread'] # NOQA: ignore=E501
+ # TODO: TBB threading: ['libmkl_tbb_thread', 'libtbb', 'libstdc++']
+ mkl_libs = find_libraries(
+ mkl_integer + ['libmkl_core'] + mkl_threading,
+ root=join_path(self.prefix.lib, 'intel64'),
+ shared=shared
+ )
+ system_libs = [
+ 'libpthread.{0}'.format(suffix),
+ 'libm.{0}'.format(suffix),
+ 'libdl.{0}'.format(suffix)
+ ]
+ return mkl_libs + system_libs
+
+ @property
+ def lapack_libs(self):
+ return self.blas_libs
+ def install(self, spec, prefix):
self.intel_prefix = os.path.join(prefix, "pkg")
IntelInstaller.install(self, spec, prefix)
@@ -45,25 +73,6 @@ class Mkl(IntelInstaller):
os.symlink(os.path.join(mkl_lib_dir, f),
os.path.join(self.prefix, "lib", f))
- def setup_dependent_package(self, module, dspec):
- # For now use Single Dynamic Library:
- # To set the threading layer at run time, use the
- # mkl_set_threading_layer function or set MKL_THREADING_LAYER
- # variable to one of the following values: INTEL, SEQUENTIAL, PGI.
- # To set interface layer at run time, use the mkl_set_interface_layer
- # function or set the MKL_INTERFACE_LAYER variable to LP64 or ILP64.
-
- # Otherwise one would need to specify several libraries
- # (e.g. mkl_intel_lp64;mkl_sequential;mkl_core), which reflect
- # different interface and threading layers.
-
- name = 'libmkl_rt.%s' % dso_suffix
- libdir = find_library_path(name, self.prefix.lib64, self.prefix.lib)
-
- # Now set blas/lapack libs:
- self.spec.blas_shared_lib = join_path(libdir, name)
- self.spec.lapack_shared_lib = self.spec.blas_shared_lib
-
def setup_dependent_environment(self, spack_env, run_env, dependent_spec):
# set up MKLROOT for everyone using MKL package
spack_env.set('MKLROOT', self.prefix)
diff --git a/var/spack/repos/builtin/packages/moab/package.py b/var/spack/repos/builtin/packages/moab/package.py
index 893a543e97..4dfc5432d2 100644
--- a/var/spack/repos/builtin/packages/moab/package.py
+++ b/var/spack/repos/builtin/packages/moab/package.py
@@ -37,7 +37,7 @@ class Moab(Package):
homepage = "https://bitbucket.org/fathomteam/moab"
url = "http://ftp.mcs.anl.gov/pub/fathom/moab-4.6.3.tar.gz"
- version('4.9.1', 'bcb8bee3e58c076c7f31884db119088e')
+ version('4.9.1', '19cc2189fa266181ad9109b18d0b2ab8')
version('4.9.0', '40695d0a159040683cfa05586ad4a7c2')
version('4.8.2', '1dddd10f162fce3cfffaedc48f6f467d')
diff --git a/var/spack/repos/builtin/packages/mpip/package.py b/var/spack/repos/builtin/packages/mpip/package.py
new file mode 100644
index 0000000000..78e1dca68a
--- /dev/null
+++ b/var/spack/repos/builtin/packages/mpip/package.py
@@ -0,0 +1,44 @@
+##############################################################################
+# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
+# Produced at the Lawrence Livermore National Laboratory.
+#
+# This file is part of Spack.
+# Created 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 Lesser General Public License (as
+# published by the Free Software Foundation) version 2.1, 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 Lesser 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 Mpip(Package):
+ """mpiP: Lightweight, Scalable MPI Profiling"""
+ homepage = "http://mpip.sourceforge.net/"
+ url = "http://downloads.sourceforge.net/project/mpip/mpiP/mpiP-3.4.1/mpiP-3.4.1.tar.gz"
+
+ version("3.4.1", "1168adc83777ac31d6ebd385823aabbd")
+
+ depends_on("libelf", type="build")
+ depends_on("libdwarf", type="build")
+ depends_on('libunwind', when=os.uname()[4] == "x86_64", type="build")
+ depends_on("mpi", type="build")
+
+ def install(self, spec, prefix):
+ configure("--prefix=" + prefix, "--without-f77")
+ make()
+ make("install")
diff --git a/var/spack/repos/builtin/packages/mumps/package.py b/var/spack/repos/builtin/packages/mumps/package.py
index 32bc42a9c3..3466f091a0 100644
--- a/var/spack/repos/builtin/packages/mumps/package.py
+++ b/var/spack/repos/builtin/packages/mumps/package.py
@@ -75,9 +75,8 @@ class Mumps(Package):
raise RuntimeError(
'You cannot use the variants parmetis or ptscotch without mpi')
- makefile_conf = ["LIBBLAS = %s" % to_link_flags(
- self.spec['blas'].blas_shared_lib)
- ]
+ blas = self.spec['blas'].blas_libs
+ makefile_conf = ["LIBBLAS = %s" % blas.ld_flags]
orderings = ['-Dpord']
@@ -136,11 +135,12 @@ class Mumps(Package):
'OPTC = %s -O ' % fpic])
if '+mpi' in self.spec:
+ scalapack = self.spec['scalapack'].scalapack_libs
makefile_conf.extend(
["CC = %s" % join_path(self.spec['mpi'].prefix.bin, 'mpicc'),
"FC = %s" % join_path(self.spec['mpi'].prefix.bin, 'mpif90'),
"FL = %s" % join_path(self.spec['mpi'].prefix.bin, 'mpif90'),
- "SCALAP = %s" % self.spec['scalapack'].fc_link,
+ "SCALAP = %s" % scalapack.ld_flags,
"MUMPS_TYPE = par"])
else:
makefile_conf.extend(
diff --git a/var/spack/repos/builtin/packages/mvapich2/package.py b/var/spack/repos/builtin/packages/mvapich2/package.py
index a123830185..06678bf08b 100644
--- a/var/spack/repos/builtin/packages/mvapich2/package.py
+++ b/var/spack/repos/builtin/packages/mvapich2/package.py
@@ -28,14 +28,12 @@ from spack import *
class Mvapich2(Package):
"""MVAPICH2 is an MPI implementation for Infiniband networks."""
homepage = "http://mvapich.cse.ohio-state.edu/"
- url = "http://mvapich.cse.ohio-state.edu/download/mvapich/mv2/mvapich2-2.2rc2.tar.gz"
+ url = "http://mvapich.cse.ohio-state.edu/download/mvapich/mv2/mvapich2-2.2.tar.gz"
- version('2.2rc2', 'f9082ffc3b853ad1b908cf7f169aa878')
- version('2.2b', '5651e8b7a72d7c77ca68da48f3a5d108')
- version('2.2a', 'b8ceb4fc5f5a97add9b3ff1b9cbe39d2')
- version('2.1', '0095ceecb19bbb7fb262131cb9c2cdd6')
- version('2.0', '9fbb68a4111a8b6338e476dc657388b4')
- version('1.9', '5dc58ed08fd3142c260b70fe297e127c')
+ version('2.2', '939b65ebe5b89a5bc822cdab0f31f96e')
+ version('2.1', '0095ceecb19bbb7fb262131cb9c2cdd6')
+ version('2.0', '9fbb68a4111a8b6338e476dc657388b4')
+ version('1.9', '5dc58ed08fd3142c260b70fe297e127c')
patch('ad_lustre_rwcontig_open_source.patch', when='@1.9')
@@ -95,6 +93,7 @@ class Mvapich2(Package):
##########
# FIXME : CUDA support is missing
+ depends_on('bison')
depends_on('libpciaccess')
def url_for_version(self, version):
diff --git a/var/spack/repos/builtin/packages/ncurses/package.py b/var/spack/repos/builtin/packages/ncurses/package.py
index aaacbac7b1..e4fd5bf269 100644
--- a/var/spack/repos/builtin/packages/ncurses/package.py
+++ b/var/spack/repos/builtin/packages/ncurses/package.py
@@ -50,7 +50,10 @@ class Ncurses(Package):
"--enable-widec",
"--enable-overwrite",
"--disable-lib-suffixes",
- "--without-ada"]
+ "--without-ada",
+ "--enable-pc-files",
+ "--with-pkg-config-libdir={0}/lib/pkgconfig".format(prefix)
+ ]
configure(*opts)
make()
make("install")
diff --git a/var/spack/repos/builtin/packages/ncview/package.py b/var/spack/repos/builtin/packages/ncview/package.py
index f61e6984b5..4abc09deb0 100644
--- a/var/spack/repos/builtin/packages/ncview/package.py
+++ b/var/spack/repos/builtin/packages/ncview/package.py
@@ -34,6 +34,7 @@ class Ncview(Package):
depends_on("netcdf")
depends_on("udunits2")
+ depends_on("libpng")
# OS Dependencies
# Ubuntu: apt-get install libxaw7-dev
diff --git a/var/spack/repos/builtin/packages/netcdf/package.py b/var/spack/repos/builtin/packages/netcdf/package.py
index ab40c14340..5dc686c907 100644
--- a/var/spack/repos/builtin/packages/netcdf/package.py
+++ b/var/spack/repos/builtin/packages/netcdf/package.py
@@ -50,12 +50,18 @@ class Netcdf(Package):
# Required for NetCDF-4 support
depends_on("zlib")
- depends_on('hdf5@:1.8+mpi', when='@:4.4.0+mpi')
- depends_on('hdf5+mpi', when='@4.4.1:+mpi')
- depends_on('hdf5@:1.8~mpi', when='@:4.4.0~mpi')
- depends_on('hdf5~mpi', when='@4.4.1:~mpi')
+ depends_on('hdf5')
+
+ # NetCDF 4.4.0 and prior have compatibility issues with HDF5 1.10 and later
+ # https://github.com/Unidata/netcdf-c/issues/250
+ depends_on('hdf5@:1.8', when='@:4.4.0')
def install(self, spec, prefix):
+ # Workaround until variant forwarding works properly
+ if '+mpi' in spec and spec.satisfies('^hdf5~mpi'):
+ raise RuntimeError('Invalid spec. Package netcdf requires '
+ 'hdf5+mpi, but spec asked for hdf5~mpi.')
+
# Environment variables
CPPFLAGS = []
LDFLAGS = []
diff --git a/var/spack/repos/builtin/packages/netlib-lapack/package.py b/var/spack/repos/builtin/packages/netlib-lapack/package.py
index 08c94a5c9b..874473ba9c 100644
--- a/var/spack/repos/builtin/packages/netlib-lapack/package.py
+++ b/var/spack/repos/builtin/packages/netlib-lapack/package.py
@@ -36,6 +36,7 @@ class NetlibLapack(Package):
homepage = "http://www.netlib.org/lapack/"
url = "http://www.netlib.org/lapack/lapack-3.5.0.tgz"
+ version('3.6.1', '421b2cb72e15f237e144428f9c460ee0')
version('3.6.0', 'f2f6c67134e851fe189bb3ca1fbb5101')
version('3.5.0', 'b1d3e3e425b2e44a06760ff173104bdf')
version('3.4.2', '61bf1a8a4469d4bdb7604f5897179478')
@@ -66,6 +67,20 @@ class NetlibLapack(Package):
'${CMAKE_CURRENT_SOURCE_DIR}/cmake/',
'CBLAS/CMakeLists.txt', string=True)
+ @property
+ def blas_libs(self):
+ shared = True if '+shared' in self.spec else False
+ return find_libraries(
+ ['libblas'], root=self.prefix, shared=shared, recurse=True
+ )
+
+ @property
+ def lapack_libs(self):
+ shared = True if '+shared' in self.spec else False
+ return find_libraries(
+ ['liblapack'], root=self.prefix, shared=shared, recurse=True
+ )
+
def install_one(self, spec, prefix, shared):
cmake_args = [
'-DBUILD_SHARED_LIBS:BOOL=%s' % ('ON' if shared else 'OFF'),
@@ -76,12 +91,9 @@ class NetlibLapack(Package):
cmake_args.extend(['-DCBLAS=ON']) # always build CBLAS
if '+external-blas' in spec:
- # TODO : mechanism to specify the library should be more general,
- # TODO : but this allows to have an hook to an external blas
cmake_args.extend([
'-DUSE_OPTIMIZED_BLAS:BOOL=ON',
- '-DBLAS_LIBRARIES:PATH=%s' % join_path(
- spec['blas'].prefix.lib, 'libblas.a')
+ '-DBLAS_LIBRARIES:PATH=%s' % spec['blas'].blas_libs.joined(';')
])
cmake_args.extend(std_cmake_args)
@@ -99,18 +111,3 @@ class NetlibLapack(Package):
# Build shared libraries if requested.
if '+shared' in spec:
self.install_one(spec, prefix, True)
-
- def setup_dependent_package(self, module, dspec):
- # This is WIP for a prototype interface for virtual packages.
- # We can update this as more builds start depending on BLAS/LAPACK.
- libdir = find_library_path(
- 'libblas.a', self.prefix.lib64, self.prefix.lib)
-
- self.spec.blas_static_lib = join_path(libdir, 'libblas.a')
- self.spec.lapack_static_lib = join_path(libdir, 'liblapack.a')
-
- if '+shared' in self.spec:
- self.spec.blas_shared_lib = join_path(
- libdir, 'libblas.%s' % dso_suffix)
- self.spec.lapack_shared_lib = join_path(
- libdir, 'liblapack.%s' % dso_suffix)
diff --git a/var/spack/repos/builtin/packages/netlib-scalapack/package.py b/var/spack/repos/builtin/packages/netlib-scalapack/package.py
index 49b8633209..578d2d8988 100644
--- a/var/spack/repos/builtin/packages/netlib-scalapack/package.py
+++ b/var/spack/repos/builtin/packages/netlib-scalapack/package.py
@@ -28,10 +28,11 @@ import sys
class NetlibScalapack(Package):
"""ScaLAPACK is a library of high-performance linear algebra routines for
- parallel distributed memory machines"""
+ parallel distributed memory machines
+ """
homepage = "http://www.netlib.org/scalapack/"
- url = "http://www.netlib.org/scalapack/scalapack-2.0.2.tgz"
+ url = "http://www.netlib.org/scalapack/scalapack-2.0.2.tgz"
version('2.0.2', '2f75e600a2ba155ed9ce974a1c4b536f')
version('2.0.1', '17b8cde589ea0423afe1ec43e7499161')
@@ -39,33 +40,47 @@ class NetlibScalapack(Package):
# versions before 2.0.0 are not using cmake and requires blacs as
# a separated package
- variant('shared', default=True,
- description='Build the shared library version')
- variant('fpic', default=False, description="Build with -fpic compiler option")
+ variant(
+ 'shared',
+ default=True,
+ description='Build the shared library version'
+ )
+ variant(
+ 'fpic',
+ default=False,
+ description='Build with -fpic compiler option'
+ )
provides('scalapack')
depends_on('mpi')
depends_on('lapack')
+ depends_on('blas')
depends_on('cmake', when='@2.0.0:', type='build')
+ @property
+ def scalapack_libs(self):
+ shared = True if '+shared' in self.spec else False
+ return find_libraries(
+ ['libscalapack'], root=self.prefix, shared=shared, recurse=True
+ )
+
def install(self, spec, prefix):
options = [
"-DBUILD_SHARED_LIBS:BOOL=%s" % ('ON' if '+shared' in spec else
'OFF'),
"-DBUILD_STATIC_LIBS:BOOL=%s" % ('OFF' if '+shared' in spec else
- 'ON'),
- # forces scalapack to use find_package(LAPACK):
- "-DUSE_OPTIMIZED_LAPACK_BLAS:BOOL=ON",
+ 'ON')
]
# Make sure we use Spack's Lapack:
+ blas = spec['blas'].blas_libs
+ lapack = spec['lapack'].lapack_libs
options.extend([
'-DLAPACK_FOUND=true',
'-DLAPACK_INCLUDE_DIRS=%s' % spec['lapack'].prefix.include,
- '-DLAPACK_LIBRARIES=%s' % (
- spec['lapack'].lapack_shared_lib if '+shared' in spec else
- spec['lapack'].lapack_static_lib),
+ '-DLAPACK_LIBRARIES=%s' % (lapack.joined(';')),
+ '-DBLAS_LIBRARIES=%s' % (blas.joined(';'))
])
if '+fpic' in spec:
@@ -84,12 +99,3 @@ class NetlibScalapack(Package):
# The shared libraries are not installed correctly on Darwin:
if (sys.platform == 'darwin') and ('+shared' in spec):
fix_darwin_install_name(prefix.lib)
-
- def setup_dependent_package(self, module, dependent_spec):
- spec = self.spec
- lib_suffix = dso_suffix if '+shared' in spec else 'a'
-
- spec.fc_link = '-L%s -lscalapack' % spec.prefix.lib
- spec.cc_link = spec.fc_link
- spec.libraries = [join_path(spec.prefix.lib,
- 'libscalapack.%s' % lib_suffix)]
diff --git a/var/spack/repos/builtin/packages/nwchem/package.py b/var/spack/repos/builtin/packages/nwchem/package.py
index 13c710a35a..b15c1c02fd 100644
--- a/var/spack/repos/builtin/packages/nwchem/package.py
+++ b/var/spack/repos/builtin/packages/nwchem/package.py
@@ -66,6 +66,9 @@ class Nwchem(Package):
patch('Gcc6_macs_optfix.patch', when='@6.6', level=0)
def install(self, spec, prefix):
+ scalapack = spec['scalapack'].scalapack_libs
+ lapack = spec['lapack'].lapack_libs
+ blas = spec['blas'].blas_libs
# see http://www.nwchem-sw.org/index.php/Compiling_NWChem
args = []
args.extend([
@@ -79,13 +82,11 @@ class Nwchem(Package):
'USE_PYTHONCONFIG=y',
'PYTHONVERSION=%s' % spec['python'].version.up_to(2),
'PYTHONHOME=%s' % spec['python'].prefix,
- 'BLASOPT=%s %s' % (
- to_link_flags(spec['lapack'].lapack_shared_lib),
- to_link_flags(spec['blas'].blas_shared_lib)),
- 'BLAS_LIB=%s' % to_link_flags(spec['blas'].blas_shared_lib),
- 'LAPACK_LIB=%s' % to_link_flags(spec['lapack'].lapack_shared_lib),
+ 'BLASOPT=%s' % ((lapack + blas).ld_flags),
+ 'BLAS_LIB=%s' % blas.ld_flags,
+ 'LAPACK_LIB=%s' % lapack.ld_flags,
'USE_SCALAPACK=y',
- 'SCALAPACK=%s' % spec['scalapack'].fc_link,
+ 'SCALAPACK=%s' % scalapack.ld_flags,
'NWCHEM_MODULES=all python',
'NWCHEM_LONG_PATHS=Y' # by default NWCHEM_TOP is 64 char max
])
diff --git a/var/spack/repos/builtin/packages/octopus/package.py b/var/spack/repos/builtin/packages/octopus/package.py
index ff4a106940..adb760f06d 100644
--- a/var/spack/repos/builtin/packages/octopus/package.py
+++ b/var/spack/repos/builtin/packages/octopus/package.py
@@ -46,13 +46,13 @@ class Octopus(Package):
# FEAST, Libfm, PFFT, ISF, PNFFT
def install(self, spec, prefix):
+ lapack = spec['lapack'].lapack_libs
+ blas = spec['blas'].blas_libs
args = []
args.extend([
'--prefix=%s' % prefix,
- '--with-blas=%s' % to_link_flags(
- spec['blas'].blas_shared_lib),
- '--with-lapack=%s' % to_link_flags(
- spec['lapack'].lapack_shared_lib),
+ '--with-blas=%s' % blas.ld_flags,
+ '--with-lapack=%s' % lapack.ld_flags,
'--with-gsl-prefix=%s' % spec['gsl'].prefix,
'--with-libxc-prefix=%s' % spec['libxc'].prefix,
'CC=%s' % spec['mpi'].mpicc,
diff --git a/var/spack/repos/builtin/packages/openblas/package.py b/var/spack/repos/builtin/packages/openblas/package.py
index 37f7a7005d..1f6dd0e013 100644
--- a/var/spack/repos/builtin/packages/openblas/package.py
+++ b/var/spack/repos/builtin/packages/openblas/package.py
@@ -30,8 +30,9 @@ import os
class Openblas(Package):
"""OpenBLAS: An optimized BLAS library"""
homepage = "http://www.openblas.net"
- url = "http://github.com/xianyi/OpenBLAS/archive/v0.2.15.tar.gz"
+ url = "http://github.com/xianyi/OpenBLAS/archive/v0.2.15.tar.gz"
+ version('0.2.19', '28c998054fd377279741c6f0b9ea7941')
version('0.2.18', '805e7f660877d588ea7e3792cda2ee65')
version('0.2.17', '664a12807f2a2a7cda4781e3ab2ae0e1')
version('0.2.16', 'fef46ab92463bdbb1479dcec594ef6dc')
@@ -50,6 +51,17 @@ class Openblas(Package):
patch('make.patch')
+ @property
+ def blas_libs(self):
+ shared = True if '+shared' in self.spec else False
+ return find_libraries(
+ ['libopenblas'], root=self.prefix, shared=shared, recurse=True
+ )
+
+ @property
+ def lapack_libs(self):
+ return self.blas_libs
+
def install(self, spec, prefix):
# As of 06/2016 there is no mechanism to specify that packages which
# depends on Blas/Lapack need C or/and Fortran symbols. For now
@@ -99,41 +111,11 @@ class Openblas(Package):
# no quotes around prefix (spack doesn't use a shell)
make('install', "PREFIX=%s" % prefix, *make_defs)
- # Blas virtual package should provide blas.a and libblas.a
- with working_dir(prefix.lib):
- symlink('libopenblas.a', 'blas.a')
- symlink('libopenblas.a', 'libblas.a')
- if '+shared' in spec:
- symlink('libopenblas.%s' % dso_suffix,
- 'libblas.%s' % dso_suffix)
-
- # Lapack virtual package should provide liblapack.a
- with working_dir(prefix.lib):
- symlink('libopenblas.a', 'liblapack.a')
- if '+shared' in spec:
- symlink('libopenblas.%s' % dso_suffix,
- 'liblapack.%s' % dso_suffix)
-
# Openblas may pass its own test but still fail to compile Lapack
# symbols. To make sure we get working Blas and Lapack, do a small
# test.
self.check_install(spec)
- def setup_dependent_package(self, module, dspec):
- # This is WIP for a prototype interface for virtual packages.
- # We can update this as more builds start depending on BLAS/LAPACK.
- libdir = find_library_path('libopenblas.a',
- self.prefix.lib64,
- self.prefix.lib)
-
- self.spec.blas_static_lib = join_path(libdir, 'libopenblas.a')
- self.spec.lapack_static_lib = self.spec.blas_static_lib
-
- if '+shared' in self.spec:
- self.spec.blas_shared_lib = join_path(libdir, 'libopenblas.%s' %
- dso_suffix)
- self.spec.lapack_shared_lib = self.spec.blas_shared_lib
-
def check_install(self, spec):
source_file = join_path(os.path.dirname(self.module.__file__),
'test_cblas_dgemm.c')
@@ -141,10 +123,8 @@ class Openblas(Package):
'test_cblas_dgemm.output')
include_flags = ["-I%s" % join_path(spec.prefix, "include")]
- link_flags = ["-L%s" % join_path(spec.prefix, "lib"),
- "-llapack",
- "-lblas",
- "-lpthread"]
+ link_flags = self.lapack_libs.ld_flags.split()
+ link_flags.extend(["-lpthread"])
if '+openmp' in spec:
link_flags.extend([self.compiler.openmp_flag])
diff --git a/var/spack/repos/builtin/packages/openmpi/package.py b/var/spack/repos/builtin/packages/openmpi/package.py
index ca6bd473f1..bb356aaccc 100644
--- a/var/spack/repos/builtin/packages/openmpi/package.py
+++ b/var/spack/repos/builtin/packages/openmpi/package.py
@@ -65,6 +65,7 @@ class Openmpi(Package):
list_url = "http://www.open-mpi.org/software/ompi/"
list_depth = 3
+ version('2.0.1', '6f78155bd7203039d2448390f3b51c96')
version('2.0.0', 'cdacc800cb4ce690c1f1273cb6366674')
version('1.10.3', 'e2fe4513200e2aaa1500b762342c674b')
version('1.10.2', 'b2f43d9635d2d52826e5ef9feb97fd4c')
@@ -165,6 +166,10 @@ class Openmpi(Package):
"--enable-shared",
"--enable-static"]
+ # for Open-MPI 2.0:, C++ bindings are disabled by default.
+ if self.spec.satisfies('@2.0:'):
+ config_args.extend(['--enable-mpi-cxx'])
+
if getattr(self, 'config_extra', None) is not None:
config_args.extend(self.config_extra)
diff --git a/var/spack/repos/builtin/packages/openssl/package.py b/var/spack/repos/builtin/packages/openssl/package.py
index 8d9049a8f7..12b5ed9c52 100644
--- a/var/spack/repos/builtin/packages/openssl/package.py
+++ b/var/spack/repos/builtin/packages/openssl/package.py
@@ -36,24 +36,21 @@ class Openssl(Package):
homepage = "http://www.openssl.org"
url = "ftp://openssl.org/source/openssl-1.0.1h.tar.gz"
- version('1.0.1h', '8d6d684a9430d5cc98a62a5d8fbda8cf')
- version('1.0.1r', '1abd905e079542ccae948af37e393d28')
- version('1.0.1t', '9837746fcf8a6727d46d22ca35953da1')
- version('1.0.2d', '38dd619b2e77cbac69b99f52a053d25a')
- version('1.0.2e', '5262bfa25b60ed9de9f28d5d52d77fc5')
- version('1.0.2f', 'b3bf73f507172be9292ea2a8c28b659d')
- version('1.0.2g', 'f3c710c045cdee5fd114feb69feba7aa')
+ version('1.0.2j', '96322138f0b69e61b7212bc53d5e912b')
+ version('1.0.2i', '678374e63f8df456a697d3e5e5a931fb')
version('1.0.2h', '9392e65072ce4b614c1392eefc1f23d0')
+ version('1.0.2g', 'f3c710c045cdee5fd114feb69feba7aa')
+ version('1.0.2f', 'b3bf73f507172be9292ea2a8c28b659d')
+ version('1.0.2e', '5262bfa25b60ed9de9f28d5d52d77fc5')
+ version('1.0.2d', '38dd619b2e77cbac69b99f52a053d25a')
+ version('1.0.1u', '130bb19745db2a5a09f22ccbbf7e69d0')
+ version('1.0.1t', '9837746fcf8a6727d46d22ca35953da1')
+ version('1.0.1r', '1abd905e079542ccae948af37e393d28')
+ version('1.0.1h', '8d6d684a9430d5cc98a62a5d8fbda8cf')
depends_on("zlib")
parallel = False
- def url_for_version(self, version):
- if '@system' in self.spec:
- return '@system (reserved version for system openssl)'
- else:
- return super(Openssl, self).url_for_version(self.version)
-
def handle_fetch_error(self, error):
tty.warn("Fetching OpenSSL failed. This may indicate that OpenSSL has "
"been updated, and the version in your instance of Spack is "
diff --git a/var/spack/repos/builtin/packages/opium/package.py b/var/spack/repos/builtin/packages/opium/package.py
index 2c81d92cc0..521f917230 100644
--- a/var/spack/repos/builtin/packages/opium/package.py
+++ b/var/spack/repos/builtin/packages/opium/package.py
@@ -29,7 +29,7 @@ class Opium(Package):
"""DFT pseudopotential generation project"""
homepage = "https://opium.sourceforge.net/index.html"
- url = "https://downloads.sourceforge.net/project/opium/opium/opium-v3.8/opium-v3.8-src.tgz"
+ url = "https://downloads.sourceforge.net/project/opium/opium/opium-v3.8/opium-v3.8-src.tgz"
version('3.8', 'f710c0f869e70352b4a510c31e13bf9f')
@@ -37,12 +37,8 @@ class Opium(Package):
depends_on('lapack')
def install(self, spec, prefix):
- options = [
- 'LDFLAGS=%s %s' % (
- to_link_flags(spec['lapack'].lapack_shared_lib),
- to_link_flags(spec['blas'].blas_shared_lib)
- )
- ]
+ libs = spec['lapack'].lapack_libs + spec['blas'].blas_libs
+ options = ['LDFLAGS=%s' % libs.ld_flags]
configure(*options)
with working_dir("src", create=False):
diff --git a/var/spack/repos/builtin/packages/pango/package.py b/var/spack/repos/builtin/packages/pango/package.py
index 2da20e9dc2..75c4ac807d 100644
--- a/var/spack/repos/builtin/packages/pango/package.py
+++ b/var/spack/repos/builtin/packages/pango/package.py
@@ -38,6 +38,7 @@ class Pango(Package):
version('1.36.8', '217a9a753006275215fa9fa127760ece')
version('1.40.1', '6fc88c6529890d6c8e03074d57a3eceb')
+ depends_on("pkg-config", type="build")
depends_on("harfbuzz")
depends_on("cairo")
diff --git a/var/spack/repos/builtin/packages/papi/package.py b/var/spack/repos/builtin/packages/papi/package.py
index 5c4abe1730..90a7490e75 100644
--- a/var/spack/repos/builtin/packages/papi/package.py
+++ b/var/spack/repos/builtin/packages/papi/package.py
@@ -41,6 +41,7 @@ class Papi(Package):
homepage = "http://icl.cs.utk.edu/papi/index.html"
url = "http://icl.cs.utk.edu/projects/papi/downloads/papi-5.4.1.tar.gz"
+ version('5.5.0', '5e1244a04ca031d4cc29b46ce3dd05b5')
version('5.4.3', '3211b5a5bb389fe692370f5cf4cc2412')
version('5.4.1', '9134a99219c79767a11463a76b0b01a2')
version('5.3.0', '367961dd0ab426e5ae367c2713924ffb')
diff --git a/var/spack/repos/builtin/packages/parmetis/package.py b/var/spack/repos/builtin/packages/parmetis/package.py
index 8afae91af1..74e00cc9e0 100644
--- a/var/spack/repos/builtin/packages/parmetis/package.py
+++ b/var/spack/repos/builtin/packages/parmetis/package.py
@@ -38,11 +38,9 @@ class Parmetis(Package):
version('4.0.3', 'f69c479586bf6bb7aff6a9bc0c739628')
version('4.0.2', '0912a953da5bb9b5e5e10542298ffdce')
- variant('shared', default=True,
- description='Enables the build of shared libraries')
- variant('debug', default=False,
- description='Builds the library in debug mode')
- variant('gdb', default=False, description='Enables gdb support')
+ variant('shared', default=True, description='Enables the build of shared libraries.')
+ variant('debug', default=False, description='Builds the library in debug mode.')
+ variant('gdb', default=False, description='Enables gdb support.')
depends_on('cmake@2.8:', type='build')
depends_on('mpi')
@@ -50,9 +48,9 @@ class Parmetis(Package):
patch('enable_external_metis.patch')
# bug fixes from PETSc developers
- # https://bitbucket.org/petsc/pkg-parmetis/commits/1c1a9fd0f408dc4d42c57f5c3ee6ace411eb222b/raw/
+ # https://bitbucket.org/petsc/pkg-parmetis/commits/1c1a9fd0f408dc4d42c57f5c3ee6ace411eb222b/raw/ # NOQA: E501
patch('pkg-parmetis-1c1a9fd0f408dc4d42c57f5c3ee6ace411eb222b.patch')
- # https://bitbucket.org/petsc/pkg-parmetis/commits/82409d68aa1d6cbc70740d0f35024aae17f7d5cb/raw/
+ # https://bitbucket.org/petsc/pkg-parmetis/commits/82409d68aa1d6cbc70740d0f35024aae17f7d5cb/raw/ # NOQA: E501
patch('pkg-parmetis-82409d68aa1d6cbc70740d0f35024aae17f7d5cb.patch')
def url_for_version(self, version):
@@ -60,12 +58,10 @@ class Parmetis(Package):
return '%s/%sparmetis-%s.tar.gz' % (Parmetis.base_url, verdir, version)
def install(self, spec, prefix):
- options = []
- options.extend(std_cmake_args)
-
- build_directory = join_path(self.stage.path, 'spack-build')
source_directory = self.stage.source_path
+ build_directory = join_path(source_directory, 'build')
+ options = std_cmake_args[:]
options.extend([
'-DGKLIB_PATH:PATH=%s/GKlib' % spec['metis'].prefix.include,
'-DMETIS_PATH:PATH=%s' % spec['metis'].prefix,
diff --git a/var/spack/repos/builtin/packages/pdt/package.py b/var/spack/repos/builtin/packages/pdt/package.py
index 648b2fab98..bed01aeefb 100644
--- a/var/spack/repos/builtin/packages/pdt/package.py
+++ b/var/spack/repos/builtin/packages/pdt/package.py
@@ -35,13 +35,14 @@ class Pdt(Package):
"""
homepage = "https://www.cs.uoregon.edu/research/pdt/home.php"
- url = "http://www.cs.uoregon.edu/research/paracomp/pdtoolkit/Download/pdt-3.22.1.tar.gz"
+ url = "http://www.cs.uoregon.edu/research/paracomp/pdtoolkit/Download/pdtoolkit-3.22.1.tar.gz"
- version('3.22.1', 'be6fac0b1edb3e3287b0cb78741a24b6')
- version('3.22', 'e6c7879fc49ac5ff67a76ce31ef9e251')
- version('3.21', '8df94298b71703decf680709a4ddf68f')
- version('3.19', 'ba5591994998771fdab216699e362228')
- version('3.18.1', '05281b5c82a4754df936df99ad7eec0f')
+ version('3.22.1', 'b56b9b3e621161c7fd9e4908b944840d')
+ version('3.22', '982d667617802962a1f7fe6c4c31184f')
+ version('3.21', '3092ca0d8833b69992c17e63ae66c263')
+ version('3.20', 'c3edabe202926abe04552e33cd39672d')
+ version('3.19', '5c5e1e6607086aa13bf4b1b9befc5864')
+ version('3.18.1', 'e401534f5c476c3e77f05b7f73b6c4f2')
def install(self, spec, prefix):
configure('-prefix=%s' % prefix)
diff --git a/var/spack/repos/builtin/packages/petsc/package.py b/var/spack/repos/builtin/packages/petsc/package.py
index 73091bb182..7ee2d29f4d 100644
--- a/var/spack/repos/builtin/packages/petsc/package.py
+++ b/var/spack/repos/builtin/packages/petsc/package.py
@@ -22,7 +22,9 @@
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
+
import os
+import sys
from spack import *
@@ -114,6 +116,11 @@ class Petsc(Package):
'--with-mpi=1',
'--with-mpi-dir=%s' % self.spec['mpi'].prefix,
]
+ if sys.platform != "darwin":
+ compiler_opts.extend([
+ '--with-cpp=cpp',
+ '--with-cxxcpp=cpp',
+ ])
return compiler_opts
def install(self, spec, prefix):
@@ -125,9 +132,15 @@ class Petsc(Package):
'--with-scalar-type=%s' % (
'complex' if '+complex' in spec else 'real'),
'--with-shared-libraries=%s' % ('1' if '+shared' in spec else '0'),
- '--with-debugging=%s' % ('1' if '+debug' in spec else '0'),
- '--with-blas-lapack-dir=%s' % spec['lapack'].prefix
+ '--with-debugging=%s' % ('1' if '+debug' in spec else '0')
])
+ # Make sure we use exactly the same Blas/Lapack libraries
+ # across the DAG. To that end list them explicitly
+ lapack_blas = spec['lapack'].lapack_libs + spec['blas'].blas_libs
+ options.extend([
+ '--with-blas-lapack-lib=%s' % lapack_blas.joined()
+ ])
+
# Activates library support if needed
for library in ('metis', 'boost', 'hdf5', 'hypre', 'parmetis',
'mumps', 'scalapack'):
diff --git a/var/spack/repos/builtin/packages/pexsi/package.py b/var/spack/repos/builtin/packages/pexsi/package.py
index e74ad6df01..9fc71d4c52 100644
--- a/var/spack/repos/builtin/packages/pexsi/package.py
+++ b/var/spack/repos/builtin/packages/pexsi/package.py
@@ -67,8 +67,8 @@ class Pexsi(Package):
'@PARMETIS_PREFIX': self.spec['parmetis'].prefix,
'@LAPACK_PREFIX': self.spec['lapack'].prefix,
'@BLAS_PREFIX': self.spec['blas'].prefix,
- '@LAPACK_LIBS': self.spec['lapack'].lapack_shared_lib,
- '@BLAS_LIBS': self.spec['lapack'].blas_shared_lib,
+ '@LAPACK_LIBS': self.spec['lapack'].lapack_libs.joined(),
+ '@BLAS_LIBS': self.spec['lapack'].blas_libs.joined(),
'@STDCXX_LIB': ' '.join(self.compiler.stdcxx_libs)
}
diff --git a/var/spack/repos/builtin/packages/pgi/package.py b/var/spack/repos/builtin/packages/pgi/package.py
index c58d563682..6fa8457dc9 100644
--- a/var/spack/repos/builtin/packages/pgi/package.py
+++ b/var/spack/repos/builtin/packages/pgi/package.py
@@ -36,7 +36,7 @@ class Pgi(Package):
architecture) to the format: pgi-<version>.tar.gz. Spack will search your
current directory for a file of this format. Alternatively, add this
file to a mirror so that Spack can find it. For instructions on how to
- set up a mirror, see http://software.llnl.gov/spack/mirrors.html"""
+ set up a mirror, see http://spack.readthedocs.io/en/latest/mirrors.html"""
homepage = "http://www.pgroup.com/"
url = "file://%s/pgi-16.3.tar.gz" % os.getcwd()
diff --git a/var/spack/repos/builtin/packages/pixman/package.py b/var/spack/repos/builtin/packages/pixman/package.py
index 39041587f5..41aad0c90a 100644
--- a/var/spack/repos/builtin/packages/pixman/package.py
+++ b/var/spack/repos/builtin/packages/pixman/package.py
@@ -39,6 +39,7 @@ class Pixman(Package):
def install(self, spec, prefix):
configure("--prefix=%s" % prefix,
+ "--disable-mmx",
"--disable-gtk")
make()
make("install")
diff --git a/var/spack/repos/builtin/packages/plumed/package.py b/var/spack/repos/builtin/packages/plumed/package.py
index 79632abf38..60dfdf7405 100644
--- a/var/spack/repos/builtin/packages/plumed/package.py
+++ b/var/spack/repos/builtin/packages/plumed/package.py
@@ -66,6 +66,8 @@ class Plumed(Package):
depends_on('mpi', when='+mpi')
depends_on('gsl', when='+gsl')
+ depends_on('autoconf', type='build')
+
# Dictionary mapping PLUMED versions to the patches it provides
# interactively
plumed_patches = {
@@ -98,6 +100,12 @@ class Plumed(Package):
module.plumed = Executable(join_path(self.spec.prefix.bin, 'plumed'))
def install(self, spec, prefix):
+ # This part is needed to avoid linking with gsl cblas
+ # interface which will mask the cblas interface
+ # provided by optimized libraries due to linking order
+ filter_file('-lgslcblas', '', 'configure.ac')
+ autoreconf('-ivf')
+
# From plumed docs :
# Also consider that this is different with respect to what some other
# configure script does in that variables such as MPICXX are
diff --git a/var/spack/repos/builtin/packages/psi4/package.py b/var/spack/repos/builtin/packages/psi4/package.py
index 6296d0cee6..566aa50f44 100644
--- a/var/spack/repos/builtin/packages/psi4/package.py
+++ b/var/spack/repos/builtin/packages/psi4/package.py
@@ -32,7 +32,7 @@ class Psi4(Package):
a variety of molecular properties."""
homepage = "http://www.psicode.org/"
- url = "https://github.com/psi4/psi4/archive/0.5.tar.gz"
+ url = "https://github.com/psi4/psi4/archive/0.5.tar.gz"
version('0.5', '53041b8a9be3958384171d0d22f9fdd0')
@@ -62,9 +62,10 @@ class Psi4(Package):
def install(self, spec, prefix):
cmake_args = [
'-DBLAS_TYPE={0}'.format(spec['blas'].name.upper()),
- '-DBLAS_LIBRARIES={0}'.format(spec['blas'].blas_shared_lib),
+ '-DBLAS_LIBRARIES={0}'.format(spec['blas'].blas_libs.joined()),
'-DLAPACK_TYPE={0}'.format(spec['lapack'].name.upper()),
- '-DLAPACK_LIBRARIES={0}'.format(spec['lapack'].lapack_shared_lib),
+ '-DLAPACK_LIBRARIES={0}'.format(
+ spec['lapack'].lapack_libs.joined()),
'-DBOOST_INCLUDEDIR={0}'.format(spec['boost'].prefix.include),
'-DBOOST_LIBRARYDIR={0}'.format(spec['boost'].prefix.lib),
'-DENABLE_CHEMPS2=OFF'
@@ -90,9 +91,9 @@ class Psi4(Package):
kwargs = {'ignore_absent': True, 'backup': False, 'string': True}
- cc_files = ['bin/psi4-config']
+ cc_files = ['bin/psi4-config']
cxx_files = ['bin/psi4-config', 'include/psi4/psiconfig.h']
- template = 'share/psi4/plugin/Makefile.template'
+ template = 'share/psi4/plugin/Makefile.template'
for filename in cc_files:
filter_file(os.environ['CC'], self.compiler.cc,
diff --git a/var/spack/repos/builtin/packages/py-beautifulsoup4/package.py b/var/spack/repos/builtin/packages/py-beautifulsoup4/package.py
index 64368fe70d..d3a260bd7f 100644
--- a/var/spack/repos/builtin/packages/py-beautifulsoup4/package.py
+++ b/var/spack/repos/builtin/packages/py-beautifulsoup4/package.py
@@ -37,5 +37,7 @@ class PyBeautifulsoup4(Package):
extends('python')
+ depends_on('py-setuptools', type='build')
+
def install(self, spec, prefix):
python('setup.py', 'install', '--prefix={0}'.format(prefix))
diff --git a/var/spack/repos/builtin/packages/py-numpy/package.py b/var/spack/repos/builtin/packages/py-numpy/package.py
index f800b5e834..0d68a892f2 100644
--- a/var/spack/repos/builtin/packages/py-numpy/package.py
+++ b/var/spack/repos/builtin/packages/py-numpy/package.py
@@ -32,9 +32,12 @@ class PyNumpy(Package):
sophisticated (broadcasting) functions, tools for integrating C/C++ and
Fortran code, and useful linear algebra, Fourier transform, and random
number capabilities"""
+
homepage = "http://www.numpy.org/"
url = "https://pypi.python.org/packages/source/n/numpy/numpy-1.9.1.tar.gz"
+ version('1.11.1', '2f44a895a8104ffac140c3a70edbd450',
+ url="https://pypi.python.org/packages/e0/4c/515d7c4ac424ff38cc919f7099bf293dd064ba9a600e1e3835b3edefdb18/numpy-1.11.1.tar.gz")
version('1.11.0', 'bc56fb9fc2895aa4961802ffbdb31d0b')
version('1.10.4', 'aed294de0aa1ac7bd3f9745f4f1968ad')
version('1.9.2', 'a1ed53432dbcd256398898d35bc8e645')
@@ -44,6 +47,7 @@ class PyNumpy(Package):
variant('lapack', default=True)
extends('python')
+ depends_on('python@2.6:2.8,3.2:')
depends_on('py-nose', type='build')
depends_on('py-setuptools', type='build')
depends_on('blas', when='+blas')
@@ -79,4 +83,4 @@ class PyNumpy(Package):
f.write('library_dirs=%s\n' % ':'.join(library_dirs))
f.write('rpath=%s\n' % ':'.join(library_dirs))
- python('setup.py', 'install', '--prefix=%s' % prefix)
+ setup_py('install', '--prefix={0}'.format(prefix))
diff --git a/var/spack/repos/builtin/packages/py-pil/package.py b/var/spack/repos/builtin/packages/py-pil/package.py
index 2b3cce26d3..29a86d1e85 100644
--- a/var/spack/repos/builtin/packages/py-pil/package.py
+++ b/var/spack/repos/builtin/packages/py-pil/package.py
@@ -37,7 +37,10 @@ class PyPil(Package):
provides('pil')
+ # py-pil currently only works with Python2.
+ # If you are using Python 3, try using py-pillow instead.
extends('python')
+ depends_on('python@1.5.2:2.8')
def install(self, spec, prefix):
python('setup.py', 'install', '--prefix=%s' % prefix)
diff --git a/var/spack/repos/builtin/packages/py-pillow/package.py b/var/spack/repos/builtin/packages/py-pillow/package.py
index 1d8b3faa6f..211e3b4199 100644
--- a/var/spack/repos/builtin/packages/py-pillow/package.py
+++ b/var/spack/repos/builtin/packages/py-pillow/package.py
@@ -32,7 +32,7 @@ class PyPillow(Package):
capabilities."""
homepage = "https://python-pillow.org/"
- url = "https://pypi.python.org/packages/source/P/Pillow/Pillow-3.0.0.tar.gz"
+ url = "https://pypi.python.org/packages/source/P/Pillow/Pillow-3.0.0.tar.gz"
# TODO: This version should be deleted once the next release comes out.
# TODO: It fixes a bug that prevented us from linking to Tk/Tcl.
diff --git a/var/spack/repos/builtin/packages/py-proj/package.py b/var/spack/repos/builtin/packages/py-proj/package.py
new file mode 100644
index 0000000000..2835bfcca8
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-proj/package.py
@@ -0,0 +1,52 @@
+##############################################################################
+# Copyright (c) 2016, Lawrence Livermore National Security, LLC.
+# Produced at the Lawrence Livermore National Laboratory.
+#
+# This file is part of Spack.
+# Written by David Beckingsale, david@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 PyProj(Package):
+ """Python interface to the PROJ.4 Library."""
+ homepage = "http://jswhit.github.io/pyproj/"
+ url = "https://github.com/jswhit/pyproj/tarball/v1.9.5.1rel"
+
+ # This is not a tagged release of pyproj.
+ # The changes in this "version" fix some bugs, especially with Python3 use.
+ version('1.9.5.1.1', 'd035e4bc704d136db79b43ab371b27d2',
+ url='https://www.github.com/jswhit/pyproj/tarball/0be612cc9f972e38b50a90c946a9b353e2ab140f')
+
+ version('1.9.5.1', 'a4b80d7170fc82aee363d7f980279835')
+
+ extends('python')
+
+ depends_on('py-cython', type='build')
+ depends_on('py-setuptools', type='build')
+
+ # NOTE: py-proj does NOT depends_on('proj').
+ # The py-proj git repo actually includes the correct version of PROJ.4,
+ # which is built internally as part of the py-proj build.
+ # Adding depends_on('proj') will cause mysterious build errors.
+
+ def install(self, spec, prefix):
+ setup_py('install', '--prefix=%s' % prefix)
diff --git a/var/spack/repos/builtin/packages/py-py2neo/package.py b/var/spack/repos/builtin/packages/py-py2neo/package.py
index a79c2e477b..97632493af 100644
--- a/var/spack/repos/builtin/packages/py-py2neo/package.py
+++ b/var/spack/repos/builtin/packages/py-py2neo/package.py
@@ -27,9 +27,10 @@ from spack import Package
class PyPy2neo(Package):
- """FIXME: put a proper description of your package here."""
- # FIXME: add a proper url for your package's homepage here.
- homepage = "http://www.example.com"
+ """Py2neo is a client library and toolkit for working with Neo4j from
+ within Python applications and from the command line."""
+
+ homepage = "http://py2neo.org/"
url = "https://github.com/nigelsmall/py2neo/archive/py2neo-2.0.8.tar.gz"
version('2.0.8', 'e3ec5172a9e006515ef4155688a05a55')
diff --git a/var/spack/repos/builtin/packages/py-scipy/package.py b/var/spack/repos/builtin/packages/py-scipy/package.py
index cab516e1df..abb843f8ee 100644
--- a/var/spack/repos/builtin/packages/py-scipy/package.py
+++ b/var/spack/repos/builtin/packages/py-scipy/package.py
@@ -26,17 +26,25 @@ from spack import *
class PyScipy(Package):
- """Scientific Library for Python."""
+ """SciPy (pronounced "Sigh Pie") is a Scientific Library for Python.
+ It provides many user-friendly and efficient numerical routines such
+ as routines for numerical integration and optimization."""
+
homepage = "http://www.scipy.org/"
- url = "https://pypi.python.org/packages/source/s/scipy/scipy-0.15.0.tar.gz"
+ url = "https://pypi.python.org/packages/source/s/scipy/scipy-0.15.0.tar.gz"
+ version('0.18.1', '5fb5fb7ccb113ab3a039702b6c2f3327',
+ url="https://pypi.python.org/packages/22/41/b1538a75309ae4913cdbbdc8d1cc54cae6d37981d2759532c1aa37a41121/scipy-0.18.1.tar.gz")
version('0.17.0', '5ff2971e1ce90e762c59d2cd84837224')
version('0.15.1', 'be56cd8e60591d6332aac792a5880110')
version('0.15.0', '639112f077f0aeb6d80718dc5019dc7a')
extends('python')
+ depends_on('python@2.6:2.8,3.2:')
depends_on('py-nose', type='build')
- depends_on('py-numpy+blas+lapack', type=nolink)
+ # Known not to work with 2.23, 2.25
+ depends_on('binutils@2.26:', type='build')
+ depends_on('py-numpy@1.7.1:+blas+lapack', type=nolink)
def install(self, spec, prefix):
if 'atlas' in spec:
@@ -45,7 +53,7 @@ class PyScipy(Package):
env['ATLAS'] = join_path(
spec['atlas'].prefix.lib, 'libatlas.' + dso_suffix)
else:
- env['BLAS'] = spec['blas'].blas_shared_lib
- env['LAPACK'] = spec['lapack'].lapack_shared_lib
+ env['BLAS'] = spec['blas'].blas_libs.joined()
+ env['LAPACK'] = spec['lapack'].lapack_libs.joined()
- python('setup.py', 'install', '--prefix=%s' % prefix)
+ setup_py('install', '--prefix={0}'.format(prefix))
diff --git a/var/spack/repos/builtin/packages/py-yt/package.py b/var/spack/repos/builtin/packages/py-yt/package.py
new file mode 100644
index 0000000000..646bd4db2f
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-yt/package.py
@@ -0,0 +1,78 @@
+##############################################################################
+# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
+# Produced at the Lawrence Livermore National Laboratory.
+#
+# This file is part of Spack.
+# Created 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 Lesser General Public License (as
+# published by the Free Software Foundation) version 2.1, 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 Lesser 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 PyYt(Package):
+ """Volumetric Data Analysis
+
+ yt is a python package for analyzing and visualizing
+ volumetric, multi-resolution data from astrophysical
+ simulations, radio telescopes, and a burgeoning
+ interdisciplinary community.
+ """
+ homepage = "http://yt-project.org"
+ url = "https://bitbucket.org/yt_analysis/yt"
+
+ version("3.3.1", hg="https://bitbucket.org/yt_analysis/yt",
+ tag="yt-3.3.1", commit="9bc3d0e9b750c923d44d73c447df64fc431f5838")
+ version("3.2.3", hg="https://bitbucket.org/yt_analysis/yt",
+ tag="yt-3.2.3", commit="83d2c1e9313e7d83eb5b96888451ff2646fd8ff3")
+ version("3.1.0", hg="https://bitbucket.org/yt_analysis/yt",
+ tag="yt-3.1.0", commit="fd7cdc4836188a3badf81adb477bcc1b9632e485")
+ version("3.0.2", hg="https://bitbucket.org/yt_analysis/yt",
+ tag="yt-3.0.2", commit="511887af4c995a78fe606e58ce8162c88380ecdc")
+ version("2.6.3", hg="https://bitbucket.org/yt_analysis/yt",
+ tag="yt-2.6.3", commit="816186f16396a16853810ac9ebcde5057d8d5b1a")
+ version("development", hg="https://bitbucket.org/yt_analysis/yt",
+ branch="yt")
+
+ variant("astropy", default=True, description="enable astropy support")
+ variant("h5py", default=True, description="enable h5py support")
+ variant("scipy", default=True, description="enable scipy support")
+
+ extends("python")
+
+ depends_on("py-astropy", type="nolink", when="+astropy")
+ depends_on("py-cython", type="nolink")
+ depends_on("py-h5py", type="nolink", when="+h5py")
+ depends_on("py-ipython", type="nolink")
+ depends_on("py-matplotlib", type="nolink")
+ depends_on("py-numpy", type="nolink")
+ depends_on("py-scipy", type="nolink", when="+scipy")
+ depends_on("py-setuptools", type="build")
+ depends_on("py-sympy", type="nolink")
+ depends_on("python @2.7:2.999,3.4:")
+
+ def install(self, spec, prefix):
+ setup_py("install", "--prefix=%s" % prefix)
+ self.check_install(spec, prefix)
+
+ def check_install(self, spec, prefix):
+ # The Python interpreter path can be too long for this
+ # yt = Executable(join_path(prefix.bin, "yt"))
+ # yt("--help")
+ python(join_path(prefix.bin, "yt"), "--help")
diff --git a/var/spack/repos/builtin/packages/python/ncurses.patch b/var/spack/repos/builtin/packages/python/ncurses.patch
new file mode 100644
index 0000000000..9054c03e7b
--- /dev/null
+++ b/var/spack/repos/builtin/packages/python/ncurses.patch
@@ -0,0 +1,11 @@
+--- a/setup.py 2016-08-30 15:39:59.334926574 -0500
++++ b/setup.py 2016-08-30 15:46:57.227946339 -0500
+@@ -745,8 +745,6 @@
+ # use the same library for the readline and curses modules.
+ if 'curses' in readline_termcap_library:
+ curses_library = readline_termcap_library
+- elif self.compiler.find_library_file(lib_dirs, 'ncursesw'):
+- curses_library = 'ncursesw'
+ elif self.compiler.find_library_file(lib_dirs, 'ncurses'):
+ curses_library = 'ncurses'
+ elif self.compiler.find_library_file(lib_dirs, 'curses'):
diff --git a/var/spack/repos/builtin/packages/python/package.py b/var/spack/repos/builtin/packages/python/package.py
index 57783b0542..f3380cf75d 100644
--- a/var/spack/repos/builtin/packages/python/package.py
+++ b/var/spack/repos/builtin/packages/python/package.py
@@ -74,6 +74,8 @@ class Python(Package):
depends_on("tk", when="+tk")
depends_on("tcl", when="+tk")
+ patch('ncurses.patch')
+
@when('@2.7,3.4:')
def patch(self):
# NOTE: Python's default installation procedure makes it possible for a
@@ -110,6 +112,8 @@ class Python(Package):
'CPPFLAGS=-I{0}'.format(' -I'.join(dp.include for dp in dep_pfxs)),
'LDFLAGS=-L{0}'.format(' -L'.join(dp.lib for dp in dep_pfxs)),
]
+ if spec.satisfies("platform=darwin") and ('%gcc' in spec):
+ config_args.append('--disable-toolbox-glue')
if '+ucs4' in spec:
if spec.satisfies('@:2.7'):
diff --git a/var/spack/repos/builtin/packages/qt/package.py b/var/spack/repos/builtin/packages/qt/package.py
index 436702fa4e..2dba05ce13 100644
--- a/var/spack/repos/builtin/packages/qt/package.py
+++ b/var/spack/repos/builtin/packages/qt/package.py
@@ -6,7 +6,7 @@
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
-# For details, see https://github.com/llnl/spack
+# For details, see https://github.com/llnl/spack # NOQA: ignore=E501
# Please also see the LICENSE file for our notice and the LGPL.
#
# This program is free software; you can redistribute it and/or modify
@@ -24,13 +24,14 @@
##############################################################################
from spack import *
import os
+import sys
class Qt(Package):
"""Qt is a comprehensive cross-platform C++ application framework."""
- homepage = 'http://qt.io'
- url = 'http://download.qt.io/archive/qt/5.7/5.7.0/single/qt-everywhere-opensource-src-5.7.0.tar.gz'
- list_url = 'http://download.qt.io/archive/qt/'
+ homepage = 'http://qt.io' # NOQA: ignore=E501
+ url = 'http://download.qt.io/archive/qt/5.7/5.7.0/single/qt-everywhere-opensource-src-5.7.0.tar.gz' # NOQA: ignore=E501
+ list_url = 'http://download.qt.io/archive/qt/' # NOQA: ignore=E501
list_depth = 4
version('5.7.0', '9a46cce61fc64c20c3ac0a0e0fa41b42')
@@ -47,19 +48,25 @@ class Qt(Package):
variant('krellpatch', default=False, description="Build with openspeedshop based patch.")
variant('mesa', default=False, description="Depend on mesa.")
variant('gtk', default=False, description="Build with gtkplus.")
+ variant('examples', default=False, description="Build examples.")
+ variant('dbus', default=False, description="Build with D-Bus support.")
patch('qt3krell.patch', when='@3.3.8b+krellpatch')
- # https://github.com/xboxdrv/xboxdrv/issues/188
+ # https://github.com/xboxdrv/xboxdrv/issues/188 # NOQA: ignore=E501
patch('btn_trigger_happy.patch', when='@5.7.0:')
+ patch('qt4-corewlan-new-osx.patch', when='@4')
+ patch('qt4-pcre-include-conflict.patch', when='@4')
+ patch('qt4-el-capitan.patch', when='@4')
+
# Use system openssl for security.
- # depends_on("openssl")
+ depends_on("openssl")
depends_on("gtkplus", when='+gtk')
depends_on("libxml2")
depends_on("zlib")
- depends_on("dbus", when='@4:')
+ depends_on("dbus", when='@4:+dbus')
depends_on("libtiff")
depends_on("libpng@1.2.56", when='@3')
depends_on("libpng", when='@4:')
@@ -71,11 +78,11 @@ class Qt(Package):
# depends_on("flex", type='build')
# depends_on("bison", type='build')
# depends_on("ruby", type='build')
- # depends_on("icu4c")
+ depends_on("icu4c")
# OpenGL hardware acceleration
depends_on("mesa", when='@4:+mesa')
- depends_on("libxcb")
+ depends_on("libxcb", when=sys.platform != 'darwin')
def url_for_version(self, version):
# URL keeps getting more complicated with every release
@@ -123,7 +130,7 @@ class Qt(Package):
'mkspecs/common/g++-base.conf')
# Necessary to build with GCC 6 and other modern compilers
- # http://stackoverflow.com/questions/10354371/
+ # http://stackoverflow.com/questions/10354371/ # NOQA: ignore=E501
filter_file('(^QMAKE_CXXFLAGS .*)', r'\1 -std=gnu++98',
'mkspecs/common/gcc-base.conf')
@@ -143,7 +150,7 @@ class Qt(Package):
@property
def common_config_args(self):
- return [
+ config_args = [
'-prefix', self.prefix,
'-v',
'-opensource',
@@ -152,7 +159,6 @@ class Qt(Package):
'-shared',
'-confirm-license',
'-openssl-linked',
- '-dbus-linked',
'-optimized-qmake',
'-no-openvg',
'-no-pch',
@@ -160,10 +166,53 @@ class Qt(Package):
'-no-nis'
]
+ if '~examples' in self.spec:
+ config_args.extend(['-nomake', 'examples'])
+
+ if '@4' in self.spec:
+ config_args.append('-no-phonon')
+
+ if '+dbus' in self.spec:
+ config_args.append('-dbus-linked')
+ else:
+ config_args.append('-no-dbus')
+
+ if '@5:' in self.spec and sys.platform == 'darwin':
+ config_args.extend([
+ '-no-xinput2',
+ '-no-xcb-xlib',
+ '-no-pulseaudio',
+ '-no-alsa',
+ '-no-gtkstyle',
+ ])
+
+ if '@4' in self.spec and sys.platform == 'darwin':
+ sdkpath = which('xcrun')('--show-sdk-path',
+ # XXX(macos): 10.11 SDK fails to configure
+ '--sdk', 'macosx10.9',
+ output=str)
+ config_args.extend([
+ '-sdk', sdkpath.strip(),
+ ])
+ use_clang_platform = False
+ if self.spec.compiler.name == 'clang' and \
+ str(self.spec.compiler.version).endwith('-apple'):
+ use_clang_platform = True
+ # No one uses gcc-4.2.1 anymore; this is clang.
+ if self.spec.compiler.name == 'gcc' and \
+ str(self.spec.compiler.version) == '4.2.1':
+ use_clang_platform = True
+ if use_clang_platform:
+ config_args.extend([
+ '-platform', 'unsupported/macx-clang',
+ ])
+
+ return config_args
+
# Don't disable all the database drivers, but should
# really get them into spack at some point.
- @when('@3')
+ @when('@3') # NOQA: ignore=F811
def configure(self):
# A user reported that this was necessary to link Qt3 on ubuntu
os.environ['LD_LIBRARY_PATH'] = os.getcwd() + '/lib'
@@ -174,30 +223,36 @@ class Qt(Package):
'-release',
'-fast')
- @when('@4')
+ @when('@4') # NOQA: ignore=F811
def configure(self):
configure('-fast',
'-no-webkit',
'{0}-gtkstyle'.format('' if '+gtk' in self.spec else '-no'),
+ '-arch', str(self.spec.architecture.target),
*self.common_config_args)
- @when('@5.0:5.6')
+ @when('@5.0:5.6') # NOQA: ignore=F811
def configure(self):
configure('-no-eglfs',
'-no-directfb',
- '-qt-xcb',
'{0}-gtkstyle'.format('' if '+gtk' in self.spec else '-no'),
'-skip', 'qtwebkit',
*self.common_config_args)
- @when('@5.7:')
+ @when('@5.7:') # NOQA: ignore=F811
def configure(self):
+ args = self.common_config_args
+
+ if not sys.platform == 'darwin':
+ args.extend([
+ '-qt-xcb',
+ ])
+
configure('-no-eglfs',
'-no-directfb',
- '-qt-xcb',
'{0}-gtk'.format('' if '+gtk' in self.spec else '-no'),
'-skip', 'webengine',
- *self.common_config_args)
+ *args)
def install(self, spec, prefix):
self.configure()
diff --git a/var/spack/repos/builtin/packages/qt/qt4-corewlan-new-osx.patch b/var/spack/repos/builtin/packages/qt/qt4-corewlan-new-osx.patch
new file mode 100644
index 0000000000..370edf7fa5
--- /dev/null
+++ b/var/spack/repos/builtin/packages/qt/qt4-corewlan-new-osx.patch
@@ -0,0 +1,16 @@
+diff -Nr -U5 qt-everywhere-opensource-src-4.8.6/src/plugins/bearer/corewlan/corewlan.pro qt-everywhere-opensource-src-4.8.6.corewlan-new-osx/src/plugins/bearer/corewlan/corewlan.pro
+--- qt-everywhere-opensource-src-4.8.6/src/plugins/bearer/corewlan/corewlan.pro 2014-04-10 14:37:12.000000000 -0400
++++ qt-everywhere-opensource-src-4.8.6.corewlan-new-osx/src/plugins/bearer/corewlan/corewlan.pro 2015-12-02 12:21:34.608585392 -0500
+@@ -3,11 +3,11 @@
+
+ QT = core network
+ LIBS += -framework Foundation -framework SystemConfiguration
+
+ contains(QT_CONFIG, corewlan) {
+- isEmpty(QMAKE_MAC_SDK)|contains(QMAKE_MAC_SDK, "/Developer/SDKs/MacOSX10\.[67]\.sdk") {
++ isEmpty(QMAKE_MAC_SDK)|contains(QMAKE_MAC_SDK, ".*MacOSX10\.([6789]|1[01])\.sdk") {
+ LIBS += -framework CoreWLAN -framework Security
+ }
+ }
+
+ HEADERS += qcorewlanengine.h \
diff --git a/var/spack/repos/builtin/packages/qt/qt4-el-capitan.patch b/var/spack/repos/builtin/packages/qt/qt4-el-capitan.patch
new file mode 100644
index 0000000000..35f154d3b0
--- /dev/null
+++ b/var/spack/repos/builtin/packages/qt/qt4-el-capitan.patch
@@ -0,0 +1,31 @@
+From 27aa46933bb32a88c310fe5918a49a3f34d65dfe Mon Sep 17 00:00:00 2001
+From: Mike McQuaid <mike@mikemcquaid.com>
+Date: Sun, 13 Sep 2015 11:55:59 +0100
+Subject: [PATCH] Fix El Capitan build.
+
+---
+ src/gui/painting/qpaintengine_mac.cpp | 8 +-------
+ 1 file changed, 1 insertion(+), 7 deletions(-)
+
+diff --git a/src/gui/painting/qpaintengine_mac.cpp b/src/gui/painting/qpaintengine_mac.cpp
+index 4aa0668..63b646d 100644
+--- a/src/gui/painting/qpaintengine_mac.cpp
++++ b/src/gui/painting/qpaintengine_mac.cpp
+@@ -340,13 +340,7 @@ CGColorSpaceRef QCoreGraphicsPaintEngine::macDisplayColorSpace(const QWidget *wi
+ }
+
+ // Get the color space from the display profile.
+- CGColorSpaceRef colorSpace = 0;
+- CMProfileRef displayProfile = 0;
+- CMError err = CMGetProfileByAVID((CMDisplayIDType)displayID, &displayProfile);
+- if (err == noErr) {
+- colorSpace = CGColorSpaceCreateWithPlatformColorSpace(displayProfile);
+- CMCloseProfile(displayProfile);
+- }
++ CGColorSpaceRef colorSpace = CGDisplayCopyColorSpace(displayID);
+
+ // Fallback: use generic DeviceRGB
+ if (colorSpace == 0)
+--
+2.3.8 (Apple Git-58)
+
diff --git a/var/spack/repos/builtin/packages/qt/qt4-pcre-include-conflict.patch b/var/spack/repos/builtin/packages/qt/qt4-pcre-include-conflict.patch
new file mode 100644
index 0000000000..854e564bfb
--- /dev/null
+++ b/var/spack/repos/builtin/packages/qt/qt4-pcre-include-conflict.patch
@@ -0,0 +1,16 @@
+diff -U5 -Nru qt-everywhere-opensource-src-4.8.6/src/3rdparty/javascriptcore/JavaScriptCore/yarr/RegexJIT.h qt-everywhere-opensource-src-4.8.6.pcre/src/3rdparty/javascriptcore/JavaScriptCore/yarr/RegexJIT.h
+--- qt-everywhere-opensource-src-4.8.6/src/3rdparty/javascriptcore/JavaScriptCore/yarr/RegexJIT.h 2014-04-10 14:37:12.000000000 -0400
++++ qt-everywhere-opensource-src-4.8.6.pcre/src/3rdparty/javascriptcore/JavaScriptCore/yarr/RegexJIT.h 2016-08-29 15:30:02.216546252 -0400
+@@ -32,11 +32,11 @@
+
+ #include "MacroAssembler.h"
+ #include "RegexPattern.h"
+ #include <UString.h>
+
+-#include <pcre.h>
++#include <pcre/pcre.h>
+ struct JSRegExp; // temporary, remove when fallback is removed.
+
+ #if CPU(X86) && !COMPILER(MSVC)
+ #define YARR_CALL __attribute__ ((regparm (3)))
+ #else
diff --git a/var/spack/repos/builtin/packages/qthreads/ldflags.patch b/var/spack/repos/builtin/packages/qthreads/ldflags.patch
deleted file mode 100644
index 0c15eab386..0000000000
--- a/var/spack/repos/builtin/packages/qthreads/ldflags.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/configure
-+++ b/configure
-@@ -40456,7 +40456,7 @@
- hwloc_saved_LDFLAGS="$LDFLAGS"
- if test "x$with_hwloc" != x; then
- CPPFLAGS="-I$with_hwloc/include $CPPFLAGS"
-- LDFLAGS="-L$with_hwloc/lib $CPPFLAGS"
-+ LDFLAGS="-L$with_hwloc/lib $LDFLAGS"
- fi
-
-
diff --git a/var/spack/repos/builtin/packages/qthreads/package.py b/var/spack/repos/builtin/packages/qthreads/package.py
index 8d5cc87062..aa2f0ac67a 100644
--- a/var/spack/repos/builtin/packages/qthreads/package.py
+++ b/var/spack/repos/builtin/packages/qthreads/package.py
@@ -38,28 +38,16 @@ class Qthreads(Package):
attain either state."""
homepage = "http://www.cs.sandia.gov/qthreads/"
- # Google Code has stopped serving tarballs
- # We assume the tarballs will soon be available on Github instead
- # url = "https://qthreads.googlecode.com/files/qthread-1.10.tar.bz2"
- # version('1.10', '5af8c8bbe88c2a6d45361643780d1671')
+ url = "https://github.com/Qthreads/qthreads/releases/download/1.10/qthread-1.10.tar.bz2"
+ version("1.11", "68b5f9a41cfd1a2ac112cc4db0612326")
+ version("1.10", "d1cf3cf3f30586921359f7840171e551")
- # Temporarily install from a git branch
- url = "https://github.com/Qthreads/qthreads"
- version("1.10",
- git="https://github.com/Qthreads/qthreads",
- branch="release-1.10")
+ patch("restrict.patch", when="@:1.10")
+ patch("trap.patch", when="@:1.10")
- # patch("ldflags.patch")
- patch("restrict.patch")
- patch("trap.patch")
-
- depends_on("autoconf", type="build")
- depends_on("automake", type="build")
depends_on("hwloc")
def install(self, spec, prefix):
- autogen = Executable("./autogen.sh")
- autogen()
configure("--prefix=%s" % prefix,
"--enable-guard-pages",
"--with-topology=hwloc",
diff --git a/var/spack/repos/builtin/packages/r-stringi/package.py b/var/spack/repos/builtin/packages/r-stringi/package.py
index 22774dedec..cc57caf8cd 100644
--- a/var/spack/repos/builtin/packages/r-stringi/package.py
+++ b/var/spack/repos/builtin/packages/r-stringi/package.py
@@ -44,7 +44,7 @@ class RStringi(Package):
extends('R')
- depends_on('icu')
+ depends_on('icu4c')
def install(self, spec, prefix):
R('CMD', 'INSTALL', '--library={0}'.format(self.module.r_lib_dir),
diff --git a/var/spack/repos/builtin/packages/root/math_uint.patch b/var/spack/repos/builtin/packages/root/math_uint.patch
new file mode 100644
index 0000000000..ff4a38b91c
--- /dev/null
+++ b/var/spack/repos/builtin/packages/root/math_uint.patch
@@ -0,0 +1,115 @@
+From 5f3faffdd869bce5e254ae70f69290e4651a061d Mon Sep 17 00:00:00 2001
+From: Lorenzo Moneta <Lorenzo.Moneta@cern.ch>
+Date: Mon, 4 Jan 2016 15:38:23 +0100
+Subject: [PATCH] Fix ROOT-7886. Use unsigned int instead of uint
+
+---
+ math/mathcore/inc/Math/Delaunay2D.h | 2 +-
+ math/mathcore/src/Delaunay2D.cxx | 30 +++++++++++++++---------------
+ 2 files changed, 16 insertions(+), 16 deletions(-)
+
+diff --git a/math/mathcore/inc/Math/Delaunay2D.h b/math/mathcore/inc/Math/Delaunay2D.h
+index 6255e78..472bded 100644
+--- a/math/mathcore/inc/Math/Delaunay2D.h
++++ b/math/mathcore/inc/Math/Delaunay2D.h
+@@ -273,7 +273,7 @@ class Delaunay2D {
+ double fYCellStep; //! inverse denominator to calculate X cell = fNCells / (fYNmax - fYNmin)
+ std::set<UInt_t> fCells[(fNCells+1)*(fNCells+1)]; //! grid cells with containing triangles
+
+- inline unsigned int Cell(uint x, uint y) const {
++ inline unsigned int Cell(UInt_t x, UInt_t y) const {
+ return x*(fNCells+1) + y;
+ }
+
+diff --git a/math/mathcore/src/Delaunay2D.cxx b/math/mathcore/src/Delaunay2D.cxx
+index c4d4680..9a82858 100644
+--- a/math/mathcore/src/Delaunay2D.cxx
++++ b/math/mathcore/src/Delaunay2D.cxx
+@@ -190,7 +190,7 @@ void Delaunay2D::DoFindTriangles() {
+
+ Triangle tri;
+
+- auto transform = [&] (const uint i) {
++ auto transform = [&] (const unsigned int i) {
+ tri.x[i] = face.vertex(i)->point().x();
+ tri.y[i] = face.vertex(i)->point().y();
+ tri.idx[i] = face.vertex(i)->info();
+@@ -326,7 +326,7 @@ void Delaunay2D::DoFindTriangles() {
+ for(int t = 0; t < out.numberoftriangles; ++t){
+ Triangle tri;
+
+- auto transform = [&] (const uint v) {
++ auto transform = [&] (const unsigned int v) {
+ //each triangle as numberofcorners vertices ( = 3)
+ tri.idx[v] = out.trianglelist[t*out.numberofcorners + v];
+
+@@ -354,14 +354,14 @@ void Delaunay2D::DoFindTriangles() {
+ auto bx = std::minmax({tri.x[0], tri.x[1], tri.x[2]});
+ auto by = std::minmax({tri.y[0], tri.y[1], tri.y[2]});
+
+- uint cellXmin = CellX(bx.first);
+- uint cellXmax = CellX(bx.second);
++ unsigned int cellXmin = CellX(bx.first);
++ unsigned int cellXmax = CellX(bx.second);
+
+- uint cellYmin = CellY(by.first);
+- uint cellYmax = CellY(by.second);
++ unsigned int cellYmin = CellY(by.first);
++ unsigned int cellYmax = CellY(by.second);
+
+- for(uint i = cellXmin; i <= cellXmax; ++i)
+- for(uint j = cellYmin; j <= cellYmax; ++j){
++ for(unsigned int i = cellXmin; i <= cellXmax; ++i)
++ for(unsigned int j = cellYmin; j <= cellYmax; ++j){
+ //printf("(%u,%u) = %u\n", i, j, Cell(i,j));
+ fCells[Cell(i,j)].insert(t);
+ }
+@@ -382,7 +382,7 @@ double Delaunay2D::DoInterpolateNormalized(double xx, double yy)
+ /// FindAllTriangles();
+
+ //see comment in header for CGAL fallback section
+- auto bayCoords = [&] (const uint t) -> std::tuple<double, double, double> {
++ auto bayCoords = [&] (const unsigned int t) -> std::tuple<double, double, double> {
+ double la = ( (fTriangles[t].y[1] - fTriangles[t].y[2])*(xx - fTriangles[t].x[2])
+ + (fTriangles[t].x[2] - fTriangles[t].x[1])*(yy - fTriangles[t].y[2]) ) * fTriangles[t].invDenom;
+ double lb = ( (fTriangles[t].y[2] - fTriangles[t].y[0])*(xx - fTriangles[t].x[2])
+@@ -401,7 +401,7 @@ double Delaunay2D::DoInterpolateNormalized(double xx, double yy)
+ if(cX < 0 || cX > fNCells || cY < 0 || cY > fNCells)
+ return fZout; //TODO some more fancy interpolation here
+
+- for(uint t : fCells[Cell(cX, cY)]){
++ for(unsigned int t : fCells[Cell(cX, cY)]){
+ auto coords = bayCoords(t);
+
+ if(inTriangle(coords)){
+@@ -415,7 +415,7 @@ double Delaunay2D::DoInterpolateNormalized(double xx, double yy)
+
+ //debugging
+
+- /*for(uint t = 0; t < fNdt; ++t){
++ /*for(unsigned int t = 0; t < fNdt; ++t){
+ auto coords = bayCoords(t);
+
+ if(inTriangle(coords)){
+@@ -423,17 +423,17 @@ double Delaunay2D::DoInterpolateNormalized(double xx, double yy)
+ //brute force found a triangle -> grid not
+ printf("Found triangle %u for (%f,%f) -> (%u,%u)\n", t, xx,yy, cX, cY);
+ printf("Triangles in grid cell: ");
+- for(uint x : fCells[Cell(cX, cY)])
++ for(unsigned int x : fCells[Cell(cX, cY)])
+ printf("%u ", x);
+ printf("\n");
+
+ printf("Triangle %u is in cells: ", t);
+- for(uint i = 0; i <= fNCells; ++i)
+- for(uint j = 0; j <= fNCells; ++j)
++ for(unsigned int i = 0; i <= fNCells; ++i)
++ for(unsigned int j = 0; j <= fNCells; ++j)
+ if(fCells[Cell(i,j)].count(t))
+ printf("(%u,%u) ", i, j);
+ printf("\n");
+- for(uint i = 0; i < 3; ++i)
++ for(unsigned int i = 0; i < 3; ++i)
+ printf("\tpoint %u (%u): (%f,%f) -> (%u,%u)\n", i, fTriangles[t].idx[i], fTriangles[t].x[i], fTriangles[t].y[i], CellX(fTriangles[t].x[i]), CellY(fTriangles[t].y[i]));
+
+ //we found the triangle -> interpolate using the barycentric interpolation
diff --git a/var/spack/repos/builtin/packages/root/package.py b/var/spack/repos/builtin/packages/root/package.py
new file mode 100644
index 0000000000..0f66dcebaa
--- /dev/null
+++ b/var/spack/repos/builtin/packages/root/package.py
@@ -0,0 +1,89 @@
+##############################################################################
+# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
+# Produced at the Lawrence Livermore National Laboratory.
+#
+# This file is part of Spack.
+# Created 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 Lesser General Public License (as
+# published by the Free Software Foundation) version 2.1, 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 Lesser 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 sys
+
+
+class Root(Package):
+ """ROOT is a data analysis framework."""
+ homepage = "https://root.cern.ch"
+ url = "https://root.cern.ch/download/root_v6.07.02.source.tar.gz"
+
+ version('6.06.06', '4308449892210c8d36e36924261fea26')
+ version('6.06.04', '55a2f98dd4cea79c9c4e32407c2d6d17')
+ version('6.06.02', 'e9b8b86838f65b0a78d8d02c66c2ec55')
+
+ if sys.platform == 'darwin':
+ patch('math_uint.patch', when='@6.06.02')
+ patch('root6-60606-mathmore.patch', when='@6.06.06')
+
+ variant('graphviz', default=False, description='Enable graphviz support')
+
+ depends_on("cmake", type='build')
+ depends_on("pcre")
+ depends_on("fftw")
+ depends_on("graphviz", when="+graphviz")
+ depends_on("python")
+ depends_on("gsl")
+ depends_on("libxml2+python")
+ depends_on("jpeg")
+ if sys.platform != 'darwin':
+ depends_on("libpng")
+ depends_on("openssl")
+ depends_on("freetype")
+
+ def install(self, spec, prefix):
+ build_directory = join_path(self.stage.path, 'spack-build')
+ source_directory = self.stage.source_path
+ options = [source_directory]
+ if '+debug' in spec:
+ options.append('-DCMAKE_BUILD_TYPE:STRING=Debug')
+ else:
+ options.append('-DCMAKE_BUILD_TYPE:STRING=Release')
+ options.append('-Dcxx14=on')
+ options.append('-Dcocoa=off')
+ options.append('-Dbonjour=off')
+ options.append('-Dx11=on')
+ options.extend(std_cmake_args)
+ if sys.platform == 'darwin':
+ darwin_options = [
+ '-Dcastor=OFF',
+ '-Drfio=OFF',
+ '-Ddcache=OFF']
+ options.extend(darwin_options)
+ with working_dir(build_directory, create=True):
+ cmake(*options)
+ make()
+ make("install")
+
+ def setup_dependent_environment(self, spack_env, run_env, dspec):
+ spack_env.set('ROOTSYS', self.prefix)
+ spack_env.set('ROOT_VERSION', 'v6')
+ spack_env.prepend_path('PYTHONPATH', self.prefix.lib)
+
+ def url_for_version(self, version):
+ """Handle ROOT's unusual version string."""
+ return "https://root.cern.ch/download/root_v%s.source.tar.gz" % version
diff --git a/var/spack/repos/builtin/packages/root/root6-60606-mathmore.patch b/var/spack/repos/builtin/packages/root/root6-60606-mathmore.patch
new file mode 100644
index 0000000000..d009a5af0d
--- /dev/null
+++ b/var/spack/repos/builtin/packages/root/root6-60606-mathmore.patch
@@ -0,0 +1,29 @@
+diff --git a/math/mathmore/inc/Math/QuantFuncMathMore.h b/math/mathmore/inc/Math/QuantFuncMathMore.h
+index fd6679c..03ccc03 100644
+--- a/math/mathmore/inc/Math/QuantFuncMathMore.h
++++ b/math/mathmore/inc/Math/QuantFuncMathMore.h
+@@ -25,17 +25,6 @@
+ **********************************************************************/
+
+
+-#if defined(__CINT__) && !defined(__MAKECINT__)
+-// avoid to include header file when using CINT
+-#ifndef _WIN32
+-#include "../lib/libMathMore.so"
+-#else
+-#include "../bin/libMathMore.dll"
+-#endif
+-
+-#else
+-
+-
+ #ifndef ROOT_Math_QuantFuncMathMore
+ #define ROOT_Math_QuantFuncMathMore
+
+@@ -190,5 +179,3 @@ namespace MathMore {
+
+
+ #endif // ROOT_Math_QuantFuncMathMore
+-
+-#endif // if defined (__CINT__) && !defined(__MAKECINT__)
+
diff --git a/var/spack/repos/builtin/packages/samtools/package.py b/var/spack/repos/builtin/packages/samtools/package.py
index 6b0b224785..b82a7e55d6 100644
--- a/var/spack/repos/builtin/packages/samtools/package.py
+++ b/var/spack/repos/builtin/packages/samtools/package.py
@@ -42,7 +42,8 @@ class Samtools(Package):
def install(self, spec, prefix):
if self.spec.version >= Version('1.3.1'):
- configure('--prefix={0}'.format(prefix), '--with-ncurses')
+ configure('--prefix={0}'.format(prefix), '--with-ncurses',
+ 'CURSES_LIB=-lncurses')
make()
make('install')
else:
diff --git a/var/spack/repos/builtin/packages/silo/package.py b/var/spack/repos/builtin/packages/silo/package.py
index 5113c88bdf..691d53a9f1 100644
--- a/var/spack/repos/builtin/packages/silo/package.py
+++ b/var/spack/repos/builtin/packages/silo/package.py
@@ -41,7 +41,8 @@ class Silo(Package):
variant('silex', default=False,
description='Builds Silex, a GUI for viewing Silo files')
- depends_on('hdf5')
+ # silo uses the obsolete function H5Pset_fapl_mpiposix:
+ depends_on("hdf5 @:1.8.12")
depends_on('qt', when='+silex')
def install(self, spec, prefix):
diff --git a/var/spack/repos/builtin/packages/spark/package.py b/var/spack/repos/builtin/packages/spark/package.py
new file mode 100644
index 0000000000..10b0ebed7f
--- /dev/null
+++ b/var/spack/repos/builtin/packages/spark/package.py
@@ -0,0 +1,75 @@
+##############################################################################
+# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
+# Produced at the Lawrence Livermore National Laboratory.
+#
+# This file is part of Spack.
+# Created by Alfredo Gimenez, gimenez1@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 Lesser General Public License (as
+# published by the Free Software Foundation) version 2.1, 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 Lesser 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 shutil
+
+
+class Spark(Package):
+ """Apache Spark is a fast and general engine
+ for large-scale data processing.
+ """
+
+ homepage = "http://spark.apache.org"
+ url = "http://mirrors.ocf.berkeley.edu/apache/spark/spark-2.0.0/spark-2.0.0-bin-without-hadoop.tgz"
+
+ variant('hadoop', default=False,
+ description='Build with Hadoop')
+
+ depends_on('jdk', type=('build', 'run'))
+ depends_on('hadoop', when='+hadoop', type=('build', 'run'))
+
+ version('2.0.0', '8a5307d973da6949a385aefb6ff747bb')
+ version('1.6.2', '304394fbe2899211217f0cd9e9b2b5d9')
+ version('1.6.1', 'fcf4961649f15af1fea78c882e65b001')
+
+ def install(self, spec, prefix):
+
+ def install_dir(dirname):
+ install_tree(dirname, join_path(prefix, dirname))
+
+ install_dir('bin')
+ install_dir('conf')
+ install_dir('jars')
+ install_dir('python')
+ install_dir('R')
+ install_dir('sbin')
+ install_dir('yarn')
+
+ # required for spark to recognize binary distribution
+ shutil.copy('RELEASE', prefix)
+
+ @when('+hadoop')
+ def setup_environment(self, spack_env, run_env):
+
+ env['JAVA_HOME'] = self.spec['jdk'].prefix
+ # spack_env.set('JAVA_HOME', self.spec['jdk'].prefix)
+
+ hadoop_bin_path = join_path(self.spec['hadoop'].prefix.bin, 'hadoop')
+ hadoop_bin = Executable(hadoop_bin_path)
+ hadoop_classpath = hadoop_bin('classpath', return_output=True)
+
+ run_env.set('SPARK_DIST_CLASSPATH', hadoop_classpath)
diff --git a/var/spack/repos/builtin/packages/stat/package.py b/var/spack/repos/builtin/packages/stat/package.py
index 8c4663c524..eae4971ace 100644
--- a/var/spack/repos/builtin/packages/stat/package.py
+++ b/var/spack/repos/builtin/packages/stat/package.py
@@ -34,8 +34,8 @@ class Stat(Package):
version('2.2.0', '26bd69dd57a15afdd5d0ebdb0b7fb6fc')
version('2.1.0', 'ece26beaf057aa9134d62adcdda1ba91')
version('2.0.0', 'c7494210b0ba26b577171b92838e1a9b')
- version('3.0.0b', '8851912ba40e31cf7be6dde3be8e702c',
- url='https://github.com/LLNL/STAT/files/427762/STAT-3.0.0b.tar.gz')
+ version('3.0.0', 'a97cb235c266371c4a26329112de48a2',
+ url='https://github.com/LLNL/STAT/releases/download/v3.0.0/STAT-3.0.0.tar.gz')
# TODO: dysect requires Dyninst patch for version 3.0.0b
variant('dysect', default=False, description="enable DySectAPI")
diff --git a/var/spack/repos/builtin/packages/subversion/package.py b/var/spack/repos/builtin/packages/subversion/package.py
index 26d143e4aa..02b7d96378 100644
--- a/var/spack/repos/builtin/packages/subversion/package.py
+++ b/var/spack/repos/builtin/packages/subversion/package.py
@@ -46,6 +46,9 @@ class Subversion(Package):
# depends_on('perl')
# depends_on('ruby')
+ # Installation has race cases.
+ parallel = False
+
def install(self, spec, prefix):
# configure, build, install:
diff --git a/var/spack/repos/builtin/packages/suite-sparse/package.py b/var/spack/repos/builtin/packages/suite-sparse/package.py
index a71bfd8bd4..d6d8f71313 100644
--- a/var/spack/repos/builtin/packages/suite-sparse/package.py
+++ b/var/spack/repos/builtin/packages/suite-sparse/package.py
@@ -36,6 +36,7 @@ class SuiteSparse(Package):
version('4.5.1', 'f0ea9aad8d2d1ffec66a5b6bfeff5319')
variant('tbb', default=True, description='Build with Intel TBB')
+ variant('fpic', default=True, description='Build position independent code (required to link with shared libraries)')
depends_on('blas')
depends_on('lapack')
@@ -63,6 +64,8 @@ class SuiteSparse(Package):
'CXX=c++',
'F77=f77',
])
+ if '+fpic' in spec:
+ make_args.extend(['CFLAGS=-fPIC', 'FFLAGS=-fPIC'])
# use Spack's metis in CHOLMOD/Partition module,
# otherwise internal Metis will be compiled
@@ -80,8 +83,8 @@ class SuiteSparse(Package):
# Make sure Spack's Blas/Lapack is used. Otherwise System's
# Blas/Lapack might be picked up.
- blas = to_link_flags(spec['blas'].blas_shared_lib)
- lapack = to_link_flags(spec['lapack'].lapack_shared_lib)
+ blas = spec['blas'].blas_libs.ld_flags
+ lapack = spec['lapack'].lapack_libs.ld_flags
if '@4.5.1' in spec:
# adding -lstdc++ is clearly an ugly way to do this, but it follows
# with the TCOV path of SparseSuite 4.5.1's Suitesparse_config.mk
diff --git a/var/spack/repos/builtin/packages/sundials/package.py b/var/spack/repos/builtin/packages/sundials/package.py
index 7582954ab1..6ee247b7ea 100644
--- a/var/spack/repos/builtin/packages/sundials/package.py
+++ b/var/spack/repos/builtin/packages/sundials/package.py
@@ -31,7 +31,7 @@ class Sundials(Package):
Solvers)"""
homepage = "http://computation.llnl.gov/casc/sundials/"
- url = "http://computation.llnl.gov/projects/sundials-suite-nonlinear-differential-algebraic-equation-solvers/download/sundials-2.6.2.tar.gz"
+ url = "http://computation.llnl.gov/projects/sundials-suite-nonlinear-differential-algebraic-equation-solvers/download/sundials-2.6.2.tar.gz"
version('2.6.2', '3deeb0ede9f514184c6bd83ecab77d95')
@@ -79,9 +79,9 @@ class Sundials(Package):
if '+lapack' in spec:
cmake_args.extend([
'-DLAPACK_ENABLE=ON',
- '-DLAPACK_LIBRARIES={0};{1}'.format(
- spec['lapack'].lapack_shared_lib,
- spec['blas'].blas_shared_lib
+ '-DLAPACK_LIBRARIES={0}'.format(
+ (spec['lapack'].lapack_libs +
+ spec['blas'].blas_libs).joined(';')
)
])
else:
@@ -113,7 +113,7 @@ class Sundials(Package):
elif '+pthread' in spec:
cmake_args.append('-DSUPERLUMT_THREAD_TYPE=Pthread')
else:
- msg = 'You must choose either +openmp or +pthread when '
+ msg = 'You must choose either +openmp or +pthread when '
msg += 'building with SuperLU_MT'
raise RuntimeError(msg)
else:
diff --git a/var/spack/repos/builtin/packages/superlu-dist/package.py b/var/spack/repos/builtin/packages/superlu-dist/package.py
index 85b7f689d0..a29b74bf08 100644
--- a/var/spack/repos/builtin/packages/superlu-dist/package.py
+++ b/var/spack/repos/builtin/packages/superlu-dist/package.py
@@ -46,15 +46,14 @@ class SuperluDist(Package):
depends_on('metis@5:')
def install(self, spec, prefix):
+ lapack_blas = spec['lapack'].lapack_libs + spec['blas'].blas_libs
makefile_inc = []
makefile_inc.extend([
'PLAT = _mac_x',
'DSuperLUroot = %s' % self.stage.source_path,
'DSUPERLULIB = $(DSuperLUroot)/lib/libsuperlu_dist.a',
'BLASDEF = -DUSE_VENDOR_BLAS',
- 'BLASLIB = %s %s' %
- (to_link_flags(spec['lapack'].lapack_shared_lib),
- to_link_flags(spec['blas'].blas_shared_lib)),
+ 'BLASLIB = %s' % lapack_blas.ld_flags,
'METISLIB = -L%s -lmetis' % spec['metis'].prefix.lib,
'PARMETISLIB = -L%s -lparmetis' % spec['parmetis'].prefix.lib,
'FLIBS =',
diff --git a/var/spack/repos/builtin/packages/superlu-mt/package.py b/var/spack/repos/builtin/packages/superlu-mt/package.py
index e849273e08..ea94c2d4c5 100644
--- a/var/spack/repos/builtin/packages/superlu-mt/package.py
+++ b/var/spack/repos/builtin/packages/superlu-mt/package.py
@@ -86,7 +86,7 @@ class SuperluMt(Package):
if '+blas' in spec:
config.extend([
'BLASDEF = -DUSE_VENDOR_BLAS',
- 'BLASLIB = -L{0} -lblas'.format(spec['blas'].prefix.lib)
+ 'BLASLIB = {0}'.format(spec['blas'].blas_libs.ld_flags)
])
else:
config.append('BLASLIB = ../lib/libblas$(PLAT).a')
diff --git a/var/spack/repos/builtin/packages/superlu/package.py b/var/spack/repos/builtin/packages/superlu/package.py
index c634c1d1ba..d9cff650b6 100644
--- a/var/spack/repos/builtin/packages/superlu/package.py
+++ b/var/spack/repos/builtin/packages/superlu/package.py
@@ -42,7 +42,7 @@ class Superlu(Package):
'-DCMAKE_POSITION_INDEPENDENT_CODE=ON',
# BLAS support
'-Denable_blaslib=OFF',
- '-DBLAS_blas_LIBRARY={0}'.format(spec['blas'].blas_shared_lib)
+ '-DBLAS_blas_LIBRARY={0}'.format(spec['blas'].blas_libs.joined())
]
cmake_args.extend(std_cmake_args)
diff --git a/var/spack/repos/builtin/packages/tmux/package.py b/var/spack/repos/builtin/packages/tmux/package.py
index 573ee38a79..89c9751486 100644
--- a/var/spack/repos/builtin/packages/tmux/package.py
+++ b/var/spack/repos/builtin/packages/tmux/package.py
@@ -35,9 +35,10 @@ class Tmux(Package):
homepage = "http://tmux.github.io"
url = "https://github.com/tmux/tmux/releases/download/2.2/tmux-2.2.tar.gz"
- version('1.9a', 'b07601711f96f1d260b390513b509a2d')
- version('2.1', '74a2855695bccb51b6e301383ad4818c')
+ version('2.3', 'fcfd1611d705d8b31df3c26ebc93bd3e')
version('2.2', 'bd95ee7205e489c62c616bb7af040099')
+ version('2.1', '74a2855695bccb51b6e301383ad4818c')
+ version('1.9a', 'b07601711f96f1d260b390513b509a2d')
depends_on('libevent')
depends_on('ncurses')
diff --git a/var/spack/repos/builtin/packages/trilinos/package.py b/var/spack/repos/builtin/packages/trilinos/package.py
index 3a88f67340..203e1502d6 100644
--- a/var/spack/repos/builtin/packages/trilinos/package.py
+++ b/var/spack/repos/builtin/packages/trilinos/package.py
@@ -45,6 +45,7 @@ class Trilinos(Package):
homepage = "https://trilinos.org/"
base_url = "https://github.com/trilinos/Trilinos/archive"
+ version('12.8.1', '01c0026f1e2050842857db941060ecd5')
version('12.6.4', 'c2ea7b5aa0d10bcabdb9b9a6e3bac3ea')
version('12.6.3', '8de5cc00981a0ca0defea6199b2fe4c1')
version('12.6.2', 'dc7f9924872778798149ecadd81605a5')
@@ -132,6 +133,8 @@ class Trilinos(Package):
mpi_bin = spec['mpi'].prefix.bin
# Note: -DXYZ_LIBRARY_NAMES= needs semicolon separated list of names
+ blas = spec['blas'].blas_libs
+ lapack = spec['lapack'].lapack_libs
options.extend([
'-DTrilinos_ENABLE_ALL_PACKAGES:BOOL=ON',
'-DTrilinos_ENABLE_ALL_OPTIONAL_PACKAGES:BOOL=ON',
@@ -145,12 +148,10 @@ class Trilinos(Package):
'-DTPL_ENABLE_MPI:BOOL=ON',
'-DMPI_BASE_DIR:PATH=%s' % spec['mpi'].prefix,
'-DTPL_ENABLE_BLAS=ON',
- '-DBLAS_LIBRARY_NAMES=%s' % to_lib_name(
- spec['blas'].blas_shared_lib),
+ '-DBLAS_LIBRARY_NAMES=%s' % ';'.join(blas.names),
'-DBLAS_LIBRARY_DIRS=%s' % spec['blas'].prefix.lib,
'-DTPL_ENABLE_LAPACK=ON',
- '-DLAPACK_LIBRARY_NAMES=%s' % to_lib_name(
- spec['lapack'].lapack_shared_lib),
+ '-DLAPACK_LIBRARY_NAMES=%s' % ';'.join(lapack.names),
'-DLAPACK_LIBRARY_DIRS=%s' % spec['lapack'].prefix.lib,
'-DTrilinos_ENABLE_EXPLICIT_INSTANTIATION:BOOL=ON',
'-DTrilinos_ENABLE_CXX11:BOOL=ON',
@@ -177,6 +178,15 @@ class Trilinos(Package):
else:
options.extend(['-DTPL_ENABLE_Boost:BOOL=OFF'])
+ if '+hdf5' in spec:
+ options.extend([
+ '-DTPL_ENABLE_HDF5:BOOL=ON',
+ '-DHDF5_INCLUDE_DIRS:PATH=%s' % spec['hdf5'].prefix.include,
+ '-DHDF5_LIBRARY_DIRS:PATH=%s' % spec['hdf5'].prefix.lib
+ ])
+ else:
+ options.extend(['-DTPL_ENABLE_HDF5:BOOL=OFF'])
+
# Fortran lib
libgfortran = os.path.dirname(os.popen(
'%s --print-file-name libgfortran.a' %
diff --git a/var/spack/repos/builtin/packages/turbomole/package.py b/var/spack/repos/builtin/packages/turbomole/package.py
index 6ccce23f97..b2d7e90057 100644
--- a/var/spack/repos/builtin/packages/turbomole/package.py
+++ b/var/spack/repos/builtin/packages/turbomole/package.py
@@ -29,14 +29,14 @@ import subprocess
class Turbomole(Package):
"""TURBOMOLE: Program Package for ab initio Electronic Structure
- Calculations. NB: Requires a license to download."""
-
- # NOTE: Turbomole requires purchase of a license to download. Go to the
- # NOTE: Turbomole home page, http://www.turbomole-gmbh.com, for details.
- # NOTE: Spack will search the current directory for this file. It is
- # NOTE: probably best to add this file to a Spack mirror so that it can be
- # NOTE: found from anywhere. For information on setting up a Spack mirror
- # NOTE: see http://software.llnl.gov/spack/mirrors.html
+ Calculations.
+
+ Note: Turbomole requires purchase of a license to download. Go to the
+ Turbomole home page, http://www.turbomole-gmbh.com, for details.
+ Spack will search the current directory for this file. It is
+ probably best to add this file to a Spack mirror so that it can be
+ found from anywhere. For information on setting up a Spack mirror
+ see http://spack.readthedocs.io/en/latest/mirrors.html"""
homepage = "http://www.turbomole-gmbh.com/"
diff --git a/var/spack/repos/builtin/packages/uberftp/package.py b/var/spack/repos/builtin/packages/uberftp/package.py
new file mode 100644
index 0000000000..b1b7dada6f
--- /dev/null
+++ b/var/spack/repos/builtin/packages/uberftp/package.py
@@ -0,0 +1,44 @@
+##############################################################################
+# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
+# Produced at the Lawrence Livermore National Laboratory.
+#
+# This file is part of Spack.
+# Created 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 Lesser General Public License (as
+# published by the Free Software Foundation) version 2.1, 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 Lesser 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 Uberftp(Package):
+ """UberFTP is an interactive (text-based) client for GridFTP"""
+
+ homepage = "http://toolkit.globus.org/grid_software/data/uberftp.php"
+ url = "https://github.com/JasonAlt/UberFTP/archive/Version_2_8.tar.gz"
+
+ version('2_8', 'bc7a159955a9c4b9f5f42f3d2b8fc830')
+ version('2_7', 'faaea2d6e1958c1105cfc9147824e03c')
+ version('2_6', '784210976f259f9d19c0798c19778d34')
+
+ depends_on('globus_toolkit')
+
+ def install(self, spec, prefix):
+ configure('--prefix={0}'.format(prefix))
+
+ make()
+ make('install')
diff --git a/var/spack/repos/builtin/packages/vim/package.py b/var/spack/repos/builtin/packages/vim/package.py
index 5f2e5e19d9..26aeb4aad9 100644
--- a/var/spack/repos/builtin/packages/vim/package.py
+++ b/var/spack/repos/builtin/packages/vim/package.py
@@ -38,6 +38,7 @@ class Vim(Package):
url = "ftp://ftp.vim.org/pub/vim/unix/vim-7.4.tar.bz2"
list_url = "http://ftp.vim.org/pub/vim/unix/"
+ version('8.0', '808d2ebdab521e18bc5e0eaede0db867')
version('7.4', '607e135c559be642f210094ad023dc65')
version('7.3', '5b9510a17074e2b37d8bb38ae09edbf2')
version('7.2', 'f0901284b338e448bfd79ccca0041254')
@@ -66,6 +67,8 @@ class Vim(Package):
variant('gui', default=False, description="build with gui (gvim)")
# virtual dependency?
+ depends_on('ncurses', when="@8.0:")
+
def install(self, spec, prefix):
feature_set = None
for fs in self.feature_sets:
diff --git a/var/spack/repos/builtin/packages/visit/package.py b/var/spack/repos/builtin/packages/visit/package.py
index d88caeb00a..5d2ab24cc5 100644
--- a/var/spack/repos/builtin/packages/visit/package.py
+++ b/var/spack/repos/builtin/packages/visit/package.py
@@ -31,13 +31,15 @@ class Visit(Package):
homepage = "https://wci.llnl.gov/simulation/computer-codes/visit/"
url = "http://portal.nersc.gov/project/visit/releases/2.10.1/visit2.10.1.tar.gz"
- version('2.10.1', '3cbca162fdb0249f17c4456605c4211e')
+ version('2.10.3', 'a1082a6f6dab3e2dcb58993603456c2b')
version('2.10.2', '253de0837a9d69fb689befc98ea4d068')
+ version('2.10.1', '3cbca162fdb0249f17c4456605c4211e')
depends_on("vtk@6.1.0~opengl2")
depends_on("qt@4.8.6")
depends_on("python")
depends_on("silo+shared")
+ depends_on("hdf5~mpi")
def install(self, spec, prefix):
with working_dir('spack-build', create=True):
@@ -46,6 +48,7 @@ class Visit(Package):
feature_args.extend([
"-DVTK_MAJOR_VERSION=6",
"-DVTK_MINOR_VERSION=1",
+ "-DVISIT_USE_GLEW=OFF",
"-DVISIT_LOC_QMAKE_EXE:FILEPATH=%s/qmake-qt4" % spec[
'qt'].prefix.bin,
"-DPYTHON_EXECUTABLE:FILEPATH=%s/python" % spec[
diff --git a/var/spack/repos/builtin/packages/vtk/gcc.patch b/var/spack/repos/builtin/packages/vtk/gcc.patch
new file mode 100644
index 0000000000..37ba5ac45a
--- /dev/null
+++ b/var/spack/repos/builtin/packages/vtk/gcc.patch
@@ -0,0 +1,21 @@
+--- old/CMake/vtkCompilerExtras.cmake
++++ new/CMake/vtkCompilerExtras.cmake
+@@ -26,6 +26,8 @@
+ execute_process(COMMAND ${CMAKE_C_COMPILER} --version
+ OUTPUT_VARIABLE _gcc_version_info
+ ERROR_VARIABLE _gcc_version_info)
++
++ string (REPLACE ";" "" _gcc_version_info "${_gcc_version_info}")
+
+ string (REGEX MATCH "[345]\\.[0-9]\\.[0-9]"
+ _gcc_version "${_gcc_version_info}")
+--- old/CMake/GenerateExportHeader.cmake
++++ new/CMake/GenerateExportHeader.cmake
+@@ -166,6 +166,7 @@
+ execute_process(COMMAND ${CMAKE_C_COMPILER} --version
+ OUTPUT_VARIABLE _gcc_version_info
+ ERROR_VARIABLE _gcc_version_info)
++ string (REPLACE ";" "" _gcc_version_info "${_gcc_version_info}")
+ string(REGEX MATCH "[345]\\.[0-9]\\.[0-9]"
+ _gcc_version "${_gcc_version_info}")
+ # gcc on mac just reports: "gcc (GCC) 3.3 20030304 ..." without the
diff --git a/var/spack/repos/builtin/packages/vtk/package.py b/var/spack/repos/builtin/packages/vtk/package.py
index 087c0e93eb..f7015904b0 100644
--- a/var/spack/repos/builtin/packages/vtk/package.py
+++ b/var/spack/repos/builtin/packages/vtk/package.py
@@ -40,6 +40,8 @@ class Vtk(Package):
version('6.1.0', '25e4dfb3bad778722dcaec80cd5dab7d')
+ patch("gcc.patch")
+
depends_on('cmake', type='build')
depends_on("qt")
diff --git a/var/spack/repos/builtin/packages/wannier90/make.sys b/var/spack/repos/builtin/packages/wannier90/make.sys
new file mode 100644
index 0000000000..f96fa23fb2
--- /dev/null
+++ b/var/spack/repos/builtin/packages/wannier90/make.sys
@@ -0,0 +1,7 @@
+F90 = @F90
+COMMS=mpi
+MPIF90=@MPIF90
+FCOPTS=-O2 -fpic
+LDOPTS=-O2 -fpic
+
+LIBS = @LIBS
diff --git a/var/spack/repos/builtin/packages/wannier90/package.py b/var/spack/repos/builtin/packages/wannier90/package.py
new file mode 100644
index 0000000000..119d2cf769
--- /dev/null
+++ b/var/spack/repos/builtin/packages/wannier90/package.py
@@ -0,0 +1,116 @@
+##############################################################################
+# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
+# Produced at the Lawrence Livermore National Laboratory.
+#
+# This file is part of Spack.
+# Created 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 Lesser General Public License (as
+# published by the Free Software Foundation) version 2.1, 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 Lesser 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
+##############################################################################
+import inspect
+import os.path
+import shutil
+
+from spack import *
+
+
+class Wannier90(Package):
+ """Wannier90 calculates maximally-localised Wannier functions (MLWFs).
+
+ Wannier90 is released under the GNU General Public License.
+ """
+ homepage = 'http://wannier.org'
+ url = 'http://wannier.org/code/wannier90-2.0.1.tar.gz'
+
+ version('2.0.1', '4edd742506eaba93317249d33261fb22')
+
+ depends_on('mpi')
+ depends_on('lapack')
+ depends_on('blas')
+
+ parallel = False
+
+ def install(self, spec, prefix):
+
+ lapack = self.spec['lapack'].lapack_libs
+ blas = self.spec['blas'].blas_libs
+ substitutions = {
+ '@F90': spack_fc,
+ '@MPIF90': self.spec['mpi'].mpifc,
+ '@LIBS': (lapack + blas).joined()
+ }
+ #######
+ # TODO : this part is replicated in PEXSI
+ # TODO : and may be a common pattern for Editable Makefiles
+ # TODO : see #1186
+ template = join_path(
+ os.path.dirname(inspect.getmodule(self).__file__),
+ 'make.sys'
+ )
+ makefile = join_path(
+ self.stage.source_path,
+ 'make.sys'
+ )
+
+ shutil.copy(template, makefile)
+ for key, value in substitutions.items():
+ filter_file(key, value, makefile)
+ ######
+
+ make('wannier')
+ mkdirp(self.prefix.bin)
+ install(
+ join_path(self.stage.source_path, 'wannier90.x'),
+ join_path(self.prefix.bin, 'wannier90.x')
+ )
+
+ make('post')
+ install(
+ join_path(self.stage.source_path, 'postw90.x'),
+ join_path(self.prefix.bin, 'postw90.x')
+ )
+
+ make('lib')
+ mkdirp(self.prefix.lib)
+ install(
+ join_path(self.stage.source_path, 'libwannier.a'),
+ join_path(self.prefix.lib, 'libwannier.a')
+ )
+
+ make('w90chk2chk')
+ install(
+ join_path(self.stage.source_path, 'w90chk2chk.x'),
+ join_path(self.prefix.bin, 'w90chk2chk.x')
+ )
+
+ make('w90vdw')
+ install(
+ join_path(self.stage.source_path, 'utility', 'w90vdw', 'w90vdw.x'),
+ join_path(self.prefix.bin, 'w90vdw.x')
+ )
+
+ make('w90pov')
+ install(
+ join_path(self.stage.source_path, 'utility', 'w90pov', 'w90pov'),
+ join_path(self.prefix.bin, 'w90pov')
+ )
+
+ install_tree(
+ join_path(self.stage.source_path, 'pseudo'),
+ join_path(self.prefix.bin, 'pseudo')
+ )
diff --git a/var/spack/repos/builtin/packages/xorg-util-macros/package.py b/var/spack/repos/builtin/packages/xorg-util-macros/package.py
index cd50d46826..3cfc4c2408 100644
--- a/var/spack/repos/builtin/packages/xorg-util-macros/package.py
+++ b/var/spack/repos/builtin/packages/xorg-util-macros/package.py
@@ -28,7 +28,7 @@ from spack import *
class XorgUtilMacros(Package):
"""The m4 macros used by all of the Xorg packages."""
- homepage = "http://www.example.com"
+ homepage = "https://cgit.freedesktop.org/xorg/util/macros/"
url = "http://ftp.x.org/pub/individual/util/util-macros-1.19.0.tar.bz2"
version('1.19.0', '1cf984125e75f8204938d998a8b6c1e1')
diff --git a/var/spack/repos/builtin/packages/icu/package.py b/var/spack/repos/builtin/packages/xrootd/package.py
index b8d366b905..db076dbc56 100644
--- a/var/spack/repos/builtin/packages/icu/package.py
+++ b/var/spack/repos/builtin/packages/xrootd/package.py
@@ -22,27 +22,31 @@
# 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 Icu(Package):
- """The International Components for Unicode (ICU) package is a
- mature, widely used set of C/C++ libraries providing Unicode and
- Globalization support for software applications. ICU is widely
- portable and gives applications the same results on all
- platforms."""
- # FIXME: add a proper url for your package's homepage here.
- homepage = "http://www.example.com"
- url = "http://download.icu-project.org/files/icu4c/54.1/icu4c-54_1-src.tgz"
+class Xrootd(Package):
+ """The XROOTD project aims at giving high performance, scalable fault
+ tolerant access to data repositories of many kinds."""
+ homepage = "http://xrootd.org"
+ url = "http://xrootd.org/download/v4.3.0/xrootd-4.3.0.tar.gz"
- version('54.1', 'e844caed8f2ca24c088505b0d6271bc0')
+ version('4.3.0', '39c2fab9f632f35e12ff607ccaf9e16c')
- def url_for_version(self, version):
- return "http://download.icu-project.org/files/icu4c/%s/icu4c-%s-src.tgz" % (
- version, str(version).replace('.', '_'))
+ depends_on('cmake', type='build')
def install(self, spec, prefix):
- with working_dir("source"):
- configure("--prefix=%s" % prefix)
+ options = []
+ options.extend(std_cmake_args)
+
+ build_directory = join_path(self.stage.path, 'spack-build')
+ source_directory = self.stage.source_path
+
+ if '+debug' in spec:
+ options.append('-DCMAKE_BUILD_TYPE:STRING=Debug')
+
+ with working_dir(build_directory, create=True):
+ cmake(source_directory, *options)
make()
make("install")
diff --git a/var/spack/repos/builtin/packages/zoltan/package.py b/var/spack/repos/builtin/packages/zoltan/package.py
index 0094395968..8d4dd321b0 100644
--- a/var/spack/repos/builtin/packages/zoltan/package.py
+++ b/var/spack/repos/builtin/packages/zoltan/package.py
@@ -22,10 +22,11 @@
# 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 re
import os
import glob
-from spack import *
class Zoltan(Package):
@@ -47,23 +48,28 @@ class Zoltan(Package):
version('3.6', '9cce794f7241ecd8dbea36c3d7a880f9')
version('3.3', '5eb8f00bda634b25ceefa0122bd18d65')
- variant('debug', default=False,
- description='Builds a debug version of the library')
- variant('shared', default=True,
- description='Builds a shared version of the library')
+ variant('debug', default=False, description='Builds a debug version of the library.')
+ variant('shared', default=True, description='Builds a shared version of the library.')
- variant('fortran', default=True, description='Enable Fortran support')
- variant('mpi', default=False, description='Enable MPI support')
+ variant('fortran', default=True, description='Enable Fortran support.')
+ variant('mpi', default=True, description='Enable MPI support.')
depends_on('mpi', when='+mpi')
+ def url_for_version(self, version):
+ return '%s/zoltan_distrib_v%s.tar.gz' % (Zoltan.base_url, version)
+
def install(self, spec, prefix):
- config_args = [
- '--enable-f90interface'
- if '+fortan' in spec else '--disable-f90interface',
+ # FIXME: The older Zoltan versions fail to compile the F90 MPI wrappers
+ # because of some complicated generic type problem.
+ if spec.satisfies('@:3.6+fortran+mpi'):
+ raise RuntimeError(('Cannot build Zoltan v{0} with +fortran and '
+ '+mpi; please disable one of these features '
+ 'or upgrade versions.').format(self.version))
- '--enable-mpi'
- if '+mpi' in spec else '--disable-mpi',
+ config_args = [
+ self.get_config_flag('f90interface', 'fortran'),
+ self.get_config_flag('mpi', 'mpi'),
]
config_cflags = [
'-O0' if '+debug' in spec else '-O3',
@@ -71,49 +77,70 @@ class Zoltan(Package):
]
if '+shared' in spec:
- config_args.append('--with-ar=$(CXX) -shared $(LDFLAGS) -o')
config_args.append('RANLIB=echo')
+ config_args.append('--with-ar=$(CXX) -shared $(LDFLAGS) -o')
config_cflags.append('-fPIC')
+ if spec.satisfies('%gcc'):
+ config_args.append('--with-libs={0}'.format('-lgfortran'))
if '+mpi' in spec:
- config_args.append('CC=%s/mpicc' % spec['mpi'].prefix.bin)
- config_args.append('CXX=%s/mpicxx' % spec['mpi'].prefix.bin)
- config_args.append('--with-mpi=%s' % spec['mpi'].prefix)
- config_args.append('--with-mpi-compilers=%s' %
- spec['mpi'].prefix.bin)
+ config_args.append('CC={0}'.format(spec['mpi'].mpicc))
+ config_args.append('CXX={0}'.format(spec['mpi'].mpicxx))
+ config_args.append('FC={0}'.format(spec['mpi'].mpifc))
+
+ mpi_libs = ' -l'.join(self.get_mpi_libs())
+ config_args.append('--with-mpi={0}'.format(spec['mpi'].prefix))
+ config_args.append('--with-mpi-libs=-l{0}'.format(mpi_libs))
# NOTE: Early versions of Zoltan come packaged with a few embedded
# library packages (e.g. ParMETIS, Scotch), which messes with Spack's
# ability to descend directly into the package's source directory.
+ source_directory = self.stage.source_path
if spec.satisfies('@:3.6'):
- cd('Zoltan_v%s' % self.version)
-
- mkdirp('build')
- cd('build')
-
- config_zoltan = Executable('../configure')
- config_zoltan(
- '--prefix=%s' % pwd(),
- '--with-cflags=%s' % ' '.join(config_cflags),
- '--with-cxxflags=%s' % ' '.join(config_cflags),
- *config_args)
-
- make()
- make('install')
+ zoltan_directory = 'Zoltan_v{0}'.format(self.version)
+ source_directory = join_path(source_directory, zoltan_directory)
+
+ build_directory = join_path(source_directory, 'build')
+ with working_dir(build_directory, create=True):
+ config = Executable(join_path(source_directory, 'configure'))
+ config(
+ '--prefix={0}'.format(prefix),
+ '--with-cflags={0}'.format(' '.join(config_cflags)),
+ '--with-cxxflags={0}'.format(' '.join(config_cflags)),
+ '--with-fcflags={0}'.format(' '.join(config_cflags)),
+ *config_args
+ )
+
+ # NOTE: Earlier versions of Zoltan cannot be built in parallel
+ # because they contain nested Makefile dependency bugs.
+ make(parallel=not spec.satisfies('@:3.6+fortran'))
+ make('install')
# NOTE: Unfortunately, Zoltan doesn't provide any configuration
# options for the extension of the output library files, so this
# script must change these extensions as a post-processing step.
if '+shared' in spec:
- for libpath in glob.glob('lib/*.a'):
- libdir, libname = (os.path.dirname(libpath),
- os.path.basename(libpath))
- move(libpath, os.path.join(
- libdir, re.sub(r'\.a$', '.so', libname)))
-
- mkdirp(prefix)
- move('include', prefix)
- move('lib', prefix)
-
- def url_for_version(self, version):
- return '%s/zoltan_distrib_v%s.tar.gz' % (Zoltan.base_url, version)
+ for lib_path in glob.glob(join_path(prefix, 'lib', '*.a')):
+ lib_static_name = os.path.basename(lib_path)
+ lib_shared_name = re.sub(r'\.a$', '.{0}'.format(dso_suffix),
+ lib_static_name)
+ move(lib_path, join_path(prefix, 'lib', lib_shared_name))
+
+ def get_config_flag(self, flag_name, flag_variant):
+ flag_pre = 'en' if '+{0}'.format(flag_variant) in self.spec else 'dis'
+ return '--{0}able-{1}'.format(flag_pre, flag_name)
+
+ # NOTE: Zoltan assumes that it's linking against an MPI library that can
+ # be found with '-lmpi,' which isn't the case for many MPI packages. This
+ # function finds the names of the actual libraries for Zoltan's MPI dep.
+ def get_mpi_libs(self):
+ mpi_libs = set()
+
+ for lib_path in glob.glob(join_path(self.spec['mpi'].prefix.lib, '*')):
+ mpi_lib_match = re.match(
+ r'^(lib)((\w*)mpi(\w*))\.((a)|({0}))$'.format(dso_suffix),
+ os.path.basename(lib_path))
+ if mpi_lib_match:
+ mpi_libs.add(mpi_lib_match.group(2))
+
+ return list(mpi_libs)