summaryrefslogtreecommitdiff
path: root/var
diff options
context:
space:
mode:
Diffstat (limited to 'var')
-rw-r--r--var/spack/repos/builtin.mock/packages/mpileaks/package.py3
-rw-r--r--var/spack/repos/builtin/packages/R/package.py44
-rw-r--r--var/spack/repos/builtin/packages/ack/package.py51
-rw-r--r--var/spack/repos/builtin/packages/arpack-ng/package.py39
-rw-r--r--var/spack/repos/builtin/packages/atk/package.py10
-rw-r--r--var/spack/repos/builtin/packages/atlas/package.py68
-rw-r--r--var/spack/repos/builtin/packages/atlas/test_cblas_dgemm.c49
-rw-r--r--var/spack/repos/builtin/packages/atlas/test_cblas_dgemm.output12
-rw-r--r--var/spack/repos/builtin/packages/bdw-gc/package.py52
-rw-r--r--var/spack/repos/builtin/packages/cask/package.py53
-rw-r--r--var/spack/repos/builtin/packages/cp2k/package.py161
-rw-r--r--var/spack/repos/builtin/packages/dealii/package.py17
-rw-r--r--var/spack/repos/builtin/packages/gettext/package.py85
-rw-r--r--var/spack/repos/builtin/packages/git/package.py25
-rw-r--r--var/spack/repos/builtin/packages/glib/package.py20
-rw-r--r--var/spack/repos/builtin/packages/gmp/package.py12
-rw-r--r--var/spack/repos/builtin/packages/guile/package.py68
-rw-r--r--var/spack/repos/builtin/packages/harminv/package.py54
-rw-r--r--var/spack/repos/builtin/packages/hypre/package.py4
-rw-r--r--var/spack/repos/builtin/packages/intel-parallel-studio/package.py33
-rw-r--r--var/spack/repos/builtin/packages/jdk/package.py2
-rw-r--r--var/spack/repos/builtin/packages/kdiff3/package.py44
-rw-r--r--var/spack/repos/builtin/packages/libatomic-ops/package.py42
-rw-r--r--var/spack/repos/builtin/packages/libctl/package.py48
-rw-r--r--var/spack/repos/builtin/packages/libepoxy/package.py39
-rw-r--r--var/spack/repos/builtin/packages/libhio/package.py45
-rw-r--r--var/spack/repos/builtin/packages/libiconv/package.py43
-rw-r--r--var/spack/repos/builtin/packages/libunistring/package.py42
-rw-r--r--var/spack/repos/builtin/packages/libxau/package.py4
-rw-r--r--var/spack/repos/builtin/packages/libxsmm/package.py66
-rw-r--r--var/spack/repos/builtin/packages/meep/package.py109
-rw-r--r--var/spack/repos/builtin/packages/mkl/package.py12
-rw-r--r--var/spack/repos/builtin/packages/nextflow/package.py42
-rw-r--r--var/spack/repos/builtin/packages/ocaml/package.py43
-rw-r--r--var/spack/repos/builtin/packages/opencv/package.py177
-rw-r--r--var/spack/repos/builtin/packages/pango/package.py2
-rw-r--r--var/spack/repos/builtin/packages/pcre/package.py2
-rw-r--r--var/spack/repos/builtin/packages/perl/package.py75
-rw-r--r--var/spack/repos/builtin/packages/pgi/package.py1
-rw-r--r--var/spack/repos/builtin/packages/pkg-config/g_date_strftime.patch33
-rw-r--r--var/spack/repos/builtin/packages/pkg-config/package.py24
-rw-r--r--var/spack/repos/builtin/packages/plumed/package.py84
-rw-r--r--var/spack/repos/builtin/packages/py-h5py/package.py1
-rw-r--r--var/spack/repos/builtin/packages/py-meep/package.py75
-rw-r--r--var/spack/repos/builtin/packages/py-networkx/package.py5
-rw-r--r--var/spack/repos/builtin/packages/py-numpy/package.py13
-rw-r--r--var/spack/repos/builtin/packages/py-pytables/package.py6
-rw-r--r--var/spack/repos/builtin/packages/py-scikit-image/package.py1
-rw-r--r--var/spack/repos/builtin/packages/r-curl/package.py3
-rw-r--r--var/spack/repos/builtin/packages/r-jsonlite/package.py3
-rw-r--r--var/spack/repos/builtin/packages/r-mime/package.py3
-rw-r--r--var/spack/repos/builtin/packages/r-rcpp/package.py3
-rw-r--r--var/spack/repos/builtin/packages/swig/package.py3
-rw-r--r--var/spack/repos/builtin/packages/texlive/package.py57
-rw-r--r--var/spack/repos/builtin/packages/tree/package.py46
-rw-r--r--var/spack/repos/builtin/packages/trilinos/package.py15
-rw-r--r--var/spack/repos/builtin/packages/unison/package.py51
57 files changed, 1993 insertions, 131 deletions
diff --git a/var/spack/repos/builtin.mock/packages/mpileaks/package.py b/var/spack/repos/builtin.mock/packages/mpileaks/package.py
index bc26f539ba..10fbf3845e 100644
--- a/var/spack/repos/builtin.mock/packages/mpileaks/package.py
+++ b/var/spack/repos/builtin.mock/packages/mpileaks/package.py
@@ -24,6 +24,7 @@
##############################################################################
from spack import *
+
class Mpileaks(Package):
homepage = "http://www.llnl.gov"
url = "http://www.llnl.gov/mpileaks-1.0.tar.gz"
@@ -35,6 +36,8 @@ class Mpileaks(Package):
variant('debug', default=False, description='Debug variant')
variant('opt', default=False, description='Optimized variant')
+ variant('shared', default=True, description='Build shared library')
+ variant('static', default=True, description='Build static library')
depends_on("mpi")
depends_on("callpath")
diff --git a/var/spack/repos/builtin/packages/R/package.py b/var/spack/repos/builtin/packages/R/package.py
index ad06c2ca48..e880a3aa66 100644
--- a/var/spack/repos/builtin/packages/R/package.py
+++ b/var/spack/repos/builtin/packages/R/package.py
@@ -22,10 +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
-
from spack import *
from spack.util.environment import *
+import shutil
class R(Package):
@@ -74,6 +73,10 @@ class R(Package):
depends_on('pcre')
depends_on('jdk')
+ @property
+ def etcdir(self):
+ return join_path(prefix, 'rlib', 'R', 'etc')
+
def install(self, spec, prefix):
rlibdir = join_path(prefix, 'rlib')
configure_args = ['--prefix=%s' % prefix,
@@ -88,6 +91,12 @@ class R(Package):
make()
make('install')
+ # Make a copy of Makeconf because it will be needed to properly build R
+ # dependencies in Spack.
+ src_makeconf = join_path(self.etcdir, 'Makeconf')
+ dst_makeconf = join_path(self.etcdir, 'Makeconf.spack')
+ shutil.copy(src_makeconf, dst_makeconf)
+
self.filter_compilers(spec, prefix)
def filter_compilers(self, spec, prefix):
@@ -98,18 +107,16 @@ class R(Package):
cc and c++. We want them to be bound to whatever compiler
they were built with."""
- etcdir = join_path(prefix, 'rlib', 'R', 'etc')
-
kwargs = {'ignore_absent': True, 'backup': False, 'string': True}
- filter_file(env['CC'], self.compiler.cc,
- join_path(etcdir, 'Makeconf'), **kwargs)
+ filter_file(env['CC'], self.compiler.cc,
+ join_path(self.etcdir, 'Makeconf'), **kwargs)
filter_file(env['CXX'], self.compiler.cxx,
- join_path(etcdir, 'Makeconf'), **kwargs)
+ join_path(self.etcdir, 'Makeconf'), **kwargs)
filter_file(env['F77'], self.compiler.f77,
- join_path(etcdir, 'Makeconf'), **kwargs)
+ join_path(self.etcdir, 'Makeconf'), **kwargs)
filter_file(env['FC'], self.compiler.fc,
- join_path(etcdir, 'Makeconf'), **kwargs)
+ join_path(self.etcdir, 'Makeconf'), **kwargs)
# ========================================================================
# Set up environment to make install easy for R extensions.
@@ -117,7 +124,7 @@ class R(Package):
@property
def r_lib_dir(self):
- return os.path.join('rlib', 'R', 'library')
+ return join_path('rlib', 'R', 'library')
def setup_dependent_environment(self, spack_env, run_env, extension_spec):
# Set R_LIBS to include the library dir for the
@@ -125,15 +132,21 @@ class R(Package):
r_libs_path = []
for d in extension_spec.traverse(deptype=nolink, deptype_query='run'):
if d.package.extends(self.spec):
- r_libs_path.append(os.path.join(d.prefix, self.r_lib_dir))
+ r_libs_path.append(join_path(d.prefix, self.r_lib_dir))
r_libs_path = ':'.join(r_libs_path)
spack_env.set('R_LIBS', r_libs_path)
+ spack_env.set('R_MAKEVARS_SITE',
+ join_path(self.etcdir, 'Makeconf.spack'))
+
+ # Use the number of make_jobs set in spack. The make program will
+ # determine how many jobs can actually be started.
+ spack_env.set('MAKEFLAGS', '-j{0}'.format(make_jobs))
# For run time environment set only the path for extension_spec and
# prepend it to R_LIBS
if extension_spec.package.extends(self.spec):
- run_env.prepend_path('R_LIBS', os.path.join(
+ run_env.prepend_path('R_LIBS', join_path(
extension_spec.prefix, self.r_lib_dir))
def setup_environment(self, spack_env, run_env):
@@ -147,13 +160,14 @@ class R(Package):
def setup_dependent_package(self, module, ext_spec):
"""Called before R modules' install() methods. In most cases,
extensions will only need to have one line:
- R('CMD', 'INSTALL', '--library=%s' % self.module.r_lib_dir, '%s' %
- self.stage.source_path)"""
+ R('CMD', 'INSTALL', '--library={0}'.format(self.module.r_lib_dir),
+ self.stage.source_path)"""
+
# R extension builds can have a global R executable function
module.R = Executable(join_path(self.spec.prefix.bin, 'R'))
# Add variable for library directry
- module.r_lib_dir = os.path.join(ext_spec.prefix, self.r_lib_dir)
+ module.r_lib_dir = join_path(ext_spec.prefix, self.r_lib_dir)
# Make the site packages directory for extensions, if it does not exist
# already.
diff --git a/var/spack/repos/builtin/packages/ack/package.py b/var/spack/repos/builtin/packages/ack/package.py
new file mode 100644
index 0000000000..70249aebac
--- /dev/null
+++ b/var/spack/repos/builtin/packages/ack/package.py
@@ -0,0 +1,51 @@
+##############################################################################
+# 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 Ack(Package):
+ """ack 2.14 is a tool like grep, optimized for programmers.
+
+ Designed for programmers with large heterogeneous trees of
+ source code, ack is written purely in portable Perl 5 and takes
+ advantage of the power of Perl's regular expressions."""
+
+ homepage = "http://beyondgrep.com/"
+ url = "http://beyondgrep.com/ack-2.14-single-file"
+
+ version('2.14', 'e74150a1609d28a70b450ef9cc2ed56b', expand=False)
+
+ depends_on('perl')
+
+ def install(self, spec, prefix):
+ mkdirp(prefix.bin)
+ ack = 'ack-{0}-single-file'.format(self.version)
+
+ # rewrite the script's #! line to call the perl dependency
+ shbang = '#!' + join_path(spec['perl'].prefix.bin, 'perl')
+ filter_file(r'^#!/usr/bin/env perl', shbang, ack)
+
+ install(ack, join_path(prefix.bin, "ack"))
+ set_executable(join_path(prefix.bin, "ack"))
diff --git a/var/spack/repos/builtin/packages/arpack-ng/package.py b/var/spack/repos/builtin/packages/arpack-ng/package.py
index d5dc703c06..2874930cdd 100644
--- a/var/spack/repos/builtin/packages/arpack-ng/package.py
+++ b/var/spack/repos/builtin/packages/arpack-ng/package.py
@@ -86,10 +86,19 @@ class ArpackNg(Package):
options.extend(std_cmake_args)
options.append('-DCMAKE_INSTALL_NAME_DIR:PATH=%s/lib' % prefix)
- # TODO:
- # Arpack calls directly find_package(BLAS REQUIRED) and
- # find_package(LAPACK REQUIRED). Make sure correct Blas/Lapack are
- # picked up.
+ # Make sure we use Spack's blas/lapack:
+ 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),
+ '-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)
+ ])
if '+mpi' in spec:
options.append('-DMPI=ON')
@@ -101,9 +110,8 @@ class ArpackNg(Package):
cmake('.', *options)
make()
- # TODO: make test does not work
- # make('test')
-
+ if self.run_tests:
+ make('test')
make('install')
@when('@3.3.0')
@@ -120,10 +128,23 @@ class ArpackNg(Package):
'F77=%s' % spec['mpi'].mpif77
])
- if '~shared' in spec:
- options.append('--enable-shared=no')
+ 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'
+ ])
bootstrap()
configure(*options)
make()
+ if self.run_tests:
+ make('check')
make('install')
diff --git a/var/spack/repos/builtin/packages/atk/package.py b/var/spack/repos/builtin/packages/atk/package.py
index 1d26145fd1..d5b6933ec3 100644
--- a/var/spack/repos/builtin/packages/atk/package.py
+++ b/var/spack/repos/builtin/packages/atk/package.py
@@ -24,6 +24,7 @@
##############################################################################
from spack import *
+
class Atk(Package):
"""ATK provides the set of accessibility interfaces that are
implemented by other toolkits and applications. Using the ATK
@@ -32,9 +33,16 @@ class Atk(Package):
homepage = "https://developer.gnome.org/atk/"
url = "http://ftp.gnome.org/pub/gnome/sources/atk/2.14/atk-2.14.0.tar.xz"
+ version('2.20.0', '5187b0972f4d3905f285540b31395e20')
version('2.14.0', 'ecb7ca8469a5650581b1227d78051b8b')
- depends_on("glib")
+ depends_on('glib')
+ depends_on('pkg-config', type='build')
+
+ def url_for_version(self, version):
+ """Handle atk's version-based custom URLs."""
+ url = 'http://ftp.gnome.org/pub/gnome/sources/atk'
+ return 'url+/%s/atk-%s.tar.xz' % (version.up_to(2), version)
def install(self, spec, prefix):
configure("--prefix=%s" % prefix)
diff --git a/var/spack/repos/builtin/packages/atlas/package.py b/var/spack/repos/builtin/packages/atlas/package.py
index c43d92c34f..f9d5da6166 100644
--- a/var/spack/repos/builtin/packages/atlas/package.py
+++ b/var/spack/repos/builtin/packages/atlas/package.py
@@ -23,20 +23,24 @@
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
from spack import *
+from spack.package_test import *
from spack.util.executable import Executable
import os.path
+
class Atlas(Package):
- """
- Automatically Tuned Linear Algebra Software, generic shared ATLAS is an approach for the automatic generation and
- optimization of numerical software. Currently ATLAS supplies optimized versions for the complete set of linear
- algebra kernels known as the Basic Linear Algebra Subroutines (BLAS), and a subset of the linear algebra routines
- in the LAPACK library.
+ """Automatically Tuned Linear Algebra Software, generic shared ATLAS is an
+ approach for the automatic generation and optimization of numerical
+ software. Currently ATLAS supplies optimized versions for the complete set
+ of linear algebra kernels known as the Basic Linear Algebra Subroutines
+ (BLAS), and a subset of the linear algebra routines in the LAPACK library.
"""
homepage = "http://math-atlas.sourceforge.net/"
version('3.10.2', 'a4e21f343dec8f22e7415e339f09f6da',
- url='http://downloads.sourceforge.net/project/math-atlas/Stable/3.10.2/atlas3.10.2.tar.bz2', preferred=True)
+ url='https://sourceforge.net/projects/math-atlas/files/Stable/3.10.2/atlas3.10.2.tar.bz2', preferred=True)
+ # not all packages (e.g. Trilinos@12.6.3) stopped using deprecated in 3.6.0
+ # Lapack routines. Stick with 3.5.0 until this is fixed.
resource(name='lapack',
url='http://www.netlib.org/lapack/lapack-3.5.0.tgz',
md5='b1d3e3e425b2e44a06760ff173104bdf',
@@ -44,7 +48,7 @@ class Atlas(Package):
when='@3:')
version('3.11.34', '0b6c5389c095c4c8785fd0f724ec6825',
- url='http://sourceforge.net/projects/math-atlas/files/Developer%20%28unstable%29/3.11.34/atlas3.11.34.tar.bz2/download')
+ 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')
@@ -66,9 +70,24 @@ class Atlas(Package):
options = []
if '+shared' in spec:
- options.append('--shared')
+ options.extend([
+ '--shared'
+ ])
+ # TODO: for non GNU add '-Fa', 'alg', '-fPIC' ?
+
+ # configure for 64-bit build
+ options.extend([
+ '-b', '64'
+ ])
- # Lapack resource
+ # set compilers:
+ options.extend([
+ '-C', 'ic', spack_cc,
+ '-C', 'if', spack_f77
+ ])
+
+ # Lapack resource to provide full lapack build. Note that
+ # ATLAS only provides a few LAPACK routines natively.
lapack_stage = self.stage[1]
lapack_tarfile = os.path.basename(lapack_stage.fetcher.url)
lapack_tarfile_path = join_path(lapack_stage.path, lapack_tarfile)
@@ -81,4 +100,35 @@ class Atlas(Package):
make('check')
make('ptcheck')
make('time')
+ if '+shared' in spec:
+ with working_dir('lib'):
+ make('shared_all')
+
make("install")
+ self.install_test()
+
+ def setup_dependent_package(self, module, dspec):
+ # 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)
+
+ if '+shared' in self.spec:
+ self.spec.blas_shared_lib = join_path(libdir, name)
+ self.spec.lapack_shared_lib = self.spec.blas_shared_lib
+
+ def install_test(self):
+ source_file = join_path(os.path.dirname(self.module.__file__),
+ 'test_cblas_dgemm.c')
+ 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"]
+
+ 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/atlas/test_cblas_dgemm.c b/var/spack/repos/builtin/packages/atlas/test_cblas_dgemm.c
new file mode 100644
index 0000000000..2cb90fb883
--- /dev/null
+++ b/var/spack/repos/builtin/packages/atlas/test_cblas_dgemm.c
@@ -0,0 +1,49 @@
+#include <cblas.h>
+#include <stdio.h>
+
+double m[] = {
+ 3, 1, 3,
+ 1, 5, 9,
+ 2, 6, 5
+};
+
+double x[] = {
+ -1, 3, -3
+};
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+ void dgesv_(int *n, int *nrhs, double *a, int *lda,
+ int *ipivot, double *b, int *ldb, int *info);
+
+#ifdef __cplusplus
+}
+#endif
+
+int main(void) {
+ int i;
+ // blas:
+ double A[6] = {1.0, 2.0, 1.0, -3.0, 4.0, -1.0};
+ double B[6] = {1.0, 2.0, 1.0, -3.0, 4.0, -1.0};
+ double C[9] = {.5, .5, .5, .5, .5, .5, .5, .5, .5};
+ cblas_dgemm(CblasColMajor, CblasNoTrans, CblasTrans,
+ 3, 3, 2, 1, A, 3, B, 3, 2, C, 3);
+ for (i = 0; i < 9; i++)
+ printf("%f\n", C[i]);
+
+ // lapack:
+ int ipiv[3];
+ int j;
+ int info;
+ int n = 1;
+ int nrhs = 1;
+ int lda = 3;
+ int ldb = 3;
+ dgesv_(&n,&nrhs, &m[0], &lda, ipiv, &x[0], &ldb, &info);
+ for (i=0; i<3; ++i)
+ printf("%5.1f\n", x[i]);
+
+ return 0;
+}
diff --git a/var/spack/repos/builtin/packages/atlas/test_cblas_dgemm.output b/var/spack/repos/builtin/packages/atlas/test_cblas_dgemm.output
new file mode 100644
index 0000000000..01404462c4
--- /dev/null
+++ b/var/spack/repos/builtin/packages/atlas/test_cblas_dgemm.output
@@ -0,0 +1,12 @@
+11.000000
+-9.000000
+5.000000
+-9.000000
+21.000000
+-1.000000
+5.000000
+-1.000000
+3.000000
+ -0.3
+ 3.0
+ -3.0
diff --git a/var/spack/repos/builtin/packages/bdw-gc/package.py b/var/spack/repos/builtin/packages/bdw-gc/package.py
new file mode 100644
index 0000000000..2c61c21b43
--- /dev/null
+++ b/var/spack/repos/builtin/packages/bdw-gc/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 BdwGc(Package):
+ """The Boehm-Demers-Weiser conservative garbage collector is a garbage
+ collecting replacement for C malloc or C++ new."""
+
+ homepage = "http://www.hboehm.info/gc/"
+ url = "http://www.hboehm.info/gc/gc_source/gc-7.4.4.tar.gz"
+
+ version('7.4.4', '96d18b0448a841c88d56e4ab3d180297')
+
+ variant('libatomic-ops', default=True, description='Use external libatomic-ops')
+
+ depends_on('libatomic-ops', when='+libatomic-ops')
+
+ def install(self, spec, prefix):
+ config_args = [
+ '--prefix={0}'.format(prefix),
+ '--with-libatomic-ops={0}'.format(
+ 'yes' if '+libatomic-ops' in spec else 'no')
+ ]
+
+ configure(*config_args)
+
+ make()
+ make('check')
+ make('install')
diff --git a/var/spack/repos/builtin/packages/cask/package.py b/var/spack/repos/builtin/packages/cask/package.py
new file mode 100644
index 0000000000..67cc48ab2a
--- /dev/null
+++ b/var/spack/repos/builtin/packages/cask/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 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
+##############################################################################
+#
+# Based on Homebrew's formula:
+# https://github.com/Homebrew/homebrew-core/blob/master/Formula/cask.rb
+#
+from spack import *
+from glob import glob
+
+
+class Cask(Package):
+ """Cask is a project management tool for Emacs Lisp to automate the package
+ development cycle; development, dependencies, testing, building,
+ packaging and more."""
+ homepage = "http://cask.readthedocs.io/en/latest/"
+ url = "https://github.com/cask/cask/archive/v0.7.4.tar.gz"
+
+ version('0.7.4', 'c973a7db43bc980dd83759a5864a1260')
+
+ depends_on('emacs', type=nolink)
+
+ def install(self, spec, prefix):
+ mkdirp(prefix.bin)
+ install('bin/cask', prefix.bin)
+ install_tree('templates', join_path(prefix, 'templates'))
+ for el_file in glob("*.el"):
+ install(el_file, prefix)
+ for misc_file in ['COPYING', 'cask.png', 'README.md']:
+ install(misc_file, prefix)
+ # disable cask's automatic upgrading feature
+ touch(join_path(prefix, ".no-upgrade"))
diff --git a/var/spack/repos/builtin/packages/cp2k/package.py b/var/spack/repos/builtin/packages/cp2k/package.py
new file mode 100644
index 0000000000..8fdd1e0ca3
--- /dev/null
+++ b/var/spack/repos/builtin/packages/cp2k/package.py
@@ -0,0 +1,161 @@
+##############################################################################
+# 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 copy
+
+from spack import *
+
+
+class Cp2k(Package):
+ """CP2K is a quantum chemistry and solid state physics software package
+ that can perform atomistic simulations of solid state, liquid, molecular,
+ periodic, material, crystal, and biological systems
+ """
+ homepage = 'https://www.cp2k.org'
+ url = 'https://sourceforge.net/projects/cp2k/files/cp2k-3.0.tar.bz2'
+
+ version('3.0', 'c05bc47335f68597a310b1ed75601d35')
+
+ variant('mpi', default=True, description='Enable MPI support')
+
+ depends_on('python') # Build dependency
+
+ depends_on('lapack')
+ depends_on('blas')
+ depends_on('fftw')
+
+ depends_on('mpi', when='+mpi')
+ depends_on('scalapack', 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 PEXSI
+ # TODO : add dependency on QUIP
+ # TODO : add dependency on plumed
+ # TODO : add dependency on libwannier90
+
+ parallel = False
+
+ def install(self, spec, prefix):
+ # Construct a proper filename for the architecture file
+ cp2k_architecture = '{0.architecture}-{0.compiler.name}'.format(spec)
+ cp2k_version = 'sopt' if '~mpi' in spec else 'popt'
+ makefile_basename = '.'.join([cp2k_architecture, cp2k_version])
+ makefile = join_path('arch', makefile_basename)
+
+ # Write the custom makefile
+ with open(makefile, 'w') as mkf:
+ mkf.write('CC = {0.compiler.cc}\n'.format(self))
+ if '%intel' in self.spec:
+ # CPP is a commented command in Intel arch of CP2K
+ # This is the hack through which cp2k developers avoid doing :
+ #
+ # ${CPP} <file>.F > <file>.f90
+ #
+ # and use `-fpp` instead
+ mkf.write('CPP = # {0.compiler.cc} -P\n'.format(self))
+ mkf.write('AR = xiar -r\n')
+ else:
+ mkf.write('CPP = {0.compiler.cc} -E\n'.format(self))
+ mkf.write('AR = ar -r\n')
+ fc = self.compiler.fc if '~mpi' in spec else self.spec['mpi'].mpifc
+ mkf.write('FC = {0}\n'.format(fc))
+ mkf.write('LD = {0}\n'.format(fc))
+ # Optimization flags
+ optflags = {
+ 'gcc': ['-O2',
+ '-ffast-math',
+ '-ffree-form',
+ '-ffree-line-length-none',
+ '-ftree-vectorize',
+ '-funroll-loops',
+ '-mtune=native'],
+ 'intel': ['-O2',
+ '-pc64',
+ '-unroll',
+ '-heap-arrays 64']
+ }
+ cppflags = [
+ '-D__FFTW3',
+ '-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 = []
+ # Intel
+ if '%intel' in self.spec:
+ cppflags.extend([
+ '-D__INTEL_COMPILER',
+ '-D__MKL'
+ ])
+ fcflags.extend([
+ '-diag-disable 8290,8291,10010,10212,11060',
+ '-free',
+ '-fpp'
+ ])
+ # MPI
+ if '+mpi' in self.spec:
+ cppflags.extend([
+ '-D__parallel',
+ '-D__SCALAPACK'
+ ])
+ ldflags.extend([
+ '-L' + spec['scalapack'].prefix.lib
+ ])
+ libs.extend(spec['scalapack'].scalapack_shared_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
+ ])
+
+ # Write compiler flags to file
+ mkf.write('CPPFLAGS = {0}\n'.format(' '.join(cppflags)))
+ mkf.write('FCFLAGS = {0}\n'.format(' '.join(fcflags)))
+ mkf.write('LDFLAGS = {0}\n'.format(' '.join(ldflags)))
+ mkf.write('LIBS = {0}\n'.format(' '.join(libs)))
+
+ with working_dir('makefiles'):
+ # Apparently the Makefile bases its paths on PWD
+ # so we need to set PWD = os.getcwd()
+ pwd_backup = env['PWD']
+ env['PWD'] = os.getcwd()
+ make('ARCH={0}'.format(cp2k_architecture),
+ 'VERSION={0}'.format(cp2k_version))
+ env['PWD'] = pwd_backup
+ exe_dir = join_path('exe', cp2k_architecture)
+ shutil.copytree(exe_dir, self.prefix.bin)
diff --git a/var/spack/repos/builtin/packages/dealii/package.py b/var/spack/repos/builtin/packages/dealii/package.py
index 54604d351f..18c0849f68 100644
--- a/var/spack/repos/builtin/packages/dealii/package.py
+++ b/var/spack/repos/builtin/packages/dealii/package.py
@@ -51,14 +51,21 @@ class Dealii(Package):
variant('petsc', default=True, description='Compile with Petsc (only with MPI)')
variant('slepc', default=True, description='Compile with Slepc (only with Petsc and MPI)')
variant('trilinos', default=True, description='Compile with Trilinos (only with MPI)')
+ variant('python', default=True, description='Compile with Python bindings')
# required dependencies, light version
depends_on("blas")
# Boost 1.58 is blacklisted, see
# https://github.com/dealii/dealii/issues/1591
# Require at least 1.59
- depends_on("boost@1.59.0:+thread+system+serialization+iostreams", when='~mpi') # NOQA: ignore=E501
- depends_on("boost@1.59.0:+mpi+thread+system+serialization+iostreams", when='+mpi') # NOQA: ignore=E501
+ # +python won't affect @:8.4.1
+ depends_on("boost@1.59.0:+thread+system+serialization+iostreams", when='@:8.4.1~mpi')
+ depends_on("boost@1.59.0:+thread+system+serialization+iostreams+mpi", when='@:8.4.1+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')
+ depends_on("boost@1.59.0:+thread+system+serialization+iostreams+mpi", when='@8.5.0:+mpi~python')
+ depends_on("boost@1.59.0:+thread+system+serialization+iostreams+python", when='@8.5.0:~mpi+python')
+ depends_on("boost@1.59.0:+thread+system+serialization+iostreams+mpi+python", when='@8.5.0:+mpi+python')
depends_on("bzip2")
depends_on("cmake", type='build')
depends_on("lapack")
@@ -120,6 +127,12 @@ class Dealii(Package):
'-DZLIB_DIR=%s' % spec['zlib'].prefix
])
+ if spec.satisfies('@8.5.0:'):
+ options.extend([
+ '-DDEAL_II_COMPONENT_PYTHON_BINDINGS=%s' %
+ ('ON' if '+python' in spec else 'OFF')
+ ])
+
# Set directory structure:
if spec.satisfies('@:8.2.1'):
options.extend(['-DDEAL_II_COMPONENT_COMPAT_FILES=OFF'])
diff --git a/var/spack/repos/builtin/packages/gettext/package.py b/var/spack/repos/builtin/packages/gettext/package.py
index df301aea3c..cf260c3f8a 100644
--- a/var/spack/repos/builtin/packages/gettext/package.py
+++ b/var/spack/repos/builtin/packages/gettext/package.py
@@ -24,31 +24,80 @@
##############################################################################
from spack import *
+
class Gettext(Package):
"""GNU internationalization (i18n) and localization (l10n) library."""
homepage = "https://www.gnu.org/software/gettext/"
url = "http://ftpmirror.gnu.org/gettext/gettext-0.19.7.tar.xz"
- version('0.19.7', 'f81e50556da41b44c1d59ac93474dca5')
+ version('0.19.8.1', 'df3f5690eaa30fd228537b00cb7b7590')
+ version('0.19.7', 'f81e50556da41b44c1d59ac93474dca5')
+
+ # Recommended variants
+ variant('curses', default=True, description='Use libncurses')
+ variant('libxml2', default=True, description='Use libxml2')
+ variant('git', default=True, description='Enable git support')
+ variant('tar', default=True, description='Enable tar support')
+ variant('bzip2', default=True, description='Enable bzip2 support')
+ variant('xz', default=True, description='Enable xz support')
+
+ # Optional variants
+ variant('libunistring', default=False, description='Use libunistring')
+
+ # Recommended dependencies
+ depends_on('ncurses', when='+curses')
+ depends_on('libxml2', when='+libxml2')
+ # Java runtime and compiler (e.g. GNU gcj or kaffe)
+ # C# runtime and compiler (e.g. pnet or mono)
+ depends_on('tar', when='+tar')
+ # depends_on('gzip', when='+gzip')
+ depends_on('bzip2', when='+bzip2')
+ depends_on('xz', when='+xz')
+
+ # Optional dependencies
+ # depends_on('glib') # circular dependency?
+ # depends_on('libcroco@0.6.1:')
+ depends_on('libunistring', when='+libunistring')
+ # depends_on('cvs')
def install(self, spec, prefix):
- options = ['--disable-dependency-tracking',
- '--disable-silent-rules',
- '--disable-debug',
- '--prefix=%s' % prefix,
- '--with-included-gettext',
- '--with-included-glib',
- '--with-included-libcroco',
- '--with-included-libunistring',
- '--with-emacs',
- '--with-lispdir=%s/emacs/site-lisp/gettext' % prefix.share,
- '--disable-java',
- '--disable-csharp',
- '--without-git', # Don't use VCS systems to create these archives
- '--without-cvs',
- '--without-xz']
-
- configure(*options)
+ config_args = [
+ '--prefix={0}'.format(prefix),
+ '--disable-java',
+ '--disable-csharp',
+ '--with-included-glib',
+ '--with-included-gettext',
+ '--with-included-libcroco',
+ '--without-emacs',
+ '--with-lispdir=%s/emacs/site-lisp/gettext' % prefix.share,
+ '--without-cvs'
+ ]
+
+ if '+curses' in spec:
+ config_args.append('--with-ncurses-prefix={0}'.format(
+ spec['ncurses'].prefix))
+ else:
+ config_args.append('--disable-curses')
+
+ if '+libxml2' in spec:
+ config_args.append('--with-libxml2-prefix={0}'.format(
+ spec['libxml2'].prefix))
+ else:
+ config_args.append('--with-included-libxml')
+
+ if '+bzip2' not in spec:
+ config_args.append('--without-bzip2')
+
+ if '+xz' not in spec:
+ config_args.append('--without-xz')
+
+ if '+libunistring' in spec:
+ config_args.append('--with-libunistring-prefix={0}'.format(
+ spec['libunistring'].prefix))
+ else:
+ config_args.append('--with-included-libunistring')
+
+ configure(*config_args)
make()
make("install")
diff --git a/var/spack/repos/builtin/packages/git/package.py b/var/spack/repos/builtin/packages/git/package.py
index 4cbbaac342..01364580a0 100644
--- a/var/spack/repos/builtin/packages/git/package.py
+++ b/var/spack/repos/builtin/packages/git/package.py
@@ -24,6 +24,7 @@
##############################################################################
from spack import *
+
class Git(Package):
"""Git is a free and open source distributed version control
system designed to handle everything from small to very large
@@ -36,31 +37,27 @@ class Git(Package):
version('2.7.3', 'fa1c008b56618c355a32ba4a678305f6')
version('2.7.1', 'bf0706b433a8dedd27a63a72f9a66060')
-
# See here for info on vulnerable Git versions:
# http://www.theregister.co.uk/2016/03/16/git_server_client_patch_now/
# All the following are vulnerable
- #version('2.6.3', 'b711be7628a4a2c25f38d859ee81b423')
- #version('2.6.2', 'da293290da69f45a86a311ad3cd43dc8')
- #version('2.6.1', '4c62ee9c5991fe93d99cf2a6b68397fd')
- #version('2.6.0', 'eb76a07148d94802a1745d759716a57e')
- #version('2.5.4', '3eca2390cf1fa698b48e2a233563a76b')
- #version('2.2.1', 'ff41fdb094eed1ec430aed8ee9b9849c')
-
+ # version('2.6.3', 'b711be7628a4a2c25f38d859ee81b423')
+ # version('2.6.2', 'da293290da69f45a86a311ad3cd43dc8')
+ # version('2.6.1', '4c62ee9c5991fe93d99cf2a6b68397fd')
+ # version('2.6.0', 'eb76a07148d94802a1745d759716a57e')
+ # version('2.5.4', '3eca2390cf1fa698b48e2a233563a76b')
+ # version('2.2.1', 'ff41fdb094eed1ec430aed8ee9b9849c')
depends_on("openssl")
depends_on("autoconf", type='build')
depends_on("curl")
depends_on("expat")
-
- # Also depends_on gettext: apt-get install gettext (Ubuntu)
+ depends_on("gettext")
+ depends_on("zlib")
# Use system perl for now.
# depends_on("perl")
# depends_on("pcre")
- depends_on("zlib")
-
def install(self, spec, prefix):
configure_args = [
"--prefix=%s" % prefix,
@@ -68,8 +65,8 @@ class Git(Package):
"--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-expat=%s" % spec['expat'].prefix
+ ]
which('autoreconf')('-i')
configure(*configure_args)
diff --git a/var/spack/repos/builtin/packages/glib/package.py b/var/spack/repos/builtin/packages/glib/package.py
index 0a0a02f464..2720831e4f 100644
--- a/var/spack/repos/builtin/packages/glib/package.py
+++ b/var/spack/repos/builtin/packages/glib/package.py
@@ -23,7 +23,6 @@
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
from spack import *
-import sys
class Glib(Package):
@@ -32,17 +31,24 @@ class Glib(Package):
and interfaces for such runtime functionality as an event loop,
threads, dynamic loading and an object system."""
homepage = "https://developer.gnome.org/glib/"
- url = "http://ftp.gnome.org/pub/gnome/sources/glib/2.42/glib-2.42.1.tar.xz"
+ url = "http://ftp.gnome.org/pub/gnome/sources/glib/2.42/glib-2.42.1.tar.xz"
+ version('2.49.4', 'e2c87c03017b0cd02c4c73274b92b148')
version('2.42.1', '89c4119e50e767d3532158605ee9121a')
- depends_on("libffi")
- depends_on("zlib")
- depends_on("pkg-config", type='build')
- depends_on('gettext', when=sys.platform == 'darwin')
+ depends_on('libffi')
+ depends_on('zlib')
+ depends_on('pkg-config', type='build')
+ depends_on('gettext')
+ depends_on('pcre+utf', when='@2.49:')
# The following patch is needed for gcc-6.1
- patch('g_date_strftime.patch')
+ patch('g_date_strftime.patch', when='@2.42.1')
+
+ def url_for_version(self, version):
+ """Handle glib's version-based custom URLs."""
+ url = 'http://ftp.gnome.org/pub/gnome/sources/glib'
+ return url + '/%s/glib-%s.tar.xz' % (version.up_to(2), version)
def install(self, spec, prefix):
configure("--prefix=%s" % prefix)
diff --git a/var/spack/repos/builtin/packages/gmp/package.py b/var/spack/repos/builtin/packages/gmp/package.py
index e2c2892f18..d85330dd6e 100644
--- a/var/spack/repos/builtin/packages/gmp/package.py
+++ b/var/spack/repos/builtin/packages/gmp/package.py
@@ -24,16 +24,18 @@
##############################################################################
from spack import *
+
class Gmp(Package):
- """GMP is a free library for arbitrary precision arithmetic,
- operating on signed integers, rational numbers, and
- floating-point numbers."""
+ """GMP is a free library for arbitrary precision arithmetic, operating
+ on signed integers, rational numbers, and floating-point numbers."""
+
homepage = "https://gmplib.org"
url = "https://gmplib.org/download/gmp/gmp-6.0.0a.tar.bz2"
- version('6.1.0' , '86ee6e54ebfc4a90b643a65e402c4048')
+ version('6.1.1', '4c175f86e11eb32d8bf9872ca3a8e11d')
+ version('6.1.0', '86ee6e54ebfc4a90b643a65e402c4048')
version('6.0.0a', 'b7ff2d88cae7f8085bd5006096eed470')
- version('6.0.0' , '6ef5869ae735db9995619135bd856b84')
+ version('6.0.0', '6ef5869ae735db9995619135bd856b84')
depends_on("m4", type='build')
diff --git a/var/spack/repos/builtin/packages/guile/package.py b/var/spack/repos/builtin/packages/guile/package.py
new file mode 100644
index 0000000000..22aff1bddf
--- /dev/null
+++ b/var/spack/repos/builtin/packages/guile/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 *
+
+
+class Guile(Package):
+ """Guile is the GNU Ubiquitous Intelligent Language for Extensions,
+ the official extension language for the GNU operating system."""
+
+ homepage = "https://www.gnu.org/software/guile/"
+ url = "ftp://ftp.gnu.org/gnu/guile/guile-2.0.11.tar.gz"
+
+ version('2.0.11', 'e532c68c6f17822561e3001136635ddd')
+
+ variant('readline', default=True, description='Use the readline library')
+
+ depends_on('gmp@4.2:')
+ depends_on('gettext')
+ depends_on('libtool@1.5.6:')
+ depends_on('libunistring@0.9.3:')
+ depends_on('bdw-gc@7.0:')
+ depends_on('libffi')
+ depends_on('readline', when='+readline')
+ depends_on('pkg-config', type='build')
+
+ def install(self, spec, prefix):
+ config_args = [
+ '--prefix={0}'.format(prefix),
+ '--with-libunistring-prefix={0}'.format(
+ spec['libunistring'].prefix),
+ '--with-libltdl-prefix={0}'.format(spec['libtool'].prefix),
+ '--with-libgmp-prefix={0}'.format(spec['gmp'].prefix),
+ '--with-libintl-prefix={0}'.format(spec['gettext'].prefix)
+ ]
+
+ if '+readline' in spec:
+ config_args.append('--with-libreadline-prefix={0}'.format(
+ spec['readline'].prefix))
+ else:
+ config_args.append('--without-libreadline-prefix')
+
+ configure(*config_args)
+
+ make()
+ make('check')
+ make('install')
diff --git a/var/spack/repos/builtin/packages/harminv/package.py b/var/spack/repos/builtin/packages/harminv/package.py
new file mode 100644
index 0000000000..184535ebb0
--- /dev/null
+++ b/var/spack/repos/builtin/packages/harminv/package.py
@@ -0,0 +1,54 @@
+##############################################################################
+# 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 Harminv(Package):
+ """Harminv is a free program (and accompanying library) to solve the
+ problem of harmonic inversion - given a discrete-time, finite-length
+ signal that consists of a sum of finitely-many sinusoids (possibly
+ exponentially decaying) in a given bandwidth, it determines the
+ frequencies, decay constants, amplitudes, and phases of those sinusoids."""
+
+ homepage = "http://ab-initio.mit.edu/wiki/index.php/Harminv"
+ url = "http://ab-initio.mit.edu/harminv/harminv-1.4.tar.gz"
+
+ version('1.4', 'b95e24a9bc7e07d3d2202d1605e9e86f')
+
+ depends_on('blas')
+ depends_on('lapack')
+
+ def install(self, spec, prefix):
+ config_args = [
+ '--prefix={0}'.format(prefix),
+ '--with-blas={0}'.format(spec['blas'].prefix.lib),
+ '--with-lapack={0}'.format(spec['lapack'].prefix.lib),
+ '--enable-shared'
+ ]
+
+ configure(*config_args)
+
+ make()
+ make('install')
diff --git a/var/spack/repos/builtin/packages/hypre/package.py b/var/spack/repos/builtin/packages/hypre/package.py
index 65fef57559..b339e068bf 100644
--- a/var/spack/repos/builtin/packages/hypre/package.py
+++ b/var/spack/repos/builtin/packages/hypre/package.py
@@ -62,10 +62,10 @@ class Hypre(Package):
'--prefix=%s' % prefix,
'--with-lapack-libs=%s' % to_lib_name(
spec['lapack'].lapack_shared_lib),
- '--with-lapack-lib-dirs=%s/lib' % spec['lapack'].prefix,
+ '--with-lapack-lib-dirs=%s' % spec['lapack'].prefix.lib,
'--with-blas-libs=%s' % to_lib_name(
spec['blas'].blas_shared_lib),
- '--with-blas-lib-dirs=%s/lib' % spec['blas'].prefix
+ '--with-blas-lib-dirs=%s' % spec['blas'].prefix.lib
]
if '+shared' in self.spec:
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 fb98b2473c..9ef1724ae0 100644
--- a/var/spack/repos/builtin/packages/intel-parallel-studio/package.py
+++ b/var/spack/repos/builtin/packages/intel-parallel-studio/package.py
@@ -50,6 +50,11 @@ class IntelParallelStudio(IntelInstaller):
provides('daal', when='+daal')
provides('ipp', when='+ipp')
+ # virtual dependency
+ provides('blas', when='+mkl')
+ provides('lapack', when='+mkl')
+ # TODO: MKL also provides implementation of Scalapack.
+
def check_variants(self, spec):
error_message = '\t{variant} can not be turned off if "+all" is set'
@@ -75,7 +80,7 @@ class IntelParallelStudio(IntelInstaller):
regex = '(comp|openmp|intel-tbb|icc|ifort|psxe|icsxe-pset)'
base_components = \
filter_pick(all_components, re.compile(regex).search)
- regex = '(icsxe|imb|mpi|itac|intel-tc|clck)'
+ regex = '(icsxe|imb|mpi|itac|intel-ta|intel-tc|clck)'
mpi_components = \
filter_pick(all_components, re.compile(regex).search)
mkl_components = \
@@ -134,6 +139,12 @@ class IntelParallelStudio(IntelInstaller):
os.symlink(self.global_license_file,
os.path.join(self.prefix, "itac", ifile,
"license.lic"))
+ if os.path.isdir(os.path.join(self.prefix, "itac",
+ ifile, "intel64")):
+ os.symlink(self.global_license_file,
+ os.path.join(self.prefix, "itac",
+ ifile, "intel64",
+ "license.lic"))
if spec.satisfies('~newdtags'):
wrappers = ["mpif77", "mpif77", "mpif90", "mpif90",
"mpigcc", "mpigcc", "mpigxx", "mpigxx",
@@ -159,6 +170,24 @@ 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.
@@ -227,6 +256,8 @@ class IntelParallelStudio(IntelInstaller):
run_env.set('I_MPI_ROOT', join_path(self.prefix, 'impi'))
if self.spec.satisfies('+all') or self.spec.satisfies('+mkl'):
+ spack_env.set('MKLROOT', self.prefix)
+
run_env.prepend_path('LD_LIBRARY_PATH',
join_path(self.prefix, 'mkl', 'lib',
'intel64'))
diff --git a/var/spack/repos/builtin/packages/jdk/package.py b/var/spack/repos/builtin/packages/jdk/package.py
index 593a6d8340..794966f1c3 100644
--- a/var/spack/repos/builtin/packages/jdk/package.py
+++ b/var/spack/repos/builtin/packages/jdk/package.py
@@ -25,7 +25,7 @@
#
# Author: Justin Too <too1@llnl.gov>
#
-import distutils
+import distutils.dir_util
import spack
from spack import *
diff --git a/var/spack/repos/builtin/packages/kdiff3/package.py b/var/spack/repos/builtin/packages/kdiff3/package.py
new file mode 100644
index 0000000000..48f4b9c379
--- /dev/null
+++ b/var/spack/repos/builtin/packages/kdiff3/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 Kdiff3(Package):
+ """Compare and merge 2 or 3 files or directories."""
+ homepage = "http://kdiff3.sourceforge.net/"
+ url = "https://downloads.sourceforge.net/project/kdiff3/kdiff3/0.9.98/kdiff3-0.9.98.tar.gz"
+
+ version('0.9.98', 'b52f99f2cf2ea75ed5719315cbf77446')
+
+ depends_on("qt@5.2.0:")
+
+ def install(self, spec, prefix):
+ # make is done inside
+ configure('qt4')
+
+ # there is no make install, bummer...
+ mkdirp(self.prefix.bin)
+ install(join_path(self.stage.source_path, 'releaseQt', 'kdiff3'),
+ self.prefix.bin)
diff --git a/var/spack/repos/builtin/packages/libatomic-ops/package.py b/var/spack/repos/builtin/packages/libatomic-ops/package.py
new file mode 100644
index 0000000000..0167fbcb33
--- /dev/null
+++ b/var/spack/repos/builtin/packages/libatomic-ops/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 LibatomicOps(Package):
+ """This package provides semi-portable access to hardware-provided
+ atomic memory update operations on a number architectures."""
+
+ homepage = "https://github.com/ivmai/libatomic_ops"
+ url = "http://www.hboehm.info/gc/gc_source/libatomic_ops-7.4.4.tar.gz"
+
+ version('7.4.4', '426d804baae12c372967a6d183e25af2')
+
+ def install(self, spec, prefix):
+ configure('--prefix={0}'.format(prefix),
+ '--enable-shared')
+
+ make()
+ make('install')
diff --git a/var/spack/repos/builtin/packages/libctl/package.py b/var/spack/repos/builtin/packages/libctl/package.py
new file mode 100644
index 0000000000..53d30ce5c3
--- /dev/null
+++ b/var/spack/repos/builtin/packages/libctl/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 Libctl(Package):
+ """libctl is a free Guile-based library implementing flexible
+ control files for scientific simulations."""
+
+ homepage = "http://ab-initio.mit.edu/wiki/index.php/Libctl"
+ url = "http://ab-initio.mit.edu/libctl/libctl-3.2.2.tar.gz"
+
+ version('3.2.2', '5fd7634dc9ae8e7fa70a68473b9cbb68')
+
+ depends_on('guile')
+
+ def install(self, spec, prefix):
+ configure('--prefix={0}'.format(prefix),
+ '--enable-shared',
+ 'GUILE={0}'.format(join_path(
+ spec['guile'].prefix.bin, 'guile')),
+ 'GUILE_CONFIG={0}'.format(join_path(
+ spec['guile'].prefix.bin, 'guile-config')))
+
+ make()
+ make('install')
diff --git a/var/spack/repos/builtin/packages/libepoxy/package.py b/var/spack/repos/builtin/packages/libepoxy/package.py
new file mode 100644
index 0000000000..364ea1e30c
--- /dev/null
+++ b/var/spack/repos/builtin/packages/libepoxy/package.py
@@ -0,0 +1,39 @@
+##############################################################################
+# 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 Libepoxy(Package):
+ """Epoxy is a library for handling OpenGL function pointer management for
+ you."""
+ homepage = "https://github.com/anholt/libepoxy"
+ url = "https://github.com/anholt/libepoxy/releases/download/v1.3.1/libepoxy-1.3.1.tar.bz2"
+
+ version('1.3.1', '96f6620a9b005a503e7b44b0b528287d')
+
+ def install(self, spec, prefix):
+ configure('--prefix={0}'.format(prefix))
+ make()
+ make('install')
diff --git a/var/spack/repos/builtin/packages/libhio/package.py b/var/spack/repos/builtin/packages/libhio/package.py
new file mode 100644
index 0000000000..17bd86d310
--- /dev/null
+++ b/var/spack/repos/builtin/packages/libhio/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 Libhio(Package):
+ """
+ A library for writing to hierarchical data store systems.
+ """
+
+ homepage = "https://github.com/hpc/libhio/"
+ url = "https://github.com/hpc/libhio/releases/download/hio.1.3.0.1/libhio-1.3.0.1.tar.gz"
+
+ version('1.3.0.1', 'c073541de8dd70aeb8878bd00d6d877f')
+
+ depends_on("libjson-c")
+ depends_on("bzip2")
+ depends_on("pkg-config", type="build")
+
+ def install(self, spec, prefix):
+ configure('--prefix=%s' % prefix)
+ make()
+ make("install")
diff --git a/var/spack/repos/builtin/packages/libiconv/package.py b/var/spack/repos/builtin/packages/libiconv/package.py
new file mode 100644
index 0000000000..f2eeb07b26
--- /dev/null
+++ b/var/spack/repos/builtin/packages/libiconv/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 Libiconv(Package):
+ """GNU libiconv provides an implementation of the iconv() function
+ and the iconv program for character set conversion."""
+
+ homepage = "https://www.gnu.org/software/libiconv/"
+ url = "http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz"
+
+ version('1.14', 'e34509b1623cec449dfeb73d7ce9c6c6')
+
+ def install(self, spec, prefix):
+ configure('--prefix={0}'.format(prefix),
+ '--enable-extra-encodings')
+
+ make()
+ make('check')
+ make('install')
diff --git a/var/spack/repos/builtin/packages/libunistring/package.py b/var/spack/repos/builtin/packages/libunistring/package.py
new file mode 100644
index 0000000000..5b8837e72b
--- /dev/null
+++ b/var/spack/repos/builtin/packages/libunistring/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 Libunistring(Package):
+ """This library provides functions for manipulating Unicode strings
+ and for manipulating C strings according to the Unicode standard."""
+
+ homepage = "https://www.gnu.org/software/libunistring/"
+ url = "http://ftp.gnu.org/gnu/libunistring/libunistring-0.9.6.tar.xz"
+
+ version('0.9.6', 'cb09c398020c27edac10ca590e9e9ef3')
+
+ def install(self, spec, prefix):
+ configure('--prefix={0}'.format(prefix))
+
+ make()
+ # make('check') # test-verify fails for me, contacted developers
+ make('install')
diff --git a/var/spack/repos/builtin/packages/libxau/package.py b/var/spack/repos/builtin/packages/libxau/package.py
index 55816ecdbd..b9215bc601 100644
--- a/var/spack/repos/builtin/packages/libxau/package.py
+++ b/var/spack/repos/builtin/packages/libxau/package.py
@@ -24,6 +24,7 @@
##############################################################################
from spack import *
+
class Libxau(Package):
"""The libXau package contains a library implementing the X11
Authorization Protocol. This is useful for restricting client
@@ -34,11 +35,10 @@ class Libxau(Package):
version('1.0.8', '685f8abbffa6d145c0f930f00703b21b')
depends_on('xproto')
+ depends_on('pkg-config', type='build')
def install(self, spec, prefix):
- # FIXME: Modify the configure line to suit your build system here.
configure('--prefix=%s' % prefix)
- # FIXME: Add logic to build and install here
make()
make("install")
diff --git a/var/spack/repos/builtin/packages/libxsmm/package.py b/var/spack/repos/builtin/packages/libxsmm/package.py
new file mode 100644
index 0000000000..a736490600
--- /dev/null
+++ b/var/spack/repos/builtin/packages/libxsmm/package.py
@@ -0,0 +1,66 @@
+##############################################################################
+# 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 Libxsmm(Package):
+ '''LIBXSMM is a library for small dense and small sparse matrix-matrix
+ multiplications targeting Intel Architecture (x86).'''
+
+ homepage = 'https://github.com/hfp/libxsmm'
+ url = 'https://github.com/hfp/libxsmm/archive/1.4.3.tar.gz'
+
+ version('1.4.3', '9839bf0fb8be7badf1e97ce4c817149b')
+ version('1.4.2', 'ea025761437f3b5c936821b9ca21ec31')
+ version('1.4.1', '71648500ea4510529845d329091917df')
+ version('1.4', 'b42f91bf5285e7ad0463446e55ebdc2b')
+
+ def patch(self):
+ kwargs = {'ignore_absent': False, 'backup': False, 'string': True}
+ makefile = FileFilter('Makefile.inc')
+
+ # Spack sets CC, CXX, and FC to point to the compiler wrappers
+ # Don't let Makefile.inc overwrite these
+ makefile.filter('CC = icc', 'CC ?= icc', **kwargs)
+ makefile.filter('CC = gcc', 'CC ?= gcc', **kwargs)
+ makefile.filter('CXX = icpc', 'CXX ?= icpc', **kwargs)
+ makefile.filter('CXX = g++', 'CXX ?= g++', **kwargs)
+ makefile.filter('FC = ifort', 'FC ?= ifort', **kwargs)
+ makefile.filter('FC = gfortran', 'FC ?= gfortran', **kwargs)
+
+ def manual_install(self, prefix):
+ install_tree('include', prefix.include)
+ install_tree('lib', prefix.lib)
+ install_tree('documentation', prefix.share + '/libxsmm/doc')
+
+ def install(self, spec, prefix):
+ make_args = [
+ 'ROW_MAJOR=0',
+ 'INDICES_M={0}'.format(' '.join(str(i) for i in range(1, 25))),
+ 'INDICES_N={0}'.format(' '.join(str(i) for i in range(1, 25))),
+ 'INDICES_K={0}'.format(' '.join(str(i) for i in range(1, 25)))
+ ]
+ make(*make_args)
+ self.manual_install(prefix)
diff --git a/var/spack/repos/builtin/packages/meep/package.py b/var/spack/repos/builtin/packages/meep/package.py
new file mode 100644
index 0000000000..2c1018e711
--- /dev/null
+++ b/var/spack/repos/builtin/packages/meep/package.py
@@ -0,0 +1,109 @@
+##############################################################################
+# 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 Meep(Package):
+ """Meep (or MEEP) is a free finite-difference time-domain (FDTD) simulation
+ software package developed at MIT to model electromagnetic systems."""
+
+ homepage = "http://ab-initio.mit.edu/wiki/index.php/Meep"
+
+ version('1.3', '18a5b9e18008627a0411087e0bb60db5')
+ version('1.2.1', '9be2e743c3a832ae922de9d955d016c5')
+ version('1.1.1', '415e0cd312b6caa22b5dd612490e1ccf')
+
+ variant('blas', default=True, description='Enable BLAS support')
+ variant('lapack', default=True, description='Enable LAPACK support')
+ variant('harminv', default=True, description='Enable Harminv support')
+ variant('guile', default=True, description='Enable Guilde support')
+ variant('libctl', default=True, description='Enable libctl support')
+ variant('mpi', default=True, description='Enable MPI support')
+ variant('hdf5', default=True, description='Enable HDF5 support')
+ variant('gsl', default=True, description='Enable GSL support')
+
+ depends_on('blas', when='+blas')
+ depends_on('lapack', when='+lapack')
+ depends_on('harminv', when='+harminv')
+ depends_on('guile', when='+guile')
+ depends_on('libctl@3.2:', when='+libctl')
+ depends_on('mpi', when='+mpi')
+ depends_on('hdf5~mpi', when='+hdf5~mpi')
+ depends_on('hdf5+mpi', when='+hdf5+mpi')
+ depends_on('gsl', when='+gsl')
+
+ def url_for_version(self, version):
+ base_url = "http://ab-initio.mit.edu/meep"
+ if version > Version('1.1.1'):
+ return "{0}/meep-{1}.tar.gz".format(base_url, version)
+ else:
+ return "{0}/old/meep-{1}.tar.gz".format(base_url, version)
+
+ def install(self, spec, prefix):
+ config_args = [
+ '--prefix={0}'.format(prefix),
+ '--enable-shared'
+ ]
+
+ if '+blas' in spec:
+ config_args.append('--with-blas={0}'.format(
+ spec['blas'].prefix.lib))
+ else:
+ config_args.append('--without-blas')
+
+ if '+lapack' in spec:
+ config_args.append('--with-lapack={0}'.format(
+ spec['lapack'].prefix.lib))
+ else:
+ config_args.append('--without-lapack')
+
+ if '+libctl' in spec:
+ config_args.append('--with-libctl={0}'.format(
+ join_path(spec['libctl'].prefix.share, 'libctl')))
+ else:
+ config_args.append('--without-libctl')
+
+ if '+mpi' in spec:
+ config_args.append('--with-mpi')
+ else:
+ config_args.append('--without-mpi')
+
+ if '+hdf5' in spec:
+ config_args.append('--with-hdf5')
+ else:
+ config_args.append('--without-hdf5')
+
+ configure(*config_args)
+
+ make()
+
+ # aniso_disp test fails unless installed with harminv
+ # near2far test fails unless installed with gsl
+ if self.run_tests and '+harminv' in spec and '+gsl' in spec:
+ # Most tests fail when run in parallel
+ # 2D_convergence tests still fails to converge for unknown reasons
+ make('check', parallel=False)
+
+ make('install')
diff --git a/var/spack/repos/builtin/packages/mkl/package.py b/var/spack/repos/builtin/packages/mkl/package.py
index 6ea64f5313..71a233ff3e 100644
--- a/var/spack/repos/builtin/packages/mkl/package.py
+++ b/var/spack/repos/builtin/packages/mkl/package.py
@@ -12,9 +12,9 @@ class Mkl(IntelInstaller):
mirror, see http://software.llnl.gov/spack/mirrors.html.
To set the threading layer at run time set MKL_THREADING_LAYER
- variable to one of the following values: INTEL, SEQUENTIAL, PGI.
+ variable to one of the following values: INTEL (default), SEQUENTIAL, PGI.
To set interface layer at run time, use set the MKL_INTERFACE_LAYER
- variable to LP64 or ILP64.
+ variable to LP64 (default) or ILP64.
"""
homepage = "https://software.intel.com/en-us/intel-mkl"
@@ -38,6 +38,13 @@ class Mkl(IntelInstaller):
for f in os.listdir(mkl_dir):
os.symlink(os.path.join(mkl_dir, f), os.path.join(self.prefix, f))
+ # Unfortunately MKL libs are natively distrubted in prefix/lib/intel64.
+ # To make MKL play nice with Spack, symlink all files to prefix/lib:
+ mkl_lib_dir = os.path.join(prefix, "lib", "intel64")
+ for f in os.listdir(mkl_lib_dir):
+ 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
@@ -53,6 +60,7 @@ class Mkl(IntelInstaller):
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
diff --git a/var/spack/repos/builtin/packages/nextflow/package.py b/var/spack/repos/builtin/packages/nextflow/package.py
new file mode 100644
index 0000000000..54f3dbf915
--- /dev/null
+++ b/var/spack/repos/builtin/packages/nextflow/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 Nextflow(Package):
+ """Data-driven computational pipelines"""
+
+ homepage = "http://www.nextflow.io"
+
+ version('0.20.1', '0e4e0e3eca1c2c97f9b4bffd944b923a',
+ url='https://github.com/nextflow-io/nextflow/releases/download/v0.20.1/nextflow',
+ expand=False)
+
+ depends_on('jdk')
+
+ def install(self, spec, prefix):
+ mkdirp(prefix.bin)
+ install("nextflow", join_path(prefix.bin, "nextflow"))
+ set_executable(join_path(prefix.bin, "nextflow"))
diff --git a/var/spack/repos/builtin/packages/ocaml/package.py b/var/spack/repos/builtin/packages/ocaml/package.py
new file mode 100644
index 0000000000..9488d3b7a6
--- /dev/null
+++ b/var/spack/repos/builtin/packages/ocaml/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 Ocaml(Package):
+ """OCaml is an industrial strength programming language supporting
+ functional, imperative and object-oriented styles"""
+
+ homepage = "http://ocaml.org/"
+ url = "http://caml.inria.fr/pub/distrib/ocaml-4.03/ocaml-4.03.0.tar.gz"
+
+ version('4.03.0', '43812739ea1b4641cf480f57f977c149')
+
+ depends_on('ncurses')
+
+ def install(self, spec, prefix):
+ configure('-prefix', '{0}'.format(prefix))
+
+ make('world.opt')
+ make('install')
diff --git a/var/spack/repos/builtin/packages/opencv/package.py b/var/spack/repos/builtin/packages/opencv/package.py
index ff551d0b92..8f592342b0 100644
--- a/var/spack/repos/builtin/packages/opencv/package.py
+++ b/var/spack/repos/builtin/packages/opencv/package.py
@@ -23,51 +23,186 @@
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
from spack import *
+from glob import glob
class Opencv(Package):
+ """OpenCV is released under a BSD license and hence it's free for both
+ academic and commercial use. It has C++, C, Python and Java interfaces and
+ supports Windows, Linux, Mac OS, iOS and Android. OpenCV was designed for
+ computational efficiency and with a strong focus on real-time applications.
+ Written in optimized C/C++, the library can take advantage of multi-core
+ processing. Enabled with OpenCL, it can take advantage of the hardware
+ acceleration of the underlying heterogeneous compute platform. Adopted all
+ around the world, OpenCV has more than 47 thousand people of user community
+ and estimated number of downloads exceeding 9 million. Usage ranges from
+ interactive art, to mines inspection, stitching maps on the web or through
+ advanced robotics.
"""
- OpenCV is released under a BSD license and hence it's free for both academic and commercial use. It has C++, C,
- Python and Java interfaces and supports Windows, Linux, Mac OS, iOS and Android. OpenCV was designed for
- computational efficiency and with a strong focus on real-time applications. Written in optimized C/C++, the library
- can take advantage of multi-core processing. Enabled with OpenCL, it can take advantage of the hardware
- acceleration of the underlying heterogeneous compute platform. Adopted all around the world, OpenCV has more than
- 47 thousand people of user community and estimated number of downloads exceeding 9 million. Usage ranges from
- interactive art, to mines inspection, stitching maps on the web or through advanced robotics.
- """
+
homepage = 'http://opencv.org/'
url = 'https://github.com/Itseez/opencv/archive/3.1.0.tar.gz'
version('3.1.0', '70e1dd07f0aa06606f1bc0e3fa15abd3')
- variant('shared', default=True, description='Enables the build of shared libraries')
- variant('debug', default=False, description='Builds a debug version of the libraries')
+ variant('shared', default=True,
+ description='Enables the build of shared libraries')
+ variant('debug', default=False,
+ description='Builds a debug version of the libraries')
variant('eigen', default=True, description='Activates support for eigen')
variant('ipp', default=True, description='Activates support for IPP')
+ variant('jasper', default=True, description='Activates support for JasPer')
+ variant('cuda', default=False, description='Activates support for CUDA')
+ variant('gtk', default=False, description='Activates support for GTK')
+ variant('vtk', default=False, description='Activates support for VTK')
+ variant('qt', default=False, description='Activates support for QT')
+ variant('python', default=False,
+ description='Enables the build of Python extensions')
+ variant('java', default=False,
+ description='Activates support for Java')
+
+ depends_on('cmake', type='build')
+ depends_on('eigen', when='+eigen', type='build')
depends_on('zlib')
depends_on('libpng')
depends_on('libjpeg-turbo')
depends_on('libtiff')
- depends_on('python')
- depends_on('py-numpy')
+ depends_on('jasper', when='+jasper')
+ depends_on('cuda', when='+cuda')
+ depends_on('gtkplus', when='+gtk')
+ depends_on('vtk', when='+vtk')
+ depends_on('qt', when='+qt')
+ depends_on('jdk', when='+java')
+ depends_on('py-numpy', when='+python')
- depends_on('eigen', when='+eigen', type='build')
- depends_on('cmake', type='build')
-
- # FIXME : GUI extensions missing
- # FIXME : CUDA extensions still missing
+ extends('python', when='+python')
def install(self, spec, prefix):
cmake_options = []
cmake_options.extend(std_cmake_args)
- cmake_options.extend(['-DCMAKE_BUILD_TYPE:STRING=%s' % ('Debug' if '+debug' in spec else 'Release'),
- '-DBUILD_SHARED_LIBS:BOOL=%s' % ('ON' if '+shared' in spec else 'OFF'),
- '-DENABLE_PRECOMPILED_HEADERS:BOOL=OFF',
- '-DWITH_IPP:BOOL=%s' % ('ON' if '+ipp' in spec else 'OFF')])
+ cmake_options.extend([
+ '-DCMAKE_BUILD_TYPE:STRING={0}'.format((
+ 'Debug' if '+debug' in spec else 'Release')),
+ '-DBUILD_SHARED_LIBS:BOOL={0}'.format((
+ 'ON' if '+shared' in spec else 'OFF')),
+ '-DENABLE_PRECOMPILED_HEADERS:BOOL=OFF',
+ '-DWITH_IPP:BOOL={0}'.format((
+ 'ON' if '+ipp' in spec else 'OFF')),
+ '-DWITH_CUDA:BOOL={0}'.format((
+ 'ON' if '+cuda' in spec else 'OFF')),
+ '-DWITH_QT:BOOL={0}'.format((
+ 'ON' if '+qt' in spec else 'OFF')),
+ '-DWITH_VTK:BOOL={0}'.format((
+ 'ON' if '+vtk' in spec else 'OFF')),
+ '-DBUILD_opencv_java:BOOL={0}'.format((
+ 'ON' if '+java' in spec else 'OFF')),
+ ])
+
+ # Media I/O
+ zlib = spec['zlib']
+ cmake_options.extend([
+ '-DZLIB_LIBRARY_{0}:FILEPATH={1}'.format((
+ 'DEBUG' if '+debug' in spec else 'RELEASE'),
+ join_path(zlib.prefix.lib,
+ 'libz.{0}'.format(dso_suffix))),
+ '-DZLIB_INCLUDE_DIR:PATH={0}'.format(zlib.prefix.include)
+ ])
+
+ libpng = spec['libpng']
+ cmake_options.extend([
+ '-DPNG_LIBRARY_{0}:FILEPATH={1}'.format((
+ 'DEBUG' if '+debug' in spec else 'RELEASE'),
+ join_path(libpng.prefix.lib,
+ 'libpng.{0}'.format(dso_suffix))),
+ '-DPNG_INCLUDE_DIR:PATH={0}'.format(libpng.prefix.include)
+ ])
+
+ libjpeg = spec['libjpeg-turbo']
+ cmake_options.extend([
+ '-DJPEG_LIBRARY:FILEPATH={0}'.format(
+ join_path(libjpeg.prefix.lib,
+ 'libjpeg.{0}'.format(dso_suffix))),
+ '-DJPEG_INCLUDE_DIR:PATH={0}'.format(libjpeg.prefix.include)
+ ])
+
+ libtiff = spec['libtiff']
+ cmake_options.extend([
+ '-DTIFF_LIBRARY_{0}:FILEPATH={1}'.format((
+ 'DEBUG' if '+debug' in spec else 'RELEASE'),
+ join_path(libtiff.prefix.lib,
+ 'libtiff.{0}'.format(dso_suffix))),
+ '-DTIFF_INCLUDE_DIR:PATH={0}'.format(libtiff.prefix.include)
+ ])
+
+ jasper = spec['jasper']
+ cmake_options.extend([
+ '-DJASPER_LIBRARY_{0}:FILEPATH={1}'.format((
+ 'DEBUG' if '+debug' in spec else 'RELEASE'),
+ join_path(jasper.prefix.lib,
+ 'libjasper.{0}'.format(dso_suffix))),
+ '-DJASPER_INCLUDE_DIR:PATH={0}'.format(jasper.prefix.include)
+ ])
+
+ # GUI
+ if '+gtk' not in spec:
+ cmake_options.extend([
+ '-DWITH_GTK:BOOL=OFF',
+ '-DWITH_GTK_2_X:BOOL=OFF'
+ ])
+ elif '^gtkplus@3:' in spec:
+ cmake_options.extend([
+ '-DWITH_GTK:BOOL=ON',
+ '-DWITH_GTK_2_X:BOOL=OFF'
+ ])
+ elif '^gtkplus@2:3' in spec:
+ cmake_options.extend([
+ '-DWITH_GTK:BOOL=OFF',
+ '-DWITH_GTK_2_X:BOOL=ON'
+ ])
+
+ # Python
+ if '+python' in spec:
+ python = spec['python']
+
+ try:
+ python_lib = glob(join_path(
+ python.prefix.lib, 'libpython*.{0}'.format(dso_suffix)))[0]
+ except KeyError:
+ raise InstallError('Cannot find libpython')
+
+ try:
+ python_include_dir = glob(join_path(python.prefix.include,
+ 'python*'))[0]
+ except KeyError:
+ raise InstallError('Cannot find python include directory')
+
+ if '^python@3:' in spec:
+ python_exe = join_path(python.prefix.bin, 'python3')
+ cmake_options.extend([
+ '-DBUILD_opencv_python3=ON',
+ '-DPYTHON3_EXECUTABLE={0}'.format(python_exe),
+ '-DPYTHON3_LIBRARY={0}'.format(python_lib),
+ '-DPYTHON3_INCLUDE_DIR={0}'.format(python_include_dir),
+ '-DBUILD_opencv_python2=OFF',
+ ])
+ elif '^python@2:3' in spec:
+ python_exe = join_path(python.prefix.bin, 'python2')
+ cmake_options.extend([
+ '-DBUILD_opencv_python2=ON',
+ '-DPYTHON2_EXECUTABLE={0}'.format(python_exe),
+ '-DPYTHON2_LIBRARY={0}'.format(python_lib),
+ '-DPYTHON2_INCLUDE_DIR={0}'.format(python_include_dir),
+ '-DBUILD_opencv_python3=OFF',
+ ])
+ else:
+ cmake_options.extend([
+ '-DBUILD_opencv_python2=OFF',
+ '-DBUILD_opencv_python3=OFF'
+ ])
with working_dir('spack_build', create=True):
cmake('..', *cmake_options)
diff --git a/var/spack/repos/builtin/packages/pango/package.py b/var/spack/repos/builtin/packages/pango/package.py
index a04f6d64e0..7ae90f1795 100644
--- a/var/spack/repos/builtin/packages/pango/package.py
+++ b/var/spack/repos/builtin/packages/pango/package.py
@@ -24,6 +24,7 @@
##############################################################################
from spack import *
+
class Pango(Package):
"""Pango is a library for laying out and rendering of text, with
an emphasis on internationalization. It can be used anywhere
@@ -33,6 +34,7 @@ class Pango(Package):
url = "http://ftp.gnome.org/pub/gnome/sources/pango/1.36/pango-1.36.8.tar.xz"
version('1.36.8', '217a9a753006275215fa9fa127760ece')
+ version('1.40.1', '6fc88c6529890d6c8e03074d57a3eceb')
depends_on("harfbuzz")
depends_on("cairo")
diff --git a/var/spack/repos/builtin/packages/pcre/package.py b/var/spack/repos/builtin/packages/pcre/package.py
index a43729a1ac..6f306ab0f9 100644
--- a/var/spack/repos/builtin/packages/pcre/package.py
+++ b/var/spack/repos/builtin/packages/pcre/package.py
@@ -29,7 +29,6 @@ class Pcre(Package):
"""The PCRE package contains Perl Compatible Regular Expression
libraries. These are useful for implementing regular expression
pattern matching using the same syntax and semantics as Perl 5."""
-
homepage = "http://www.pcre.org"""
url = "ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.36.tar.bz2"
@@ -46,6 +45,7 @@ class Pcre(Package):
configure_args = ['--prefix=%s' % prefix]
if '+utf' in spec:
configure_args.append('--enable-utf')
+ configure_args.append('--enable-unicode-properties')
configure(*configure_args)
make()
diff --git a/var/spack/repos/builtin/packages/perl/package.py b/var/spack/repos/builtin/packages/perl/package.py
new file mode 100644
index 0000000000..d71a7492ba
--- /dev/null
+++ b/var/spack/repos/builtin/packages/perl/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 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
+##############################################################################
+#
+# Author: George Hartzell <hartzell@alerce.com>
+# Date: July 21, 2016
+# Author: Justin Too <justin@doubleotoo.com>
+# Date: September 6, 2015
+#
+from spack import *
+
+
+class Perl(Package):
+ """Perl 5 is a highly capable, feature-rich programming language with over
+ 27 years of development."""
+ homepage = "http://www.perl.org"
+ url = "http://www.cpan.org/src/5.0/perl-5.22.2.tar.gz"
+
+ version('5.24.0', 'c5bf7f3285439a2d3b6a488e14503701')
+ version('5.22.2', '5767e2a10dd62a46d7b57f74a90d952b')
+ version('5.20.3', 'd647d0ea5a7a8194c34759ab9f2610cd')
+ # 5.18.4 fails with gcc-5
+ # https://rt.perl.org/Public/Bug/Display.html?id=123784
+ # version('5.18.4' , '1f9334ff730adc05acd3dd7130d295db')
+
+ # Installing cpanm alongside the core makes it safe and simple for
+ # people/projects to install their own sets of perl modules. Not
+ # having it in core increases the "energy of activation" for doing
+ # things cleanly.
+ variant('cpanm', default=True,
+ description='Optionally install cpanm with the core packages.')
+
+ resource(
+ name="cpanm",
+ url="http://search.cpan.org/CPAN/authors/id/M/MI/MIYAGAWA/App-cpanminus-1.7042.tar.gz",
+ md5="e87f55fbcb3c13a4754500c18e89219f",
+ destination="cpanm",
+ placement="cpanm"
+ )
+
+ def install(self, spec, prefix):
+ configure = Executable('./Configure')
+ configure("-des", "-Dprefix=" + prefix)
+ make()
+ if self.run_tests:
+ make("test")
+ make("install")
+
+ if '+cpanm' in spec:
+ with working_dir(join_path('cpanm', 'cpanm')):
+ perl = Executable(join_path(prefix.bin, 'perl'))
+ perl('Makefile.PL')
+ make()
+ make('install')
diff --git a/var/spack/repos/builtin/packages/pgi/package.py b/var/spack/repos/builtin/packages/pgi/package.py
index 7170c65303..c58d563682 100644
--- a/var/spack/repos/builtin/packages/pgi/package.py
+++ b/var/spack/repos/builtin/packages/pgi/package.py
@@ -41,6 +41,7 @@ class Pgi(Package):
homepage = "http://www.pgroup.com/"
url = "file://%s/pgi-16.3.tar.gz" % os.getcwd()
+ version('16.5', 'a40e8852071b5d600cb42f31631b3de1')
version('16.3', '618cb7ddbc57d4e4ed1f21a0ab25f427')
variant('network', default=True,
diff --git a/var/spack/repos/builtin/packages/pkg-config/g_date_strftime.patch b/var/spack/repos/builtin/packages/pkg-config/g_date_strftime.patch
new file mode 100644
index 0000000000..578cbf4d7c
--- /dev/null
+++ b/var/spack/repos/builtin/packages/pkg-config/g_date_strftime.patch
@@ -0,0 +1,33 @@
+From 00148329967adb196138372771052a3f606a6ea3 Mon Sep 17 00:00:00 2001
+From: coypu <coypu@sdf.org>
+Date: Wed, 2 Mar 2016 19:43:10 +0200
+Subject: [PATCH 2/2] gdate: Suppress string format literal warning
+
+Newer versions of GCC emit an error here, but we know it's safe.
+https://bugzilla.gnome.org/761550
+---
+ glib/glib/gdate.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/glib/glib/gdate.c b/glib/glib/gdate.c
+index 4aece02..92c34d2 100644
+--- a/glib/glib/gdate.c
++++ b/glib/glib/gdate.c
+@@ -2439,6 +2439,9 @@ win32_strftime_helper (const GDate *d,
+ *
+ * Returns: number of characters written to the buffer, or 0 the buffer was too small
+ */
++#pragma GCC diagnostic push
++#pragma GCC diagnostic ignored "-Wformat-nonliteral"
++
+ gsize
+ g_date_strftime (gchar *s,
+ gsize slen,
+@@ -2549,3 +2552,5 @@ g_date_strftime (gchar *s,
+ return retval;
+ #endif
+ }
++
++#pragma GCC diagnostic pop
+--
+2.7.1
diff --git a/var/spack/repos/builtin/packages/pkg-config/package.py b/var/spack/repos/builtin/packages/pkg-config/package.py
index ddbc151767..45e8e8b74e 100644
--- a/var/spack/repos/builtin/packages/pkg-config/package.py
+++ b/var/spack/repos/builtin/packages/pkg-config/package.py
@@ -24,23 +24,29 @@
##############################################################################
from spack import *
+
class PkgConfig(Package):
- """pkg-config is a helper tool used when compiling applications and libraries"""
+ """pkg-config is a helper tool used when compiling applications
+ and libraries"""
+
homepage = "http://www.freedesktop.org/wiki/Software/pkg-config/"
url = "http://pkgconfig.freedesktop.org/releases/pkg-config-0.28.tar.gz"
- version('0.28', 'aa3c86e67551adc3ac865160e34a2a0d')
+ version('0.29.1', 'f739a28cae4e0ca291f82d1d41ef107d')
+ version('0.28', 'aa3c86e67551adc3ac865160e34a2a0d')
parallel = False
+ # The following patch is needed for gcc-6.1
+ patch('g_date_strftime.patch')
+
def install(self, spec, prefix):
- configure("--prefix=%s" %prefix,
- "--enable-shared",
- "--with-internal-glib") # There's a bootstrapping problem here;
- # glib uses pkg-config as well, so
- # break the cycle by using the internal
- # glib.
+ configure("--prefix={0}".format(prefix),
+ "--enable-shared",
+ # There's a bootstrapping problem here;
+ # glib uses pkg-config as well, so break
+ # the cycle by using the internal glib.
+ "--with-internal-glib")
make()
make("install")
-
diff --git a/var/spack/repos/builtin/packages/plumed/package.py b/var/spack/repos/builtin/packages/plumed/package.py
new file mode 100644
index 0000000000..32571455eb
--- /dev/null
+++ b/var/spack/repos/builtin/packages/plumed/package.py
@@ -0,0 +1,84 @@
+##############################################################################
+# 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 Plumed(Package):
+ """PLUMED is an open source library for free energy calculations in
+ molecular systems which works together with some of the most popular
+ molecular dynamics engines.
+
+ Free energy calculations can be performed as a function of many order
+ parameters with a particular focus on biological problems, using state
+ of the art methods such as metadynamics, umbrella sampling and
+ Jarzynski-equation based steered MD.
+
+ The software, written in C++, can be easily interfaced with both fortran
+ and C/C++ codes.
+ """
+ homepage = 'http://www.plumed.org/'
+ url = 'https://github.com/plumed/plumed2/archive/v2.2.3.tar.gz'
+
+ version('2.2.3', 'a6e3863e40aac07eb8cf739cbd14ecf8')
+
+ variant('shared', default=True, description='Builds shared libraries')
+ variant('mpi', default=True, description='Activates MPI support')
+ variant('gsl', default=True, description='Activates GSL support')
+
+ depends_on('zlib')
+ depends_on('blas')
+ depends_on('lapack')
+
+ depends_on('mpi', when='+mpi')
+ depends_on('gsl', when='+gsl')
+
+ def setup_dependent_package(self, module, ext_spec):
+ # Make plumed visible from dependent packages
+ module.plumed = Executable(join_path(self.spec.prefix.bin, 'plumed'))
+
+ def install(self, spec, prefix):
+ # 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
+ # completely ignored here. In case you work on a machine where CXX is
+ # set to a serial compiler and MPICXX to a MPI compiler, to compile
+ # with MPI you should use:
+ #
+ # > ./configure CXX="$MPICXX"
+ configure_opts = [
+ 'CXX={0}'.format(spec['mpi'].mpicxx)
+ ] if '+mpi' in self.spec else []
+
+ configure_opts.extend([
+ '--prefix={0}'.format(prefix),
+ '--enable-shared={0}'.format('yes' if '+shared' in spec else 'no'), # NOQA: ignore=E501
+ '--enable-mpi={0}'.format('yes' if '+mpi' in spec else 'no'),
+ '--enable-gsl={0}'.format('yes' if '+gsl' in spec else 'no')
+ ])
+
+ configure(*configure_opts)
+ make()
+ make('install')
diff --git a/var/spack/repos/builtin/packages/py-h5py/package.py b/var/spack/repos/builtin/packages/py-h5py/package.py
index f96cb9b4cd..90a67c51bd 100644
--- a/var/spack/repos/builtin/packages/py-h5py/package.py
+++ b/var/spack/repos/builtin/packages/py-h5py/package.py
@@ -43,6 +43,7 @@ class PyH5py(Package):
# Build dependencies
depends_on('py-cython@0.19:', type='build')
depends_on('pkg-config', type='build')
+ depends_on('py-setuptools', type='build')
depends_on('hdf5@1.8.4:')
depends_on('hdf5+mpi', when='+mpi')
depends_on('mpi', when='+mpi')
diff --git a/var/spack/repos/builtin/packages/py-meep/package.py b/var/spack/repos/builtin/packages/py-meep/package.py
new file mode 100644
index 0000000000..269ac55c67
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-meep/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 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 PyMeep(Package):
+ """Python-meep is a wrapper around libmeep. It allows the scripting of
+ Meep-simulations with Python"""
+
+ homepage = "https://launchpad.net/python-meep"
+ url = "https://launchpad.net/python-meep/1.4/1.4/+download/python-meep-1.4.2.tar"
+
+ version('1.4.2', 'f8913542d18b0dda92ebc64f0a10ce56')
+
+ variant('mpi', default=True, description='Enable MPI support')
+
+ extends('python')
+ depends_on('py-numpy', type=nolink)
+ depends_on('py-scipy', type=nolink)
+ depends_on('py-matplotlib', type=nolink)
+
+ depends_on('mpi', when='+mpi')
+ depends_on('meep~mpi', when='~mpi')
+ depends_on('meep+mpi', when='+mpi')
+
+ # As of SWIG 3.0.3, Python-style comments are now treated as
+ # pre-processor directives. Use older SWIG. But not too old,
+ # or else it can't handle newer C++ compilers and flags.
+ depends_on('swig@1.3.39:3.0.2')
+
+ def install(self, spec, prefix):
+ setup = 'setup-mpi.py' if '+mpi' in spec else 'setup.py'
+
+ include_dirs = [
+ spec['meep'].prefix.include,
+ spec['py-numpy'].include
+ ]
+
+ library_dirs = [
+ spec['meep'].prefix.lib
+ ]
+
+ if '+mpi' in spec:
+ include_dirs.append(spec['mpi'].prefix.include)
+ library_dirs.append(spec['mpi'].prefix.lib)
+
+ include_flags = '-I{0}'.format(','.join(include_dirs))
+ library_flags = '-L{0}'.format(','.join(library_dirs))
+
+ python(setup, 'clean', '--all')
+ python(setup, 'build_ext', include_flags, library_flags)
+ python(setup, 'install', '--prefix={0}'.format(prefix))
+ python(setup, 'bdist', include_flags, library_flags)
diff --git a/var/spack/repos/builtin/packages/py-networkx/package.py b/var/spack/repos/builtin/packages/py-networkx/package.py
index d545717628..79ad420f8f 100644
--- a/var/spack/repos/builtin/packages/py-networkx/package.py
+++ b/var/spack/repos/builtin/packages/py-networkx/package.py
@@ -24,8 +24,10 @@
##############################################################################
from spack import *
+
class PyNetworkx(Package):
- """NetworkX is a Python package for the creation, manipulation, and study of the structure, dynamics, and functions of complex networks."""
+ """NetworkX is a Python package for the creation, manipulation, and study
+ of the structure, dynamics, and functions of complex networks."""
homepage = "http://networkx.github.io/"
url = "https://pypi.python.org/packages/source/n/networkx/networkx-1.11.tar.gz"
@@ -34,6 +36,7 @@ class PyNetworkx(Package):
extends('python')
depends_on('py-decorator', type=nolink)
+ depends_on('py-setuptools', type='build')
def install(self, spec, prefix):
python('setup.py', 'install', '--prefix=%s' % prefix)
diff --git a/var/spack/repos/builtin/packages/py-numpy/package.py b/var/spack/repos/builtin/packages/py-numpy/package.py
index 2febdac658..f800b5e834 100644
--- a/var/spack/repos/builtin/packages/py-numpy/package.py
+++ b/var/spack/repos/builtin/packages/py-numpy/package.py
@@ -23,6 +23,7 @@
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
from spack import *
+import platform
class PyNumpy(Package):
@@ -48,6 +49,18 @@ class PyNumpy(Package):
depends_on('blas', when='+blas')
depends_on('lapack', when='+lapack')
+ def setup_dependent_package(self, module, dep_spec):
+ python_version = self.spec['python'].version.up_to(2)
+ arch = '{0}-{1}'.format(platform.system().lower(), platform.machine())
+
+ self.spec.include = join_path(
+ self.prefix.lib,
+ 'python{0}'.format(python_version),
+ 'site-packages',
+ 'numpy-{0}-py{1}-{2}.egg'.format(
+ self.spec.version, python_version, arch),
+ 'numpy/core/include')
+
def install(self, spec, prefix):
libraries = []
library_dirs = []
diff --git a/var/spack/repos/builtin/packages/py-pytables/package.py b/var/spack/repos/builtin/packages/py-pytables/package.py
index 58ed067b21..f87e74211f 100644
--- a/var/spack/repos/builtin/packages/py-pytables/package.py
+++ b/var/spack/repos/builtin/packages/py-pytables/package.py
@@ -23,10 +23,11 @@
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
from spack import *
-import re
+
class PyPytables(Package):
- """PyTables is a package for managing hierarchical datasets and designed to efficiently and easily cope with extremely large amounts of data."""
+ """PyTables is a package for managing hierarchical datasets and designed to
+ efficiently and easily cope with extremely large amounts of data."""
homepage = "http://www.pytables.org/"
url = "https://github.com/PyTables/PyTables/archive/v.3.2.2.tar.gz"
@@ -37,6 +38,7 @@ class PyPytables(Package):
depends_on('py-numpy', type=nolink)
depends_on('py-numexpr', type=nolink)
depends_on('py-cython', type=nolink)
+ depends_on('py-setuptools', type='build')
def install(self, spec, prefix):
env["HDF5_DIR"] = spec['hdf5'].prefix
diff --git a/var/spack/repos/builtin/packages/py-scikit-image/package.py b/var/spack/repos/builtin/packages/py-scikit-image/package.py
index 26c286e4be..fbeb5c95ca 100644
--- a/var/spack/repos/builtin/packages/py-scikit-image/package.py
+++ b/var/spack/repos/builtin/packages/py-scikit-image/package.py
@@ -42,6 +42,7 @@ class PyScikitImage(Package):
depends_on('py-six', type=nolink)
depends_on('py-scipy', type=nolink)
depends_on('py-matplotlib', type=nolink)
+ depends_on('py-setuptools', type='build')
def install(self, spec, prefix):
python('setup.py', 'install', '--prefix=%s' % prefix)
diff --git a/var/spack/repos/builtin/packages/r-curl/package.py b/var/spack/repos/builtin/packages/r-curl/package.py
index c6e8f22a94..24c0eadb2d 100644
--- a/var/spack/repos/builtin/packages/r-curl/package.py
+++ b/var/spack/repos/builtin/packages/r-curl/package.py
@@ -38,8 +38,9 @@ class RCurl(Package):
homepage = "https://github.com/jeroenooms/curl"
url = "https://cran.r-project.org/src/contrib/curl_0.9.7.tar.gz"
- list_url = "https://cran.r-project.org/src/contrib/Archive/RCurl"
+ list_url = "https://cran.r-project.org/src/contrib/Archive/curl"
+ version('1.0', '93d34926d6071e1fba7e728b482f0dd9')
version('0.9.7', 'a101f7de948cb828fef571c730f39217')
extends('R')
diff --git a/var/spack/repos/builtin/packages/r-jsonlite/package.py b/var/spack/repos/builtin/packages/r-jsonlite/package.py
index 6e231ed345..d1cb4b52c1 100644
--- a/var/spack/repos/builtin/packages/r-jsonlite/package.py
+++ b/var/spack/repos/builtin/packages/r-jsonlite/package.py
@@ -38,9 +38,10 @@ class RJsonlite(Package):
use with dynamic data in systems and applications."""
homepage = "https://github.com/jeroenooms/jsonlite"
- url = "https://cran.r-project.org/src/contrib/jsonlite_0.9.21.tar.gz"
+ url = "https://cran.r-project.org/src/contrib/jsonlite_1.0.tar.gz"
list_url = "https://cran.r-project.org/src/contrib/Archive/jsonlite"
+ version('1.0', 'c8524e086de22ab39b8ac8000220cc87')
version('0.9.21', '4fc382747f88a79ff0718a0d06bed45d')
extends('R')
diff --git a/var/spack/repos/builtin/packages/r-mime/package.py b/var/spack/repos/builtin/packages/r-mime/package.py
index fb079f44c5..5e78889a76 100644
--- a/var/spack/repos/builtin/packages/r-mime/package.py
+++ b/var/spack/repos/builtin/packages/r-mime/package.py
@@ -30,9 +30,10 @@ class RMime(Package):
from /etc/mime.types in UNIX-type systems."""
homepage = "https://github.com/yihui/mime"
- url = "https://cran.r-project.org/src/contrib/mime_0.4.tar.gz"
+ url = "https://cran.r-project.org/src/contrib/mime_0.5.tar.gz"
list_url = "https://cran.r-project.org/src/contrib/Archive/mime"
+ version('0.5', '87e00b6d57b581465c19ae869a723c4d')
version('0.4', '789cb33e41db2206c6fc7c3e9fbc2c02')
extends('R')
diff --git a/var/spack/repos/builtin/packages/r-rcpp/package.py b/var/spack/repos/builtin/packages/r-rcpp/package.py
index 2428f4af3b..94580a8700 100644
--- a/var/spack/repos/builtin/packages/r-rcpp/package.py
+++ b/var/spack/repos/builtin/packages/r-rcpp/package.py
@@ -37,9 +37,10 @@ class RRcpp(Package):
last two."""
homepage = "http://dirk.eddelbuettel.com/code/rcpp.html"
- url = "https://cran.r-project.org/src/contrib/Rcpp_0.12.5.tar.gz"
+ url = "https://cran.r-project.org/src/contrib/Rcpp_0.12.6.tar.gz"
list_url = "https://cran.r-project.org/src/contrib/Archive/Rcpp"
+ version('0.12.6', 'db4280fb0a79cd19be73a662c33b0a8b')
version('0.12.5', 'f03ec05b4e391cc46e7ce330e82ff5e2')
extends('R')
diff --git a/var/spack/repos/builtin/packages/swig/package.py b/var/spack/repos/builtin/packages/swig/package.py
index f552621821..b43246dcee 100644
--- a/var/spack/repos/builtin/packages/swig/package.py
+++ b/var/spack/repos/builtin/packages/swig/package.py
@@ -22,9 +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
##############################################################################
-
from spack import *
+
class Swig(Package):
"""SWIG is an interface compiler that connects programs written in
C and C++ with scripting languages such as Perl, Python, Ruby,
@@ -38,6 +38,7 @@ class Swig(Package):
homepage = "http://www.swig.org"
url = "http://prdownloads.sourceforge.net/swig/swig-3.0.8.tar.gz"
+ version('3.0.10', 'bb4ab8047159469add7d00910e203124')
version('3.0.8', 'c96a1d5ecb13d38604d7e92148c73c97')
version('3.0.2', '62f9b0d010cef36a13a010dc530d0d41')
version('2.0.12', 'c3fb0b2d710cc82ed0154b91e43085a4')
diff --git a/var/spack/repos/builtin/packages/texlive/package.py b/var/spack/repos/builtin/packages/texlive/package.py
new file mode 100644
index 0000000000..d44a6e311e
--- /dev/null
+++ b/var/spack/repos/builtin/packages/texlive/package.py
@@ -0,0 +1,57 @@
+##############################################################################
+# 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 Texlive(Package):
+ """TeX Live is a free software distribution for the TeX typesetting
+ system"""
+
+ homepage = "http://www.tug.org/texlive"
+
+ version('live', 'e671eea7f142c438959493cc42a2a59b', url="http://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz")
+
+ # There does not seem to be a complete list of schemes.
+ # Examples include:
+ # full scheme (everything)
+ # medium scheme (small + more packages and languages)
+ # small scheme (basic + xetex, metapost, a few languages)
+ # basic scheme (plain and latex)
+ # minimal scheme (plain only)
+ # See:
+ # https://www.tug.org/texlive/doc/texlive-en/texlive-en.html#x1-25025r6
+ variant('scheme', default="small",
+ description='Package subset to install (e.g. full, small, basic)')
+
+ depends_on('perl')
+
+ def install(self, spec, prefix):
+ env = os.environ
+ env['TEXLIVE_INSTALL_PREFIX'] = prefix
+ perl = which('perl')
+ scheme = spec.variants['scheme'].value
+ perl('./install-tl', '-scheme', scheme,
+ '-portable', '-profile', '/dev/null')
diff --git a/var/spack/repos/builtin/packages/tree/package.py b/var/spack/repos/builtin/packages/tree/package.py
new file mode 100644
index 0000000000..8e0e176c4c
--- /dev/null
+++ b/var/spack/repos/builtin/packages/tree/package.py
@@ -0,0 +1,46 @@
+##############################################################################
+# 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 Tree(Package):
+ """Tree is a recursive directory listing command that produces a depth
+ indented listing of files, which is colorized ala dircolors if
+ the LS_COLORS environment variable is set and output is to
+ tty. Tree has been ported and reported to work under the
+ following operating systems: Linux, FreeBSD, OS X, Solaris,
+ HP/UX, Cygwin, HP Nonstop and OS/2."""
+
+ homepage = "http://mama.indstate.edu/users/ice/tree/"
+ url = "http://mama.indstate.edu/users/ice/tree/src/tree-1.7.0.tgz"
+
+ version('1.7.0', 'abe3e03e469c542d8e157cdd93f4d8a6')
+
+ def install(self, spec, prefix):
+ filter_file(r'^prefix =.*', 'prefix = %s' % prefix, 'Makefile')
+ filter_file(r'^CFLAGS', '# use spack settings instead... CFLAGS',
+ 'Makefile')
+ make()
+ make('install')
diff --git a/var/spack/repos/builtin/packages/trilinos/package.py b/var/spack/repos/builtin/packages/trilinos/package.py
index 77589bb8f9..4d1d27e74a 100644
--- a/var/spack/repos/builtin/packages/trilinos/package.py
+++ b/var/spack/repos/builtin/packages/trilinos/package.py
@@ -138,16 +138,23 @@ class Trilinos(Package):
'-DTPL_ENABLE_LAPACK=ON',
'-DLAPACK_LIBRARY_NAMES=%s' % to_lib_name(
spec['lapack'].lapack_shared_lib),
- '-DLAPACK_LIBRARY_DIRS=%s' % spec['lapack'].prefix,
+ '-DLAPACK_LIBRARY_DIRS=%s' % spec['lapack'].prefix.lib,
'-DTrilinos_ENABLE_EXPLICIT_INSTANTIATION:BOOL=ON',
'-DTrilinos_ENABLE_CXX11:BOOL=ON',
'-DTPL_ENABLE_Netcdf:BOOL=ON',
'-DTPL_ENABLE_HYPRE:BOOL=%s' % (
- 'ON' if '+hypre' in spec else 'OFF'),
- '-DTPL_ENABLE_HDF5:BOOL=%s' % (
- 'ON' if '+hdf5' in spec else 'OFF'),
+ 'ON' if '+hypre' in spec else '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'])
+
if '+boost' in spec:
options.extend([
'-DTPL_ENABLE_Boost:BOOL=ON',
diff --git a/var/spack/repos/builtin/packages/unison/package.py b/var/spack/repos/builtin/packages/unison/package.py
new file mode 100644
index 0000000000..181e1e6410
--- /dev/null
+++ b/var/spack/repos/builtin/packages/unison/package.py
@@ -0,0 +1,51 @@
+##############################################################################
+# 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 Unison(Package):
+ """Unison is a file-synchronization tool for OSX, Unix, and
+ Windows. It allows two replicas of a collection of files and
+ directories to be stored on different hosts (or different disks
+ on the same host), modified separately, and then brought up to
+ date by propagating the changes in each replica to the
+ other."""
+
+ homepage = "https://www.cis.upenn.edu/~bcpierce/unison/"
+ url = "https://www.seas.upenn.edu/~bcpierce/unison//download/releases/stable/unison-2.48.3.tar.gz"
+
+ version('2.48.4', '5334b78c7e68169df7de95f4c6c4b60f')
+
+ depends_on('ocaml', type='build')
+
+ parallel = False
+
+ def install(self, spec, prefix):
+ make('./mkProjectInfo')
+ make('UISTYLE=text')
+
+ mkdirp(prefix.bin)
+ install('unison', prefix.bin)
+ set_executable(join_path(prefix.bin, 'unison'))