Merge branch 'develop' of https://github.com/LLNL/spack into features/install_with_phases_rebase

Conflicts:
	lib/spack/spack/cmd/setup.py
	lib/spack/spack/package.py
	var/spack/repos/builtin/packages/gmp/package.py
This commit is contained in:
alalazo
2016-10-05 09:33:59 +02:00
211 changed files with 5586 additions and 1230 deletions

View File

@@ -58,7 +58,7 @@ class R(Package):
# Concrete dependencies
depends_on('readline')
depends_on('ncurses')
depends_on('icu')
depends_on('icu4c')
depends_on('glib')
depends_on('zlib')
depends_on('bzip2')

View File

@@ -0,0 +1,29 @@
From 3b21a8a4150962c6938baeceacd04f619cea2fbc Mon Sep 17 00:00:00 2001
From: Norbert Podhorszki <pnorbert@ornl.gov>
Date: Thu, 1 Sep 2016 16:26:23 -0400
Subject: [PATCH] ifdef around 'bool' type. hdf5 1.10 defines bool and breaks
compiling bp2h5.c
---
utils/bp2h5/bp2h5.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/utils/bp2h5/bp2h5.c b/utils/bp2h5/bp2h5.c
index 9c500c7..fa746bd 100644
--- a/utils/bp2h5/bp2h5.c
+++ b/utils/bp2h5/bp2h5.c
@@ -43,9 +43,11 @@
#include "dmalloc.h"
#endif
-typedef int bool;
-#define false 0
-#define true 1
+#ifndef bool
+ typedef int bool;
+# define false 0
+# define true 1
+#endif
bool noindex = false; // do no print array indices with data
bool printByteAsChar = false; // print 8 bit integer arrays as string

View File

@@ -36,6 +36,8 @@ class Adios(Package):
homepage = "http://www.olcf.ornl.gov/center-projects/adios/"
url = "https://github.com/ornladios/ADIOS/archive/v1.10.0.tar.gz"
version('develop', git='https://github.com/ornladios/ADIOS.git',
branch='master')
version('1.10.0', 'eff450a4c0130479417cfd63186957f3')
version('1.9.0', '310ff02388bbaa2b1c1710ee970b5678')
@@ -48,14 +50,14 @@ class Adios(Package):
variant('mpi', default=True, description='Enable MPI support')
variant('infiniband', default=False, description='Enable infiniband support')
# transforms
variant('zlib', default=True, description='Enable szip transform support')
variant('szip', default=False, description='Enable szip transform support')
variant('hdf5', default=False, description='Enable HDF5 transport support')
variant('netcdf', default=False, description='Enable NetCDF transport support')
# transports and serial file converters
variant('hdf5', default=False, description='Enable parallel HDF5 transport and serial bp2h5 converter')
# Lots of setting up here for this package
# module swap PrgEnv-intel PrgEnv-$COMP
# module load cray-netcdf/4.3.3.1
# module load cray-hdf5/1.8.14
# module load python/2.7.10
@@ -69,9 +71,13 @@ class Adios(Package):
# optional transformations
depends_on('zlib', when='+zlib')
depends_on('szip', when='+szip')
# optional transports
depends_on('hdf5', when='+hdf5')
depends_on('netcdf', when='+netcdf')
# optional transports & file converters
depends_on('hdf5@1.8:+mpi', when='+hdf5')
# Fix ADIOS <=1.10.0 compile error on HDF5 1.10+
# https://github.com/ornladios/ADIOS/commit/3b21a8a41509
# https://github.com/LLNL/spack/issues/1683
patch('adios_1100.patch', when='@:1.10.0^hdf5@1.10:')
def validate(self, spec):
"""
@@ -114,9 +120,7 @@ def install(self, spec, prefix):
if '+szip' in spec:
extra_args.append('--with-szip=%s' % spec['szip'].prefix)
if '+hdf5' in spec:
extra_args.append('--with-hdf5=%s' % spec['hdf5'].prefix)
if '+netcdf' in spec:
extra_args.append('--with-netcdf=%s' % spec['netcdf'].prefix)
extra_args.append('--with-phdf5=%s' % spec['hdf5'].prefix)
sh = which('sh')
sh('./autogen.sh')

View File

@@ -46,18 +46,20 @@ class Armadillo(Package):
depends_on('hdf5', when='+hdf5')
def install(self, spec, prefix):
arpack = find_libraries(['libarpack'], root=spec[
'arpack-ng'].prefix.lib, shared=True)
superlu = find_libraries(['libsuperlu'], root=spec[
'superlu'].prefix, shared=False, recurse=True)
cmake_args = [
# ARPACK support
'-DARPACK_LIBRARY={0}/libarpack.{1}'.format(
spec['arpack-ng'].prefix.lib, dso_suffix),
'-DARPACK_LIBRARY={0}'.format(arpack.joined()),
# BLAS support
'-DBLAS_LIBRARY={0}'.format(spec['blas'].blas_shared_lib),
'-DBLAS_LIBRARY={0}'.format(spec['blas'].blas_libs.joined()),
# LAPACK support
'-DLAPACK_LIBRARY={0}'.format(spec['lapack'].lapack_shared_lib),
'-DLAPACK_LIBRARY={0}'.format(spec['lapack'].lapack_libs.joined()),
# SuperLU support
'-DSuperLU_INCLUDE_DIR={0}'.format(spec['superlu'].prefix.include),
'-DSuperLU_LIBRARY={0}/libsuperlu.a'.format(
spec['superlu'].prefix.lib64),
'-DSuperLU_LIBRARY={0}'.format(superlu.joined()),
# HDF5 support
'-DDETECT_HDF5={0}'.format('ON' if '+hdf5' in spec else 'OFF')
]

View File

@@ -88,17 +88,16 @@ def install(self, spec, prefix):
options.append('-DCMAKE_INSTALL_NAME_DIR:PATH=%s/lib' % prefix)
# Make sure we use Spack's blas/lapack:
lapack_libs = spec['lapack'].lapack_libs.joined(';')
blas_libs = spec['blas'].blas_libs.joined(';')
options.extend([
'-DLAPACK_FOUND=true',
'-DLAPACK_INCLUDE_DIRS=%s' % spec['lapack'].prefix.include,
'-DLAPACK_LIBRARIES=%s' % (
spec['lapack'].lapack_shared_lib if '+shared' in spec else
spec['lapack'].lapack_static_lib),
'-DLAPACK_INCLUDE_DIRS={0}'.format(spec['lapack'].prefix.include),
'-DLAPACK_LIBRARIES={0}'.format(lapack_libs),
'-DBLAS_FOUND=true',
'-DBLAS_INCLUDE_DIRS=%s' % spec['blas'].prefix.include,
'-DBLAS_LIBRARIES=%s' % (
spec['blas'].blas_shared_lib if '+shared' in spec else
spec['blas'].blas_static_lib)
'-DBLAS_INCLUDE_DIRS={0}'.format(spec['blas'].prefix.include),
'-DBLAS_LIBRARIES={0}'.format(blas_libs)
])
if '+mpi' in spec:
@@ -129,19 +128,12 @@ def install(self, spec, prefix):
'F77=%s' % spec['mpi'].mpif77
])
if '+shared' in spec:
options.extend([
'--with-blas=%s' % to_link_flags(
spec['blas'].blas_shared_lib),
'--with-lapack=%s' % to_link_flags(
spec['lapack'].lapack_shared_lib)
])
else:
options.extend([
'--with-blas=%s' % spec['blas'].blas_static_lib,
'--with-lapack=%s' % spec['lapack'].lapack_static_lib,
'--enable-shared=no'
])
options.extend([
'--with-blas={0}'.format(spec['blas'].blas_libs.ld_flags),
'--with-lapack={0}'.format(spec['lapack'].lapack_libs.ld_flags)
])
if '+shared' not in spec:
options.append('--enable-shared=no')
bootstrap()
configure(*options)

View File

@@ -51,6 +51,7 @@ class Atlas(Package):
url='http://sourceforge.net/projects/math-atlas/files/Developer%20%28unstable%29/3.11.34/atlas3.11.34.tar.bz2')
variant('shared', default=True, description='Builds shared library')
variant('pthread', default=False, description='Use multithreaded libraries')
provides('blas')
provides('lapack')
@@ -107,18 +108,32 @@ def install(self, spec, prefix):
make("install")
self.install_test()
def setup_dependent_package(self, module, dspec):
@property
def blas_libs(self):
# libsatlas.[so,dylib,dll ] contains all serial APIs (serial lapack,
# serial BLAS), and all ATLAS symbols needed to support them. Whereas
# libtatlas.[so,dylib,dll ] is parallel (multithreaded) version.
name = 'libsatlas.%s' % dso_suffix
libdir = find_library_path(name,
self.prefix.lib64,
self.prefix.lib)
is_threaded = '+pthread' in self.spec
if '+shared' in self.spec:
self.spec.blas_shared_lib = join_path(libdir, name)
self.spec.lapack_shared_lib = self.spec.blas_shared_lib
to_find = ['libtatlas'] if is_threaded else ['libsatlas']
shared = True
else:
interfaces = [
'libptcblas',
'libptf77blas'
] if is_threaded else [
'libcblas',
'libf77blas'
]
to_find = ['liblapack'] + interfaces + ['libatlas']
shared = False
return find_libraries(
to_find, root=self.prefix, shared=shared, recurse=True
)
@property
def lapack_libs(self):
return self.blas_libs
def install_test(self):
source_file = join_path(os.path.dirname(self.module.__file__),
@@ -126,9 +141,8 @@ def install_test(self):
blessed_file = join_path(os.path.dirname(self.module.__file__),
'test_cblas_dgemm.output')
include_flags = ["-I%s" % join_path(self.spec.prefix, "include")]
link_flags = ["-L%s" % join_path(self.spec.prefix, "lib"),
"-lsatlas"]
include_flags = ["-I%s" % self.spec.prefix.include]
link_flags = self.lapack_libs.ld_flags.split()
output = compile_c_and_execute(source_file, include_flags, link_flags)
compare_output_file(output, blessed_file)

View File

@@ -0,0 +1,45 @@
##############################################################################
# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://github.com/llnl/spack
# Please also see the LICENSE file for our notice and the LGPL.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License (as
# published by the Free Software Foundation) version 2.1, February 1999.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
# conditions of the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
from spack import *
class Bamtools(Package):
"""C++ API & command-line toolkit for working with BAM data."""
homepage = "https://github.com/pezmaster31/bamtools"
url = "https://github.com/pezmaster31/bamtools/archive/v2.4.0.tar.gz"
version('2.4.0', '6139d00c1b1fe88fe15d094d8a74d8b9')
version('2.3.0', 'd327df4ba037d6eb8beef65d7da75ebc')
version('2.2.3', '6eccd3e45e4ba12a68daa3298998e76d')
depends_on('cmake', type='build')
def install(self, spec, prefix):
with working_dir('spack-build', create=True):
cmake('..', *std_cmake_args)
make()
make('install')

View File

@@ -0,0 +1,64 @@
##############################################################################
# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://github.com/llnl/spack
# Please also see the LICENSE file for our notice and the LGPL.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License (as
# published by the Free Software Foundation) version 2.1, February 1999.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
# conditions of the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
from spack import *
class BashCompletion(Package):
"""Programmable completion functions for bash."""
homepage = "https://github.com/scop/bash-completion"
url = "https://github.com/scop/bash-completion/archive/2.3.tar.gz"
version('2.3', '67e50f5f3c804350b43f2b664c33dde811d24292')
version('develop', git='https://github.com/scop/bash-completion.git')
# Build dependencies
depends_on('automake', type='build')
depends_on('autoconf', type='build')
depends_on('libtool', type='build')
# Other dependencies
depends_on('bash@4.1:', type='run')
def install(self, spec, prefix):
make_args = ['--prefix=%s' % prefix]
autoreconf('-i')
configure(*make_args)
make()
# make("check") # optional, requires dejagnu and tcllib
make("install",
parallel=False)
# Guidelines for individual user as provided by the author at
# https://github.com/scop/bash-completion
print('=====================================================')
print('Bash completion has been installed. To use it, please')
print('include the following lines in your ~/.bash_profile :')
print('')
print('# Use bash-completion, if available')
print('[[ $PS1 && -f %s/share/bash-completion/bash_completion ]] && \ ' % prefix) # NOQA: ignore=E501
print(' . %s/share/bash-completion/bash_completion' % prefix)
print('')
print('=====================================================')

View File

@@ -0,0 +1,43 @@
##############################################################################
# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://github.com/llnl/spack
# Please also see the LICENSE file for our notice and the LGPL.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License (as
# published by the Free Software Foundation) version 2.1, February 1999.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
# conditions of the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
from spack import *
class Bedtools2(Package):
"""Collectively, the bedtools utilities are a swiss-army knife of
tools for a wide-range of genomics analysis tasks. The most
widely-used tools enable genome arithmetic: that is, set theory
on the genome."""
homepage = "https://github.com/arq5x/bedtools2"
url = "https://github.com/arq5x/bedtools2/archive/v2.26.0.tar.gz"
version('2.26.0', '52227e7efa6627f0f95d7d734973233d')
version('2.25.0', '534fb4a7bf0d0c3f05be52a0160d8e3d')
depends_on('zlib')
def install(self, spec, prefix):
make("prefix=%s" % prefix, "install")

View File

@@ -31,9 +31,9 @@ class Binutils(Package):
homepage = "http://www.gnu.org/software/binutils/"
url = "https://ftp.gnu.org/gnu/binutils/binutils-2.25.tar.bz2"
# 2.26 is incompatible with py-pillow build for some reason.
version('2.27', '2869c9bf3e60ee97c74ac2a6bf4e9d68')
version('2.26', '64146a0faa3b411ba774f47d41de239f')
version('2.25', 'd9f3303f802a5b6b0bb73a335ab89d66', preferred=True)
version('2.25', 'd9f3303f802a5b6b0bb73a335ab89d66')
version('2.24', 'e0f71a7b2ddab0f8612336ac81d9636b')
version('2.23.2', '4f8fa651e35ef262edc01d60fb45702e')
version('2.20.1', '2b9dc8f2b7dbd5ec5992c6e29de0b764')

View File

@@ -41,6 +41,7 @@ class Boost(Package):
list_url = "http://sourceforge.net/projects/boost/files/boost/"
list_depth = 2
version('1.62.0', '5fb94629535c19e48703bdb2b2e9490f')
version('1.61.0', '6095876341956f65f9d35939ccea1a9f')
version('1.60.0', '65a840e1a0b13a558ff19eeb2c4f0cbe')
version('1.59.0', '6aa9a5c6a4ca1016edd0ed1178e3cb87')
@@ -111,12 +112,12 @@ class Boost(Package):
description="Build multi-threaded versions of libraries")
variant('singlethreaded', default=True,
description="Build single-threaded versions of libraries")
variant('icu_support', default=False,
description="Include ICU support (for regex/locale libraries)")
variant('icu', default=False,
description="Build with Unicode and ICU suport")
variant('graph', default=False,
description="Build the Boost Graph library")
depends_on('icu', when='+icu_support')
depends_on('icu4c', when='+icu')
depends_on('python', when='+python')
depends_on('mpi', when='+mpi')
depends_on('bzip2', when='+iostreams')
@@ -138,15 +139,13 @@ def url_for_version(self, version):
def determine_toolset(self, spec):
if spec.satisfies("platform=darwin"):
return 'darwin'
else:
platform = 'linux'
toolsets = {'g++': 'gcc',
'icpc': 'intel',
'clang++': 'clang'}
if spec.satisfies('@1.47:'):
toolsets['icpc'] += '-' + platform
toolsets['icpc'] += '-linux'
for cc, toolset in toolsets.iteritems():
if cc in self.compiler.cxx_names:
return toolset
@@ -164,6 +163,16 @@ def determine_bootstrap_options(self, spec, withLibs, options):
join_path(spec['python'].prefix.bin, 'python'))
with open('user-config.jam', 'w') as f:
# Boost may end up using gcc even though clang+gfortran is set in
# compilers.yaml. Make sure this does not happen:
if not spec.satisfies('%intel'):
# using intel-linux : : spack_cxx in user-config.jam leads to
# error: at project-config.jam:12
# error: duplicate initialization of intel-linux with the following parameters: # noqa
# error: version = <unspecified>
# error: previous initialization at ./user-config.jam:1
f.write("using {0} : : {1} ;\n".format(boostToolsetId,
spack_cxx))
if '+mpi' in spec:
f.write('using mpi : %s ;\n' %
@@ -204,7 +213,13 @@ def determine_b2_options(self, spec, options):
options.extend([
'link=%s' % ','.join(linkTypes),
'--layout=tagged'])
'--layout=tagged'
])
if not spec.satisfies('%intel'):
options.extend([
'toolset=%s' % self.determine_toolset(spec)
])
return threadingOpts

View File

@@ -34,7 +34,6 @@ class BppSuite(Package):
version('2.2.0', 'd8b29ad7ccf5bd3a7beb701350c9e2a4')
# FIXME: Add dependencies if required.
depends_on('cmake', type='build')
depends_on('texinfo', type='build')
depends_on('bpp-core')

View File

@@ -85,8 +85,9 @@ def install(self, spec, prefix):
# BLAS/LAPACK support
if '+lapack' in spec:
lapack_blas = spec['lapack'].lapack_libs + spec['blas'].blas_libs
options.extend([
'blas_lapack_libs=lapack,blas',
'blas_lapack_libs={0}'.format(','.join(lapack_blas.names)),
'blas_lapack_dir={0}'.format(spec['lapack'].prefix.lib)
])

View File

@@ -30,17 +30,88 @@ class Cdo(Package):
Climate and NWP model Data. """
homepage = "https://code.zmaw.de/projects/cdo"
url = "https://code.zmaw.de/attachments/download/10198/cdo-1.6.9.tar.gz"
version('1.6.9', 'bf0997bf20e812f35e10188a930e24e2')
version('1.7.2', 'f08e4ce8739a4f2b63fc81a24db3ee31', url='https://code.zmaw.de/attachments/download/12760/cdo-1.7.2.tar.gz')
version('1.6.9', 'bf0997bf20e812f35e10188a930e24e2', url='https://code.zmaw.de/attachments/download/10198/cdo-1.6.9.tar.gz')
variant('mpi', default=True)
variant('szip', default=True, description='Enable szip compression for GRIB1')
variant('hdf5', default=False, description='Enable HDF5 support')
variant('netcdf', default=True, description='Enable NetCDF support')
variant('udunits2', default=True, description='Enable UDUNITS2 support')
variant('grib', default=True, description='Enable GRIB_API support')
variant('libxml2', default=True, description='Enable libxml2 support')
variant('proj', default=True, description='Enable PROJ library for cartographic projections')
variant('curl', default=True, description='Enable curl support')
variant('fftw', default=True, description='Enable support for fftw3')
variant('magics', default=True, description='Enable Magics library support')
depends_on('netcdf')
depends_on('netcdf+mpi', when='+mpi')
depends_on('netcdf~mpi', when='~mpi')
depends_on('szip', when='+szip')
depends_on('netcdf', when='+netcdf')
depends_on('hdf5+threadsafe', when='+hdf5')
depends_on('udunits2', when='+udunits2')
depends_on('grib-api', when='+grib')
depends_on('libxml2', when='+libxml2')
depends_on('proj', when='+proj')
depends_on('curl', when='+curl')
depends_on('fftw', when='+fftw')
depends_on('magics', when='+magics')
def install(self, spec, prefix):
configure('--prefix={0}'.format(prefix))
config_args = ["--prefix=" + prefix,
"--enable-shared",
"--enable-static"]
if '+szip' in spec:
config_args.append('--with-szlib=' + spec['szip'].prefix)
else:
config_args.append('--without-szlib')
if '+hdf5' in spec:
config_args.append('--with-hdf5=' + spec['hdf5'].prefix)
else:
config_args.append('--without-hdf5')
if '+netcdf' in spec:
config_args.append('--with-netcdf=' + spec['netcdf'].prefix)
else:
config_args.append('--without-netcdf')
if '+udunits2' in spec:
config_args.append('--with-udunits2=' + spec['udunits2'].prefix)
else:
config_args.append('--without-udunits2')
if '+grib' in spec:
config_args.append('--with-grib_api=' + spec['grib-api'].prefix)
else:
config_args.append('--without-grib_api')
if '+libxml2' in spec:
config_args.append('--with-libxml2=' + spec['libxml2'].prefix)
else:
config_args.append('--without-libxml2')
if '+proj' in spec:
config_args.append('--with-proj=' + spec['proj'].prefix)
else:
config_args.append('--without-proj')
if '+curl' in spec:
config_args.append('--with-curl=' + spec['curl'].prefix)
else:
config_args.append('--without-curl')
if '+fftw' in spec:
config_args.append('--with-fftw3')
else:
config_args.append('--without-fftw3')
if '+magics' in spec:
config_args.append('--with-magics=' + spec['magics'].prefix)
else:
config_args.append('--without-magics')
configure(*config_args)
make()
make('install')

View File

@@ -39,6 +39,7 @@ class Cereal(Package):
homepage = "http://uscilab.github.io/cereal/"
url = "https://github.com/USCiLab/cereal/archive/v1.1.2.tar.gz"
version('1.2.1', '64476ed74c19068ee543b53ad3992261')
version('1.2.0', 'e372c9814696481dbdb7d500e1410d2b')
version('1.1.2', '34d4ad174acbff005c36d4d10e48cbb9')
version('1.1.1', '0ceff308c38f37d5b5f6df3927451c27')

View File

@@ -22,44 +22,57 @@
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
from spack import *
class Cgal(Package):
"""CGAL is a software project that provides easy access to efficient and
reliable geometric algorithms in the form of a C++ library. CGAL
is used in various areas needing geometric computation, such as
geographic information systems, computer aided design, molecular
biology, medical imaging, computer graphics, and robotics.
"""The Computational Geometry Algorithms Library (CGAL) is a C++ library
that aims to provide easy access to efficient and reliable algorithms in
computational geometry. CGAL is used in various areas needing geometric
computation, such as geographic information systems, computer aided design,
molecular biology, medical imaging, computer graphics, and robotics.
"""
homepage = 'http://www.cgal.org/'
url = 'https://github.com/CGAL/cgal/archive/releases/CGAL-4.7.tar.gz'
version('4.9', '7b628db3e5614347f776c046b7666089')
version('4.7', '4826714810f3b4c65cac96b90fb03b67')
version('4.6.3', 'e8ee2ecc8d2b09b94a121c09257b576d')
# Installation instructions :
# http://doc.cgal.org/latest/Manual/installation.html
variant('shared', default=True,
description='Enables the build of shared libraries')
variant('debug', default=False,
description='Builds a debug version of the libraries')
# Essential Third Party Libraries
depends_on('boost')
depends_on('mpfr')
depends_on('gmp')
depends_on('mpfr')
depends_on('zlib')
# depends_on('opengl')
depends_on('qt@5:')
# Optional Third Party Libraries
# depends_on('leda')
# depends_on('mpfi')
# depends_on('rs')
# depends_on('rs3')
# depends_on('ntl')
# depends_on('eigen')
# depends_on('libqglviewer')
# depends_on('esbtl')
# depends_on('intel-tbb')
# Build dependencies
depends_on('cmake', type='build')
# FIXME : Qt5 dependency missing (needs Qt5 and OpenGL)
# FIXME : Optional third party libraries missing
def install(self, spec, prefix):
# Installation instructions:
# http://doc.cgal.org/latest/Manual/installation.html
options = []
options.extend(std_cmake_args)
# CGAL supports only Release and Debug build type. Any other build type
# will raise an error at configure time
if '+debug' in spec:
@@ -72,9 +85,7 @@ def install(self, spec, prefix):
else:
options.append('-DBUILD_SHARED_LIBS:BOOL=OFF')
build_directory = join_path(self.stage.path, 'spack-build')
source_directory = self.stage.source_path
with working_dir(build_directory, create=True):
cmake(source_directory, *options)
make()
make("install")
cmake('.', *options)
make()
make('install')

View File

@@ -0,0 +1,19 @@
--- old/src/scripts/configure
+++ new/src/scripts/configure
@@ -3293,10 +3293,16 @@
test_link "whether -lmpi" "ok" "no" "-lmpi"
if test $pass -eq 1
then
add_flag CMK_SYSLIBS='"$CMK_SYSLIBS -lmpi"' "mpi lib"
else
+ test_link "whether -lmpi -lmpi_cxx" "ok" "no" "-lmpi -lmpi_cxx"
+ if test $pass -eq 1
+ then
+ add_flag CMK_SYSLIBS='"$CMK_SYSLIBS -lmpi -lmpi_cxx"' "mpi lib"
+ else
echo "Error: can not find mpi library"
test_finish 1
+ fi
fi
fi
else

View File

@@ -0,0 +1,172 @@
##############################################################################
# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://github.com/llnl/spack
# Please also see the LICENSE file for our notice and the LGPL.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License (as
# published by the Free Software Foundation) version 2.1, February 1999.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
# conditions of the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
import platform
import shutil
import sys
from spack import *
class Charm(Package):
"""Charm++ is a parallel programming framework in C++ supported by
an adaptive runtime system, which enhances user productivity and
allows programs to run portably from small multicore computers
(your laptop) to the largest supercomputers."""
homepage = "http://charmplusplus.org"
url = "http://charm.cs.illinois.edu/distrib/charm-6.7.1.tar.gz"
version("6.7.1", "a8e20cf85e9c8721158f5bbd0ade48d9")
version("6.7.0", "35a39a7975f1954a7db2d76736158231")
version("6.6.1", "9554230f741e2599deaaac4d9d93d7ab")
version("6.6.0", "31e95901b3f7324d52107e6ad000fcc8")
version("6.5.1", "034d99458474a3ab96d8bede8a691a5d")
# Support OpenMPI; see
# <https://charm.cs.illinois.edu/redmine/issues/1206>
patch("mpi.patch")
# Communication mechanisms (choose exactly one)
# TODO: Support Blue Gene/Q PAMI, Cray GNI, Cray shmem, CUDA
variant("mpi", default=False,
description="Use MPI as communication mechanism")
variant("multicore", default=False,
description="Disable inter-node communication")
variant("net", default=False,
description="Use net communication mechanism")
variant("netlrts", default=True,
description="Use netlrts communication mechanism")
variant("verbs", default=False,
description="Use Infiniband as communication mechanism")
# Other options
# Something is off with PAPI -- there are build errors. Maybe
# Charm++ expects a particular version?
variant("papi", default=False, description="Enable PAPI integration")
variant("smp", default=True,
description=(
"Enable SMP parallelism (does not work with +multicore)"))
variant("tcp", default=False,
description="Use TCP as transport mechanism (requires +net)")
# Note: We could add variants for AMPI, LIBS, bigemulator, msa, Tau
# Note: We could support shared libraries
depends_on("mpi", when="+mpi")
depends_on("papi", when="+papi")
def install(self, spec, prefix):
target = "charm++"
# Note: Turn this into a multi-valued variant, once these
# exist in Spack
if sum(["+mpi" in spec,
"+multicore" in spec,
"+net" in spec,
"+netlrts" in spec,
"+verbs" in spec]) != 1:
raise InstallError(
"Exactly one communication mechanism "
"(+mpi, +multicore, +net, +netlrts, or +verbs) "
"must be enabled")
if "+mpi" in spec:
comm = "mpi"
if "+multicore" in spec:
comm = "multicore"
if "+net" in spec:
comm = "net"
if "+netlrts" in spec:
comm = "netlrts"
if "+verbs" in spec:
comm = "verbs"
plat = sys.platform
if plat.startswith("linux"):
plat = "linux"
mach = platform.machine()
# Define Charm++ version names for various (plat, mach, comm)
# combinations. Note that not all combinations are supported.
versions = {
("darwin", "i386", "multicore"): "multicore-darwin-x86",
("darwin", "i386", "net"): "net-darwin-x86",
("darwin", "x86_64", "mpi"): "mpi-darwin-x86_64",
("darwin", "x86_64", "multicore"): "multicore-darwin-x86_64",
("darwin", "x86_64", "net"): "net-darwin-x86_64",
("darwin", "x86_64", "netlrts"): "netlrts-darwin-x86_64",
("linux", "i386", "mpi"): "mpi-linux",
("linux", "i386", "multicore"): "multicore-linux32",
("linux", "i386", "net"): "net-linux",
("linux", "i386", "netlrts"): "netlrts-linux",
("linux", "x86_64", "mpi"): "mpi-linux-x86_64",
("linux", "x86_64", "multicore"): "multicore-linux64",
("linux", "x86_64", "net"): "net-linux-x86_64",
("linux", "x86_64", "netlrts"): "netlrts-linux-x86_64",
("linux", "x86_64", "verbs"): "verbs-linux-x86_64",
}
if (plat, mach, comm) not in versions:
raise InstallError(
"The communication mechanism %s is not supported "
"on a %s platform with a %s CPU" %
(comm, plat, mach))
version = versions[(plat, mach, comm)]
# We assume that Spack's compiler wrappers make this work. If
# not, then we need to query the compiler vendor from Spack
# here.
compiler = "gcc"
options = [compiler,
"--with-production", # Note: turn this into a variant
"-j%d" % make_jobs,
"--destination=%s" % prefix]
if "+mpi" in spec:
options.append("--basedir=%s" % spec["mpi"].prefix)
if "+papi" in spec:
options.extend(["papi", "--basedir=%s" % spec["papi"].prefix])
if "+smp" in spec:
if "+multicore" in spec:
# This is a Charm++ limitation; it would lead to a
# build error
raise InstallError("Cannot combine +smp with +multicore")
options.append("smp")
if "+tcp" in spec:
if "+net" not in spec:
# This is a Charm++ limitation; it would lead to a
# build error
raise InstallError(
"The +tcp variant requires "
"the +net communication mechanism")
options.append("tcp")
# Call "make" via the build script
# Note: This builds Charm++ in the "tmp" subdirectory of the
# install directory. Maybe we could set up a symbolic link
# back to the build tree to prevent this? Alternatively, we
# could dissect the build script; the build instructions say
# this wouldn't be difficult.
build = Executable(join_path(".", "build"))
build(target, version, *options)
shutil.rmtree(join_path(prefix, "tmp"))

View File

@@ -0,0 +1,11 @@
--- CLHEP/CMakeLists.txt 2016-06-20 14:41:12.000000000 -0500
+++ CLHEP/CMakeLists.txt 2016-06-20 14:40:57.000000000 -0500
@@ -37,7 +37,7 @@
# If Policy CMP0042 exists, use OLD to prefer the use of install names
# instead of the new @rpath default.
if(POLICY CMP0042)
- cmake_policy(SET CMP0042 NEW)
+ cmake_policy(SET CMP0042 OLD)
endif()
set(CMAKE_MODULE_PATH

View File

@@ -0,0 +1,81 @@
##############################################################################
# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://github.com/llnl/spack
# Please also see the LICENSE file for our notice and the LGPL.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License (as
# published by the Free Software Foundation) version 2.1, February 1999.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
# conditions of the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
from spack import *
class Clhep(Package):
"""CLHEP is a C++ Class Library for High Energy Physics. """
homepage = "http://proj-clhep.web.cern.ch/proj-clhep/"
url = "http://proj-clhep.web.cern.ch/proj-clhep/DISTRIBUTION/tarFiles/clhep-2.2.0.5.tgz"
list_url = "https://proj-clhep.web.cern.ch/proj-clhep/DISTRIBUTION/"
version('2.3.2.2', '567b304b0fa017e1e9fbf199f456ebe9')
version('2.3.1.1', '16efca7641bc118c9d217cc96fe90bf5')
version('2.3.1.0', 'b084934fc26a4182a08c09c292e19161')
version('2.3.0.0', 'a00399a2ca867f2be902c22fc71d7e2e')
version('2.2.0.8', '5a23ed3af785ac100a25f6cb791846af')
version('2.2.0.5', '1584e8ce6ebf395821aed377df315c7c')
version('2.2.0.4', '71d2c7c2e39d86a0262e555148de01c1')
variant('debug', default=False, description="Switch to the debug version of CLHEP.")
variant('cxx11', default=True, description="Compile using c++11 dialect.")
variant('cxx14', default=False, description="Compile using c++14 dialect.")
depends_on('cmake@2.8.12.2:', when='@2.2.0.4:2.3.0.0', type='build')
depends_on('cmake@3.2:', when='@2.3.0.1:', type='build')
def patch(self):
filter_file('SET CMP0042 OLD',
'SET CMP0042 NEW',
'%s/%s/CLHEP/CMakeLists.txt'
% (self.stage.path, self.spec.version))
def install(self, spec, prefix):
# Handle debug
# Pull out the BUILD_TYPE so we can change it (Release is default)
cmake_args = [arg for arg in std_cmake_args if 'BUILD_TYPE' not in arg]
build_type = 'Debug' if '+debug' in spec else 'MinSizeRel'
cmake_args.extend(['-DCMAKE_BUILD_TYPE=' + build_type])
if '+cxx11' in spec:
env['CXXFLAGS'] = self.compiler.cxx11_flag
cmake_args.append('-DCLHEP_BUILD_CXXSTD=' +
self.compiler.cxx11_flag)
if '+cxx14' in spec:
env['CXXFLAGS'] = self.compiler.cxx14_flag
cmake_args.append('-DCLHEP_BUILD_CXXSTD=' +
self.compiler.cxx14_flag)
# Note that the tar file is unusual in that there's a
# CLHEP directory (addtional layer)
cmake_args.append("../CLHEP")
# Run cmake in a build directory
with working_dir('build', create=True):
cmake(*cmake_args)
make()
make("install")

View File

@@ -88,11 +88,13 @@ def install(self, spec, prefix):
options = [
'--prefix={0}'.format(prefix),
'--parallel={0}'.format(make_jobs),
# jsoncpp requires CMake to build
# use CMake-provided library to avoid circular dependency
'--no-system-jsoncpp'
]
'--parallel={0}'.format(make_jobs)]
if spec.satisfies("@3:"):
options.append(
# jsoncpp requires CMake to build
# use CMake-provided library to avoid circular dependency
'--no-system-jsoncpp'
)
if '+ownlibs' in spec:
# Build and link to the CMake-provided third-party libraries

View File

@@ -47,19 +47,18 @@ class Cp2k(Package):
depends_on('lapack')
depends_on('blas')
depends_on('fftw')
depends_on('libint@:1.2', when='@3.0')
depends_on('mpi', when='+mpi')
depends_on('scalapack', when='+mpi')
depends_on('plumed+shared+mpi', when='+plumed+mpi')
depends_on('plumed+shared~mpi', when='+plumed~mpi')
depends_on('pexsi', when='+mpi')
depends_on('wannier90', when='+mpi')
depends_on('elpa', when='+mpi')
# TODO : add dependency on libint
# TODO : add dependency on libsmm, libxsmm
# TODO : add dependency on elpa
# TODO : add dependency on CUDA
# TODO : add dependency on QUIP
# TODO : add dependency on libwannier90
parallel = False
@@ -88,15 +87,20 @@ def install(self, spec, prefix):
}
cppflags = [
'-D__FFTW3',
'-D__LIBPEXSI',
'-D__LIBINT',
'-I' + spec['fftw'].prefix.include
]
fcflags = copy.deepcopy(optflags[self.spec.compiler.name])
fcflags.extend([
'-I' + spec['fftw'].prefix.include
])
ldflags = ['-L' + spec['fftw'].prefix.lib]
libs = []
fftw = find_libraries(['libfftw3'], root=spec['fftw'].prefix.lib)
ldflags = [fftw.search_flags]
libs = [
join_path(spec['libint'].prefix.lib, 'libint.so'),
join_path(spec['libint'].prefix.lib, 'libderiv.so'),
join_path(spec['libint'].prefix.lib, 'libr12.so')
]
if '+plumed' in self.spec:
# Include Plumed.inc in the Makefile
mkf.write('include {0}\n'.format(
@@ -109,7 +113,8 @@ def install(self, spec, prefix):
# Add required macro
cppflags.extend(['-D__PLUMED2'])
libs.extend([
join_path(self.spec['plumed'].prefix.lib, 'libplumed.so')
join_path(self.spec['plumed'].prefix.lib,
'libplumed.{0}'.format(dso_suffix))
])
mkf.write('CC = {0.compiler.cc}\n'.format(self))
@@ -143,15 +148,26 @@ def install(self, spec, prefix):
if '+mpi' in self.spec:
cppflags.extend([
'-D__parallel',
'-D__LIBPEXSI',
'-D__WANNIER90',
'-D__ELPA3',
'-D__SCALAPACK'
])
fcflags.extend([
'-I' + join_path(
spec['elpa'].prefix,
'include',
'elpa-{0}'.format(str(spec['elpa'].version)),
'modules'
),
'-I' + join_path(spec['pexsi'].prefix, 'fortran')
])
ldflags.extend([
'-L' + spec['scalapack'].prefix.lib
])
scalapack = spec['scalapack'].scalapack_libs
ldflags.append(scalapack.search_flags)
libs.extend([
join_path(spec['elpa'].prefix.lib,
'libelpa.{0}'.format(dso_suffix)),
join_path(spec['wannier90'].prefix.lib, 'libwannier.a'),
join_path(spec['pexsi'].prefix.lib, 'libpexsi.a'),
join_path(spec['superlu-dist'].prefix.lib,
'libsuperlu_dist.a'),
@@ -164,19 +180,15 @@ def install(self, spec, prefix):
'libmetis.{0}'.format(dso_suffix)
),
])
libs.extend(spec['scalapack'].scalapack_shared_libs)
libs.extend(scalapack)
libs.extend(self.spec['mpi'].mpicxx_shared_libs)
libs.extend(self.compiler.stdcxx_libs)
# LAPACK / BLAS
ldflags.extend([
'-L' + spec['lapack'].prefix.lib,
'-L' + spec['blas'].prefix.lib
])
libs.extend([
join_path(spec['fftw'].prefix.lib, 'libfftw3.so'),
spec['lapack'].lapack_shared_lib,
spec['blas'].blas_shared_lib
])
lapack = spec['lapack'].lapack_libs
blas = spec['blas'].blas_libs
ldflags.append((lapack + blas).search_flags)
libs.extend([str(x) for x in (fftw, lapack, blas)])
# Write compiler flags to file
mkf.write('CPPFLAGS = {0}\n'.format(' '.join(cppflags)))

View File

@@ -43,14 +43,19 @@ class Cube(Package):
version('4.2.3', '8f95b9531f5a8f8134f279c2767c9b20',
url="http://apps.fz-juelich.de/scalasca/releases/cube/4.2/dist/cube-4.2.3.tar.gz")
# TODO : add variant that builds GUI on top of Qt
variant('gui', default=False, description='Build CUBE GUI')
depends_on('zlib')
depends_on('qt@4.6:', when='+gui')
def install(self, spec, prefix):
configure_args = ["--prefix=%s" % prefix,
"--without-paraver",
"--without-gui"]
"--without-paraver"]
# TODO : need to handle cross compiling build
if '+gui' not in spec:
configure_args.append('--without-gui')
configure(*configure_args)
make(parallel=False)
make()
make("install", parallel=False)

View File

@@ -39,7 +39,7 @@ class Cuda(Package):
Type, select runfile and click Download. Spack will search your
current directory for this file. Alternatively, add this file to a
mirror so that Spack can find it. For instructions on how to set up a
mirror, see http://software.llnl.gov/spack/mirrors.html
mirror, see http://spack.readthedocs.io/en/latest/mirrors.html.
Note: This package does not currently install the drivers necessary
to run CUDA. These will need to be installed manually. See:

View File

@@ -32,6 +32,8 @@ class Curl(Package):
homepage = "http://curl.haxx.se"
url = "http://curl.haxx.se/download/curl-7.46.0.tar.bz2"
version('7.50.3', 'bd177fd6deecce00cfa7b5916d831c5e')
version('7.50.2', '6e161179f7af4b9f8b6ea21420132719')
version('7.50.1', '015f6a0217ca6f2c5442ca406476920b')
version('7.49.1', '6bb1f7af5b58b30e4e6414b8c1abccab')
version('7.47.1', '9ea3123449439bbd960cd25cf98796fb')

View File

@@ -9,7 +9,7 @@ class Daal(IntelInstaller):
Note: You will have to add the download file to a
mirror so that Spack can find it. For instructions on how to set up a
mirror, see http://software.llnl.gov/spack/mirrors.html"""
mirror, see http://spack.readthedocs.io/en/latest/mirrors.html"""
homepage = "https://software.intel.com/en-us/daal"

View File

@@ -0,0 +1,65 @@
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License (as
# published by the Free Software Foundation) version 2.1, February 1999.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
# conditions of the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
from spack import *
import os
class DarshanRuntime(Package):
"""Darshan (runtime) is a scalable HPC I/O characterization tool
designed to capture an accurate picture of application I/O behavior,
including properties such as patterns of access within files, with
minimum overhead. DarshanRuntime package should be installed on
systems where you intend to instrument MPI applications."""
homepage = "http://www.mcs.anl.gov/research/projects/darshan/"
url = "ftp://ftp.mcs.anl.gov/pub/darshan/releases/darshan-3.1.0.tar.gz"
version('3.1.0', '439d717323e6265b2612ed127886ae52')
version('3.0.0', '732577fe94238936268d74d7d74ebd08')
depends_on('mpi')
depends_on('zlib')
variant('slurm', default=False, description='Use Slurm Job ID')
variant('cobalt', default=False, description='Use Coblat Job Id')
variant('pbs', default=False, description='Use PBS Job Id')
def install(self, spec, prefix):
job_id = 'NONE'
if '+slurm' in spec:
job_id = 'SLURM_JOBID'
if '+cobalt' in spec:
job_id = 'COBALT_JOBID'
if '+pbs' in spec:
job_id = 'PBS_JOBID'
# TODO: BG-Q and other platform configure options
options = ['CC=%s' % spec['mpi'].mpicc,
'--with-mem-align=8',
'--with-log-path-by-env=DARSHAN_LOG_DIR_PATH',
'--with-jobid-env=%s' % job_id,
'--with-zlib=%s' % spec['zlib'].prefix]
with working_dir('spack-build', create=True):
configure = Executable('../darshan-runtime/configure')
configure('--prefix=%s' % prefix, *options)
make()
make('install')
def setup_environment(self, spack_env, run_env):
# default path for log file, could be user or site specific setting
darshan_log_dir = '%s' % os.environ['HOME']
run_env.set('DARSHAN_LOG_DIR_PATH', darshan_log_dir)

View File

@@ -0,0 +1,41 @@
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License (as
# published by the Free Software Foundation) version 2.1, February 1999.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
# conditions of the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
from spack import *
class DarshanUtil(Package):
"""Darshan (util) is collection of tools for parsing and summarizing log
files produced by Darshan (runtime) instrumentation. This package is
typically installed on systems (front-end) where you intend to analyze
log files produced by Darshan (runtime)."""
homepage = "http://www.mcs.anl.gov/research/projects/darshan/"
url = "ftp://ftp.mcs.anl.gov/pub/darshan/releases/darshan-3.1.0.tar.gz"
version('3.1.0', '439d717323e6265b2612ed127886ae52')
version('3.0.0', '732577fe94238936268d74d7d74ebd08')
depends_on('zlib')
def install(self, spec, prefix):
options = ['CC=%s' % self.compiler.cc,
'--with-zlib=%s' % spec['zlib'].prefix]
with working_dir('spack-build', create=True):
configure = Executable('../darshan-util/configure')
configure('--prefix=%s' % prefix, *options)
make()
make('install')

View File

@@ -32,6 +32,7 @@ class Dealii(Package):
homepage = "https://www.dealii.org"
url = "https://github.com/dealii/dealii/releases/download/v8.4.1/dealii-8.4.1.tar.gz"
version('8.4.2', '84c6bd3f250d3e0681b645d24cb987a7')
version('8.4.1', 'efbaf16f9ad59cfccad62302f36c3c1d')
version('8.4.0', 'ac5dbf676096ff61e092ce98c80c2b00')
version('8.3.0', 'fc6cdcb16309ef4bea338a4f014de6fa')
@@ -67,11 +68,11 @@ class Dealii(Package):
# Boost 1.58 is blacklisted, see
# https://github.com/dealii/dealii/issues/1591
# Require at least 1.59
# +python won't affect @:8.4.1
# +python won't affect @:8.4.2
depends_on("boost@1.59.0:+thread+system+serialization+iostreams",
when='@:8.4.1~mpi')
when='@:8.4.2~mpi')
depends_on("boost@1.59.0:+thread+system+serialization+iostreams+mpi",
when='@:8.4.1+mpi')
when='@:8.4.2+mpi')
# since @8.5.0: (and @develop) python bindings are introduced:
depends_on("boost@1.59.0:+thread+system+serialization+iostreams",
when='@8.5.0:~mpi~python')
@@ -102,8 +103,9 @@ class Dealii(Package):
depends_on("netcdf-cxx", when='+netcdf+mpi')
depends_on("oce", when='+oce')
depends_on("p4est", when='+p4est+mpi')
depends_on("petsc+mpi", when='@8.5.0:+petsc+mpi')
depends_on("slepc", when='@8.5.0:+slepc+petsc+mpi')
depends_on("petsc+mpi", when='@8.4.2:+petsc+mpi')
depends_on('python', when='@8.5.0:+python')
depends_on("slepc", when='@8.4.2:+slepc+petsc+mpi')
depends_on("petsc@:3.6.4+mpi", when='@:8.4.1+petsc+mpi')
depends_on("slepc@:3.6.3", when='@:8.4.1+slepc+petsc+mpi')
depends_on("trilinos", when='+trilinos+mpi')
@@ -122,6 +124,7 @@ def install(self, spec, prefix):
options.remove(word)
dsuf = 'dylib' if sys.platform == 'darwin' else 'so'
lapack_blas = spec['lapack'].lapack_libs + spec['blas'].blas_libs
options.extend([
'-DCMAKE_BUILD_TYPE=DebugRelease',
'-DDEAL_II_COMPONENT_EXAMPLES=ON',
@@ -134,9 +137,7 @@ def install(self, spec, prefix):
'-DLAPACK_FOUND=true',
'-DLAPACK_INCLUDE_DIRS=%s;%s' % (
spec['lapack'].prefix.include, spec['blas'].prefix.include),
'-DLAPACK_LIBRARIES=%s;%s' % (
spec['lapack'].lapack_shared_lib,
spec['blas'].blas_shared_lib),
'-DLAPACK_LIBRARIES=%s' % lapack_blas.joined(';'),
'-DMUPARSER_DIR=%s' % spec['muparser'].prefix,
'-DUMFPACK_DIR=%s' % spec['suite-sparse'].prefix,
'-DTBB_DIR=%s' % spec['tbb'].prefix,

View File

@@ -87,12 +87,12 @@ def configure(self, spec):
# BLAS/LAPACK support
# Note: BLAS/LAPACK must be compiled with OpenMP support
# if the +openmp variant is chosen
blas = 'blas.a'
blas = 'blas.a'
lapack = 'lapack.a'
if '+blas' in spec:
blas = spec['blas'].blas_shared_lib
blas = spec['blas'].blas_libs.joined()
if '+lapack' in spec:
lapack = spec['lapack'].lapack_shared_lib
lapack = spec['lapack'].lapack_libs.joined()
# lapack must come before blas
config['LIB_LPK'] = ' '.join([lapack, blas])

View File

@@ -34,8 +34,16 @@ class Elpa(Package):
homepage = 'http://elpa.mpcdf.mpg.de/'
url = 'http://elpa.mpcdf.mpg.de/elpa-2015.11.001.tar.gz'
version('2015.11.001', 'de0f35b7ee7c971fd0dca35c900b87e6',
url='http://elpa.mpcdf.mpg.de/elpa-2015.11.001.tar.gz')
version(
'2016.05.003',
'88a9f3f3bfb63e16509dd1be089dcf2c',
url='http://elpa.mpcdf.mpg.de/html/Releases/2016.05.003/elpa-2016.05.003.tar.gz'
)
version(
'2015.11.001',
'de0f35b7ee7c971fd0dca35c900b87e6',
url='http://elpa.mpcdf.mpg.de/elpa-2015.11.001.tar.gz'
)
variant('openmp', default=False, description='Activates OpenMP support')
@@ -46,7 +54,24 @@ class Elpa(Package):
def install(self, spec, prefix):
options = ["--prefix=%s" % prefix]
options = [
'CC={0}'.format(self.spec['mpi'].mpicc),
'FC={0}'.format(self.spec['mpi'].mpifc),
'CXX={0}'.format(self.spec['mpi'].mpicxx),
'FCFLAGS={0}'.format(
spec['lapack'].lapack_libs.joined()
),
'LDFLAGS={0}'.format(
spec['lapack'].lapack_libs.joined()
),
'SCALAPACK_FCFLAGS={0}'.format(
spec['scalapack'].scalapack_libs.joined()
),
'SCALAPACK_LDFLAGS={0}'.format(
spec['scalapack'].scalapack_libs.joined()
),
'--prefix={0}'.format(self.prefix)
]
if '+openmp' in spec:
options.append("--enable-openmp")

View File

@@ -88,7 +88,7 @@ def install(self, spec, prefix):
# Add a list of directories to search
search_list = []
for name, dependency_spec in spec.dependencies.iteritems():
for dependency_spec in spec.dependencies():
search_list.extend([dependency_spec.prefix.lib,
dependency_spec.prefix.lib64])

View File

@@ -53,8 +53,8 @@ class Extrae(Package):
programming models either alone or in conjunction with MPI :
OpenMP, CUDA, OpenCL, pthread, OmpSs"""
homepage = "http://www.bsc.es/computer-sciences/extrae"
url = "http://www.bsc.es/ssl/apps/performanceTools/files/extrae-3.0.1.tar.bz2"
version('3.0.1', 'a6a8ca96cd877723cd8cc5df6bdb922b')
url = "http://www.bsc.es/ssl/apps/performanceTools/files/extrae-3.3.0.tar.bz2"
version('3.3.0', 'f46e3f1a6086b5b3ac41c9585b42952d')
depends_on("mpi")
depends_on("dyninst")
@@ -62,6 +62,9 @@ class Extrae(Package):
depends_on("boost")
depends_on("libdwarf")
depends_on("papi")
depends_on("libelf")
depends_on("libxml2")
depends_on("binutils+libiberty")
def install(self, spec, prefix):
if 'openmpi' in spec:
@@ -80,6 +83,9 @@ def install(self, spec, prefix):
"--with-papi=%s" % spec['papi'].prefix,
"--with-dyninst-headers=%s" % spec[
'dyninst'].prefix.include,
"--with-elf=%s" % spec['libelf'].prefix,
"--with-xml-prefix=%s" % spec['libxml2'].prefix,
"--with-binutils=%s" % spec['binutils'].prefix,
"--with-dyninst-libs=%s" % spec['dyninst'].prefix.lib)
make()

View File

@@ -0,0 +1,11 @@
--- a/CMakeLists.txt 2016-08-16 02:30:13.466078087 +0200
+++ b/CMakeLists.txt 2016-08-16 02:30:36.879586772 +0200
@@ -553,7 +553,7 @@
set(ENV{HDF5_ROOT} "$ENV{HDF5_DIR}")
endif()
set(HDF5_PREFER_PARALLEL TRUE)
- find_package(HDF5)
+ find_package(HDF5 COMPONENTS C)
set_package_properties(HDF5 PROPERTIES TYPE OPTIONAL
DESCRIPTION "Hierarchical Data Format 5 (HDF5)"
URL "https://www.hdfgroup.org/HDF5")

View File

@@ -62,17 +62,15 @@ class Fenics(Package):
# variant('slepc4py', default=True, description='Uses SLEPc4py')
# variant('pastix', default=True, description='Compile with Pastix')
patch('petsc-3.7.patch', when='^petsc@3.7:')
patch('petsc-3.7.patch', when='@1.6.1^petsc@3.7:')
patch('petsc-version-detection.patch', when='@:1.6.1')
patch('hdf5~cxx-detection.patch')
extends('python')
depends_on('py-numpy')
depends_on('py-ply')
depends_on('py-six')
depends_on('py-sphinx@1.0.1:', when='+doc')
depends_on('eigen@3.2.0:')
depends_on('boost')
depends_on('eigen@3.2.0:', type='build')
depends_on('boost+filesystem+program_options+system+iostreams+timer+regex+chrono')
depends_on('mpi', when='+mpi')
depends_on('hdf5', when='+hdf5')
depends_on('parmetis@4.0.2:^metis+real64', when='+parmetis')
@@ -85,12 +83,27 @@ class Fenics(Package):
depends_on('suite-sparse', when='+suite-sparse')
depends_on('qt', when='+qt')
# This are the build dependencies
depends_on('py-setuptools')
depends_on('cmake@2.8.12:')
depends_on('swig@3.0.3:')
depends_on('py-ply', type=nolink)
depends_on('py-six', type=nolink)
depends_on('py-numpy', type=nolink)
depends_on('py-sympy', type=nolink)
depends_on('swig@3.0.3:', type=nolink)
depends_on('cmake@2.8.12:', type=nolink)
depends_on('py-setuptools', type='build')
depends_on('py-sphinx@1.0.1:', when='+doc', type='build')
releases = [
{
'version': '2016.1.0',
'md5': '92e8d00f6487a575987201f0b0d19173',
'resources': {
'ffc': '35457ae164e481ba5c9189ebae060a47',
'fiat': 'ac0c49942831ee434301228842bcc280',
'instant': '0e3dbb464c4d90d691f31f0fdd63d4f6',
'ufl': '37433336e5c9b58d1d5ab4acca9104a7',
}
},
{
'version': '1.6.0',
'md5': '35cb4baf7ab4152a40fb7310b34d5800',

View File

@@ -34,9 +34,12 @@ class Fontconfig(Package):
depends_on('freetype')
depends_on('libxml2')
depends_on('pkg-config', type='build')
def install(self, spec, prefix):
configure("--prefix=%s" % prefix, "--enable-libxml2")
configure("--prefix=%s" % prefix,
"--enable-libxml2",
"--disable-docs")
make()
make("install")

View File

@@ -3,6 +3,7 @@
from contextlib import closing
from glob import glob
import sys
from os.path import isfile
class Gcc(Package):
@@ -68,6 +69,19 @@ def install(self, spec, prefix):
if spec.satisfies("@4.7.1:") and sys.platform != 'darwin':
enabled_languages.add('go')
# Fix a standard header file for OS X Yosemite that
# is GCC incompatible by replacing non-GCC compliant macros
if 'yosemite' in spec.architecture:
if isfile(r'/usr/include/dispatch/object.h'):
new_dispatch_dir = join_path(prefix, 'include', 'dispatch')
mkdirp(new_dispatch_dir)
cp = which('cp')
new_header = join_path(new_dispatch_dir, 'object.h')
cp(r'/usr/include/dispatch/object.h', new_header)
filter_file(r'typedef void \(\^dispatch_block_t\)\(void\)',
'typedef void* dispatch_block_t',
new_header)
# Generic options to compile GCC
options = ["--prefix=%s" % prefix, "--libdir=%s/lib64" % prefix,
"--disable-multilib",

View File

@@ -41,9 +41,18 @@ class Gdb(Package):
version('7.9', '8f8ced422fe462a00e0135a643544f17')
version('7.8.2', '8b0ea8b3559d3d90b3ff4952f0aeafbc')
variant('python', default=True, description='Compile with Python support')
# Required dependency
depends_on('texinfo', type='build')
# Optional dependency
depends_on('python', when='+python')
def install(self, spec, prefix):
configure('--prefix=%s' % prefix)
options = ['--prefix=%s' % prefix]
if '+python' in spec:
options.extend(['--with-python'])
configure(*options)
make()
make("install")

View File

@@ -0,0 +1,85 @@
##############################################################################
# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://github.com/llnl/spack
# Please also see the LICENSE file for our notice and the LGPL.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License (as
# published by the Free Software Foundation) version 2.1, February 1999.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
# conditions of the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
from spack import *
class Geant4(Package):
"""Geant4 is a toolkit for the simulation of the passage of particles
through matter. Its areas of application include high energy, nuclear
and accelerator physics, as well as studies in medical and space
science."""
homepage = "http://geant4.cern.ch/"
url = "http://geant4.cern.ch/support/source/geant4.10.01.p03.tar.gz"
version('10.02.p01', 'b81f7082a15f6a34b720b6f15c6289cfe4ddbbbdcef0dc52719f71fac95f7f1c')
version('10.01.p03', '4fb4175cc0dabcd517443fbdccd97439')
variant('qt', default=False, description='Enable Qt support')
depends_on('cmake@3.5:', type='build')
depends_on("clhep@2.3.1.1~cxx11+cxx14", when="@10.02.p01")
depends_on("clhep@2.2.0.4~cxx11+cxx14", when="@10.01.p03")
depends_on("expat")
depends_on("zlib")
depends_on("xerces-c")
depends_on("qt@4.8:", when="+qt")
def install(self, spec, prefix):
cmake_args = list(std_cmake_args)
cmake_args.append('-DXERCESC_ROOT_DIR:STRING=%s' %
spec['xerces-c'].prefix)
cmake_args.append('-DGEANT4_BUILD_CXXSTD=c++14')
cmake_args += ['-DGEANT4_USE_GDML=ON',
'-DGEANT4_USE_SYSTEM_EXPAT=ON',
'-DGEANT4_USE_SYSTEM_ZLIB=ON',
'-DGEANT4_USE_SYSTEM_CLHEP=ON']
# fixme: turn off data for now and maybe each data set should
# go into a separate package to cut down on disk usage between
# different code versions using the same data versions.
cmake_args.append('-DGEANT4_INSTALL_DATA=OFF')
# http://geant4.web.cern.ch/geant4/UserDocumentation/UsersGuides/InstallationGuide/html/ch02s03.html
# fixme: likely things that need addressing:
# -DGEANT4_USE_OPENGL_X11=ON
if '+qt' in spec:
cmake_args.append('-DGEANT4_USE_QT=ON')
build_directory = join_path(self.stage.path, 'spack-build')
source_directory = self.stage.source_path
with working_dir(build_directory, create=True):
cmake(source_directory, *cmake_args)
make()
make("install")
def url_for_version(self, version):
"""Handle Geant4's unusual version string."""
return "http://geant4.cern.ch/support/source/geant4.%s.tar.gz" % version

View File

@@ -26,17 +26,28 @@
class GitLfs(Package):
"""Tool for managing large files with Git."""
"""Git LFS is a system for managing and versioning large files in
association with a Git repository. Instead of storing the large files
within the Git repository as blobs, Git LFS stores special "pointer
files" in the repository, while storing the actual file contents on a
Git LFS server."""
homepage = "https://git-lfs.github.com"
url = "https://github.com/github/git-lfs/archive/v1.4.1.tar.gz"
git_url = "https://github.com/github/git-lfs.git"
version('1.4.1', 'c62a314d96d3a30af4d98fa3305ad317')
version('1.4.1', git=git_url, tag='v1.4.1')
version('1.3.1', git=git_url, tag='v1.3.1')
# TODO: Implement this by following the instructions at this location:
# https://github.com/github/git-lfs/blob/master/CONTRIBUTING.md#building
# variant('test', default=True, description='Build and run tests as part of the build.') # NOQA: E501
depends_on('go@1.5:', type='build')
depends_on('git@1.8.2:', type='run')
def install(self, spec, prefix):
bootstrap = Executable('./scripts/bootstrap')
bootstrap()
install('bin/git-lfs', prefix.bin)
bootstrap_script = Executable(join_path('script', 'bootstrap'))
bootstrap_script()
mkdirp(prefix.bin)
install(join_path('bin', 'git-lfs'), prefix.bin)

View File

@@ -22,6 +22,7 @@
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
import sys
from spack import *
@@ -54,28 +55,33 @@ class Git(Package):
# version('2.5.4', '3eca2390cf1fa698b48e2a233563a76b')
# version('2.2.1', 'ff41fdb094eed1ec430aed8ee9b9849c')
depends_on("openssl")
depends_on("autoconf", type='build')
depends_on("curl")
depends_on("expat")
depends_on("gettext")
depends_on("zlib")
depends_on("libiconv")
depends_on("openssl")
depends_on("pcre")
depends_on("perl")
depends_on("zlib")
def install(self, spec, prefix):
env['LDFLAGS'] = "-L%s" % spec['gettext'].prefix.lib + " -lintl"
configure_args = [
"--prefix=%s" % prefix,
"--with-libpcre=%s" % spec['pcre'].prefix,
"--with-openssl=%s" % spec['openssl'].prefix,
"--with-zlib=%s" % spec['zlib'].prefix,
"--with-curl=%s" % spec['curl'].prefix,
"--with-expat=%s" % spec['expat'].prefix,
"--with-iconv=%s" % spec['libiconv'].prefix,
"--with-libpcre=%s" % spec['pcre'].prefix,
"--with-openssl=%s" % spec['openssl'].prefix,
"--with-perl=%s" % join_path(spec['perl'].prefix.bin, 'perl'),
"--with-zlib=%s" % spec['zlib'].prefix,
]
which('autoreconf')('-i')
configure(*configure_args)
if sys.platform == "darwin":
# Don't link with -lrt; the system has no (and needs no) librt
filter_file(r' -lrt$', '', 'Makefile')
make()
make("install")

View File

@@ -0,0 +1,16 @@
--- a/configure.ac 2016-08-16 11:57:34.000000000 -0400
+++ b/configure.ac 2016-08-16 11:57:36.000000000 -0400
@@ -3357,11 +3357,11 @@
enable_compile_warnings=yes)
AS_IF([test "x$enable_compile_warnings" = xyes], [
CC_CHECK_FLAGS_APPEND([GLIB_WARN_CFLAGS], [CFLAGS], [\
-Wall -Wstrict-prototypes -Werror=declaration-after-statement \
-Werror=missing-prototypes -Werror=implicit-function-declaration \
- -Werror=pointer-arith -Werror=init-self -Werror=format-security \
- -Werror=format=2 -Werror=missing-include-dirs])
+ -Werror=pointer-arith -Werror=init-self \
+ -Werror=missing-include-dirs])
])
AC_SUBST(GLIB_WARN_CFLAGS)
#

View File

@@ -23,6 +23,7 @@
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
from spack import *
import os
class Glib(Package):
@@ -38,14 +39,20 @@ class Glib(Package):
version('2.48.1', '67bd3b75c9f6d5587b457dc01cdcd5bb')
version('2.42.1', '89c4119e50e767d3532158605ee9121a')
depends_on('autoconf', type='build')
depends_on('automake', type='build')
depends_on('libtool', type='build')
depends_on('pkg-config', type='build')
depends_on('libffi')
depends_on('zlib')
depends_on('pkg-config', type='build')
depends_on('gettext')
depends_on('pcre+utf', when='@2.48:')
# The following patch is needed for gcc-6.1
patch('g_date_strftime.patch', when='@2.42.1')
# Clang doesn't seem to acknowledge the pragma lines to disable the -Werror
# around a legitimate usage.
patch('no-Werror=format-security.patch')
def url_for_version(self, version):
"""Handle glib's version-based custom URLs."""
@@ -53,6 +60,16 @@ def url_for_version(self, version):
return url + '/%s/glib-%s.tar.xz' % (version.up_to(2), version)
def install(self, spec, prefix):
autoreconf = which("autoreconf")
autoreconf("--install", "--verbose", "--force",
"-I", "config",
"-I", os.path.join(spec['pkg-config'].prefix,
"share", "aclocal"),
"-I", os.path.join(spec['automake'].prefix,
"share", "aclocal"),
"-I", os.path.join(spec['libtool'].prefix,
"share", "aclocal"),
)
configure("--prefix=%s" % prefix)
make()
make("install", parallel=False)

View File

@@ -0,0 +1,42 @@
##############################################################################
# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://github.com/llnl/spack
# Please also see the LICENSE file for our notice and the LGPL.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License (as
# published by the Free Software Foundation) version 2.1, February 1999.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
# conditions of the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
from spack import *
class Gmake(Package):
"""GNU Make."""
homepage = "http://gnu.org/gnu/make"
url = "ftp://ftp.gnu.org/gnu/make/make-4.0.tar.gz"
version('4.0', 'b5e558f981326d9ca1bfdb841640721a')
def install(self, spec, prefix):
configure('--prefix={0}'.format(prefix))
make()
make('install')
with working_dir(prefix.bin):
symlink('make', 'gmake')

View File

@@ -37,4 +37,7 @@ class Gmp(AutotoolsPackage):
version('6.0.0a', 'b7ff2d88cae7f8085bd5006096eed470')
version('6.0.0', '6ef5869ae735db9995619135bd856b84')
depends_on("m4", type='build')
depends_on('m4', type='build')
def configure_args(self):
return ['--enable-cxx']

View File

@@ -87,9 +87,9 @@ def install(self, spec, prefix):
options.append('-DENABLE_OS_SPECIFIC_INSTALL=OFF')
# Make sure GMSH picks up correct BlasLapack by providing linker flags
options.append('-DBLAS_LAPACK_LIBRARIES=%s %s' %
(to_link_flags(spec['lapack'].lapack_shared_lib),
to_link_flags(spec['blas'].blas_shared_lib)))
blas_lapack = spec['lapack'].lapack_libs + spec['blas'].blas_libs
options.append(
'-DBLAS_LAPACK_LIBRARIES={0}'.format(blas_lapack.ld_flags))
# Gmsh does not have an option to compile against external metis.
# Its own Metis, however, fails to build

View File

@@ -1,3 +1,27 @@
##############################################################################
# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://github.com/llnl/spack
# Please also see the LICENSE file for our notice and the LGPL.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License (as
# published by the Free Software Foundation) version 2.1, February 1999.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
# conditions of the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
import os
import shutil
import glob
@@ -17,25 +41,37 @@ class GoBootstrap(Package):
extendable = True
# temporary fix until tags are pulled correctly
# NOTE: Go@1.4.2 is the only supported bootstrapping compiler because all
# later versions require a Go compiler to build.
# See: https://golang.org/doc/install/source
version('1.4.2', git='https://go.googlesource.com/go', tag='go1.4.2')
variant('test',
default=True,
description="Run tests as part of build, a good idea but quite"
" time consuming")
variant('test', default=True, description='Build and run tests as part of the build.')
provides('golang@:1.4.2')
depends_on('git')
depends_on('git', type='alldeps')
# NOTE: Older versions of Go attempt to download external files that have
# since been moved while running the test suite. This patch modifies the
# test files so that these tests don't cause false failures.
# See: https://github.com/golang/go/issues/15694
@when('@:1.4.3')
def patch(self):
test_suite_file = FileFilter(join_path('src', 'run.bash'))
test_suite_file.filter(
r'^(.*)(\$GOROOT/src/cmd/api/run.go)(.*)$',
r'# \1\2\3',
)
@when('@1.5.0:')
def patch(self):
pass
def install(self, spec, prefix):
bash = which('bash')
with working_dir('src'):
if '+test' in spec:
bash('all.bash')
else:
bash('make.bash')
bash('{0}.bash'.format('all' if '+test' in spec else 'make'))
try:
os.makedirs(prefix)

View File

@@ -1,3 +1,27 @@
##############################################################################
# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://github.com/llnl/spack
# Please also see the LICENSE file for our notice and the LGPL.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License (as
# published by the Free Software Foundation) version 2.1, February 1999.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
# conditions of the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
import os
import shutil
import glob
@@ -12,28 +36,39 @@ class Go(Package):
extendable = True
version('1.5.4', git='https://go.googlesource.com/go', tag='go1.5.4')
version('1.6.2', git='https://go.googlesource.com/go', tag='go1.6.2')
version('1.5.4', git='https://go.googlesource.com/go', tag='go1.5.4')
version('1.4.2', git='https://go.googlesource.com/go', tag='go1.4.2')
variant('test',
default=True,
description="Run tests as part of build, a good idea but quite"
" time consuming")
variant('test', default=True, description='Build and run tests as part of the build.')
provides('golang')
# to-do, make non-c self-hosting compilers feasible without backflips
depends_on('git', type='alldeps')
# TODO: Make non-c self-hosting compilers feasible without backflips
# should be a dep on external go compiler
depends_on('go-bootstrap', type='build')
depends_on('git', type='alldeps')
# NOTE: Older versions of Go attempt to download external files that have
# since been moved while running the test suite. This patch modifies the
# test files so that these tests don't cause false failures.
# See: https://github.com/golang/go/issues/15694
@when('@:1.4.3')
def patch(self):
test_suite_file = FileFilter(join_path('src', 'run.bash'))
test_suite_file.filter(
r'^(.*)(\$GOROOT/src/cmd/api/run.go)(.*)$',
r'# \1\2\3',
)
@when('@1.5.0:')
def patch(self):
pass
def install(self, spec, prefix):
bash = which('bash')
with working_dir('src'):
if '+test' in spec:
bash('all.bash')
else:
bash('make.bash')
bash('{0}.bash'.format('all' if '+test' in spec else 'make'))
try:
os.makedirs(prefix)

View File

@@ -0,0 +1,71 @@
MACH_TEXT = Generic Linux
MACH_VALID = 1
MACH_FILE = Make.mach.@ARCHITECTURE
#-----------------------------------------------------------------------
# Install paths (local variables)
#-----------------------------------------------------------------------
LOCAL_HDF5_INSTALL = @HDF5_ROOT
#-----------------------------------------------------------------------
# Compiler settings
#-----------------------------------------------------------------------
MACH_CC_NOMPI = @CC # C compiler
MACH_CXX_NOMPI = @CXX # C++ compiler
MACH_FC_NOMPI = @F77 # Fortran 77
MACH_F90_NOMPI = @FC # Fortran 90
MACH_LD_NOMPI = @FC # Linker
@LINK_VARIABLES_DEFINITION
#-----------------------------------------------------------------------
# Machine-dependent defines
#-----------------------------------------------------------------------
MACH_DEFINES = -DLINUX -DH5_USE_16_API -fPIC
#-----------------------------------------------------------------------
# Compiler flag settings
#-----------------------------------------------------------------------
MACH_CPPFLAGS = -P -traditional
MACH_CFLAGS =
MACH_CXXFLAGS =
MACH_FFLAGS = -fno-second-underscore -ffixed-line-length-132
MACH_F90FLAGS = -fno-second-underscore
MACH_LDFLAGS = @STDCXX_LIB
#-----------------------------------------------------------------------
# Optimization flags
#-----------------------------------------------------------------------
MACH_OPT_WARN = -Wall -g
MACH_OPT_DEBUG = -g
MACH_OPT_HIGH = -O2
MACH_OPT_AGGRESSIVE = -O3 -g
#-----------------------------------------------------------------------
# Includes
#-----------------------------------------------------------------------
LOCAL_INCLUDES_HDF5 = -I@HDF5_ROOT/include # HDF5 includes
MACH_INCLUDES = $(LOCAL_INCLUDES_HDF5)
#-----------------------------------------------------------------------
# Libraries
#-----------------------------------------------------------------------
LOCAL_LIBS_HDF5 = -L@HDF5_ROOT/lib -lhdf5 # HDF5 libraries
LOCAL_LIBS_MACH = # Machine-dependent libraries
MACH_LIBS = $(LOCAL_LIBS_HDF5) $(LOCAL_LIBS_MACH)
#-----------------------------------------------------------------------
# Installation
#-----------------------------------------------------------------------
MACH_INSTALL_PREFIX = @PREFIX
MACH_INSTALL_LIB_DIR =
MACH_INSTALL_INCLUDE_DIR =

View File

@@ -0,0 +1,89 @@
##############################################################################
# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://github.com/llnl/spack
# Please also see the LICENSE file for our notice and the LGPL.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License (as
# published by the Free Software Foundation) version 2.1, February 1999.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
# conditions of the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
import os.path
import shutil
import inspect
from spack import *
class Grackle(Package):
"""Grackle is a chemistry and radiative cooling library for astrophysical
simulations with interfaces for C, C++, and Fortran codes. It is a
generalized and trimmed down version of the chemistry network of the Enzo
simulation code
"""
homepage = 'http://grackle.readthedocs.io/en/grackle-2.2/'
url = 'https://bitbucket.org/grackle/grackle/get/grackle-2.0.1.tar.bz2'
version('2.2', 'ec49ed1db5a42db21f478285150c2ba3')
version('2.0.1', 'a9624ad13a60c592c1a0a4ea8e1ae86d')
depends_on('libtool', when='@2.2')
depends_on('mpi')
depends_on('hdf5+mpi')
parallel = False
def install(self, spec, prefix):
template_name = '{0.architecture}-{0.compiler.name}'
grackle_architecture = template_name.format(spec)
link_variables = 'MACH_AR = ar' if spec.version < Version(2.2) else 'MACH_LIBTOOL = libtool' # NOQA: ignore=E501
substitutions = {
'@ARCHITECTURE': grackle_architecture,
'@CC': spec['mpi'].mpicc,
'@CXX': spec['mpi'].mpicxx,
'@FC': spec['mpi'].mpifc,
'@F77': spec['mpi'].mpif77,
'@STDCXX_LIB': ' '.join(self.compiler.stdcxx_libs),
'@HDF5_ROOT': spec['hdf5'].prefix,
'@PREFIX': prefix,
'@LINK_VARIABLES_DEFINITION': link_variables
}
template = join_path(
os.path.dirname(inspect.getmodule(self).__file__),
'Make.mach.template'
)
makefile = join_path(
self.stage.source_path,
'src',
'clib',
'Make.mach.{0}'.format(grackle_architecture)
)
shutil.copy(template, makefile)
for key, value in substitutions.items():
filter_file(key, value, makefile)
configure()
with working_dir('src/clib'):
make('clean')
make('machine-{0}'.format(grackle_architecture))
make('opt-high')
make('show-config')
make()
mkdirp(prefix.lib)
make('install')

View File

@@ -0,0 +1,80 @@
##############################################################################
# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://github.com/llnl/spack
# Please also see the LICENSE file for our notice and the LGPL.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License (as
# published by the Free Software Foundation) version 2.1, February 1999.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
# conditions of the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
from spack import *
class GribApi(Package):
"""The ECMWF GRIB API is an application program interface accessible from
C, FORTRAN and Python programs developed for encoding and decoding WMO
FM-92 GRIB edition 1 and edition 2 messages."""
homepage = "https://software.ecmwf.int/wiki/display/GRIB/Home"
url = "https://software.ecmwf.int/wiki/download/attachments/3473437/grib_api-1.17.0-Source.tar.gz"
version('1.17.0', 'bca7114d2c3100501a08190a146818d2')
version('1.16.0', '8c7fdee03344e4379d400ae20976a460')
variant('netcdf', default=False, description='Enable netcdf encoding/decoding using netcdf library')
variant('jpeg', default=True, description='Enable jpeg 2000 for grib 2 decoding/encoding')
variant('png', default=False, description='Enable png for decoding/encoding')
depends_on('cmake', type='build')
depends_on('libpng', when='+png')
depends_on('netcdf', when='+netcdf')
depends_on('jasper', when='+jpeg')
def install(self, spec, prefix):
options = []
options.extend(std_cmake_args)
options.append('-DBUILD_SHARED_LIBS=BOTH')
# We will add python support later.
options.append('-DENABLE_PYTHON=OFF')
# Disable FORTRAN interface if we don't have it.
if (self.compiler.f77 is None) or (self.compiler.fc is None):
options.append('-DENABLE_FORTRAN=OFF')
if '+netcdf' in spec:
options.append('-DENABLE_NETCDF=ON')
options.append('-DNETCDF_PATH=%s' % spec['netcdf'].prefix)
else:
options.append('-DENABLE_NETCDF=OFF')
if '+jpeg' in spec:
options.append('-DENABLE_JPG=ON')
options.append('-DJASPER_PATH=%s' % spec['jasper'].prefix)
else:
options.append('-DENABLE_JPG=OFF')
if '+png' in spec:
options.append('-DENABLE_PNG=ON')
else:
options.append('-DENABLE_PNG=OFF')
with working_dir('spack-build', create=True):
cmake('..', *options)
make()
make('install')

View File

@@ -0,0 +1,70 @@
##############################################################################
# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://github.com/llnl/spack
# Please also see the LICENSE file for our notice and the LGPL.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License (as
# published by the Free Software Foundation) version 2.1, February 1999.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
# conditions of the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
from spack import *
class H5hut(Package):
"""H5hut (HDF5 Utility Toolkit)
High-Performance I/O Library for Particle-based Simulations
"""
homepage = "https://amas.psi.ch/H5hut/"
url = "https://amas.psi.ch/H5hut/raw-attachment/wiki/DownloadSources/H5hut-1.99.13.tar.gz"
version("1.99.13", "2a07a449afe50534de006ac6954a421a")
variant("fortran", default=True, description="Enable Fortran support")
variant("mpi", default=False, description="Enable MPI support")
depends_on("autoconf @2.60:", type="build")
depends_on("automake", type="build")
depends_on("hdf5 +mpi", when="+mpi")
depends_on("hdf5 @1.8:")
# h5hut +mpi uses the obsolete function H5Pset_fapl_mpiposix:
depends_on("hdf5 @:1.8.12", when="+mpi")
depends_on("libtool", type="build")
depends_on("mpi", when="+mpi")
def install(self, spec, prefix):
autogen = Executable("./autogen.sh")
autogen()
configopts = ["--prefix={0}".format(prefix)]
if "+fortran" in spec:
if not self.compiler.fc:
raise RuntimeError(
"Cannot build Fortran variant without a Fortran compiler")
configopts.append("--enable-fortran")
if "+mpi" in spec:
configopts.extend([
"--enable-parallel",
"CC=%s" % spec["mpi"].mpicc,
"CXX=%s" % spec["mpi"].mpicxx])
if "+fortran" in spec:
configopts.append("FC=%s" % spec["mpi"].mpifc)
configure(*configopts)
make()
make("install")

View File

@@ -0,0 +1,53 @@
##############################################################################
# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Created by Alfredo Gimenez, gimenez1@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://github.com/llnl/spack
# Please also see the LICENSE file for our notice and the LGPL.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License (as
# published by the Free Software Foundation) version 2.1, February 1999.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
# conditions of the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
from spack import *
class Hadoop(Package):
"""The Apache Hadoop software library is a framework that
allows for the distributed processing of large data sets
across clusters of computers using simple programming models.
"""
homepage = "http://hadoop.apache.org/"
url = "http://mirrors.ocf.berkeley.edu/apache/hadoop/common/hadoop-2.6.4/hadoop-2.6.4.tar.gz"
version('2.6.4', '37019f13d7dcd819727be158440b9442')
depends_on('jdk', type='run')
def install(self, spec, prefix):
def install_dir(dirname):
install_tree(dirname, join_path(prefix, dirname))
install_dir('bin')
install_dir('etc')
install_dir('include')
install_dir('lib')
install_dir('libexec')
install_dir('sbin')
install_dir('share')

View File

@@ -32,8 +32,9 @@ class Harfbuzz(Package):
version('0.9.37', 'bfe733250e34629a188d82e3b971bc1e')
depends_on("pkg-config", type="build")
depends_on("glib")
depends_on("icu")
depends_on("icu4c")
depends_on("freetype")
depends_on("cairo")
depends_on("zlib")

View File

@@ -38,13 +38,12 @@ class Hdf(Package):
variant('szip', default=False, description="Enable szip support")
depends_on("jpeg")
depends_on("szip", when='+szip')
depends_on("zlib")
depends_on('jpeg')
depends_on('szip', when='+szip')
depends_on('zlib')
def url_for_version(self, version):
return "https://www.hdfgroup.org/ftp/HDF/releases/HDF" + str(
version) + "/src/hdf-" + str(version) + ".tar.gz"
depends_on('bison', type='build')
depends_on('flex', type='build')
def install(self, spec, prefix):
config_args = [
@@ -66,4 +65,5 @@ def install(self, spec, prefix):
configure(*config_args)
make()
make("install")
make('check')
make('install')

View File

@@ -43,6 +43,7 @@ class Hdf5(AutotoolsPackage):
version('1.8.16', 'b8ed9a36ae142317f88b0c7ef4b9c618')
version('1.8.15', '03cccb5b33dbe975fdcd8ae9dc021f24')
version('1.8.13', 'c03426e9e77d7766944654280b467289')
version('1.8.12', 'd804802feb99b87fc668a90e6fa34411')
variant('debug', default=False,
description='Builds a debug version of the library')
@@ -52,7 +53,7 @@ class Hdf5(AutotoolsPackage):
variant('cxx', default=True, description='Enable C++ support')
variant('fortran', default=True, description='Enable Fortran support')
variant('mpi', default=False, description='Enable MPI support')
variant('mpi', default=True, description='Enable MPI support')
variant('szip', default=False, description='Enable szip support')
variant('threadsafe', default=False,
description='Enable thread-safe capabilities')

View File

@@ -0,0 +1,55 @@
##############################################################################
# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://github.com/llnl/spack
# Please also see the LICENSE file for our notice and the LGPL.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License (as
# published by the Free Software Foundation) version 2.1, February 1999.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
# conditions of the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
from spack import *
class Hepmc(Package):
"""The HepMC package is an object oriented, C++ event record for
High Energy Physics Monte Carlo generators and simulation."""
homepage = "http://hepmc.web.cern.ch/hepmc/"
url = "http://hepmc.web.cern.ch/hepmc/releases/hepmc2.06.09.tgz"
version('2.06.09', 'c47627ced4255b40e731b8666848b087')
version('2.06.08', 'a2e889114cafc4f60742029d69abd907')
version('2.06.07', '11d7035dccb0650b331f51520c6172e7')
version('2.06.06', '102e5503537a3ecd6ea6f466aa5bc4ae')
version('2.06.05', '2a4a2a945adf26474b8bdccf4f881d9c')
depends_on("cmake", type='build')
def install(self, spec, prefix):
build_directory = join_path(self.stage.path, 'spack-build')
source_directory = self.stage.source_path
options = [source_directory]
options.append('-Dmomentum:STRING=GEV')
options.append('-Dlength:STRING=MM')
options.extend(std_cmake_args)
with working_dir(build_directory, create=True):
cmake(*options)
make()
make('install')

View File

@@ -0,0 +1,48 @@
##############################################################################
# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://github.com/llnl/spack
# Please also see the LICENSE file for our notice and the LGPL.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License (as
# published by the Free Software Foundation) version 2.1, February 1999.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
# conditions of the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
from spack import *
class Heppdt(Package):
"""The HepPID library contains translation methods for particle ID's
to and from various Monte Carlo generators and the PDG standard
numbering scheme. We realize that the generators adhere closely
to the standard, but there are occasional differences."""
homepage = "http://lcgapp.cern.ch/project/simu/HepPDT/"
url = "http://lcgapp.cern.ch/project/simu/HepPDT/download/HepPDT-2.06.01.tar.gz"
version('3.04.01', 'a8e93c7603d844266b62d6f189f0ac7e')
version('3.04.00', '2d2cd7552d3e9539148febacc6287db2')
version('3.03.02', '0b85f1809bb8b0b28a46f23c718b2773')
version('3.03.01', 'd411f3bfdf9c4350d802241ba2629cc2')
version('3.03.00', 'cd84d0a0454be982dcd8c285e060a7b3')
version('2.06.01', '5688b4bdbd84b48ed5dd2545a3dc33c0')
def install(self, spec, prefix):
configure('--prefix=%s' % prefix)
make()
make("install")

View File

@@ -0,0 +1,39 @@
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License (as
# published by the Free Software Foundation) version 2.1, February 1999.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
# conditions of the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
from spack import *
class HpctoolkitExternals(Package):
"""HPCToolkit performance analysis tool has many prerequisites and
HpctoolkitExternals package provides all these prerequisites."""
homepage = "http://hpctoolkit.org"
# Note: No precise release tags/branches provided
version('5.4',
git='https://github.com/HPCToolkit/hpctoolkit-externals.git',
commit='3d2953623357bb06e9a4b51eca90a4b039c2710e')
parallel = False
def install(self, spec, prefix):
options = ['CC=%s' % self.compiler.cc,
'CXX=%s' % self.compiler.cxx]
with working_dir('spack-build', create=True):
configure = Executable('../configure')
configure('--prefix=%s' % prefix, *options)
make('install')

View File

@@ -0,0 +1,55 @@
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License (as
# published by the Free Software Foundation) version 2.1, February 1999.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
# conditions of the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
from spack import *
class Hpctoolkit(Package):
"""HPCToolkit is an integrated suite of tools for measurement and analysis
of program performance on computers ranging from multicore desktop systems
to the nation's largest supercomputers. By using statistical sampling of
timers and hardware performance counters, HPCToolkit collects accurate
measurements of a program's work, resource consumption, and inefficiency
and attributes them to the full calling context in which they occur."""
homepage = "http://hpctoolkit.org"
# Note: No precise release tags/branches provided
version('5.4', git='https://github.com/HPCToolkit/hpctoolkit.git',
commit='d9ca2112762e5a06ea31b5295d793e4a83272d19')
variant('mpi', default=True, description='Enable MPI supoort')
variant('papi', default=True, description='Enable PAPI counter support')
depends_on('hpctoolkit-externals')
depends_on('papi', when='+papi')
depends_on('mpi', when='+mpi')
def install(self, spec, prefix):
options = ['CC=%s' % self.compiler.cc,
'CXX=%s' % self.compiler.cxx,
'--with-externals=%s' % spec['hpctoolkit-externals'].prefix]
if '+mpi' in spec:
options.extend(['MPICXX=%s' % spec['mpi'].mpicxx])
if '+papi' in spec:
options.extend(['--with-papi=%s' % spec['papi'].prefix])
# TODO: BG-Q configure option
with working_dir('spack-build', create=True):
configure = Executable('../configure')
configure('--prefix=%s' % prefix, *options)
make('install')

View File

@@ -78,7 +78,7 @@ def configure(self, spec, arch):
'MPlib = -L{0}'.format(spec['mpi'].prefix.lib),
# Linear Algebra library (BLAS or VSIPL)
'LAinc = {0}'.format(spec['blas'].prefix.include),
'LAlib = {0}'.format(spec['blas'].blas_shared_lib),
'LAlib = {0}'.format(spec['blas'].blas_libs.joined()),
# F77 / C interface
'F2CDEFS = -DAdd_ -DF77_INTEGER=int -DStringSunStyle',
# HPL includes / libraries / specifics

View File

@@ -42,6 +42,7 @@ class Hwloc(Package):
list_url = "http://www.open-mpi.org/software/hwloc/"
list_depth = 3
version('1.11.4', 'b6f23eb59074fd09fdd84905d50b103d')
version('1.11.3', 'c1d36a9de6028eac1d18ea4782ef958f')
version('1.11.2', 'e4ca55c2a5c5656da4a4e37c8fc51b23')
version('1.11.1', 'feb4e416a1b25963ed565d8b42252fdc')

View File

@@ -54,19 +54,15 @@ def install(self, spec, prefix):
os.environ['CXX'] = spec['mpi'].mpicxx
os.environ['F77'] = spec['mpi'].mpif77
# Since +shared does not build on macOS and also Atlas does not have
# a single static lib to build against, link against shared libs with
# a hope that --whole-archive linker option (or alike) was used
# to command the linker to include whole static libs' content into the
# shared lib
# Note: --with-(lapack|blas)_libs= needs space separated list of names
lapack = spec['lapack'].lapack_libs
blas = spec['blas'].blas_libs
configure_args = [
'--prefix=%s' % prefix,
'--with-lapack-libs=%s' % to_lib_name(
spec['lapack'].lapack_shared_lib),
'--with-lapack-libs=%s' % ' '.join(lapack.names),
'--with-lapack-lib-dirs=%s' % spec['lapack'].prefix.lib,
'--with-blas-libs=%s' % to_lib_name(
spec['blas'].blas_shared_lib),
'--with-blas-libs=%s' % ' '.join(blas.names),
'--with-blas-lib-dirs=%s' % spec['blas'].prefix.lib
]

View File

@@ -27,18 +27,23 @@
class Icu4c(Package):
"""ICU is a mature, widely used set of C/C++ and Java libraries providing
Unicode and Globalization support for software applications.
"""
Unicode and Globalization support for software applications. ICU4C is the
C/C++ interface."""
homepage = "http://site.icu-project.org/"
url = "http://downloads.sourceforge.net/project/icu/ICU4C/54.1/icu4c-54_1-src.tgz"
url = "http://download.icu-project.org/files/icu4c/57.1/icu4c-57_1-src.tgz"
version('54_1', 'e844caed8f2ca24c088505b0d6271bc0')
version('57.1', '976734806026a4ef8bdd17937c8898b9')
def url_for_version(self, version):
base_url = "http://download.icu-project.org/files/icu4c"
return "{0}/{1}/icu4c-{2}-src.tgz".format(
base_url, version, version.underscored)
def install(self, spec, prefix):
cd("source")
configure("--prefix=%s" % prefix)
with working_dir('source'):
configure('--prefix={0}'.format(prefix))
make()
make("install")
make()
make('check')
make('install')

View File

@@ -11,7 +11,7 @@ class IntelParallelStudio(IntelInstaller):
Note: You will have to add the download file to a
mirror so that Spack can find it. For instructions on how to set up a
mirror, see http://software.llnl.gov/spack/mirrors.html"""
mirror, see http://spack.readthedocs.io/en/latest/mirrors.html"""
homepage = "https://software.intel.com/en-us/intel-parallel-studio-xe"
@@ -45,6 +45,10 @@ class IntelParallelStudio(IntelInstaller):
variant('tools', default=True, description="Install the Intel Advisor, "
"VTune Amplifier, and Inspector tools")
variant('shared', default=True, description='Builds shared library')
variant('ilp64', default=False, description='64 bit integers')
variant('openmp', default=False, description='OpenMP multithreading layer')
provides('mpi', when='@cluster:+mpi')
provides('mkl', when='+mkl')
provides('daal', when='+daal')
@@ -55,6 +59,31 @@ class IntelParallelStudio(IntelInstaller):
provides('lapack', when='+mkl')
# TODO: MKL also provides implementation of Scalapack.
@property
def blas_libs(self):
shared = True if '+shared' in self.spec else False
suffix = dso_suffix if '+shared' in self.spec else 'a'
mkl_integer = ['libmkl_intel_ilp64'] if '+ilp64' in self.spec else ['libmkl_intel_lp64'] # NOQA: ignore=E501
mkl_threading = ['libmkl_sequential']
if '+openmp' in self.spec:
mkl_threading = ['libmkl_intel_thread', 'libiomp5'] if '%intel' in self.spec else ['libmkl_gnu_thread'] # NOQA: ignore=E501
# TODO: TBB threading: ['libmkl_tbb_thread', 'libtbb', 'libstdc++']
mkl_libs = find_libraries(
mkl_integer + ['libmkl_core'] + mkl_threading,
root=join_path(self.prefix.lib, 'intel64'),
shared=shared
)
system_libs = [
'libpthread.{0}'.format(suffix),
'libm.{0}'.format(suffix),
'libdl.{0}'.format(suffix)
]
return mkl_libs + system_libs
@property
def lapack_libs(self):
return self.blas_libs
def check_variants(self, spec):
error_message = '\t{variant} can not be turned off if "+all" is set'
@@ -171,24 +200,6 @@ def install(self, spec, prefix):
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.

View File

@@ -77,7 +77,7 @@ class Intel(IntelInstaller):
Note: You will have to add the download file to a
mirror so that Spack can find it. For instructions on how to set up a
mirror, see http://software.llnl.gov/spack/mirrors.html"""
mirror, see http://spack.readthedocs.io/en/latest/mirrors.html"""
homepage = "https://software.intel.com/en-us/intel-parallel-studio-xe"

View File

@@ -53,9 +53,8 @@ def install(self, spec, prefix):
mumps_flags = "-ldmumps -lmumps_common -lpord -lmpiseq"
mumps_libcmd = "-L%s " % mumps_dir.lib + mumps_flags
# By convention, spack links blas & lapack libs to libblas & liblapack
blas_lib = "-L%s" % blas_dir.lib + " -lblas"
lapack_lib = "-L%s" % lapack_dir.lib + " -llapack"
blas_lib = spec['blas'].blas_libs.ld_flags
lapack_lib = spec['lapack'].lapack_libs.ld_flags
configure_args = [
"--prefix=%s" % prefix,

View File

@@ -9,7 +9,7 @@ class Ipp(IntelInstaller):
Note: You will have to add the download file to a
mirror so that Spack can find it. For instructions on how to set up a
mirror, see http://software.llnl.gov/spack/mirrors.html"""
mirror, see http://spack.readthedocs.io/en/latest/mirrors.html"""
homepage = "https://software.intel.com/en-us/intel-ipp"

View File

@@ -0,0 +1,44 @@
##############################################################################
# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://github.com/llnl/spack
# Please also see the LICENSE file for our notice and the LGPL.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License (as
# published by the Free Software Foundation) version 2.1, February 1999.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
# conditions of the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
from spack import *
class Itstool(Package):
"""ITS Tool allows you to translate your XML documents with PO files, using
rules from the W3C Internationalization Tag Set (ITS) to determine what
to translate and how to separate it into PO file messages."""
homepage = "http://itstool.org/"
url = "http://files.itstool.org/itstool/itstool-2.0.2.tar.bz2"
version('2.0.2', 'd472d877a7bc49899a73d442085b2f93')
version('2.0.1', '40935cfb08228488bd45575e5f001a34')
version('2.0.0', 'd8c702c3e8961db83d04182c2aa4730b')
version('1.2.0', 'c0925f6869e33af8e7fe56848c129152')
def install(self, spec, prefix):
configure("--prefix=%s" % prefix)
make()
make('install')

View File

@@ -68,3 +68,9 @@ def do_fetch(self, mirror_only=False):
def install(self, spec, prefix):
distutils.dir_util.copy_tree(".", prefix)
def setup_environment(self, spack_env, run_env):
run_env.set('JAVA_HOME', self.spec.prefix)
def setup_dependent_environment(self, spack_env, run_env, dependent_spec):
spack_env.set('JAVA_HOME', self.spec.prefix)

View File

@@ -31,6 +31,8 @@ class Jemalloc(Package):
homepage = "http://www.canonware.com/jemalloc/"
url = "https://github.com/jemalloc/jemalloc/releases/download/4.0.4/jemalloc-4.0.4.tar.bz2"
version('4.2.1', '094b0a7b8c77c464d0dc8f0643fd3901')
version('4.2.0', 'e6b5d5a1ea93a04207528d274efdd144')
version('4.1.0', 'c4e53c947905a533d5899e5cc3da1f94')
version('4.0.4', '687c5cc53b9a7ab711ccd680351ff988')

View File

@@ -37,9 +37,11 @@ class Julia(Package):
git='https://github.com/JuliaLang/julia.git', branch='master')
version('release-0.5',
git='https://github.com/JuliaLang/julia.git', branch='release-0.5')
version('0.5.0', 'b61385671ba74767ab452363c43131fb', preferred=True)
version('release-0.4',
git='https://github.com/JuliaLang/julia.git', branch='release-0.4')
version('0.4.6', 'd88db18c579049c23ab8ef427ccedf5d', preferred=True)
version('0.4.7', '75a7a7dd882b7840829d8f165e9b9078')
version('0.4.6', 'd88db18c579049c23ab8ef427ccedf5d')
version('0.4.5', '69141ff5aa6cee7c0ec8c85a34aa49a6')
version('0.4.3', '8a4a59fd335b05090dd1ebefbbe5aaac')
@@ -68,7 +70,8 @@ class Julia(Package):
depends_on("binutils", when='+binutils')
depends_on("cmake @2.8:")
depends_on("curl")
depends_on("git") # I think Julia @0.5: doesn't use git any more
depends_on("git", when='@:0.4')
depends_on("git", when='@release-0.4')
depends_on("openssl")
depends_on("python @2.7:2.999")
@@ -162,7 +165,7 @@ def install(self, spec, prefix):
# Configure Julia
with open(join_path(prefix, "etc", "julia", "juliarc.jl"),
"a") as juliarc:
if "@master" in spec or "@release-0.5" in spec:
if "@master" in spec or "@release-0.5" in spec or "@0.5:" in spec:
# This is required for versions @0.5:
juliarc.write(
'# Point package manager to working certificates\n')

View File

@@ -0,0 +1,52 @@
##############################################################################
# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://github.com/llnl/spack
# Please also see the LICENSE file for our notice and the LGPL.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License (as
# published by the Free Software Foundation) version 2.1, February 1999.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
# conditions of the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
from spack import *
class Libemos(Package):
"""The Interpolation library (EMOSLIB) includes Interpolation software and
BUFR & CREX encoding/decoding routines."""
homepage = "https://software.ecmwf.int/wiki/display/EMOS/Emoslib"
url = "https://software.ecmwf.int/wiki/download/attachments/3473472/libemos-4.4.2-Source.tar.gz"
version('4.4.2', 'f15a9aff0f40861f3f046c9088197376')
depends_on('cmake', type='build')
depends_on('grib-api')
def install(self, spec, prefix):
options = []
options.extend(std_cmake_args)
options.append('-DGRIB_API_PATH=%s' % spec['grib_api'].prefix)
# To support long pathnames that spack generates
options.append('-DCMAKE_Fortran_FLAGS=-ffree-line-length-none')
with working_dir('spack-build', create=True):
cmake('..', *options)
make()
make('install')

View File

@@ -40,18 +40,33 @@ class Libgd(Package):
homepage = "https://github.com/libgd/libgd"
url = "https://github.com/libgd/libgd/archive/gd-2.1.1.tar.gz"
version('2.2.3', 'a67bd15fa33d4aac0a1c7904aed19f49')
version('2.1.1', 'e91a1a99903e460e7ba00a794e72cc1e')
# Build dependencies
depends_on('autoconf', type='build')
depends_on('automake', type='build')
depends_on('libtool', type='build')
depends_on('m4', type='build')
depends_on('gettext', type='build')
depends_on('pkg-config', type='build')
depends_on('libpng')
depends_on('cmake', type='build')
depends_on('libtiff')
depends_on('fontconfig')
def install(self, spec, prefix):
with working_dir('spack-build', create=True):
cmake('..',
'-DENABLE_JPEG:BOOL=ON',
'-DENABLE_PNG:BOOL=ON',
'-DENABLE_TIFF:BOOL=ON',
*std_cmake_args)
make()
make("install")
autoreconf("--install", "--force",
"-I", "m4",
"-I", join_path(spec['gettext'].prefix,
"share", "aclocal"),
"-I", join_path(spec['pkg-config'].prefix,
"share", "aclocal"),
"-I", join_path(spec['automake'].prefix,
"share", "aclocal"),
"-I", join_path(spec['libtool'].prefix,
"share", "aclocal")
)
configure('--prefix={0}'.format(prefix))
make()
make("install")

View File

@@ -0,0 +1,104 @@
##############################################################################
# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://github.com/llnl/spack
# Please also see the LICENSE file for our notice and the LGPL.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License (as
# published by the Free Software Foundation) version 2.1, February 1999.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
# conditions of the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
from spack import *
class Libint(Package):
"""Libint is a high-performance library for computing
Gaussian integrals in quantum mechanics."""
homepage = "https://github.com/evaleev/libint"
url = "https://github.com/evaleev/libint/archive/v2.1.0.tar.gz"
version('2.1.0', 'd0dcb985fe32ddebc78fe571ce37e2d6')
version('1.1.6', '990f67b55f49ecc18f32c58da9240684')
version('1.1.5', '379b7d0718ff398715d6898807adf628')
# Build dependencies
depends_on('autoconf@2.52:', type='build')
depends_on('automake', type='build')
depends_on('libtool', type='build')
# Libint 2 dependencies
depends_on('boost', when='@2:')
depends_on('gmp', when='@2:')
def url_for_version(self, version):
base_url = "https://github.com/evaleev/libint/archive"
if version == Version('1.0.0'):
return "{0}/LIBINT_1_00.tar.gz".format(base_url)
elif version < Version('2.1.0'):
return "{0}/release-{1}.tar.gz".format(base_url, version.dashed)
else:
return "{0}/v{1}.tar.gz".format(base_url, version)
def install(self, spec, prefix):
# Generate configure
libtoolize()
aclocal('-I', 'lib/autoconf')
autoconf()
config_args = [
'--prefix={0}'.format(prefix),
'--enable-shared'
]
# Optimizations for the Intel compiler, suggested by CP2K
optflags = '-O2'
if self.compiler.name == 'intel':
optflags += ' -xAVX -axCORE-AVX2 -ipo'
if which('xiar'):
env['AR'] = 'xiar'
env['CFLAGS'] = optflags
env['CXXFLAGS'] = optflags
# Optimization flag names have changed in libint 2
if self.version < Version('2.0.0'):
config_args.extend([
'--with-cc-optflags={0}'.format(optflags),
'--with-cxx-optflags={0}'.format(optflags)
])
else:
config_args.extend([
'--with-cxx-optflags={0}'.format(optflags),
'--with-cxxgen-optflags={0}'.format(optflags)
])
# Options required by CP2K, removed in libint 2
if self.version < Version('2.0.0'):
config_args.extend([
'--with-libint-max-am=5',
'--with-libderiv-max-am1=4'
])
configure(*config_args)
make()
# Testing suite was added in libint 2
if self.version >= Version('2.0.0'):
make('check')
make('install')

View File

@@ -0,0 +1,42 @@
##############################################################################
# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://github.com/llnl/spack
# Please also see the LICENSE file for our notice and the LGPL.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License (as
# published by the Free Software Foundation) version 2.1, February 1999.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
# conditions of the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
from spack import *
class Libmesh(Package):
"""The libMesh library provides a framework for the numerical simulation of
partial differential equations using arbitrary unstructured
discretizations on serial and parallel platforms."""
homepage = "http://libmesh.github.io/"
url = "https://github.com/libMesh/libmesh/releases/download/v1.0.0/libmesh-1.0.0.tar.bz2"
version('1.0.0', 'cb464fc63ea0b71b1e69fa3f5d4f93a4')
def install(self, spec, prefix):
configure('--prefix={0}'.format(prefix))
make()
make('install')

View File

@@ -30,6 +30,7 @@ class Libpng(Package):
homepage = "http://www.libpng.org/pub/png/libpng.html"
url = "http://download.sourceforge.net/libpng/libpng-1.6.16.tar.gz"
version('1.6.24', '65213080dd30a9b16193d9b83adc1ee9')
version('1.6.16', '1a4ad377919ab15b54f6cb6a3ae2622d')
version('1.6.15', '829a256f3de9307731d4f52dc071916d')
version('1.6.14', '2101b3de1d5f348925990f9aa8405660')
@@ -37,9 +38,10 @@ class Libpng(Package):
version('1.4.19', '89bcbc4fc8b31f4a403906cf4f662330')
version('1.2.56', '9508fc59d10a1ffadd9aae35116c19ee')
depends_on('zlib')
depends_on('zlib@1.0.4:') # 1.2.5 or later recommended
def install(self, spec, prefix):
configure("--prefix=%s" % prefix)
make()
make("check")
make("install")

View File

@@ -0,0 +1,68 @@
##############################################################################
# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://github.com/llnl/spack
# Please also see the LICENSE file for our notice and the LGPL.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License (as
# published by the Free Software Foundation) version 2.1, February 1999.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
# conditions of the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
from spack import *
import os
class Libquo(Package):
"""A high-level, easy to use programming interface tailored specifically
for MPI/MPI+X codes that may benefit from evolving process binding
policies during their execution. QUO allows for arbitrary process binding
policies to be enacted and reverted during the execution of an MPI/MPI+X
application as different computational phases are entered and exited,
respectively."""
homepage = "https://github.com/losalamos/libquo"
url = "https://github.com/losalamos/libquo/archive/v1.2.9.tar.gz"
version('1.2.9', 'ca82ab33f13e2b89983f81e7c02e98c2')
depends_on('mpi')
depends_on('autoconf', type='build')
depends_on('automake', type='build')
depends_on('libtool', type='build')
def install(self, spec, prefix):
autoreconf_options = [
'--install',
'--verbose',
'--force',
'-I', 'config',
'-I', os.path.join(spec['automake'].prefix,
'share', 'aclocal'),
'-I', os.path.join(spec['libtool'].prefix,
'share', 'aclocal')
]
autoreconf(*autoreconf_options)
configure_options = [
'--prefix={0}'.format(prefix),
'CC=%s' % join_path(spec['mpi'].prefix.bin, "mpicc"),
'FC=%s' % join_path(spec['mpi'].prefix.bin, "mpif90")
]
configure(*configure_options)
make()
make('install')

View File

@@ -27,7 +27,7 @@
class Libuuid(Package):
"""Portable uuid C library"""
# FIXME: add a proper url for your package's homepage here.
homepage = "http://sourceforge.net/projects/libuuid/"
url = "http://downloads.sourceforge.net/project/libuuid/libuuid-1.0.3.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Flibuuid%2F&ts=1433881396&use_mirror=iweb"
@@ -36,6 +36,5 @@ class Libuuid(Package):
def install(self, spec, prefix):
configure("--prefix=%s" % prefix)
# FIXME: Add logic to build and install here
make()
make("install")

View File

@@ -32,11 +32,27 @@ class Libxc(Package):
homepage = "http://www.tddft.org/programs/octopus/wiki/index.php/Libxc"
url = "http://www.tddft.org/programs/octopus/down.php?file=libxc/libxc-2.2.2.tar.gz"
version('3.0.0', '8227fa3053f8fc215bd9d7b0d36de03c')
version('2.2.2', 'd9f90a0d6e36df6c1312b6422280f2ec')
def install(self, spec, prefix):
configure('--prefix=%s' % prefix,
# Optimizations for the Intel compiler, suggested by CP2K
optflags = '-O2'
if self.compiler.name == 'intel':
optflags += ' -xAVX -axCORE-AVX2 -ipo'
if which('xiar'):
env['AR'] = 'xiar'
env['CFLAGS'] = optflags
env['FCFLAGS'] = optflags
configure('--prefix={0}'.format(prefix),
'--enable-shared')
make()
make("install")
# libxc provides a testsuite, but many tests fail
# http://www.tddft.org/pipermail/libxc/2013-February/000032.html
# make('check')
make('install')

View File

@@ -0,0 +1,50 @@
##############################################################################
# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://github.com/llnl/spack
# Please also see the LICENSE file for our notice and the LGPL.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License (as
# published by the Free Software Foundation) version 2.1, February 1999.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
# conditions of the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
from spack import *
class Libxstream(Package):
'''LIBXSTREAM is a library to work with streams, events, and code regions
that are able to run asynchronous while preserving the usual stream
conditions.'''
homepage = 'https://github.com/hfp/libxstream'
url = 'https://github.com/hfp/libxstream.git'
version('0.9.0', git='https://github.com/hfp/libxstream.git')
def patch(self):
kwargs = {'ignore_absent': False, 'backup': True, 'string': True}
makefile = FileFilter('Makefile.inc')
makefile.filter('CC =', 'CC ?=', **kwargs)
makefile.filter('CXX =', 'CXX ?=', **kwargs)
makefile.filter('FC =', 'FC ?=', **kwargs)
def install(self, spec, prefix):
make()
install_tree('lib', prefix.lib)
install_tree('include', prefix.include)
install_tree('documentation', prefix.share + '/libxstream/doc/')

View File

@@ -22,9 +22,10 @@
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
from spack import *
import os
from spack import *
class Llvm(Package):
"""The LLVM Project is a collection of modular and reusable compiler and
@@ -32,11 +33,13 @@ class Llvm(Package):
with traditional virtual machines, though it does provide helpful
libraries that can be used to build them. The name "LLVM" itself
is not an acronym; it is the full name of the project.
"""
homepage = 'http://llvm.org/'
url = 'http://llvm.org/releases/3.7.1/llvm-3.7.1.src.tar.xz'
family = 'compiler' # Used by lmod
# currently required by mesa package
version('3.0', 'a8e5f5f1c1adebae7b4a654c376a6005',
url='http://llvm.org/releases/3.0/llvm-3.0.tar.gz')
@@ -111,7 +114,7 @@ class Llvm(Package):
'destination': 'projects',
'placement': 'libcxxabi',
},
'clang': {
'cfe': {
'url': base_url % {'pkg': 'cfe'},
'destination': 'tools',
'placement': 'clang',
@@ -141,63 +144,93 @@ class Llvm(Package):
{
'version': 'trunk',
'repo': 'http://llvm.org/svn/llvm-project/llvm/trunk',
'resources': {
'compiler-rt': 'http://llvm.org/svn/llvm-project/compiler-rt/trunk',
'openmp': 'http://llvm.org/svn/llvm-project/openmp/trunk',
'polly': 'http://llvm.org/svn/llvm-project/polly/trunk',
'libcxx': 'http://llvm.org/svn/llvm-project/libcxx/trunk',
'libcxxabi': 'http://llvm.org/svn/llvm-project/libcxxabi/trunk',
'clang': 'http://llvm.org/svn/llvm-project/cfe/trunk',
'clang-tools-extra': 'http://llvm.org/svn/llvm-project/clang-tools-extra/trunk',
'lldb': 'http://llvm.org/svn/llvm-project/lldb/trunk',
'llvm-libunwind': 'http://llvm.org/svn/llvm-project/libunwind/trunk',
'resources': {
'compiler-rt': 'http://llvm.org/svn/llvm-project/compiler-rt/trunk',
'openmp': 'http://llvm.org/svn/llvm-project/openmp/trunk',
'polly': 'http://llvm.org/svn/llvm-project/polly/trunk',
'libcxx': 'http://llvm.org/svn/llvm-project/libcxx/trunk',
'libcxxabi': 'http://llvm.org/svn/llvm-project/libcxxabi/trunk',
'cfe': 'http://llvm.org/svn/llvm-project/cfe/trunk',
'clang-tools-extra': 'http://llvm.org/svn/llvm-project/clang-tools-extra/trunk',
'lldb': 'http://llvm.org/svn/llvm-project/lldb/trunk',
'llvm-libunwind': 'http://llvm.org/svn/llvm-project/libunwind/trunk',
}
},
{
'version': '3.9.0',
'md5': 'f2093e98060532449eb7d2fcfd0bc6c6',
'resources': {
'compiler-rt': 'b7ea34c9d744da16ffc0217b6990d095',
'openmp': '5390164f2374e1444e82393541ecf6c7',
'polly': '1cf328cbae25267749b68cfa6f113674',
'libcxx': '0a11efefd864ce6f321194e441f7e569',
'libcxxabi': 'd02642308e22e614af6b061b9b4fedfa',
'cfe': '29e1d86bee422ab5345f5e9fb808d2dc',
'clang-tools-extra': 'f4f663068c77fc742113211841e94d5e',
'lldb': '968d053c3c3d7297983589164c6999e9',
'llvm-libunwind': '3e5c87c723a456be599727a444b1c166',
}
},
{
'version': '3.8.0',
'md5': '07a7a74f3c6bd65de4702bf941b511a0',
'resources': {
'compiler-rt': 'd6fcbe14352ffb708e4d1ac2e48bb025',
'openmp': '8fd7cc35d48051613cf1e750e9f22e40',
'polly': '1b3b20f52d34a4024e21a4ea7112caa7',
'libcxx': 'd6e0bdbbee39f7907ad74fd56d03b88a',
'libcxxabi': 'bbe6b4d72c7c5978550d370af529bcf7',
'clang': 'cc99e7019bb74e6459e80863606250c5',
'clang-tools-extra': 'c2344f50e0eea0b402f0092a80ddc036',
'lldb': 'a5da35ed9cc8c8817ee854e3dbfba00e',
'llvm-libunwind': '162ade468607f153cca12be90b5194fa',
}
},
{
'version': '3.7.1',
'md5': 'bf8b3a2c79e61212c5409041dfdbd319',
'resources': {
'compiler-rt': '1c6975daf30bb3b0473b53c3a1a6ff01',
'openmp': 'b4ad08cda4e5c22e42b66062b140438e',
'polly': '3a2a7367002740881637f4d47bca4dc3',
'libcxx': 'f9c43fa552a10e14ff53b94d04bea140',
'libcxxabi': '52d925afac9f97e9dcac90745255c169',
'clang': '0acd026b5529164197563d135a8fd83e',
'clang-tools-extra': '5d49ff745037f061a7c86aeb6a24c3d2',
'lldb': 'a106d8a0d21fc84d76953822fbaf3398',
'llvm-libunwind': '814bd52c9247c5d04629658fbcb3ab8c',
}
},
{
'version': '3.7.0',
'md5': 'b98b9495e5655a672d6cb83e1a180f8e',
'resources': {
'compiler-rt': '383c10affd513026f08936b5525523f5',
'openmp': 'f482c86fdead50ba246a1a2b0bbf206f',
'polly': '32f93ffc9cc7e042df22089761558f8b',
'libcxx': '46aa5175cbe1ad42d6e9c995968e56dd',
'libcxxabi': '5aa769e2fca79fa5335cfae8f6258772',
'clang': '8f9d27335e7331cf0a4711e952f21f01',
'clang-tools-extra': 'd5a87dacb65d981a427a536f6964642e',
'lldb': 'e5931740400d1dc3e7db4c7ba2ceff68',
'llvm-libunwind': '9a75392eb7eb8ed5c0840007e212baf5',
}
},
},
{
'version': '3.8.1',
'md5': '538467e6028bbc9259b1e6e015d25845',
'resources': {
'compiler-rt': 'f140db073d2453f854fbe01cc46f3110',
'openmp': '078b8d4c51ad437a4f8b5989f5ec4156',
'polly': '8a40e697a4ba1c8b640b85d074bd6e25',
'libcxx': '1bc60150302ff76a0d79d6f9db22332e',
'libcxxabi': '3c63b03ba2f30a01279ca63384a67773',
'cfe': '4ff2f8844a786edb0220f490f7896080',
'clang-tools-extra': '6e49f285d0b366cc3cab782d8c92d382',
'lldb': '9e4787b71be8e432fffd31e13ac87623',
'llvm-libunwind': 'd66e2387e1d37a8a0c8fe6a0063a3bab',
}
},
{
'version': '3.8.0',
'md5': '07a7a74f3c6bd65de4702bf941b511a0',
'resources': {
'compiler-rt': 'd6fcbe14352ffb708e4d1ac2e48bb025',
'openmp': '8fd7cc35d48051613cf1e750e9f22e40',
'polly': '1b3b20f52d34a4024e21a4ea7112caa7',
'libcxx': 'd6e0bdbbee39f7907ad74fd56d03b88a',
'libcxxabi': 'bbe6b4d72c7c5978550d370af529bcf7',
'cfe': 'cc99e7019bb74e6459e80863606250c5',
'clang-tools-extra': 'c2344f50e0eea0b402f0092a80ddc036',
'lldb': 'a5da35ed9cc8c8817ee854e3dbfba00e',
'llvm-libunwind': '162ade468607f153cca12be90b5194fa',
}
},
{
'version': '3.7.1',
'md5': 'bf8b3a2c79e61212c5409041dfdbd319',
'resources': {
'compiler-rt': '1c6975daf30bb3b0473b53c3a1a6ff01',
'openmp': 'b4ad08cda4e5c22e42b66062b140438e',
'polly': '3a2a7367002740881637f4d47bca4dc3',
'libcxx': 'f9c43fa552a10e14ff53b94d04bea140',
'libcxxabi': '52d925afac9f97e9dcac90745255c169',
'cfe': '0acd026b5529164197563d135a8fd83e',
'clang-tools-extra': '5d49ff745037f061a7c86aeb6a24c3d2',
'lldb': 'a106d8a0d21fc84d76953822fbaf3398',
'llvm-libunwind': '814bd52c9247c5d04629658fbcb3ab8c',
}
},
{
'version': '3.7.0',
'md5': 'b98b9495e5655a672d6cb83e1a180f8e',
'resources': {
'compiler-rt': '383c10affd513026f08936b5525523f5',
'openmp': 'f482c86fdead50ba246a1a2b0bbf206f',
'polly': '32f93ffc9cc7e042df22089761558f8b',
'libcxx': '46aa5175cbe1ad42d6e9c995968e56dd',
'libcxxabi': '5aa769e2fca79fa5335cfae8f6258772',
'cfe': '8f9d27335e7331cf0a4711e952f21f01',
'clang-tools-extra': 'd5a87dacb65d981a427a536f6964642e',
'lldb': 'e5931740400d1dc3e7db4c7ba2ceff68',
'llvm-libunwind': '9a75392eb7eb8ed5c0840007e212baf5',
}
},
{
'version': '3.6.2',
'md5': '0c1ee3597d75280dee603bae9cbf5cc2',
@@ -206,7 +239,7 @@ class Llvm(Package):
'openmp': '65dd5863b9b270960a96817e9152b123',
'libcxx': '22214c90697636ef960a49aef7c1823a',
'libcxxabi': '17518e361e4e228f193dd91e8ef54ba2',
'clang': 'ff862793682f714bb7862325b9c06e20',
'cfe': 'ff862793682f714bb7862325b9c06e20',
'clang-tools-extra': '3ebc1dc41659fcec3db1b47d81575e06',
'lldb': '51e5eb552f777b950bb0ff326e60d5f0',
}
@@ -219,7 +252,7 @@ class Llvm(Package):
'openmp': '121ddb10167d7fc38b1f7e4b029cf059',
'libcxx': '406f09b1dab529f3f7879f4d548329d2',
'libcxxabi': 'b22c707e8d474a99865ad3c521c3d464',
'clang': '93f9532f8f7e6f1d8e5c1116907051cb',
'cfe': '93f9532f8f7e6f1d8e5c1116907051cb',
'clang-tools-extra': 'f13f31ed3038acadc6fa63fef812a246',
'lldb': 'cc5ea8a414c62c33e760517f8929a204',
}

View File

@@ -0,0 +1,55 @@
##############################################################################
# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://github.com/llnl/spack
# Please also see the LICENSE file for our notice and the LGPL.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License (as
# published by the Free Software Foundation) version 2.1, February 1999.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
# conditions of the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
from spack import *
import os
class Lulesh(Package):
"""Livermore Unstructured Lagrangian Explicit Shock Hydrodynamics (LULESH)
"""
homepage = "https://codesign.llnl.gov/lulesh.php"
url = "https://codesign.llnl.gov/lulesh/lulesh2.0.3.tgz"
version("2.0.3", "336644a8750f71c7c6b9d2960976e7aa")
patch("remove_defaults.patch")
variant('mpip', default=False)
depends_on("mpi", type="build")
depends_on("mpip", when="+mpip")
def install(self, spec, prefix):
if '+mpip' in spec:
os.environ["LDFLAGS"] = " -lmpiP -ldwarf -lelf"
if os.uname()[4] == "x86_64":
os.environ["LDFLAGS"] += " -lunwind"
os.environ["CXX"] = spec['mpi'].mpicxx + " -DUSE_MPI=1"
os.environ["PREFIX"] = prefix
make()
make("install")

View File

@@ -0,0 +1,60 @@
--- a/Makefile
+++ b/Makefile
@@ -1,17 +1,9 @@
#default build suggestion of MPI + OPENMP with gcc on Livermore machines you might have to change the compiler name
-SHELL = /bin/sh
.SUFFIXES: .cc .o
LULESH_EXEC = lulesh2.0
-MPI_INC = /opt/local/include/openmpi
-MPI_LIB = /opt/local/lib
-
-SERCXX = g++ -DUSE_MPI=0
-MPICXX = mpig++ -DUSE_MPI=1
-CXX = $(MPICXX)
-
SOURCES2.0 = \
lulesh.cc \
lulesh-comm.cc \
@@ -20,28 +12,6 @@
lulesh-init.cc
OBJECTS2.0 = $(SOURCES2.0:.cc=.o)
-#Default build suggestions with OpenMP for g++
-CXXFLAGS = -g -O3 -fopenmp -I. -Wall
-LDFLAGS = -g -O3 -fopenmp
-
-#Below are reasonable default flags for a serial build
-#CXXFLAGS = -g -O3 -I. -Wall
-#LDFLAGS = -g -O3
-
-#common places you might find silo on the Livermore machines.
-#SILO_INCDIR = /opt/local/include
-#SILO_LIBDIR = /opt/local/lib
-#SILO_INCDIR = ./silo/4.9/1.8.10.1/include
-#SILO_LIBDIR = ./silo/4.9/1.8.10.1/lib
-
-#If you do not have silo and visit you can get them at:
-#silo: https://wci.llnl.gov/codes/silo/downloads.html
-#visit: https://wci.llnl.gov/codes/visit/download.html
-
-#below is and example of how to make with silo, hdf5 to get vizulization by default all this is turned off. All paths are Livermore specific.
-#CXXFLAGS = -g -DVIZ_MESH -I${SILO_INCDIR} -Wall -Wno-pragmas
-#LDFLAGS = -g -L${SILO_LIBDIR} -Wl,-rpath -Wl,${SILO_LIBDIR} -lsiloh5 -lhdf5
-
.cc.o: lulesh.h
@echo "Building $<"
$(CXX) -c $(CXXFLAGS) -o $@ $<
@@ -56,6 +26,7 @@
/bin/rm -f *.o *~ $(OBJECTS) $(LULESH_EXEC)
/bin/rm -rf *.dSYM
-tar: clean
- cd .. ; tar cvf lulesh-2.0.tar LULESH-2.0 ; mv lulesh-2.0.tar LULESH-2.0
-
+install: lulesh2.0
+ @echo "Installing"
+ mkdir -p $(PREFIX)/bin
+ install --mode=755 lulesh2.0 $(PREFIX)/bin/

View File

@@ -23,6 +23,7 @@
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
from spack import *
import sys
class M4(Package):
@@ -47,6 +48,11 @@ def install(self, spec, prefix):
else:
configure_args.append('--without-libsigsegv-prefix')
# http://lists.gnu.org/archive/html/bug-m4/2016-09/msg00002.html
if (sys.platform == "darwin") and (spec.satisfies('%gcc')) and \
(spec.architecture.platform_os.version == "10.12"):
configure_args.append('ac_cv_type_struct_sched_param=yes')
configure("--prefix=%s" % prefix, *configure_args)
make()
make("install")

View File

@@ -0,0 +1,5 @@
--- a/tools/xml2mv.py 2016-06-27 17:49:27.000000000 +0200
+++ a/tools/xml2mv.py 2016-09-13 16:25:17.246960456 +0200
@@ -1 +1 @@
-#!/usr/bin/python
+#!/usr/bin/env python

View File

@@ -0,0 +1,115 @@
##############################################################################
# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://github.com/llnl/spack
# Please also see the LICENSE file for our notice and the LGPL.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License (as
# published by the Free Software Foundation) version 2.1, February 1999.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
# conditions of the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
from spack import *
class Magics(Package):
"""Magics is the latest generation of the ECMWF's Meteorological plotting
software MAGICS. Although completely redesigned in C++, it is intended
to be as backwards-compatible as possible with the Fortran interface."""
homepage = "https://software.ecmwf.int/wiki/display/MAGP/Magics"
url = "https://software.ecmwf.int/wiki/download/attachments/3473464/Magics-2.29.0-Source.tar.gz"
# Maintainers of Magics do not keep tarballs of minor releases. Once the
# next minor released is published the previous one becomes unavailable.
# That is why the preferred version is the latest stable one.
version('2.29.4', '91c561f413316fb665b3bb563f3878d1')
version('2.29.0', 'db20a4d3c51a2da5657c31ae3de59709', preferred=True)
# The patch changes the hardcoded path to python in shebang to enable the
# usage of the first python installation that appears in $PATH
patch('no_hardcoded_python.patch')
# The patch reorders includes and adds namespaces where necessary to
# resolve ambiguity of invocations of isnan and isinf functions. The
# patch is not needed since the version 2.29.1
patch('resolve_isnan_ambiguity.patch', when='@2.29.0')
variant('bufr', default=False, description='Enable BUFR support')
variant('netcdf', default=False, description='Enable NetCDF support')
variant('cairo', default=True, description='Enable cairo support[png/jpeg]')
variant('metview', default=False, description='Enable metview support')
variant('qt', default=False, description='Enable metview support with qt')
depends_on('cmake', type='build')
depends_on('pkg-config', type='build')
# Currently python is only necessary to run
# building preprocessing scripts.
depends_on('python', type='build')
depends_on('grib-api')
depends_on('proj')
depends_on('boost')
depends_on('expat')
depends_on('pango', when='+cairo')
depends_on('netcdf-cxx', when='+netcdf')
depends_on('libemos', when='+bufr')
depends_on('qt', when='+metview+qt')
def install(self, spec, prefix):
options = []
options.extend(std_cmake_args)
options.append('-DENABLE_ODB=OFF')
options.append('-DENABLE_PYTHON=OFF')
options.append('-DBOOST_ROOT=%s' % spec['boost'].prefix)
options.append('-DPROJ4_PATH=%s' % spec['proj'].prefix)
options.append('-DGRIB_API_PATH=%s' % spec['grib-api'].prefix)
options.append('-DENABLE_TESTS=OFF')
if '+bufr' in spec:
options.append('-DENABLE_BUFR=ON')
options.append('-DLIBEMOS_PATH=%s' % spec['libemos'].prefix)
else:
options.append('-DENABLE_BUFR=OFF')
if '+netcdf' in spec:
options.append('-DENABLE_NETCDF=ON')
options.append('-DNETCDF_PATH=%s' % spec['netcdf-cxx'].prefix)
else:
options.append('-DENABLE_NETCDF=OFF')
if '+cairo' in spec:
options.append('-DENABLE_CAIRO=ON')
else:
options.append('-DENABLE_CAIRO=OFF')
if '+metview' in spec:
if '+qt' in spec:
options.append('-DENABLE_METVIEW=ON')
if spec['qt'].version.up_to(1) == '5':
options.append('-DENABLE_QT5=ON')
else:
options.append('-DENABLE_METVIEW_NO_QT=ON')
else:
options.append('-DENABLE_METVIEW=OFF')
if (self.compiler.f77 is None) or (self.compiler.fc is None):
options.append('-DENABLE_FORTRAN=OFF')
with working_dir('spack-build', create=True):
cmake('..', *options)
make()
make('install')

View File

@@ -0,0 +1,73 @@
--- a/src/common/Polyline.cc 2016-04-28 14:38:09.000000000 +0200
+++ b/src/common/Polyline.cc 2016-09-14 13:31:35.784617803 +0200
@@ -31,2 +30,0 @@
-#include "TeCoord2D.h"
-#include "TeGeometryAlgorithms.h"
--- a/src/decoders/GribRegularInterpretor.cc 2016-04-28 14:38:09.000000000 +0200
+++ b/src/decoders/GribRegularInterpretor.cc 2016-09-14 13:43:41.673614590 +0200
@@ -2083,2 +2083,2 @@
- if (isnan(val1)) {
- if (isnan(val2)) {
+ if (std::isnan(val1)) {
+ if (std::isnan(val2)) {
@@ -2090 +2090 @@
- if (isnan(val2)) {
+ if (std::isnan(val2)) {
@@ -2101 +2101 @@
- if (isnan(val) || isinf(val) || isinf(-val)) {
+ if (std::isnan(val) || std::isinf(val) || std::isinf(-val)) {
@@ -2105 +2105 @@
- if (isnan(val))
+ if (std::isnan(val))
--- a/src/decoders/GribSatelliteInterpretor.cc 2016-04-28 14:38:09.000000000 +0200
+++ b/src/decoders/GribSatelliteInterpretor.cc 2016-09-14 13:48:55.243699910 +0200
@@ -33,5 +32,0 @@
-#include "TeProjection.h"
-#include "TeDataTypes.h"
-#include "TeRasterParams.h"
-#include "TeDecoderMemory.h"
-#include "TeRasterRemap.h"
--- a/src/decoders/NetcdfGeoMatrixInterpretor.cc 2016-04-28 14:38:09.000000000 +0200
+++ b/src/decoders/NetcdfGeoMatrixInterpretor.cc 2016-09-14 13:52:37.481201085 +0200
@@ -93 +93 @@
- if ( !isnan(*d) ) {
+ if ( !std::isnan(*d) ) {
--- a/src/decoders/NetcdfOrcaInterpretor.cc 2016-04-28 14:38:09.000000000 +0200
+++ b/src/decoders/NetcdfOrcaInterpretor.cc 2016-09-14 13:51:16.248650570 +0200
@@ -210,2 +210,2 @@
- if ( isnan(val1) ) {
- if ( isnan(val2) ) {
+ if ( std::isnan(val1) ) {
+ if ( std::isnan(val2) ) {
@@ -218 +218 @@
- if ( isnan(val2) ) {
+ if ( std::isnan(val2) ) {
@@ -226 +226 @@
- if (isnan(val) || isinf(val) || isinf(-val) ) {
+ if (std::isnan(val) || std::isinf(val) || std::isinf(-val) ) {
@@ -230 +230 @@
- if (isnan(val) ) val = missing;
+ if (std::isnan(val) ) val = missing;
@@ -296 +296 @@
- if (isnan(value) )
+ if (std::isnan(value) )
--- a/src/terralib/kernel/TeCentroid.cpp 2016-04-28 14:38:09.000000000 +0200
+++ b/src/terralib/kernel/TeCentroid.cpp 2016-09-14 14:17:31.675996554 +0200
@@ -23,0 +24,2 @@
+#include "TeGeometryAlgorithms.h"
+
@@ -30 +31,0 @@
-#include "TeGeometryAlgorithms.h"
--- a/src/terralib/kernel/TeDatabase.h 2014-11-07 17:39:24.000000000 +0100
+++ b/src/terralib/kernel/TeDatabase.h 2016-09-14 14:20:01.041100590 +0200
@@ -33,0 +34 @@
+#include "TeGeometry.h"
@@ -38 +38,0 @@
-#include "TeGeometry.h"
--- a/src/terralib/kernel/TeOverlayUtils.h 2014-11-07 17:39:24.000000000 +0100
+++ b/src/terralib/kernel/TeOverlayUtils.h 2016-09-14 14:21:51.649920405 +0200
@@ -37,0 +38,2 @@
+#include "TeGeometry.h"
+
@@ -44 +45,0 @@
-#include "TeGeometry.h"

View File

@@ -35,6 +35,7 @@ class Mbedtls(Package):
homepage = "https://tls.mbed.org"
url = "https://github.com/ARMmbed/mbedtls/archive/mbedtls-2.2.1.tar.gz"
version('2.3.0', '98158e1160a0825a3e8db38881a177a0')
version('2.2.1', '73a38f96898d6d03e32f55dd9f9a67be')
version('2.2.0', 'eaf4586c1ef93ae872e606b6c1203942')
version('2.1.4', '40cdf67b6c6d92c9cbcfd552d39ea3ae')

View File

@@ -22,23 +22,48 @@
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
from spack import *
import llnl.util.tty as tty
import os
class Mercurial(Package):
"""Mercurial is a free, distributed source control management tool."""
homepage = "https://www.mercurial-scm.org"
url = "https://www.mercurial-scm.org/release/mercurial-3.9.tar.gz"
version('3.9' , 'e2b355da744e94747daae3a5339d28a0')
version('3.9.1', '3759dd10edb8c1a6dfb8ff0ce82658ce')
version('3.9', 'e2b355da744e94747daae3a5339d28a0')
version('3.8.4', 'cec2c3db688cb87142809089c6ae13e9')
version('3.8.3', '97aced7018614eeccc9621a3dea35fda')
version('3.8.2', 'c38daa0cbe264fc621dc3bb05933b0b3')
version('3.8.1', '172a8c588adca12308c2aca16608d7f4')
depends_on("python @2.6:2.7.999")
depends_on("py-docutils", type="build")
extends('python')
depends_on('python@2.6:2.8')
depends_on('py-docutils', type='build')
def install(self, spec, prefix):
make('PREFIX=%s' % prefix, 'install')
make('install', 'PREFIX={0}'.format(prefix))
# Configuration of HTTPS certificate authorities
# https://www.mercurial-scm.org/wiki/CACertificates
hgrc_filename = join_path(prefix.etc, 'mercurial', 'hgrc')
mkdirp(os.path.dirname(hgrc_filename))
with open(hgrc_filename, 'w') as hgrc:
if os.path.exists('/etc/ssl/certs/ca-certificates.crt'):
# Debian/Ubuntu/Gentoo/Arch Linux
hgrc.write('[web]\ncacerts = /etc/ssl/certs/ca-certificates.crt') # noqa
elif os.path.exists('/etc/pki/tls/certs/ca-bundle.crt'):
# Fedora/RHEL/CentOS
hgrc.write('[web]\ncacerts = /etc/pki/tls/certs/ca-bundle.crt')
elif os.path.exists('/etc/ssl/ca-bundle.pem'):
# openSUSE/SLE
hgrc.write('[web]\ncacerts = /etc/ssl/ca-bundle.pem')
else:
tty.warn('CA certificate not found. You may not be able to '
'connect to an HTTPS server. If your CA certificate '
'is in a non-standard location, you should add it to '
'{0}'.format(hgrc_filename))

View File

@@ -43,16 +43,12 @@ class Metis(Package):
version('5.0.2', 'acb521a4e8c2e6dd559a7f9abd0468c5')
version('4.0.3', 'd3848b454532ef18dc83e4fb160d1e10')
variant('shared', default=True,
description='Enables the build of shared libraries')
variant('debug', default=False,
description='Builds the library in debug mode')
variant('gdb', default=False, description='Enables gdb support')
variant('shared', default=True, description='Enables the build of shared libraries.')
variant('debug', default=False, description='Builds the library in debug mode.')
variant('gdb', default=False, description='Enables gdb support.')
variant('idx64', default=False,
description='Use int64_t as default index type')
variant('real64', default=False,
description='Use double precision floating point types')
variant('idx64', default=False, description='Sets the bit width of METIS\'s index type to 64.')
variant('real64', default=False, description='Sets the bit width of METIS\'s real type to 64.')
depends_on('cmake@2.8:', when='@5:', type='build')
@@ -62,13 +58,38 @@ def url_for_version(self, version):
verdir = 'OLD/' if version < Version('4.0.3') else ''
return '%s/%smetis-%s.tar.gz' % (Metis.base_url, verdir, version)
@when('@:4')
def patch(self):
pass
@when('@5:')
def patch(self):
source_path = self.stage.source_path
metis_header = FileFilter(join_path(source_path, 'include', 'metis.h'))
metis_header.filter(
r'(\b)(IDXTYPEWIDTH )(\d+)(\b)',
r'\1\2{0}\4'.format('64' if '+idx64' in self.spec else '32'),
)
metis_header.filter(
r'(\b)(REALTYPEWIDTH )(\d+)(\b)',
r'\1\2{0}\4'.format('64' if '+real64' in self.spec else '32'),
)
# Make clang 7.3 happy.
# Prevents "ld: section __DATA/__thread_bss extends beyond end of file"
# See upstream LLVM issue https://llvm.org/bugs/show_bug.cgi?id=27059
# and https://github.com/Homebrew/homebrew-science/blob/master/metis.rb
if self.spec.satisfies('%clang@7.3.0'):
filter_file('#define MAX_JBUFS 128', '#define MAX_JBUFS 24',
join_path(source_path, 'GKlib', 'error.c'))
@when('@:4')
def install(self, spec, prefix):
# Process library spec and options
unsupp_vars = [v for v in ('+gdb', '+idx64', '+real64') if v in spec]
if unsupp_vars:
msg = 'Given variants %s are unsupported by METIS 4!' % unsupp_vars
raise InstallError(msg)
if any('+{0}'.format(v) in spec for v in ['gdb', 'idx64', 'real64']):
raise InstallError('METIS@:4 does not support the following '
'variants: gdb, idx64, real64.')
options = ['COPTIONS=-fPIC']
if '+debug' in spec:
@@ -118,49 +139,48 @@ def install(self, spec, prefix):
join_path('Programs', 'io.o'), join_path('Test', 'mtest.c'),
'-o', '%s/mtest' % prefix.bin, '-lmetis', '-lm')
test_bin = lambda testname: join_path(prefix.bin, testname)
test_graph = lambda graphname: join_path(prefix.share, graphname)
if self.run_tests:
test_bin = lambda testname: join_path(prefix.bin, testname)
test_graph = lambda graphname: join_path(prefix.share, graphname)
graph = test_graph('4elt.graph')
os.system('%s %s' % (test_bin('mtest'), graph))
os.system('%s %s 40' % (test_bin('kmetis'), graph))
os.system('%s %s' % (test_bin('onmetis'), graph))
graph = test_graph('test.mgraph')
os.system('%s %s 2' % (test_bin('pmetis'), graph))
os.system('%s %s 2' % (test_bin('kmetis'), graph))
os.system('%s %s 5' % (test_bin('kmetis'), graph))
graph = test_graph('metis.mesh')
os.system('%s %s 10' % (test_bin('partnmesh'), graph))
os.system('%s %s 10' % (test_bin('partdmesh'), graph))
os.system('%s %s' % (test_bin('mesh2dual'), graph))
graph = test_graph('4elt.graph')
os.system('%s %s' % (test_bin('mtest'), graph))
os.system('%s %s 40' % (test_bin('kmetis'), graph))
os.system('%s %s' % (test_bin('onmetis'), graph))
graph = test_graph('test.mgraph')
os.system('%s %s 2' % (test_bin('pmetis'), graph))
os.system('%s %s 2' % (test_bin('kmetis'), graph))
os.system('%s %s 5' % (test_bin('kmetis'), graph))
graph = test_graph('metis.mesh')
os.system('%s %s 10' % (test_bin('partnmesh'), graph))
os.system('%s %s 10' % (test_bin('partdmesh'), graph))
os.system('%s %s' % (test_bin('mesh2dual'), graph))
# FIXME: The following code should replace the testing code in the
# block above since it causes installs to fail when one or more of the
# Metis tests fail, but it currently doesn't work because the 'mtest',
# 'onmetis', and 'partnmesh' tests return error codes that trigger
# false positives for failure.
"""
Executable(test_bin('mtest'))(test_graph('4elt.graph'))
Executable(test_bin('kmetis'))(test_graph('4elt.graph'), '40')
Executable(test_bin('onmetis'))(test_graph('4elt.graph'))
# FIXME: The following code should replace the testing code in the
# block above since it causes installs to fail when one or more of
# the Metis tests fail, but it currently doesn't work because the
# 'mtest', 'onmetis', and 'partnmesh' tests return error codes that
# trigger false positives for failure.
"""
Executable(test_bin('mtest'))(test_graph('4elt.graph'))
Executable(test_bin('kmetis'))(test_graph('4elt.graph'), '40')
Executable(test_bin('onmetis'))(test_graph('4elt.graph'))
Executable(test_bin('pmetis'))(test_graph('test.mgraph'), '2')
Executable(test_bin('kmetis'))(test_graph('test.mgraph'), '2')
Executable(test_bin('kmetis'))(test_graph('test.mgraph'), '5')
Executable(test_bin('pmetis'))(test_graph('test.mgraph'), '2')
Executable(test_bin('kmetis'))(test_graph('test.mgraph'), '2')
Executable(test_bin('kmetis'))(test_graph('test.mgraph'), '5')
Executable(test_bin('partnmesh'))(test_graph('metis.mesh'), '10')
Executable(test_bin('partdmesh'))(test_graph('metis.mesh'), '10')
Executable(test_bin('mesh2dual'))(test_graph('metis.mesh'))
"""
Executable(test_bin('partnmesh'))(test_graph('metis.mesh'), '10')
Executable(test_bin('partdmesh'))(test_graph('metis.mesh'), '10')
Executable(test_bin('mesh2dual'))(test_graph('metis.mesh'))
"""
@when('@5:')
def install(self, spec, prefix):
options = []
options.extend(std_cmake_args)
build_directory = join_path(self.stage.path, 'spack-build')
source_directory = self.stage.source_path
build_directory = join_path(source_directory, 'build')
options = std_cmake_args[:]
options.append('-DGKLIB_PATH:PATH=%s/GKlib' % source_directory)
options.append('-DCMAKE_INSTALL_NAME_DIR:PATH=%s/lib' % prefix)
@@ -172,26 +192,24 @@ def install(self, spec, prefix):
if '+gdb' in spec:
options.append('-DGDB:BOOL=ON')
metis_header = join_path(source_directory, 'include', 'metis.h')
if '+idx64' in spec:
filter_file('IDXTYPEWIDTH 32', 'IDXTYPEWIDTH 64', metis_header)
if '+real64' in spec:
filter_file('REALTYPEWIDTH 32', 'REALTYPEWIDTH 64', metis_header)
# Make clang 7.3 happy.
# Prevents "ld: section __DATA/__thread_bss extends beyond end of file"
# See upstream LLVM issue https://llvm.org/bugs/show_bug.cgi?id=27059
# and https://github.com/Homebrew/homebrew-science/blob/master/metis.rb
if spec.satisfies('%clang@7.3.0'):
filter_file('#define MAX_JBUFS 128', '#define MAX_JBUFS 24',
join_path(source_directory, 'GKlib', 'error.c'))
with working_dir(build_directory, create=True):
cmake(source_directory, *options)
make()
make('install')
# now run some tests:
# install GKlib headers, which will be needed for ParMETIS
GKlib_dist = join_path(prefix.include, 'GKlib')
mkdirp(GKlib_dist)
hfiles = glob.glob(join_path(source_directory, 'GKlib', '*.h'))
for hfile in hfiles:
install(hfile, GKlib_dist)
if self.run_tests:
# FIXME: On some systems, the installed binaries for METIS cannot
# be executed without first being read.
ls = which('ls')
ls('-a', '-l', prefix.bin)
for f in ['4elt', 'copter2', 'mdual']:
graph = join_path(source_directory, 'graphs', '%s.graph' % f)
Executable(join_path(prefix.bin, 'graphchk'))(graph)
@@ -202,10 +220,3 @@ def install(self, spec, prefix):
Executable(join_path(prefix.bin, 'gpmetis'))(graph, '2')
graph = join_path(source_directory, 'graphs', 'metis.mesh')
Executable(join_path(prefix.bin, 'mpmetis'))(graph, '2')
# install GKlib headers, which will be needed for ParMETIS
GKlib_dist = join_path(prefix.include, 'GKlib')
mkdirp(GKlib_dist)
hfiles = glob.glob(join_path(source_directory, 'GKlib', '*.h'))
for hfile in hfiles:
install(hfile, GKlib_dist)

View File

@@ -89,8 +89,7 @@ def install(self, spec, prefix):
options = ['PREFIX=%s' % prefix]
if '+lapack' in spec:
lapack_lib = '-L{0} -llapack -L{1} -lblas'.format(
spec['lapack'].prefix.lib, spec['blas'].prefix.lib)
lapack_lib = (spec['lapack'].lapack_libs + spec['blas'].blas_libs).ld_flags # NOQA: ignore=E501
options.extend([
'MFEM_USE_LAPACK=YES',
'LAPACK_OPT=-I%s' % spec['lapack'].prefix.include,

View File

@@ -9,7 +9,7 @@ class Mkl(IntelInstaller):
Note: You will have to add the download file to a
mirror so that Spack can find it. For instructions on how to set up a
mirror, see http://software.llnl.gov/spack/mirrors.html.
mirror, see http://spack.readthedocs.io/en/latest/mirrors.html.
To set the threading layer at run time set MKL_THREADING_LAYER
variable to one of the following values: INTEL (default), SEQUENTIAL, PGI.
@@ -24,13 +24,41 @@ class Mkl(IntelInstaller):
version('11.3.3.210', 'f72546df27f5ebb0941b5d21fd804e34',
url="file://%s/l_mkl_11.3.3.210.tgz" % os.getcwd())
variant('shared', default=True, description='Builds shared library')
variant('ilp64', default=False, description='64 bit integers')
variant('openmp', default=False, description='OpenMP multithreading layer')
# virtual dependency
provides('blas')
provides('lapack')
# TODO: MKL also provides implementation of Scalapack.
def install(self, spec, prefix):
@property
def blas_libs(self):
shared = True if '+shared' in self.spec else False
suffix = dso_suffix if '+shared' in self.spec else 'a'
mkl_integer = ['libmkl_intel_ilp64'] if '+ilp64' in self.spec else ['libmkl_intel_lp64'] # NOQA: ignore=E501
mkl_threading = ['libmkl_sequential']
if '+openmp' in self.spec:
mkl_threading = ['libmkl_intel_thread', 'libiomp5'] if '%intel' in self.spec else ['libmkl_gnu_thread'] # NOQA: ignore=E501
# TODO: TBB threading: ['libmkl_tbb_thread', 'libtbb', 'libstdc++']
mkl_libs = find_libraries(
mkl_integer + ['libmkl_core'] + mkl_threading,
root=join_path(self.prefix.lib, 'intel64'),
shared=shared
)
system_libs = [
'libpthread.{0}'.format(suffix),
'libm.{0}'.format(suffix),
'libdl.{0}'.format(suffix)
]
return mkl_libs + system_libs
@property
def lapack_libs(self):
return self.blas_libs
def install(self, spec, prefix):
self.intel_prefix = os.path.join(prefix, "pkg")
IntelInstaller.install(self, spec, prefix)
@@ -45,25 +73,6 @@ def install(self, spec, prefix):
os.symlink(os.path.join(mkl_lib_dir, f),
os.path.join(self.prefix, "lib", f))
def setup_dependent_package(self, module, dspec):
# For now use Single Dynamic Library:
# To set the threading layer at run time, use the
# mkl_set_threading_layer function or set MKL_THREADING_LAYER
# variable to one of the following values: INTEL, SEQUENTIAL, PGI.
# To set interface layer at run time, use the mkl_set_interface_layer
# function or set the MKL_INTERFACE_LAYER variable to LP64 or ILP64.
# Otherwise one would need to specify several libraries
# (e.g. mkl_intel_lp64;mkl_sequential;mkl_core), which reflect
# different interface and threading layers.
name = 'libmkl_rt.%s' % dso_suffix
libdir = find_library_path(name, self.prefix.lib64, self.prefix.lib)
# Now set blas/lapack libs:
self.spec.blas_shared_lib = join_path(libdir, name)
self.spec.lapack_shared_lib = self.spec.blas_shared_lib
def setup_dependent_environment(self, spack_env, run_env, dependent_spec):
# set up MKLROOT for everyone using MKL package
spack_env.set('MKLROOT', self.prefix)

View File

@@ -37,7 +37,7 @@ class Moab(Package):
homepage = "https://bitbucket.org/fathomteam/moab"
url = "http://ftp.mcs.anl.gov/pub/fathom/moab-4.6.3.tar.gz"
version('4.9.1', 'bcb8bee3e58c076c7f31884db119088e')
version('4.9.1', '19cc2189fa266181ad9109b18d0b2ab8')
version('4.9.0', '40695d0a159040683cfa05586ad4a7c2')
version('4.8.2', '1dddd10f162fce3cfffaedc48f6f467d')

View File

@@ -0,0 +1,44 @@
##############################################################################
# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://github.com/llnl/spack
# Please also see the LICENSE file for our notice and the LGPL.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License (as
# published by the Free Software Foundation) version 2.1, February 1999.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
# conditions of the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
from spack import *
import os
class Mpip(Package):
"""mpiP: Lightweight, Scalable MPI Profiling"""
homepage = "http://mpip.sourceforge.net/"
url = "http://downloads.sourceforge.net/project/mpip/mpiP/mpiP-3.4.1/mpiP-3.4.1.tar.gz"
version("3.4.1", "1168adc83777ac31d6ebd385823aabbd")
depends_on("libelf", type="build")
depends_on("libdwarf", type="build")
depends_on('libunwind', when=os.uname()[4] == "x86_64", type="build")
depends_on("mpi", type="build")
def install(self, spec, prefix):
configure("--prefix=" + prefix, "--without-f77")
make()
make("install")

View File

@@ -75,9 +75,8 @@ def write_makefile_inc(self):
raise RuntimeError(
'You cannot use the variants parmetis or ptscotch without mpi')
makefile_conf = ["LIBBLAS = %s" % to_link_flags(
self.spec['blas'].blas_shared_lib)
]
blas = self.spec['blas'].blas_libs
makefile_conf = ["LIBBLAS = %s" % blas.ld_flags]
orderings = ['-Dpord']
@@ -136,11 +135,12 @@ def write_makefile_inc(self):
'OPTC = %s -O ' % fpic])
if '+mpi' in self.spec:
scalapack = self.spec['scalapack'].scalapack_libs
makefile_conf.extend(
["CC = %s" % join_path(self.spec['mpi'].prefix.bin, 'mpicc'),
"FC = %s" % join_path(self.spec['mpi'].prefix.bin, 'mpif90'),
"FL = %s" % join_path(self.spec['mpi'].prefix.bin, 'mpif90'),
"SCALAP = %s" % self.spec['scalapack'].fc_link,
"SCALAP = %s" % scalapack.ld_flags,
"MUMPS_TYPE = par"])
else:
makefile_conf.extend(

View File

@@ -28,14 +28,12 @@
class Mvapich2(Package):
"""MVAPICH2 is an MPI implementation for Infiniband networks."""
homepage = "http://mvapich.cse.ohio-state.edu/"
url = "http://mvapich.cse.ohio-state.edu/download/mvapich/mv2/mvapich2-2.2rc2.tar.gz"
url = "http://mvapich.cse.ohio-state.edu/download/mvapich/mv2/mvapich2-2.2.tar.gz"
version('2.2rc2', 'f9082ffc3b853ad1b908cf7f169aa878')
version('2.2b', '5651e8b7a72d7c77ca68da48f3a5d108')
version('2.2a', 'b8ceb4fc5f5a97add9b3ff1b9cbe39d2')
version('2.1', '0095ceecb19bbb7fb262131cb9c2cdd6')
version('2.0', '9fbb68a4111a8b6338e476dc657388b4')
version('1.9', '5dc58ed08fd3142c260b70fe297e127c')
version('2.2', '939b65ebe5b89a5bc822cdab0f31f96e')
version('2.1', '0095ceecb19bbb7fb262131cb9c2cdd6')
version('2.0', '9fbb68a4111a8b6338e476dc657388b4')
version('1.9', '5dc58ed08fd3142c260b70fe297e127c')
patch('ad_lustre_rwcontig_open_source.patch', when='@1.9')
@@ -95,6 +93,7 @@ class Mvapich2(Package):
##########
# FIXME : CUDA support is missing
depends_on('bison')
depends_on('libpciaccess')
def url_for_version(self, version):

View File

@@ -50,7 +50,10 @@ def install(self, spec, prefix):
"--enable-widec",
"--enable-overwrite",
"--disable-lib-suffixes",
"--without-ada"]
"--without-ada",
"--enable-pc-files",
"--with-pkg-config-libdir={0}/lib/pkgconfig".format(prefix)
]
configure(*opts)
make()
make("install")

View File

@@ -34,6 +34,7 @@ class Ncview(Package):
depends_on("netcdf")
depends_on("udunits2")
depends_on("libpng")
# OS Dependencies
# Ubuntu: apt-get install libxaw7-dev

View File

@@ -50,12 +50,18 @@ class Netcdf(Package):
# Required for NetCDF-4 support
depends_on("zlib")
depends_on('hdf5@:1.8+mpi', when='@:4.4.0+mpi')
depends_on('hdf5+mpi', when='@4.4.1:+mpi')
depends_on('hdf5@:1.8~mpi', when='@:4.4.0~mpi')
depends_on('hdf5~mpi', when='@4.4.1:~mpi')
depends_on('hdf5')
# NetCDF 4.4.0 and prior have compatibility issues with HDF5 1.10 and later
# https://github.com/Unidata/netcdf-c/issues/250
depends_on('hdf5@:1.8', when='@:4.4.0')
def install(self, spec, prefix):
# Workaround until variant forwarding works properly
if '+mpi' in spec and spec.satisfies('^hdf5~mpi'):
raise RuntimeError('Invalid spec. Package netcdf requires '
'hdf5+mpi, but spec asked for hdf5~mpi.')
# Environment variables
CPPFLAGS = []
LDFLAGS = []

Some files were not shown because too many files have changed in this diff Show More