Merge branch 'develop' of https://github.com/LLNL/spack into openmpi_variants
Conflicts: var/spack/repos/builtin/packages/openmpi/package.py
This commit is contained in:
15
var/spack/repos/builtin/packages/LuaJIT/package.py
Normal file
15
var/spack/repos/builtin/packages/LuaJIT/package.py
Normal file
@@ -0,0 +1,15 @@
|
||||
import os
|
||||
from spack import *
|
||||
|
||||
class Luajit(Package):
|
||||
"""Flast flexible JITed lua"""
|
||||
homepage = "http://www.luajit.org"
|
||||
url = "http://luajit.org/download/LuaJIT-2.0.4.tar.gz"
|
||||
|
||||
version('2.0.4', 'dd9c38307f2223a504cbfb96e477eca0')
|
||||
|
||||
def install(self, spec, prefix):
|
||||
# Linking with the C++ compiler is a dirty hack to deal with the fact
|
||||
# that unwinding symbols are not included by libc, this is necessary
|
||||
# on some platforms for the final link stage to work
|
||||
make("install", "PREFIX=" + prefix, "TARGET_LD=" + os.environ['CXX'])
|
13
var/spack/repos/builtin/packages/adol-c/openmp_exam.patch
Normal file
13
var/spack/repos/builtin/packages/adol-c/openmp_exam.patch
Normal file
@@ -0,0 +1,13 @@
|
||||
diff --git a/ADOL-C/examples/additional_examples/openmp_exam/liborpar.cpp b/ADOL-C/examples/additional_examples/openmp_exam/liborpar.cpp
|
||||
index fc6fc28..14103d2 100644
|
||||
--- a/ADOL-C/examples/additional_examples/openmp_exam/liborpar.cpp
|
||||
+++ b/ADOL-C/examples/additional_examples/openmp_exam/liborpar.cpp
|
||||
@@ -27,7 +27,7 @@ using namespace std;
|
||||
#include <ctime>
|
||||
#include <cmath>
|
||||
|
||||
-#include "adolc.h"
|
||||
+#include <adolc/adolc.h>
|
||||
|
||||
#ifdef _OPENMP
|
||||
#include <omp.h>
|
80
var/spack/repos/builtin/packages/adol-c/package.py
Normal file
80
var/spack/repos/builtin/packages/adol-c/package.py
Normal file
@@ -0,0 +1,80 @@
|
||||
from spack import *
|
||||
import sys
|
||||
|
||||
class AdolC(Package):
|
||||
"""A package for the automatic differentiation of first and higher derivatives of vector functions in C and C++ programs by operator overloading."""
|
||||
homepage = "https://projects.coin-or.org/ADOL-C"
|
||||
url = "http://www.coin-or.org/download/source/ADOL-C/ADOL-C-2.6.1.tgz"
|
||||
|
||||
version('head', svn='https://projects.coin-or.org/svn/ADOL-C/trunk/')
|
||||
version('2.6.1', '1032b28427d6e399af4610e78c0f087b')
|
||||
|
||||
variant('doc', default=True, description='Install documentation')
|
||||
variant('openmp', default=False, description='Enable OpenMP support')
|
||||
variant('sparse', default=False, description='Enable sparse drivers')
|
||||
variant('tests', default=True, description='Build all included examples as a test case')
|
||||
|
||||
patch('openmp_exam.patch')
|
||||
|
||||
def install(self, spec, prefix):
|
||||
make_args = ['--prefix=%s' % prefix]
|
||||
|
||||
# --with-cflags=FLAGS use CFLAGS=FLAGS (default: -O3 -Wall -ansi)
|
||||
# --with-cxxflags=FLAGS use CXXFLAGS=FLAGS (default: -O3 -Wall)
|
||||
|
||||
if '+openmp' in spec:
|
||||
if spec.satisfies('%gcc'):
|
||||
make_args.extend([
|
||||
'--with-openmp-flag=-fopenmp' # FIXME: Is this required? -I <path to omp.h> -L <LLVM OpenMP library path>
|
||||
])
|
||||
else:
|
||||
raise InstallError("OpenMP flags for compilers other than GCC are not implemented.")
|
||||
|
||||
if '+sparse' in spec:
|
||||
make_args.extend([
|
||||
'--enable-sparse'
|
||||
])
|
||||
|
||||
# We can simply use the bundled examples to check
|
||||
# whether Adol-C works as expected
|
||||
if '+tests' in spec:
|
||||
make_args.extend([
|
||||
'--enable-docexa', # Documeted examples
|
||||
'--enable-addexa' # Additional examples
|
||||
])
|
||||
if '+openmp' in spec:
|
||||
make_args.extend([
|
||||
'--enable-parexa' # Parallel examples
|
||||
])
|
||||
|
||||
configure(*make_args)
|
||||
make()
|
||||
make("install")
|
||||
|
||||
# Copy the config.h file, as some packages might require it
|
||||
source_directory = self.stage.source_path
|
||||
config_h = join_path(source_directory,'ADOL-C','src','config.h')
|
||||
install(config_h, join_path(prefix.include,'adolc'))
|
||||
|
||||
# Install documentation to {prefix}/share
|
||||
if '+doc' in spec:
|
||||
install_tree(join_path('ADOL-C','doc'),
|
||||
join_path(prefix.share,'doc'))
|
||||
|
||||
# Install examples to {prefix}/share
|
||||
if '+tests' in spec:
|
||||
install_tree(join_path('ADOL-C','examples'),
|
||||
join_path(prefix.share,'examples'))
|
||||
|
||||
# Run some examples that don't require user input
|
||||
# TODO: Check that bundled examples produce the correct results
|
||||
with working_dir(join_path(source_directory,'ADOL-C','examples')):
|
||||
Executable('./tapeless_scalar')()
|
||||
Executable('./tapeless_vector')()
|
||||
|
||||
with working_dir(join_path(source_directory,'ADOL-C','examples','additional_examples')):
|
||||
Executable('./checkpointing/checkpointing')()
|
||||
|
||||
if '+openmp' in spec:
|
||||
with working_dir(join_path(source_directory,'ADOL-C','examples','additional_examples')):
|
||||
Executable('./checkpointing/checkpointing')()
|
@@ -14,4 +14,5 @@ def install(self, spec, prefix):
|
||||
make('-f',
|
||||
join_path(self.stage.source_path,'build','clang','Makefile'),
|
||||
parallel=False)
|
||||
mkdirp(self.prefix.bin)
|
||||
install(join_path(self.stage.source_path, 'src','bin','astyle'), self.prefix.bin)
|
||||
|
@@ -8,6 +8,8 @@ class Autoconf(Package):
|
||||
version('2.69', '82d05e03b93e45f5a39b828dc9c6c29b')
|
||||
version('2.62', '6c1f3b3734999035d77da5024aab4fbd')
|
||||
|
||||
depends_on("m4")
|
||||
|
||||
def install(self, spec, prefix):
|
||||
configure("--prefix=%s" % prefix)
|
||||
|
||||
|
17
var/spack/repos/builtin/packages/bbcp/package.py
Normal file
17
var/spack/repos/builtin/packages/bbcp/package.py
Normal file
@@ -0,0 +1,17 @@
|
||||
from spack import *
|
||||
|
||||
class Bbcp(Package):
|
||||
"""Securely and quickly copy data from source to target"""
|
||||
homepage = "http://www.slac.stanford.edu/~abh/bbcp/"
|
||||
|
||||
version('git', git='http://www.slac.stanford.edu/~abh/bbcp/bbcp.git', branch="master")
|
||||
|
||||
def install(self, spec, prefix):
|
||||
cd("src")
|
||||
make()
|
||||
# BBCP wants to build the executable in a directory whose name depends on the system type
|
||||
makesname = Executable("../MakeSname")
|
||||
bbcp_executable_path = "../bin/%s/bbcp" % makesname(output=str).rstrip("\n")
|
||||
destination_path = "%s/bin/" % prefix
|
||||
mkdirp(destination_path)
|
||||
install(bbcp_executable_path, destination_path)
|
@@ -12,6 +12,10 @@ class Binutils(Package):
|
||||
version('2.23.2', '4f8fa651e35ef262edc01d60fb45702e')
|
||||
version('2.20.1', '2b9dc8f2b7dbd5ec5992c6e29de0b764')
|
||||
|
||||
depends_on('m4')
|
||||
depends_on('flex')
|
||||
depends_on('bison')
|
||||
|
||||
# Add a patch that creates binutils libiberty_pic.a which is preferred by OpenSpeedShop and cbtf-krell
|
||||
variant('krellpatch', default=False, description="build with openspeedshop based patch.")
|
||||
variant('gold', default=True, description="build the gold linker")
|
||||
|
@@ -1,4 +1,5 @@
|
||||
from spack import *
|
||||
import os
|
||||
import shutil
|
||||
|
||||
class Cereal(Package):
|
||||
@@ -30,5 +31,8 @@ def install(self, spec, prefix):
|
||||
# Install
|
||||
shutil.rmtree(join_path(prefix, 'doc'), ignore_errors=True)
|
||||
shutil.rmtree(join_path(prefix, 'include'), ignore_errors=True)
|
||||
shutil.rmtree(join_path(prefix, 'lib'), ignore_errors=True)
|
||||
shutil.copytree('doc', join_path(prefix, 'doc'), symlinks=True)
|
||||
shutil.copytree('include', join_path(prefix, 'include'), symlinks=True)
|
||||
# Create empty directory to avoid linker warnings later
|
||||
os.mkdir(join_path(prefix, 'lib'))
|
||||
|
@@ -30,6 +30,7 @@ class Cmake(Package):
|
||||
homepage = 'https://www.cmake.org'
|
||||
url = 'https://cmake.org/files/v3.4/cmake-3.4.3.tar.gz'
|
||||
|
||||
version('3.5.2', '701386a1b5ec95f8d1075ecf96383e02')
|
||||
version('3.5.1', 'ca051f4a66375c89d1a524e726da0296')
|
||||
version('3.5.0', '33c5d09d4c33d4ffcc63578a6ba8777e')
|
||||
version('3.4.3', '4cb3ff35b2472aae70f542116d616e63')
|
||||
|
12
var/spack/repos/builtin/packages/cnmem/package.py
Normal file
12
var/spack/repos/builtin/packages/cnmem/package.py
Normal file
@@ -0,0 +1,12 @@
|
||||
from spack import *
|
||||
|
||||
class Cnmem(Package):
|
||||
"""CNMem mempool for CUDA devices"""
|
||||
homepage = "https://github.com/NVIDIA/cnmem"
|
||||
|
||||
version('git', git='https://github.com/NVIDIA/cnmem.git', branch="master")
|
||||
|
||||
def install(self, spec, prefix):
|
||||
cmake('.',*std_cmake_args)
|
||||
make()
|
||||
make('install')
|
@@ -13,6 +13,7 @@ class Cryptopp(Package):
|
||||
|
||||
version('5.6.3', '3c5b70e2ec98b7a24988734446242d07')
|
||||
version('5.6.2', '7ed022585698df48e65ce9218f6c6a67')
|
||||
version('5.6.1', '96cbeba0907562b077e26bcffb483828')
|
||||
|
||||
def install(self, spec, prefix):
|
||||
make()
|
||||
|
@@ -12,6 +12,7 @@ class Dealii(Package):
|
||||
variant('mpi', default=True, description='Compile with MPI')
|
||||
variant('arpack', default=True, description='Compile with Arpack and PArpack (only with MPI)')
|
||||
variant('doc', default=False, description='Compile with documentation')
|
||||
variant('gsl' , default=True, description='Compile with GSL')
|
||||
variant('hdf5', default=True, description='Compile with HDF5 (only with MPI)')
|
||||
variant('metis', default=True, description='Compile with Metis')
|
||||
variant('netcdf', default=True, description='Compile with Netcdf (only with MPI)')
|
||||
@@ -39,6 +40,8 @@ class Dealii(Package):
|
||||
depends_on ("mpi", when="+mpi")
|
||||
depends_on ("arpack-ng+mpi", when='+arpack+mpi')
|
||||
depends_on ("doxygen", when='+doc')
|
||||
depends_on ("gsl", when='@8.5.0:+gsl')
|
||||
depends_on ("gsl", when='@dev+gsl')
|
||||
depends_on ("hdf5+mpi~cxx", when='+hdf5+mpi') #FIXME NetCDF declares dependency with ~cxx, why?
|
||||
depends_on ("metis@5:", when='+metis')
|
||||
depends_on ("netcdf+mpi", when="+netcdf+mpi")
|
||||
@@ -50,8 +53,8 @@ class Dealii(Package):
|
||||
depends_on ("trilinos", when='+trilinos+mpi')
|
||||
|
||||
# developer dependnecies
|
||||
#depends_on ("numdiff") #FIXME
|
||||
#depends_on ("astyle") #FIXME
|
||||
depends_on ("numdiff", when='@dev')
|
||||
depends_on ("astyle@2.04", when='@dev')
|
||||
|
||||
def install(self, spec, prefix):
|
||||
options = []
|
||||
@@ -80,7 +83,6 @@ def install(self, spec, prefix):
|
||||
(join_path(spec['lapack'].prefix.lib,'liblapack.%s' % dsuf), # FIXME don't hardcode names
|
||||
join_path(spec['blas'].prefix.lib,'libblas.%s' % dsuf)), # FIXME don't hardcode names
|
||||
'-DMUPARSER_DIR=%s ' % spec['muparser'].prefix,
|
||||
'-DP4EST_DIR=%s' % spec['p4est'].prefix,
|
||||
'-DUMFPACK_DIR=%s' % spec['suite-sparse'].prefix,
|
||||
'-DTBB_DIR=%s' % spec['tbb'].prefix,
|
||||
'-DZLIB_DIR=%s' % spec['zlib'].prefix
|
||||
@@ -100,7 +102,7 @@ def install(self, spec, prefix):
|
||||
])
|
||||
|
||||
# Optional dependencies for which librariy names are the same as CMake variables
|
||||
for library in ('hdf5', 'p4est','petsc', 'slepc','trilinos','metis'):
|
||||
for library in ('gsl','hdf5','p4est','petsc','slepc','trilinos','metis'):
|
||||
if library in spec:
|
||||
options.extend([
|
||||
'-D{library}_DIR={value}'.format(library=library.upper(), value=spec[library].prefix),
|
||||
@@ -251,3 +253,6 @@ def install(self, spec, prefix):
|
||||
cmake('.')
|
||||
make('release')
|
||||
make('run',parallel=False)
|
||||
|
||||
def setup_environment(self, spack_env, env):
|
||||
env.set('DEAL_II_DIR', self.prefix)
|
||||
|
@@ -7,6 +7,7 @@ class Dia(Package):
|
||||
|
||||
version('0.97.3', '0e744a0f6a6c4cb6a089e4d955392c3c')
|
||||
|
||||
depends_on('intltool')
|
||||
depends_on('gtkplus@2.6.0:')
|
||||
depends_on('cairo')
|
||||
#depends_on('libart') # optional dependency, not yet supported by spack.
|
||||
|
@@ -45,6 +45,7 @@ class Eigen(Package):
|
||||
|
||||
# TODO : dependency on googlehash, superlu, adolc missing
|
||||
|
||||
depends_on('cmake')
|
||||
depends_on('metis@5:', when='+metis')
|
||||
depends_on('scotch', when='+scotch')
|
||||
depends_on('fftw', when='+fftw')
|
||||
|
122
var/spack/repos/builtin/packages/elk/package.py
Normal file
122
var/spack/repos/builtin/packages/elk/package.py
Normal file
@@ -0,0 +1,122 @@
|
||||
from spack import *
|
||||
import spack
|
||||
|
||||
class Elk(Package):
|
||||
'''An all-electron full-potential linearised augmented-plane wave
|
||||
(FP-LAPW) code with many advanced features.'''
|
||||
|
||||
homepage = 'http://elk.sourceforge.net/'
|
||||
url = 'https://sourceforge.net/projects/elk/files/elk-3.3.17.tgz'
|
||||
|
||||
version('3.3.17', 'f57f6230d14f3b3b558e5c71f62f0592')
|
||||
|
||||
# Elk provides these libraries, but allows you to specify your own
|
||||
variant('blas', default=True, description='Build with custom BLAS library')
|
||||
variant('lapack', default=True, description='Build with custom LAPACK library')
|
||||
variant('fft', default=True, description='Build with custom FFT library')
|
||||
|
||||
# Elk does not provide these libraries, but allows you to use them
|
||||
variant('mpi', default=True, description='Enable MPI parallelism')
|
||||
variant('openmp', default=True, description='Enable OpenMP support')
|
||||
variant('libxc', default=True, description='Link to Libxc functional library')
|
||||
|
||||
depends_on('blas', when='+blas')
|
||||
depends_on('lapack', when='+lapack')
|
||||
depends_on('fftw', when='+fft')
|
||||
depends_on('mpi', when='+mpi')
|
||||
depends_on('libxc', when='+libxc')
|
||||
|
||||
# Cannot be built in parallel
|
||||
parallel = False
|
||||
|
||||
|
||||
def configure(self, spec):
|
||||
# Dictionary of configuration options
|
||||
config = {
|
||||
'MAKE': 'make',
|
||||
'F90': join_path(spack.build_env_path, 'f90'),
|
||||
'F77': join_path(spack.build_env_path, 'f77'),
|
||||
'AR': 'ar',
|
||||
'LIB_FFT': 'fftlib.a',
|
||||
'SRC_MPI': 'mpi_stub.f90',
|
||||
'SRC_OMP': 'omp_stub.f90',
|
||||
'SRC_libxc': 'libxcifc_stub.f90',
|
||||
'SRC_FFT': 'zfftifc.f90'
|
||||
}
|
||||
|
||||
# Compiler-specific flags
|
||||
flags = ''
|
||||
if self.compiler.name == 'intel':
|
||||
flags = '-O3 -ip -unroll -no-prec-div -openmp'
|
||||
elif self.compiler.name == 'gcc':
|
||||
flags = '-O3 -ffast-math -funroll-loops -fopenmp'
|
||||
elif self.compiler.name == 'pgi':
|
||||
flags = '-O3 -mp -lpthread'
|
||||
elif self.compiler.name == 'g95':
|
||||
flags = '-O3 -fno-second-underscore'
|
||||
elif self.compiler.name == 'nag':
|
||||
flags = '-O4 -kind=byte -dusty -dcfuns'
|
||||
elif self.compiler.name == 'xl':
|
||||
flags = '-O3 -qsmp=omp'
|
||||
config['F90_OPTS'] = flags
|
||||
config['F77_OPTS'] = flags
|
||||
|
||||
# BLAS/LAPACK support
|
||||
blas = 'blas.a'
|
||||
lapack = 'lapack.a'
|
||||
if '+blas' in spec:
|
||||
blas = join_path(spec['blas'].prefix.lib, 'libblas.so')
|
||||
if '+lapack' in spec:
|
||||
lapack = join_path(spec['lapack'].prefix.lib, 'liblapack.so')
|
||||
config['LIB_LPK'] = ' '.join([lapack, blas]) # lapack must come before blas
|
||||
|
||||
# FFT support
|
||||
if '+fft' in spec:
|
||||
config['LIB_FFT'] = join_path(spec['fftw'].prefix.lib, 'libfftw3.so')
|
||||
config['SRC_FFT'] = 'zfftifc_fftw.f90'
|
||||
|
||||
# MPI support
|
||||
if '+mpi' in spec:
|
||||
config.pop('SRC_MPI')
|
||||
config['F90'] = join_path(spec['mpi'].prefix.bin, 'mpif90')
|
||||
config['F77'] = join_path(spec['mpi'].prefix.bin, 'mpif77')
|
||||
|
||||
# OpenMP support
|
||||
if '+openmp' in spec:
|
||||
config.pop('SRC_OMP')
|
||||
|
||||
# Libxc support
|
||||
if '+libxc' in spec:
|
||||
config['LIB_libxc'] = ' '.join([
|
||||
join_path(spec['libxc'].prefix.lib, 'libxcf90.so'),
|
||||
join_path(spec['libxc'].prefix.lib, 'libxc.so')
|
||||
])
|
||||
config['SRC_libxc'] = ' '.join([
|
||||
'libxc_funcs.f90',
|
||||
'libxc.f90',
|
||||
'libxcifc.f90'
|
||||
])
|
||||
|
||||
# Write configuration options to include file
|
||||
with open('make.inc', 'w') as inc:
|
||||
for key in config:
|
||||
inc.write('{0} = {1}\n'.format(key, config[key]))
|
||||
|
||||
|
||||
def install(self, spec, prefix):
|
||||
# Elk only provides an interactive setup script
|
||||
self.configure(spec)
|
||||
|
||||
make()
|
||||
make('test')
|
||||
|
||||
# The Elk Makefile does not provide an install target
|
||||
mkdirp(prefix.bin)
|
||||
|
||||
install('src/elk', prefix.bin)
|
||||
install('src/eos/eos', prefix.bin)
|
||||
install('src/spacegroup/spacegroup', prefix.bin)
|
||||
|
||||
install_tree('examples', join_path(prefix, 'examples'))
|
||||
install_tree('species', join_path(prefix, 'species'))
|
||||
|
@@ -6,6 +6,7 @@ class Flex(Package):
|
||||
homepage = "http://flex.sourceforge.net/"
|
||||
url = "http://download.sourceforge.net/flex/flex-2.5.39.tar.gz"
|
||||
|
||||
version('2.6.0', '5724bcffed4ebe39e9b55a9be80859ec')
|
||||
version('2.5.39', 'e133e9ead8ec0a58d81166b461244fde')
|
||||
|
||||
def install(self, spec, prefix):
|
||||
|
@@ -38,6 +38,7 @@ class Gcc(Package):
|
||||
list_url = 'http://open-source-box.org/gcc/'
|
||||
list_depth = 2
|
||||
|
||||
version('6.1.0', '8fb6cb98b8459f5863328380fbf06bd1')
|
||||
version('5.3.0', 'c9616fd448f980259c31de613e575719')
|
||||
version('5.2.0', 'a51bcfeb3da7dd4c623e27207ed43467')
|
||||
version('4.9.3', '6f831b4d251872736e8e9cc09746f327')
|
||||
|
@@ -7,7 +7,8 @@ class Git(Package):
|
||||
homepage = "http://git-scm.com"
|
||||
url = "https://github.com/git/git/tarball/v2.7.1"
|
||||
|
||||
version('2.8.0-rc2', 'c2cf9f2cc70e35f2fafbaf9258f82e4c')
|
||||
version('2.8.1', '1308448d95afa41a4135903f22262fc8')
|
||||
version('2.8.0', 'eca687e46e9750121638f258cff8317b')
|
||||
version('2.7.3', 'fa1c008b56618c355a32ba4a678305f6')
|
||||
version('2.7.1', 'bf0706b433a8dedd27a63a72f9a66060')
|
||||
|
||||
@@ -23,18 +24,10 @@ class Git(Package):
|
||||
#version('2.2.1', 'ff41fdb094eed1ec430aed8ee9b9849c')
|
||||
|
||||
|
||||
# Git compiles with curl support by default on but if your system
|
||||
# does not have it you will not be able to clone https repos
|
||||
variant("curl", default=False, description="Add the internal support of curl for https clone")
|
||||
|
||||
# Git compiles with expat support by default on but if your system
|
||||
# does not have it you will not be able to push https repos
|
||||
variant("expat", default=False, description="Add the internal support of expat for https push")
|
||||
|
||||
depends_on("openssl")
|
||||
depends_on("autoconf")
|
||||
depends_on("curl", when="+curl")
|
||||
depends_on("expat", when="+expat")
|
||||
depends_on("curl")
|
||||
depends_on("expat")
|
||||
|
||||
# Also depends_on gettext: apt-get install gettext (Ubuntu)
|
||||
|
||||
@@ -49,23 +42,12 @@ def install(self, spec, prefix):
|
||||
"--prefix=%s" % prefix,
|
||||
"--without-pcre",
|
||||
"--with-openssl=%s" % spec['openssl'].prefix,
|
||||
"--with-zlib=%s" % spec['zlib'].prefix
|
||||
"--with-zlib=%s" % spec['zlib'].prefix,
|
||||
"--with-curl=%s" % spec['curl'].prefix,
|
||||
"--with-expat=%s" % spec['expat'].prefix,
|
||||
]
|
||||
|
||||
if '+curl' in spec:
|
||||
configure_args.append("--with-curl=%s" % spec['curl'].prefix)
|
||||
|
||||
if '+expat' in spec:
|
||||
configure_args.append("--with-expat=%s" % spec['expat'].prefix)
|
||||
|
||||
which('autoreconf')('-i')
|
||||
configure(*configure_args)
|
||||
make()
|
||||
make("install")
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@@ -11,6 +11,8 @@ class Glm(Package):
|
||||
url = "https://github.com/g-truc/glm/archive/0.9.7.1.tar.gz"
|
||||
|
||||
version('0.9.7.1', '61af6639cdf652d1cdd7117190afced8')
|
||||
|
||||
depends_on ("cmake")
|
||||
|
||||
def install(self, spec, prefix):
|
||||
with working_dir('spack-build', create=True):
|
||||
|
@@ -35,6 +35,8 @@ class Gmp(Package):
|
||||
version('6.0.0a', 'b7ff2d88cae7f8085bd5006096eed470')
|
||||
version('6.0.0' , '6ef5869ae735db9995619135bd856b84')
|
||||
|
||||
depends_on("m4")
|
||||
|
||||
def install(self, spec, prefix):
|
||||
configure("--prefix=%s" % prefix)
|
||||
make()
|
||||
|
@@ -62,6 +62,9 @@ def install(self, spec, prefix):
|
||||
|
||||
build_directory = join_path(self.stage.path, 'spack-build')
|
||||
source_directory = self.stage.source_path
|
||||
|
||||
# Prevent GMsh from using its own strange directory structure on OSX
|
||||
options.append('-DENABLE_OS_SPECIFIC_INSTALL=OFF')
|
||||
|
||||
if '+shared' in spec:
|
||||
options.extend(['-DENABLE_BUILD_SHARED:BOOL=ON',
|
||||
|
@@ -38,7 +38,7 @@ class Hdf5(Package):
|
||||
list_depth = 3
|
||||
|
||||
version('1.10.0', 'bdc935337ee8282579cd6bc4270ad199')
|
||||
version('1.8.16', 'b8ed9a36ae142317f88b0c7ef4b9c618')
|
||||
version('1.8.16', 'b8ed9a36ae142317f88b0c7ef4b9c618', preferred=True)
|
||||
version('1.8.15', '03cccb5b33dbe975fdcd8ae9dc021f24')
|
||||
version('1.8.13', 'c03426e9e77d7766944654280b467289')
|
||||
|
||||
@@ -101,10 +101,10 @@ def install(self, spec, prefix):
|
||||
extra_args.append('--enable-cxx')
|
||||
|
||||
if '+fortran' in spec:
|
||||
extra_args.extend([
|
||||
'--enable-fortran',
|
||||
'--enable-fortran2003'
|
||||
])
|
||||
extra_args.append('--enable-fortran')
|
||||
# '--enable-fortran2003' no longer exists as of version 1.10.0
|
||||
if spec.satisfies('@:1.8.16'):
|
||||
extra_args.append('--enable-fortran2003')
|
||||
|
||||
if '+mpi' in spec:
|
||||
# The HDF5 configure script warns if cxx and mpi are enabled
|
||||
|
@@ -17,6 +17,7 @@ class Hwloc(Package):
|
||||
list_url = "http://www.open-mpi.org/software/hwloc/"
|
||||
list_depth = 3
|
||||
|
||||
version('1.11.3', 'c1d36a9de6028eac1d18ea4782ef958f')
|
||||
version('1.11.2', 'e4ca55c2a5c5656da4a4e37c8fc51b23')
|
||||
version('1.11.1', 'feb4e416a1b25963ed565d8b42252fdc')
|
||||
version('1.9', '1f9f9155682fe8946a97c08896109508')
|
||||
|
21
var/spack/repos/builtin/packages/hydra/package.py
Normal file
21
var/spack/repos/builtin/packages/hydra/package.py
Normal file
@@ -0,0 +1,21 @@
|
||||
from spack import *
|
||||
|
||||
class Hydra(Package):
|
||||
"""Hydra is a process management system for starting parallel jobs.
|
||||
Hydra is designed to natively work with existing launcher daemons
|
||||
(such as ssh, rsh, fork), as well as natively integrate with resource
|
||||
management systems (such as slurm, pbs, sge)."""
|
||||
|
||||
homepage = "http://www.mpich.org"
|
||||
url = "http://www.mpich.org/static/downloads/3.2/hydra-3.2.tar.gz"
|
||||
list_url = "http://www.mpich.org/static/downloads/"
|
||||
list_depth = 2
|
||||
|
||||
version('3.2', '4d670916695bf7e3a869cc336a881b39')
|
||||
|
||||
|
||||
def install(self, spec, prefix):
|
||||
configure('--prefix=%s' % prefix)
|
||||
|
||||
make()
|
||||
make("install")
|
19
var/spack/repos/builtin/packages/intltool/package.py
Normal file
19
var/spack/repos/builtin/packages/intltool/package.py
Normal file
@@ -0,0 +1,19 @@
|
||||
from spack import *
|
||||
|
||||
class Intltool(Package):
|
||||
"""intltool is a set of tools to centralize translation of many different file formats using GNU gettext-compatible PO files."""
|
||||
homepage = 'https://freedesktop.org/wiki/Software/intltool/'
|
||||
|
||||
version('0.51.0', '12e517cac2b57a0121cda351570f1e63')
|
||||
|
||||
def url_for_version(self, version):
|
||||
"""Handle version-based custom URLs."""
|
||||
return 'https://launchpad.net/intltool/trunk/%s/+download/intltool-%s.tar.gz' % (version, version)
|
||||
|
||||
def install(self, spec, prefix):
|
||||
|
||||
# configure, build, install:
|
||||
options = ['--prefix=%s' % prefix ]
|
||||
configure(*options)
|
||||
make()
|
||||
make('install')
|
42
var/spack/repos/builtin/packages/ior/package.py
Normal file
42
var/spack/repos/builtin/packages/ior/package.py
Normal file
@@ -0,0 +1,42 @@
|
||||
from spack import *
|
||||
import os
|
||||
|
||||
class Ior(Package):
|
||||
"""The IOR software is used for benchmarking parallel file systems
|
||||
using POSIX, MPI-IO, or HDF5 interfaces."""
|
||||
|
||||
homepage = "https://github.com/LLNL/ior"
|
||||
url = "https://github.com/LLNL/ior/archive/3.0.1.tar.gz"
|
||||
|
||||
version('3.0.1', '71150025e0bb6ea1761150f48b553065')
|
||||
|
||||
variant('hdf5', default=False, description='support IO with HDF5 backend')
|
||||
variant('ncmpi', default=False, description='support IO with NCMPI backend')
|
||||
|
||||
depends_on('mpi')
|
||||
depends_on('hdf5+mpi', when='+hdf5')
|
||||
depends_on('netcdf+mpi', when='+ncmpi')
|
||||
|
||||
|
||||
def install(self, spec, prefix):
|
||||
os.system('./bootstrap')
|
||||
|
||||
config_args = [
|
||||
'MPICC=%s' % spec['mpi'].prefix.bin + '/mpicc',
|
||||
'--prefix=%s' % prefix,
|
||||
]
|
||||
|
||||
if '+hdf5' in spec:
|
||||
config_args.append('--with-hdf5')
|
||||
else:
|
||||
config_args.append('--without-hdf5')
|
||||
|
||||
if '+ncmpi' in spec:
|
||||
config_args.append('--with-ncmpi')
|
||||
else:
|
||||
config_args.append('--without-ncmpi')
|
||||
|
||||
configure(*config_args)
|
||||
|
||||
make()
|
||||
make('install')
|
@@ -5,6 +5,7 @@ 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.1.0', 'c4e53c947905a533d5899e5cc3da1f94')
|
||||
version('4.0.4', '687c5cc53b9a7ab711ccd680351ff988')
|
||||
|
||||
variant('stats', default=False, description='Enable heap statistics')
|
||||
@@ -20,5 +21,8 @@ def install(self, spec, prefix):
|
||||
|
||||
configure(*configure_args)
|
||||
|
||||
# Don't use -Werror
|
||||
filter_file(r'-Werror=\S*', '', 'Makefile')
|
||||
|
||||
make()
|
||||
make("install")
|
||||
|
@@ -1,14 +1,19 @@
|
||||
from spack import *
|
||||
|
||||
class Jpeg(Package):
|
||||
"""jpeg library"""
|
||||
homepage = "http://www.ijg.org"
|
||||
url = "http://www.ijg.org/files/jpegsrc.v9a.tar.gz"
|
||||
"""libjpeg is a widely used free library with functions for handling the
|
||||
JPEG image data format. It implements a JPEG codec (encoding and decoding)
|
||||
alongside various utilities for handling JPEG data."""
|
||||
|
||||
homepage = "http://www.ijg.org"
|
||||
url = "http://www.ijg.org/files/jpegsrc.v9b.tar.gz"
|
||||
|
||||
version('9b', '6a9996ce116ec5c52b4870dbcd6d3ddb')
|
||||
version('9a', '3353992aecaee1805ef4109aadd433e7')
|
||||
|
||||
def install(self, spec, prefix):
|
||||
configure("--prefix=%s" % prefix)
|
||||
|
||||
make()
|
||||
make("test")
|
||||
make("install")
|
||||
|
68
var/spack/repos/builtin/packages/julia/openblas.patch
Normal file
68
var/spack/repos/builtin/packages/julia/openblas.patch
Normal file
@@ -0,0 +1,68 @@
|
||||
diff --git a/deps/Makefile b/deps/Makefile
|
||||
index 6cb73be..bcd8520 100644
|
||||
--- a/deps/Makefile
|
||||
+++ b/deps/Makefile
|
||||
@@ -1049,7 +1049,7 @@ OPENBLAS_BUILD_OPTS += NO_AFFINITY=1
|
||||
|
||||
# Build for all architectures - required for distribution
|
||||
ifeq ($(OPENBLAS_DYNAMIC_ARCH), 1)
|
||||
-OPENBLAS_BUILD_OPTS += DYNAMIC_ARCH=1
|
||||
+OPENBLAS_BUILD_OPTS += DYNAMIC_ARCH=1 MAKE_NO_J=1
|
||||
endif
|
||||
|
||||
# 64-bit BLAS interface
|
||||
@@ -1085,6 +1085,7 @@ OPENBLAS_BUILD_OPTS += NO_AVX2=1
|
||||
endif
|
||||
|
||||
$(OPENBLAS_SRC_DIR)/config.status: $(OPENBLAS_SRC_DIR)/Makefile
|
||||
+ cd $(dir $@) && patch -p1 < ../openblas-make.patch
|
||||
ifeq ($(OS),WINNT)
|
||||
cd $(dir $@) && patch -p1 < ../openblas-win64.patch
|
||||
endif
|
||||
diff --git a/deps/openblas.version b/deps/openblas.version
|
||||
index 7c97e1b..58b9467 100644
|
||||
--- a/deps/openblas.version
|
||||
+++ b/deps/openblas.version
|
||||
@@ -1,2 +1,2 @@
|
||||
-OPENBLAS_BRANCH=v0.2.15
|
||||
-OPENBLAS_SHA1=53e849f4fcae4363a64576de00e982722c7304f9
|
||||
+OPENBLAS_BRANCH=v0.2.17
|
||||
+OPENBLAS_SHA1=a71e8c82f6a9f73093b631e5deab1e8da716b61f
|
||||
--- a/deps/openblas-make.patch
|
||||
+++ b/deps/openblas-make.patch
|
||||
@@ -0,0 +1,35 @@
|
||||
+diff --git a/Makefile.system b/Makefile.system
|
||||
+index b89f60e..2dbdad0 100644
|
||||
+--- a/Makefile.system
|
||||
++++ b/Makefile.system
|
||||
+@@ -139,6 +139,10 @@ NO_PARALLEL_MAKE=0
|
||||
+ endif
|
||||
+ GETARCH_FLAGS += -DNO_PARALLEL_MAKE=$(NO_PARALLEL_MAKE)
|
||||
+
|
||||
++ifdef MAKE_NO_J
|
||||
++GETARCH_FLAGS += -DMAKE_NO_J=$(MAKE_NO_J)
|
||||
++endif
|
||||
++
|
||||
+ ifdef MAKE_NB_JOBS
|
||||
+ GETARCH_FLAGS += -DMAKE_NB_JOBS=$(MAKE_NB_JOBS)
|
||||
+ endif
|
||||
+diff --git a/getarch.c b/getarch.c
|
||||
+index f9c49e6..dffad70 100644
|
||||
+--- a/getarch.c
|
||||
++++ b/getarch.c
|
||||
+@@ -1012,6 +1012,7 @@ int main(int argc, char *argv[]){
|
||||
+ #endif
|
||||
+ #endif
|
||||
+
|
||||
++#ifndef MAKE_NO_J
|
||||
+ #ifdef MAKE_NB_JOBS
|
||||
+ printf("MAKE += -j %d\n", MAKE_NB_JOBS);
|
||||
+ #elif NO_PARALLEL_MAKE==1
|
||||
+@@ -1021,6 +1022,7 @@ int main(int argc, char *argv[]){
|
||||
+ printf("MAKE += -j %d\n", get_num_cores());
|
||||
+ #endif
|
||||
+ #endif
|
||||
++#endif
|
||||
+
|
||||
+ break;
|
||||
+
|
@@ -4,43 +4,56 @@
|
||||
class Julia(Package):
|
||||
"""The Julia Language: A fresh approach to technical computing"""
|
||||
homepage = "http://julialang.org"
|
||||
url = "http://github.com/JuliaLang/julia/releases/download/v0.4.2/julia-0.4.2.tar.gz"
|
||||
url = "https://github.com/JuliaLang/julia/releases/download/v0.4.3/julia-0.4.3-full.tar.gz"
|
||||
|
||||
version('0.4.3', '7b9f096798fca4bef262a64674bc2b52')
|
||||
version('0.4.2', 'ccfeb4f4090c8b31083f5e1ccb03eb06')
|
||||
version('master',
|
||||
git='https://github.com/JuliaLang/julia.git', branch='master')
|
||||
version('0.4.5', '69141ff5aa6cee7c0ec8c85a34aa49a6')
|
||||
version('0.4.3', '8a4a59fd335b05090dd1ebefbbe5aaac')
|
||||
|
||||
patch('gc.patch')
|
||||
patch('openblas.patch', when='@0.4:0.4.5')
|
||||
|
||||
# Build-time dependencies
|
||||
depends_on("cmake @2.8:")
|
||||
# Build-time dependencies:
|
||||
# depends_on("awk")
|
||||
# depends_on("m4")
|
||||
# depends_on("pkg-config")
|
||||
depends_on("python @2.6:2.9")
|
||||
|
||||
# I think that Julia requires the dependencies above, but it builds find (on
|
||||
# my system) without these. We should enable them as necessary.
|
||||
# Combined build-time and run-time dependencies:
|
||||
depends_on("binutils")
|
||||
depends_on("cmake @2.8:")
|
||||
depends_on("git")
|
||||
depends_on("openssl")
|
||||
depends_on("python @2.7:2.999")
|
||||
|
||||
# Run-time dependencies
|
||||
# I think that Julia requires the dependencies above, but it
|
||||
# builds fine (on my system) without these. We should enable them
|
||||
# as necessary.
|
||||
|
||||
# Run-time dependencies:
|
||||
# depends_on("arpack")
|
||||
# depends_on("fftw +float")
|
||||
# depends_on("gmp")
|
||||
# depends_on("libgit")
|
||||
# depends_on("mpfr")
|
||||
# depends_on("openblas")
|
||||
# depends_on("pcre2")
|
||||
|
||||
# ARPACK: Requires BLAS and LAPACK; needs to use the same version as Julia.
|
||||
# ARPACK: Requires BLAS and LAPACK; needs to use the same version
|
||||
# as Julia.
|
||||
|
||||
# BLAS and LAPACK: Julia prefers 64-bit versions on 64-bit systems. OpenBLAS
|
||||
# has an option for this; make it available as variant.
|
||||
# BLAS and LAPACK: Julia prefers 64-bit versions on 64-bit
|
||||
# systems. OpenBLAS has an option for this; make it available as
|
||||
# variant.
|
||||
|
||||
# FFTW: Something doesn't work when using a pre-installed FFTW library; need
|
||||
# to investigate.
|
||||
# FFTW: Something doesn't work when using a pre-installed FFTW
|
||||
# library; need to investigate.
|
||||
|
||||
# GMP, MPFR: Something doesn't work when using a pre-installed FFTW library;
|
||||
# need to investigate.
|
||||
# GMP, MPFR: Something doesn't work when using a pre-installed
|
||||
# FFTW library; need to investigate.
|
||||
|
||||
# LLVM: Julia works only with specific versions, and might require patches.
|
||||
# Thus we let Julia install its own LLVM.
|
||||
# LLVM: Julia works only with specific versions, and might require
|
||||
# patches. Thus we let Julia install its own LLVM.
|
||||
|
||||
# Other possible dependencies:
|
||||
# USE_SYSTEM_OPENLIBM=0
|
||||
@@ -50,11 +63,21 @@ class Julia(Package):
|
||||
# USE_SYSTEM_UTF8PROC=0
|
||||
# USE_SYSTEM_LIBGIT2=0
|
||||
|
||||
# Run-time dependencies for Julia packages:
|
||||
depends_on("hdf5")
|
||||
depends_on("mpi")
|
||||
|
||||
def install(self, spec, prefix):
|
||||
# Explicitly setting CC, CXX, or FC breaks building libuv, one of
|
||||
# Julia's dependencies. This might be a Darwin-specific problem. Given
|
||||
# how Spack sets up compilers, Julia should still use Spack's compilers,
|
||||
# even if we don't specify them explicitly.
|
||||
if '@master' in spec:
|
||||
# Julia needs to know the offset from a specific commit
|
||||
git = which('git')
|
||||
git('fetch', '--unshallow')
|
||||
|
||||
# Explicitly setting CC, CXX, or FC breaks building libuv, one
|
||||
# of Julia's dependencies. This might be a Darwin-specific
|
||||
# problem. Given how Spack sets up compilers, Julia should
|
||||
# still use Spack's compilers, even if we don't specify them
|
||||
# explicitly.
|
||||
options = [#"CC=cc",
|
||||
#"CXX=c++",
|
||||
#"FC=fc",
|
||||
|
@@ -8,6 +8,9 @@ class Libpng(Package):
|
||||
version('1.6.16', '1a4ad377919ab15b54f6cb6a3ae2622d')
|
||||
version('1.6.15', '829a256f3de9307731d4f52dc071916d')
|
||||
version('1.6.14', '2101b3de1d5f348925990f9aa8405660')
|
||||
version('1.5.26', '3ca98347a5541a2dad55cd6d07ee60a9')
|
||||
version('1.4.19', '89bcbc4fc8b31f4a403906cf4f662330')
|
||||
version('1.2.56', '9508fc59d10a1ffadd9aae35116c19ee')
|
||||
|
||||
depends_on('zlib')
|
||||
|
||||
|
17
var/spack/repos/builtin/packages/libtermkey/package.py
Normal file
17
var/spack/repos/builtin/packages/libtermkey/package.py
Normal file
@@ -0,0 +1,17 @@
|
||||
from spack import *
|
||||
|
||||
class Libtermkey(Package):
|
||||
"""Easy keyboard entry processing for terminal programs"""
|
||||
homepage = "http://www.leonerd.org.uk/code/libtermkey/"
|
||||
url = "http://www.leonerd.org.uk/code/libtermkey/libtermkey-0.18.tar.gz"
|
||||
|
||||
version('0.18' , '3be2e3e5a851a49cc5e8567ac108b520')
|
||||
version('0.17' , '20edb99e0d95ec1690fe90e6a555ae6d')
|
||||
version('0.16' , '7a24b675aaeb142d30db28e7554987d4')
|
||||
version('0.15b', '27689756e6c86c56ae454f2ac259bc3d')
|
||||
version('0.14' , 'e08ce30f440f9715c459060e0e048978')
|
||||
|
||||
|
||||
def install(self, spec, prefix):
|
||||
make()
|
||||
make("install", "PREFIX=" + prefix)
|
@@ -8,6 +8,8 @@ class Libtool(Package):
|
||||
version('2.4.6' , 'addf44b646ddb4e3919805aa88fa7c5e')
|
||||
version('2.4.2' , 'd2f3b7d4627e69e13514a40e72a24d50')
|
||||
|
||||
depends_on('m4')
|
||||
|
||||
def install(self, spec, prefix):
|
||||
configure("--prefix=%s" % prefix)
|
||||
|
||||
|
21
var/spack/repos/builtin/packages/libuv/package.py
Normal file
21
var/spack/repos/builtin/packages/libuv/package.py
Normal file
@@ -0,0 +1,21 @@
|
||||
from spack import *
|
||||
|
||||
class Libuv(Package):
|
||||
"""Multi-platform library with a focus on asynchronous IO"""
|
||||
homepage = "http://libuv.org"
|
||||
url = "https://github.com/libuv/libuv/archive/v1.9.0.tar.gz"
|
||||
|
||||
version('1.9.0', '14737f9c76123a19a290dabb7d1cd04c')
|
||||
|
||||
depends_on('automake')
|
||||
depends_on('autoconf')
|
||||
depends_on('libtool')
|
||||
|
||||
def install(self, spec, prefix):
|
||||
bash = which("bash")
|
||||
bash('autogen.sh')
|
||||
configure('--prefix=%s' % prefix)
|
||||
|
||||
make()
|
||||
make("check")
|
||||
make("install")
|
12
var/spack/repos/builtin/packages/libvterm/package.py
Normal file
12
var/spack/repos/builtin/packages/libvterm/package.py
Normal file
@@ -0,0 +1,12 @@
|
||||
from spack import *
|
||||
|
||||
class Libvterm(Package):
|
||||
"""An abstract library implementation of a terminal emulator"""
|
||||
homepage = "http://www.leonerd.org.uk/code/libvterm/"
|
||||
url = "http://www.leonerd.org.uk/code/libvterm/libvterm-0+bzr681.tar.gz"
|
||||
|
||||
version('681', '7a4325a7350b7092245c04e8ee185ac3')
|
||||
|
||||
def install(self, spec, prefix):
|
||||
make()
|
||||
make("install", "PREFIX=" + prefix)
|
18
var/spack/repos/builtin/packages/libxc/package.py
Normal file
18
var/spack/repos/builtin/packages/libxc/package.py
Normal file
@@ -0,0 +1,18 @@
|
||||
from spack import *
|
||||
|
||||
class Libxc(Package):
|
||||
"""Libxc is a library of exchange-correlation functionals for
|
||||
density-functional theory."""
|
||||
|
||||
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('2.2.2', 'd9f90a0d6e36df6c1312b6422280f2ec')
|
||||
|
||||
|
||||
def install(self, spec, prefix):
|
||||
configure('--prefix=%s' % prefix,
|
||||
'--enable-shared')
|
||||
|
||||
make()
|
||||
make("install")
|
@@ -136,6 +136,7 @@ def install(self, spec, prefix):
|
||||
source_directory = self.stage.source_path
|
||||
|
||||
options.append('-DGKLIB_PATH:PATH={metis_source}/GKlib'.format(metis_source=source_directory))
|
||||
options.append('-DCMAKE_INSTALL_NAME_DIR:PATH=%s/lib' % prefix)
|
||||
|
||||
if '+shared' in spec:
|
||||
options.append('-DSHARED:BOOL=ON')
|
||||
@@ -184,7 +185,3 @@ def install(self, spec, prefix):
|
||||
fs = glob.glob(join_path(source_directory,'GKlib',"*.h"))
|
||||
for f in fs:
|
||||
install(f, GKlib_dist)
|
||||
|
||||
# The shared library is not installed correctly on Darwin; correct this
|
||||
if (sys.platform == 'darwin') and ('+shared' in spec):
|
||||
fix_darwin_install_name(prefix.lib)
|
||||
|
125
var/spack/repos/builtin/packages/mfem/package.py
Normal file
125
var/spack/repos/builtin/packages/mfem/package.py
Normal file
@@ -0,0 +1,125 @@
|
||||
from spack import *
|
||||
import glob, string
|
||||
|
||||
class Mfem(Package):
|
||||
"""Free, lightweight, scalable C++ library for finite element methods."""
|
||||
|
||||
homepage = 'http://www.mfem.org'
|
||||
url = 'https://github.com/mfem/mfem'
|
||||
|
||||
# version('3.1', git='https://github.com/mfem/mfem.git',
|
||||
# commit='dbae60fe32e071989b52efaaf59d7d0eb2a3b574')
|
||||
|
||||
version('3.1', '841ea5cf58de6fae4de0f553b0e01ebaab9cd9c67fa821e8a715666ecf18fc57',
|
||||
url='http://goo.gl/xrScXn', expand=False)
|
||||
|
||||
variant('metis', default=False, description='Activate support for metis')
|
||||
variant('hypre', default=False, description='Activate support for hypre')
|
||||
variant('suite-sparse', default=False,
|
||||
description='Activate support for SuiteSparse')
|
||||
variant('mpi', default=False, description='Activate support for MPI')
|
||||
variant('lapack', default=False, description='Activate support for LAPACK')
|
||||
variant('debug', default=False, description='Build debug version')
|
||||
|
||||
depends_on('blas', when='+lapack')
|
||||
depends_on('lapack', when='+lapack')
|
||||
|
||||
depends_on('mpi', when='+mpi')
|
||||
depends_on('metis', when='+mpi')
|
||||
depends_on('hypre', when='+mpi')
|
||||
|
||||
depends_on('hypre', when='+hypre')
|
||||
|
||||
depends_on('metis@4:', when='+metis')
|
||||
|
||||
depends_on('suite-sparse', when='+suite-sparse')
|
||||
depends_on('blas', when='+suite-sparse')
|
||||
depends_on('lapack', when='+suite-sparse')
|
||||
depends_on('metis@5:', when='+suite-sparse ^suite-sparse@4.5:')
|
||||
depends_on('cmake', when='^metis@5:')
|
||||
|
||||
def check_variants(self, spec):
|
||||
if '+mpi' in spec and ('+hypre' not in spec or '+metis' not in spec):
|
||||
raise InstallError('mfem+mpi must be built with +hypre ' +
|
||||
'and +metis!')
|
||||
if '+suite-sparse' in spec and ('+metis' not in spec or
|
||||
'+lapack' not in spec):
|
||||
raise InstallError('mfem+suite-sparse must be built with ' +
|
||||
'+metis and +lapack!')
|
||||
if 'metis@5:' in spec and '%clang' in spec and ('^cmake %gcc' not in spec):
|
||||
raise InstallError('To work around CMake bug with clang, must ' +
|
||||
'build mfem with mfem[+variants] %clang ' +
|
||||
'^cmake %gcc to force CMake to build with gcc')
|
||||
return
|
||||
|
||||
def install(self, spec, prefix):
|
||||
self.check_variants(spec)
|
||||
|
||||
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)
|
||||
options.extend(['MFEM_USE_LAPACK=YES',
|
||||
'LAPACK_OPT=-I%s' % spec['lapack'].prefix.include,
|
||||
'LAPACK_LIB=%s' % lapack_lib])
|
||||
|
||||
if '+hypre' in spec:
|
||||
options.extend(['HYPRE_DIR=%s' % spec['hypre'].prefix,
|
||||
'HYPRE_OPT=-I%s' % spec['hypre'].prefix.include,
|
||||
'HYPRE_LIB=-L%s' % spec['hypre'].prefix.lib +
|
||||
' -lHYPRE'])
|
||||
|
||||
if '+metis' in spec:
|
||||
metis_lib = '-L%s -lmetis' % spec['metis'].prefix.lib
|
||||
if spec['metis'].satisfies('@5:'):
|
||||
metis_str = 'MFEM_USE_METIS_5=YES'
|
||||
else:
|
||||
metis_str = 'MFEM_USE_METIS_5=NO'
|
||||
options.extend([metis_str,
|
||||
'METIS_DIR=%s' % spec['metis'].prefix,
|
||||
'METIS_OPT=-I%s' % spec['metis'].prefix.include,
|
||||
'METIS_LIB=%s' % metis_lib])
|
||||
|
||||
if '+mpi' in spec: options.extend(['MFEM_USE_MPI=YES'])
|
||||
|
||||
if '+suite-sparse' in spec:
|
||||
ssp = spec['suite-sparse'].prefix
|
||||
ss_lib = '-L%s' % ssp.lib
|
||||
ss_lib += (' -lumfpack -lcholmod -lcolamd -lamd -lcamd' +
|
||||
' -lccolamd -lsuitesparseconfig')
|
||||
|
||||
no_librt_archs = ['darwin-i686', 'darwin-x86_64']
|
||||
no_rt = any(map(lambda a: spec.satisfies('='+a), no_librt_archs))
|
||||
if not no_rt: ss_lib += ' -lrt'
|
||||
ss_lib += (' ' + metis_lib + ' ' + lapack_lib)
|
||||
|
||||
options.extend(['MFEM_USE_SUITESPARSE=YES',
|
||||
'SUITESPARSE_DIR=%s' % ssp,
|
||||
'SUITESPARSE_OPT=-I%s' % ssp.include,
|
||||
'SUITESPARSE_LIB=%s' % ss_lib])
|
||||
|
||||
if '+debug' in spec: options.extend(['MFEM_DEBUG=YES'])
|
||||
|
||||
# Dirty hack to cope with URL redirect
|
||||
tgz_file = string.split(self.url,'/')[-1]
|
||||
tar = which('tar')
|
||||
tar('xzvf', tgz_file)
|
||||
cd(glob.glob('mfem*')[0])
|
||||
# End dirty hack to cope with URL redirect
|
||||
|
||||
make('config', *options)
|
||||
make('all')
|
||||
|
||||
# Run a small test before installation
|
||||
args = ['-m', join_path('data','star.mesh'), '--no-visualization']
|
||||
if '+mpi' in spec:
|
||||
Executable(join_path(spec['mpi'].prefix.bin,
|
||||
'mpirun'))('-np',
|
||||
'4',
|
||||
join_path('examples','ex1p'),
|
||||
*args)
|
||||
else:
|
||||
Executable(join_path('examples', 'ex1'))(*args)
|
||||
|
||||
make('install')
|
@@ -43,6 +43,8 @@ class Mpich(Package):
|
||||
version('3.0.4', '9c5d5d4fe1e17dd12153f40bc5b6dbc0')
|
||||
|
||||
variant('verbs', default=False, description='Build support for OpenFabrics verbs.')
|
||||
variant('pmi', default=True, description='Build with PMI support')
|
||||
variant('hydra', default=True, description='Build the hydra process manager')
|
||||
|
||||
provides('mpi@:3.0', when='@3:')
|
||||
provides('mpi@:1.3', when='@1:')
|
||||
@@ -55,12 +57,15 @@ def setup_dependent_environment(self, spack_env, run_env, dependent_spec):
|
||||
spack_env.set('MPICH_FC', spack_fc)
|
||||
|
||||
def setup_dependent_package(self, module, dep_spec):
|
||||
"""For dependencies, make mpicc's use spack wrapper."""
|
||||
# FIXME : is this necessary ? Shouldn't this be part of a contract with MPI providers?
|
||||
module.mpicc = join_path(self.prefix.bin, 'mpicc')
|
||||
self.spec.mpicc = join_path(self.prefix.bin, 'mpicc')
|
||||
self.spec.mpicxx = join_path(self.prefix.bin, 'mpic++')
|
||||
self.spec.mpifc = join_path(self.prefix.bin, 'mpif90')
|
||||
self.spec.mpif77 = join_path(self.prefix.bin, 'mpif77')
|
||||
|
||||
def install(self, spec, prefix):
|
||||
config_args = ["--prefix=" + prefix,
|
||||
"--with-pmi=" + ("yes" if '+pmi' in spec else 'no'),
|
||||
"--with-pm=" + ('hydra' if '+hydra' in spec else 'no'),
|
||||
"--enable-shared"]
|
||||
|
||||
# Variants
|
||||
|
154
var/spack/repos/builtin/packages/mrnet/krell-5.0.1.patch
Normal file
154
var/spack/repos/builtin/packages/mrnet/krell-5.0.1.patch
Normal file
@@ -0,0 +1,154 @@
|
||||
--- mrnet-3093918/include/mrnet/Types.h 2015-12-10 09:32:24.000000000 -0800
|
||||
+++ mrnet_top_of_tree/include/mrnet/Types.h 2016-03-16 12:29:33.986132302 -0700
|
||||
@@ -23,7 +23,7 @@
|
||||
#ifndef MRNET_VERSION_MAJOR
|
||||
# define MRNET_VERSION_MAJOR 5
|
||||
# define MRNET_VERSION_MINOR 0
|
||||
-# define MRNET_VERSION_REV 0
|
||||
+# define MRNET_VERSION_REV 1
|
||||
#endif
|
||||
|
||||
namespace MRN
|
||||
--- mrnet-3093918/include/mrnet_lightweight/Types.h 2015-12-10 09:32:24.000000000 -0800
|
||||
+++ mrnet_top_of_tree/include/mrnet_lightweight/Types.h 2016-03-16 12:29:33.987132302 -0700
|
||||
@@ -30,7 +30,7 @@
|
||||
#ifndef MRNET_VERSION_MAJOR
|
||||
#define MRNET_VERSION_MAJOR 5
|
||||
#define MRNET_VERSION_MINOR 0
|
||||
-#define MRNET_VERSION_REV 0
|
||||
+#define MRNET_VERSION_REV 1
|
||||
#endif
|
||||
void get_Version(int* major,
|
||||
int* minor,
|
||||
--- mrnet-3093918/src/lightweight/SerialGraph.c 2015-12-10 09:32:24.000000000 -0800
|
||||
+++ mrnet_top_of_tree/src/lightweight/SerialGraph.c 2016-03-16 12:29:33.995132302 -0700
|
||||
@@ -59,7 +59,7 @@
|
||||
|
||||
mrn_dbg_func_begin();
|
||||
|
||||
- sprintf(hoststr, "[%s:%hu:%u:", ihostname, iport, irank);
|
||||
+ sprintf(hoststr, "[%s:%05hu:%u:", ihostname, iport, irank);
|
||||
mrn_dbg(5, mrn_printf(FLF, stderr, "looking for SubTreeRoot: '%s'\n", hoststr));
|
||||
|
||||
byte_array = sg->byte_array;
|
||||
@@ -110,7 +110,7 @@
|
||||
|
||||
mrn_dbg_func_begin();
|
||||
|
||||
- len = (size_t) sprintf(hoststr, "[%s:%hu:%u:0]", ihostname, iport, irank);
|
||||
+ len = (size_t) sprintf(hoststr, "[%s:%05hu:%u:0]", ihostname, iport, irank);
|
||||
mrn_dbg(5, mrn_printf(FLF, stderr, "adding sub tree leaf: %s\n", hoststr));
|
||||
|
||||
len += strlen(sg->byte_array) + 1;
|
||||
@@ -139,7 +139,7 @@
|
||||
|
||||
mrn_dbg_func_begin();
|
||||
|
||||
- len = (size_t) sprintf(hoststr, "[%s:%hu:%u:1", ihostname, iport, irank);
|
||||
+ len = (size_t) sprintf(hoststr, "[%s:%05hu:%u:1", ihostname, iport, irank);
|
||||
mrn_dbg(5, mrn_printf(FLF, stderr, "adding sub tree root: %s\n", hoststr));
|
||||
|
||||
len += strlen(sg->byte_array) + 1;
|
||||
@@ -360,8 +360,8 @@
|
||||
char old_hoststr[256];
|
||||
char new_hoststr[256];
|
||||
|
||||
- sprintf(old_hoststr, "[%s:%hu:%u:", hostname, UnknownPort, irank);
|
||||
- sprintf(new_hoststr, "[%s:%hu:%u:", hostname, port, irank);
|
||||
+ sprintf(old_hoststr, "[%s:%05hu:%u:", hostname, UnknownPort, irank);
|
||||
+ sprintf(new_hoststr, "[%s:%05hu:%u:", hostname, port, irank);
|
||||
|
||||
old_byte_array = sg->byte_array;
|
||||
new_byte_array = (char*) malloc( strlen(old_byte_array) + 10 );
|
||||
--- mrnet-3093918/xplat/src/lightweight/SocketUtils.c 2015-12-10 09:32:24.000000000 -0800
|
||||
+++ mrnet_top_of_tree/xplat/src/lightweight/SocketUtils.c 2016-03-16 12:29:34.006132303 -0700
|
||||
@@ -15,7 +15,7 @@
|
||||
#else
|
||||
const XPlat_Socket InvalidSocket = INVALID_SOCKET;
|
||||
#endif
|
||||
-const XPlat_Port InvalidPort = (XPlat_Port)-1;
|
||||
+const XPlat_Port InvalidPort = (XPlat_Port)0;
|
||||
|
||||
static bool_t SetTcpNoDelay( XPlat_Socket sock )
|
||||
{
|
||||
--- mrnet-3093918/conf/configure.in 2015-12-10 09:32:24.000000000 -0800
|
||||
+++ mrnet_top_of_tree/conf/configure.in 2016-03-16 12:45:54.573196781 -0700
|
||||
@@ -107,6 +107,18 @@
|
||||
AC_SUBST(PURIFY)
|
||||
|
||||
|
||||
+AC_ARG_WITH(expat,
|
||||
+ [AS_HELP_STRING([--with-expat=PATH],
|
||||
+ [Absolute path to installation of EXPAT libraries (note: specify the path to the directory containing "include" and "lib" sub-directories)])],
|
||||
+ [EXPAT_DIR="${withval}"],
|
||||
+ [EXPAT_DIR=""])
|
||||
+
|
||||
+if test "x$EXPAT_DIR" = "x" ; then
|
||||
+ EXPAT_LIB=""
|
||||
+else
|
||||
+ EXPAT_LIB="-L$EXPAT_DIR/lib"
|
||||
+fi
|
||||
+
|
||||
dnl === Checks for header files.
|
||||
AC_CHECK_HEADERS([assert.h errno.h fcntl.h limits.h netdb.h signal.h stddef.h stdlib.h stdio.h string.h unistd.h arpa/inet.h netinet/in.h sys/ioctl.h sys/socket.h sys/sockio.h sys/time.h])
|
||||
AC_HEADER_STDBOOL
|
||||
@@ -432,7 +444,7 @@
|
||||
CRAYXT_ATH_LIBS_SO="$CRAYXT_ATH_LIBS -lalps"
|
||||
CRAYXT_ATH_LIBS="$CRAYXT_ATH_LIBS -Wl,-Bstatic -lalps -lxmlrpc -Wl,-Bdynamic"
|
||||
CRAYXE_ATH_LIBS_SO="$CRAYXE_ATH_LIBS -lalps"
|
||||
- CRAYXE_ATH_LIBS="$CRAYXE_ATH_LIBS -Wl,-Bstatic -lalps -lxmlrpc-epi -lexpat -Wl,-Bdynamic"
|
||||
+ CRAYXE_ATH_LIBS="$CRAYXE_ATH_LIBS -Wl,-Bstatic -lalps -lxmlrpc-epi $EXPAT_LIB -lexpat -Wl,-Bdynamic"
|
||||
|
||||
AC_CHECK_LIB( [alps], [alps_launch_tool_helper],
|
||||
[HAVE_ATH_LIBS="yes"; EXTRA_LIBS="$CRAYXT_ATH_LIBS $EXTRA_LIBS"; EXTRA_LIBS_SO="$CRAYXT_ATH_LIBS_SO $EXTRA_LIBS_SO"],
|
||||
--- mrnet-3093918/configure 2015-12-10 09:32:24.000000000 -0800
|
||||
+++ mrnet_top_of_tree/configure 2016-03-16 13:47:20.386439143 -0700
|
||||
@@ -742,6 +742,7 @@
|
||||
enable_debug
|
||||
enable_ltwt_threadsafe
|
||||
with_purify
|
||||
+with_expat
|
||||
'
|
||||
ac_precious_vars='build_alias
|
||||
host_alias
|
||||
@@ -1399,6 +1400,9 @@
|
||||
containing "include" and "lib" sub-directories)
|
||||
--with-launchmon=PATH Absolute path to installation of LaunchMON
|
||||
--with-purify Use purify for memory debugging
|
||||
+ --with-expat=PATH Absolute path to installation of EXPAT libraries
|
||||
+ (note: specify the path to the directory containing
|
||||
+ "include" and "lib" sub-directories)
|
||||
|
||||
Some influential environment variables:
|
||||
CC C compiler command
|
||||
@@ -3541,6 +3545,21 @@
|
||||
|
||||
|
||||
|
||||
+# Check whether --with-expat was given.
|
||||
+if test "${with_expat+set}" = set; then :
|
||||
+ withval=$with_expat; EXPAT_DIR="${withval}"
|
||||
+else
|
||||
+ EXPAT_DIR=""
|
||||
+fi
|
||||
+
|
||||
+
|
||||
+if test "x$EXPAT_DIR" = "x" ; then
|
||||
+ EXPAT_LIB=""
|
||||
+else
|
||||
+ EXPAT_LIB="-L$EXPAT_DIR/lib"
|
||||
+fi
|
||||
+
|
||||
+
|
||||
ac_ext=cpp
|
||||
ac_cpp='$CXXCPP $CPPFLAGS'
|
||||
ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
|
||||
@@ -5473,7 +5492,7 @@
|
||||
CRAYXT_ATH_LIBS_SO="$CRAYXT_ATH_LIBS -lalps"
|
||||
CRAYXT_ATH_LIBS="$CRAYXT_ATH_LIBS -Wl,-Bstatic -lalps -lxmlrpc -Wl,-Bdynamic"
|
||||
CRAYXE_ATH_LIBS_SO="$CRAYXE_ATH_LIBS -lalps"
|
||||
- CRAYXE_ATH_LIBS="$CRAYXE_ATH_LIBS -Wl,-Bstatic -lalps -lxmlrpc-epi -lexpat -Wl,-Bdynamic"
|
||||
+ CRAYXE_ATH_LIBS="$CRAYXE_ATH_LIBS -Wl,-Bstatic -lalps -lxmlrpc-epi $EXPAT_LIB -lexpat -Wl,-Bdynamic"
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for alps_launch_tool_helper in -lalps" >&5
|
||||
$as_echo_n "checking for alps_launch_tool_helper in -lalps... " >&6; }
|
@@ -3,11 +3,18 @@
|
||||
class Mrnet(Package):
|
||||
"""The MRNet Multi-Cast Reduction Network."""
|
||||
homepage = "http://paradyn.org/mrnet"
|
||||
url = "ftp://ftp.cs.wisc.edu/paradyn/mrnet/mrnet_4.0.0.tar.gz"
|
||||
url = "ftp://ftp.cs.wisc.edu/paradyn/mrnet/mrnet_5.0.1.tar.gz"
|
||||
list_url = "http://ftp.cs.wisc.edu/paradyn/mrnet"
|
||||
|
||||
version('4.0.0', 'd00301c078cba57ef68613be32ceea2f')
|
||||
version('4.1.0', '5a248298b395b329e2371bf25366115c')
|
||||
version('5.0.1-2', git='https://github.com/dyninst/mrnet.git', commit='20b1eacfc6d680d9f6472146d2dfaa0f900cc2e9')
|
||||
version('5.0.1', '17f65738cf1b9f9b95647ff85f69ecdd')
|
||||
version('4.1.0', '5a248298b395b329e2371bf25366115c')
|
||||
version('4.0.0', 'd00301c078cba57ef68613be32ceea2f')
|
||||
|
||||
# Add a patch that brings mrnet-5.0.1 up to date with the current development tree
|
||||
# The development tree contains fixes needed for the krell based tools
|
||||
variant('krellpatch', default=False, description="Build MRNet with krell openspeedshop based patch.")
|
||||
patch('krell-5.0.1.patch', when='@5.0.1+krellpatch')
|
||||
|
||||
variant('lwthreads', default=False, description="Also build the MRNet LW threadsafe libraries")
|
||||
parallel = False
|
||||
|
14
var/spack/repos/builtin/packages/msgpack-c/package.py
Normal file
14
var/spack/repos/builtin/packages/msgpack-c/package.py
Normal file
@@ -0,0 +1,14 @@
|
||||
from spack import *
|
||||
|
||||
class MsgpackC(Package):
|
||||
"""A small, fast binary interchange format convertible to/from JSON"""
|
||||
homepage = "http://www.msgpack.org"
|
||||
url = "https://github.com/msgpack/msgpack-c/archive/cpp-1.4.1.tar.gz"
|
||||
|
||||
version('1.4.1', 'e2fd3a7419b9bc49e5017fdbefab87e0')
|
||||
|
||||
def install(self, spec, prefix):
|
||||
cmake('.', *std_cmake_args)
|
||||
|
||||
make()
|
||||
make("install")
|
@@ -147,6 +147,12 @@ def setup_dependent_environment(self, spack_env, run_env, extension_spec):
|
||||
spack_env.set('MPICH_F90', spack_fc)
|
||||
spack_env.set('MPICH_FC', spack_fc)
|
||||
|
||||
def setup_dependent_package(self, module, dep_spec):
|
||||
self.spec.mpicc = join_path(self.prefix.bin, 'mpicc')
|
||||
self.spec.mpicxx = join_path(self.prefix.bin, 'mpicxx')
|
||||
self.spec.mpifc = join_path(self.prefix.bin, 'mpif90')
|
||||
self.spec.mpif77 = join_path(self.prefix.bin, 'mpif77')
|
||||
|
||||
def install(self, spec, prefix):
|
||||
# we'll set different configure flags depending on our environment
|
||||
configure_args = [
|
||||
|
20
var/spack/repos/builtin/packages/ncview/package.py
Normal file
20
var/spack/repos/builtin/packages/ncview/package.py
Normal file
@@ -0,0 +1,20 @@
|
||||
from spack import *
|
||||
|
||||
class Ncview(Package):
|
||||
"""Simple viewer for NetCDF files."""
|
||||
homepage = "http://meteora.ucsd.edu/~pierce/ncview_home_page.html"
|
||||
url = "ftp://cirrus.ucsd.edu/pub/ncview/ncview-2.1.7.tar.gz"
|
||||
|
||||
version('2.1.7', 'debd6ca61410aac3514e53122ab2ba07')
|
||||
|
||||
depends_on("netcdf")
|
||||
depends_on("udunits2")
|
||||
|
||||
# OS Dependencies
|
||||
# Ubuntu: apt-get install libxaw7-dev
|
||||
# CentOS 7: yum install libXaw-devel
|
||||
|
||||
def install(self, spec, prefix):
|
||||
configure('--prefix=%s' % prefix)
|
||||
make()
|
||||
make("install")
|
@@ -12,15 +12,19 @@ class Netcdf(Package):
|
||||
version('4.4.0', 'cffda0cbd97fdb3a06e9274f7aef438e')
|
||||
version('4.3.3', '5fbd0e108a54bd82cb5702a73f56d2ae')
|
||||
|
||||
variant('mpi', default=True, description='Enables MPI parallelism')
|
||||
variant('hdf4', default=False, description="Enable HDF4 support")
|
||||
variant('mpi', default=True, description='Enables MPI parallelism')
|
||||
variant('hdf4', default=False, description='Enable HDF4 support')
|
||||
|
||||
# Dependencies:
|
||||
depends_on("curl") # required for DAP support
|
||||
depends_on("m4")
|
||||
depends_on("hdf", when='+hdf4')
|
||||
depends_on("hdf5+mpi~cxx", when='+mpi') # required for NetCDF-4 support
|
||||
depends_on("hdf5~mpi", when='~mpi') # required for NetCDF-4 support
|
||||
depends_on("zlib") # required for NetCDF-4 support
|
||||
|
||||
# Required for DAP support
|
||||
depends_on("curl")
|
||||
|
||||
# Required for NetCDF-4 support
|
||||
depends_on("zlib")
|
||||
depends_on("hdf5+mpi", when='+mpi')
|
||||
depends_on("hdf5~mpi", when='~mpi')
|
||||
|
||||
def install(self, spec, prefix):
|
||||
# Environment variables
|
||||
@@ -48,7 +52,7 @@ def install(self, spec, prefix):
|
||||
# /usr/lib/x86_64-linux-gnu/libcurl.so: undefined reference to `SSL_CTX_use_certificate_chain_file@OPENSSL_1.0.0'
|
||||
LIBS.append("-lcurl")
|
||||
CPPFLAGS.append("-I%s" % spec['curl'].prefix.include)
|
||||
LDFLAGS.append ("-L%s" % spec['curl'].prefix.lib)
|
||||
LDFLAGS.append( "-L%s" % spec['curl'].prefix.lib)
|
||||
|
||||
if '+mpi' in spec:
|
||||
config_args.append('--enable-parallel4')
|
||||
|
35
var/spack/repos/builtin/packages/openblas/make.patch
Normal file
35
var/spack/repos/builtin/packages/openblas/make.patch
Normal file
@@ -0,0 +1,35 @@
|
||||
diff --git a/Makefile.system b/Makefile.system
|
||||
index b89f60e..2dbdad0 100644
|
||||
--- a/Makefile.system
|
||||
+++ b/Makefile.system
|
||||
@@ -139,6 +139,10 @@ NO_PARALLEL_MAKE=0
|
||||
endif
|
||||
GETARCH_FLAGS += -DNO_PARALLEL_MAKE=$(NO_PARALLEL_MAKE)
|
||||
|
||||
+ifdef MAKE_NO_J
|
||||
+GETARCH_FLAGS += -DMAKE_NO_J=$(MAKE_NO_J)
|
||||
+endif
|
||||
+
|
||||
ifdef MAKE_NB_JOBS
|
||||
GETARCH_FLAGS += -DMAKE_NB_JOBS=$(MAKE_NB_JOBS)
|
||||
endif
|
||||
diff --git a/getarch.c b/getarch.c
|
||||
index f9c49e6..dffad70 100644
|
||||
--- a/getarch.c
|
||||
+++ b/getarch.c
|
||||
@@ -1012,6 +1012,7 @@ int main(int argc, char *argv[]){
|
||||
#endif
|
||||
#endif
|
||||
|
||||
+#ifndef MAKE_NO_J
|
||||
#ifdef MAKE_NB_JOBS
|
||||
printf("MAKE += -j %d\n", MAKE_NB_JOBS);
|
||||
#elif NO_PARALLEL_MAKE==1
|
||||
@@ -1021,6 +1022,7 @@ int main(int argc, char *argv[]){
|
||||
printf("MAKE += -j %d\n", get_num_cores());
|
||||
#endif
|
||||
#endif
|
||||
+#endif
|
||||
|
||||
break;
|
||||
|
@@ -1,6 +1,7 @@
|
||||
from spack import *
|
||||
import sys
|
||||
import os
|
||||
import shutil
|
||||
|
||||
class Openblas(Package):
|
||||
"""OpenBLAS: An optimized BLAS library"""
|
||||
@@ -12,18 +13,22 @@ class Openblas(Package):
|
||||
version('0.2.15', 'b1190f3d3471685f17cfd1ec1d252ac9')
|
||||
|
||||
variant('shared', default=True, description="Build shared libraries as well as static libs.")
|
||||
variant('openmp', default=True, description="Enable OpenMP support.")
|
||||
variant('fpic', default=True, description="Build position independent code")
|
||||
|
||||
# virtual dependency
|
||||
provides('blas')
|
||||
provides('lapack')
|
||||
|
||||
patch('make.patch')
|
||||
|
||||
def install(self, spec, prefix):
|
||||
# Openblas is picky about compilers. Configure fails with
|
||||
# FC=/abs/path/to/f77, whereas FC=f77 works fine.
|
||||
# To circumvent this, provide basename only:
|
||||
make_defs = ['CC=%s' % os.path.basename(spack_cc),
|
||||
'FC=%s' % os.path.basename(spack_f77)]
|
||||
'FC=%s' % os.path.basename(spack_f77),
|
||||
'MAKE_NO_J=1']
|
||||
|
||||
make_targets = ['libs', 'netlib']
|
||||
|
||||
@@ -31,12 +36,19 @@ def install(self, spec, prefix):
|
||||
if '+shared' in spec:
|
||||
make_targets += ['shared']
|
||||
else:
|
||||
if '+fpic' in spec:
|
||||
make_defs.extend(['CFLAGS=-fPIC', 'FFLAGS=-fPIC'])
|
||||
make_defs += ['NO_SHARED=1']
|
||||
|
||||
# fix missing _dggsvd_ and _sggsvd_
|
||||
if spec.satisfies('@0.2.16'):
|
||||
make_defs += ['BUILD_LAPACK_DEPRECATED=1']
|
||||
|
||||
# Add support for OpenMP
|
||||
# Note: Make sure your compiler supports OpenMP
|
||||
if '+openmp' in spec:
|
||||
make_defs += ['USE_OPENMP=1']
|
||||
|
||||
make_args = make_defs + make_targets
|
||||
make(*make_args)
|
||||
|
||||
@@ -58,6 +70,10 @@ def install(self, spec, prefix):
|
||||
if '+shared' in spec:
|
||||
symlink('libopenblas.%s' % dso_suffix, 'liblapack.%s' % dso_suffix)
|
||||
|
||||
# Openblas may pass its own test but still fail to compile Lapack
|
||||
# symbols. To make sure we get working Blas and Lapack, do a small test.
|
||||
self.check_install(spec)
|
||||
|
||||
|
||||
def setup_dependent_package(self, module, dspec):
|
||||
# This is WIP for a prototype interface for virtual packages.
|
||||
@@ -70,3 +86,60 @@ def setup_dependent_package(self, module, dspec):
|
||||
if '+shared' in self.spec:
|
||||
self.spec.blas_shared_lib = join_path(libdir, 'libopenblas.%s' % dso_suffix)
|
||||
self.spec.lapack_shared_lib = self.spec.blas_shared_lib
|
||||
|
||||
def check_install(self, spec):
|
||||
"Build and run a small program to test that we have Lapack symbols"
|
||||
print "Checking Openblas installation..."
|
||||
checkdir = "spack-check"
|
||||
with working_dir(checkdir, create=True):
|
||||
source = r"""
|
||||
#include <cblas.h>
|
||||
#include <stdio.h>
|
||||
int main(void) {
|
||||
int i=0;
|
||||
double A[6] = {1.0, 2.0, 1.0, -3.0, 4.0, -1.0};
|
||||
double B[6] = {1.0, 2.0, 1.0, -3.0, 4.0, -1.0};
|
||||
double C[9] = {.5, .5, .5, .5, .5, .5, .5, .5, .5};
|
||||
cblas_dgemm(CblasColMajor, CblasNoTrans, CblasTrans,
|
||||
3, 3, 2, 1, A, 3, B, 3, 2, C, 3);
|
||||
for (i = 0; i < 9; i++)
|
||||
printf("%f\n", C[i]);
|
||||
return 0;
|
||||
}
|
||||
"""
|
||||
expected = """\
|
||||
11.000000
|
||||
-9.000000
|
||||
5.000000
|
||||
-9.000000
|
||||
21.000000
|
||||
-1.000000
|
||||
5.000000
|
||||
-1.000000
|
||||
3.000000
|
||||
"""
|
||||
with open("check.c", 'w') as f:
|
||||
f.write(source)
|
||||
cc = which('cc')
|
||||
# TODO: Automate these path and library settings
|
||||
cc('-c', "-I%s" % join_path(spec.prefix, "include"), "check.c")
|
||||
cc('-o', "check", "check.o",
|
||||
"-L%s" % join_path(spec.prefix, "lib"), "-llapack", "-lblas", "-lpthread")
|
||||
try:
|
||||
check = Executable('./check')
|
||||
output = check(return_output=True)
|
||||
except:
|
||||
output = ""
|
||||
success = output == expected
|
||||
if not success:
|
||||
print "Produced output does not match expected output."
|
||||
print "Expected output:"
|
||||
print '-'*80
|
||||
print expected
|
||||
print '-'*80
|
||||
print "Produced output:"
|
||||
print '-'*80
|
||||
print output
|
||||
print '-'*80
|
||||
raise RuntimeError("Openblas install check failed")
|
||||
shutil.rmtree(checkdir)
|
||||
|
13
var/spack/repos/builtin/packages/openblas/test_cblas_dgemm.c
Normal file
13
var/spack/repos/builtin/packages/openblas/test_cblas_dgemm.c
Normal file
@@ -0,0 +1,13 @@
|
||||
#include <cblas.h>
|
||||
#include <stdio.h>
|
||||
int main(void) {
|
||||
int i=0;
|
||||
double A[6] = {1.0, 2.0, 1.0, -3.0, 4.0, -1.0};
|
||||
double B[6] = {1.0, 2.0, 1.0, -3.0, 4.0, -1.0};
|
||||
double C[9] = {.5, .5, .5, .5, .5, .5, .5, .5, .5};
|
||||
cblas_dgemm(CblasColMajor, CblasNoTrans, CblasTrans,
|
||||
3, 3, 2, 1, A, 3, B, 3, 2, C, 3);
|
||||
for (i = 0; i < 9; i++)
|
||||
printf("%f\n", C[i]);
|
||||
return 0;
|
||||
}
|
@@ -0,0 +1,9 @@
|
||||
11.000000
|
||||
-9.000000
|
||||
5.000000
|
||||
-9.000000
|
||||
21.000000
|
||||
-1.000000
|
||||
5.000000
|
||||
-1.000000
|
||||
3.000000
|
@@ -29,6 +29,7 @@ class Openmpi(Package):
|
||||
|
||||
variant('psm', default=False, description='Build support for the PSM library.')
|
||||
variant('psm2', default=False, description='Build support for the Intel PSM2 library.')
|
||||
variant('pmi', default=True, description='Build support for PMI-based launchers')
|
||||
variant('verbs', default=False, description='Build support for OpenFabrics verbs.')
|
||||
variant('mxm', default=False, description='Build Mellanox Messaging support')
|
||||
|
||||
@@ -38,7 +39,6 @@ class Openmpi(Package):
|
||||
variant('tm', default=False, description='Build TM (Torque, PBSPro, and compatible) support')
|
||||
variant('slurm', default=False, description='Build SLURM scheduler component')
|
||||
|
||||
variant('pmi', default=False, description='Build PMI support, optionally adding DIR to the search path')
|
||||
variant('sqlite3', default=False, description='Build sqlite3 support')
|
||||
|
||||
# TODO : support for CUDA is missing
|
||||
@@ -67,6 +67,13 @@ def verbs(self):
|
||||
elif self.spec.satisfies('@1.7:'):
|
||||
return 'verbs'
|
||||
|
||||
def setup_dependent_package(self, module, dep_spec):
|
||||
self.spec.mpicc = join_path(self.prefix.bin, 'mpicc')
|
||||
self.spec.mpicxx = join_path(self.prefix.bin, 'mpic++')
|
||||
self.spec.mpifc = join_path(self.prefix.bin, 'mpif90')
|
||||
self.spec.mpif77 = join_path(self.prefix.bin, 'mpif77')
|
||||
|
||||
|
||||
def install(self, spec, prefix):
|
||||
config_args = ["--prefix=%s" % prefix,
|
||||
"--with-hwloc=%s" % spec['hwloc'].prefix,
|
||||
|
@@ -3,6 +3,7 @@
|
||||
|
||||
from spack import *
|
||||
|
||||
|
||||
class Openssl(Package):
|
||||
"""The OpenSSL Project is a collaborative effort to develop a
|
||||
robust, commercial-grade, full-featured, and Open Source
|
||||
@@ -14,10 +15,12 @@ class Openssl(Package):
|
||||
|
||||
version('1.0.1h', '8d6d684a9430d5cc98a62a5d8fbda8cf')
|
||||
version('1.0.1r', '1abd905e079542ccae948af37e393d28')
|
||||
version('1.0.1t', '9837746fcf8a6727d46d22ca35953da1')
|
||||
version('1.0.2d', '38dd619b2e77cbac69b99f52a053d25a')
|
||||
version('1.0.2e', '5262bfa25b60ed9de9f28d5d52d77fc5')
|
||||
version('1.0.2f', 'b3bf73f507172be9292ea2a8c28b659d')
|
||||
version('1.0.2g', 'f3c710c045cdee5fd114feb69feba7aa')
|
||||
version('1.0.2h', '9392e65072ce4b614c1392eefc1f23d0')
|
||||
|
||||
depends_on("zlib")
|
||||
parallel = False
|
||||
@@ -30,26 +33,14 @@ def url_for_version(self, version):
|
||||
# Same idea, but just to avoid issuing the same message multiple times
|
||||
warnings_given_to_user = getattr(Openssl, '_warnings_given', {})
|
||||
if openssl_url is None:
|
||||
latest = 'http://www.openssl.org/source/openssl-{version}.tar.gz'
|
||||
older = 'http://www.openssl.org/source/old/{version_number}/openssl-{version_full}.tar.gz'
|
||||
# Try to use the url where the latest tarballs are stored. If the url does not exist (404), then
|
||||
# return the url for older format
|
||||
version_number = '.'.join([str(x) for x in version[:-1]])
|
||||
older_url = older.format(version_number=version_number, version_full=version)
|
||||
latest_url = latest.format(version=version)
|
||||
response = urllib.urlopen(latest.format(version=version))
|
||||
if response.getcode() == 404:
|
||||
openssl_url = older_url
|
||||
# Checks if we already warned the user for this particular version of OpenSSL.
|
||||
# If not we display a warning message and mark this version
|
||||
if self.spec.satisfies('@external'):
|
||||
# The version @external is reserved to system openssl. In that case return a fake url and exit
|
||||
openssl_url = '@external (reserved version for system openssl)'
|
||||
if not warnings_given_to_user.get(version, False):
|
||||
tty.warn('This installation depends on an old version of OpenSSL, which may have known security issues. ')
|
||||
tty.warn('Consider updating to the latest version of this package.')
|
||||
tty.warn('More details at {homepage}'.format(homepage=Openssl.homepage))
|
||||
tty.msg('Using openssl@external : the version @external is reserved for system openssl')
|
||||
warnings_given_to_user[version] = True
|
||||
else:
|
||||
openssl_url = latest_url
|
||||
# Store the computed URL
|
||||
openssl_url = self.check_for_outdated_release(version, warnings_given_to_user) # Store the computed URL
|
||||
openssl_urls[version] = openssl_url
|
||||
# Store the updated dictionary of URLS
|
||||
Openssl._openssl_url = openssl_urls
|
||||
@@ -58,6 +49,28 @@ def url_for_version(self, version):
|
||||
|
||||
return openssl_url
|
||||
|
||||
def check_for_outdated_release(self, version, warnings_given_to_user):
|
||||
latest = 'ftp://ftp.openssl.org/source/openssl-{version}.tar.gz'
|
||||
older = 'http://www.openssl.org/source/old/{version_number}/openssl-{version_full}.tar.gz'
|
||||
# Try to use the url where the latest tarballs are stored. If the url does not exist (404), then
|
||||
# return the url for older format
|
||||
version_number = '.'.join([str(x) for x in version[:-1]])
|
||||
try:
|
||||
openssl_url = latest.format(version=version)
|
||||
urllib.urlopen(openssl_url)
|
||||
except IOError:
|
||||
openssl_url = older.format(version_number=version_number, version_full=version)
|
||||
# Checks if we already warned the user for this particular version of OpenSSL.
|
||||
# If not we display a warning message and mark this version
|
||||
if not warnings_given_to_user.get(version, False):
|
||||
tty.warn(
|
||||
'This installation depends on an old version of OpenSSL, which may have known security issues. ')
|
||||
tty.warn('Consider updating to the latest version of this package.')
|
||||
tty.warn('More details at {homepage}'.format(homepage=Openssl.homepage))
|
||||
warnings_given_to_user[version] = True
|
||||
|
||||
return openssl_url
|
||||
|
||||
def install(self, spec, prefix):
|
||||
# OpenSSL uses a variable APPS in its Makefile. If it happens to be set
|
||||
# in the environment, then this will override what is set in the
|
||||
|
@@ -0,0 +1,38 @@
|
||||
from spack import *
|
||||
|
||||
class OsuMicroBenchmarks(Package):
|
||||
"""The Ohio MicroBenchmark suite is a collection of independent MPI
|
||||
message passing performance microbenchmarks developed and written at
|
||||
The Ohio State University. It includes traditional benchmarks and
|
||||
performance measures such as latency, bandwidth and host overhead
|
||||
and can be used for both traditional and GPU-enhanced nodes."""
|
||||
|
||||
homepage = "http://mvapich.cse.ohio-state.edu/benchmarks/"
|
||||
url = "http://mvapich.cse.ohio-state.edu/download/mvapich/osu-micro-benchmarks-5.3.tar.gz"
|
||||
|
||||
version('5.3', '42e22b931d451e8bec31a7424e4adfc2')
|
||||
|
||||
variant('cuda', default=False, description="Enable CUDA support")
|
||||
|
||||
depends_on('mpi')
|
||||
depends_on('cuda', when='+cuda')
|
||||
|
||||
|
||||
def install(self, spec, prefix):
|
||||
config_args = [
|
||||
'CC=%s' % spec['mpi'].prefix.bin + '/mpicc',
|
||||
'CXX=%s' % spec['mpi'].prefix.bin + '/mpicxx',
|
||||
'LDFLAGS=-lrt',
|
||||
'--prefix=%s' % prefix
|
||||
]
|
||||
|
||||
if '+cuda' in spec:
|
||||
config_args.extend([
|
||||
'--enable-cuda',
|
||||
'--with-cuda=%s' % spec['cuda'].prefix,
|
||||
])
|
||||
|
||||
configure(*config_args)
|
||||
|
||||
make()
|
||||
make('install')
|
@@ -7,10 +7,17 @@ class P4est(Package):
|
||||
|
||||
version('1.1', '37ba7f4410958cfb38a2140339dbf64f')
|
||||
|
||||
# disable by default to make it work on frontend of clusters
|
||||
variant('tests', default=False, description='Run small tests')
|
||||
variant('tests', default=True, description='Run small tests')
|
||||
|
||||
# build dependencies
|
||||
depends_on('automake')
|
||||
depends_on('autoconf')
|
||||
depends_on('libtool@2.4.2:')
|
||||
|
||||
# other dependencies
|
||||
depends_on('lua') # Needed for the submodule sc
|
||||
depends_on('mpi')
|
||||
depends_on('zlib')
|
||||
|
||||
def install(self, spec, prefix):
|
||||
options = ['--enable-mpi',
|
||||
@@ -19,16 +26,20 @@ def install(self, spec, prefix):
|
||||
'--without-blas',
|
||||
'CPPFLAGS=-DSC_LOG_PRIORITY=SC_LP_ESSENTIAL',
|
||||
'CFLAGS=-O2',
|
||||
'CC=%s' % join_path(self.spec['mpi'].prefix.bin, 'mpicc'), # TODO: use ENV variables or MPI class wrappers
|
||||
'CXX=%s' % join_path(self.spec['mpi'].prefix.bin, 'mpic++'),
|
||||
'FC=%s' % join_path(self.spec['mpi'].prefix.bin, 'mpif90'),
|
||||
'F77=%s' % join_path(self.spec['mpi'].prefix.bin, 'mpif77'),
|
||||
'CC=%s' % self.spec['mpi'].mpicc,
|
||||
'CXX=%s' % self.spec['mpi'].mpicxx,
|
||||
'FC=%s' % self.spec['mpi'].mpifc,
|
||||
'F77=%s' % self.spec['mpi'].mpif77
|
||||
]
|
||||
|
||||
configure('--prefix=%s' % prefix, *options)
|
||||
|
||||
make()
|
||||
# Make tests optional as sometimes mpiexec can't be run with an error:
|
||||
# mpiexec has detected an attempt to run as root.
|
||||
# Running at root is *strongly* discouraged as any mistake (e.g., in
|
||||
# defining TMPDIR) or bug can result in catastrophic damage to the OS
|
||||
# file system, leaving your system in an unusable state.
|
||||
if '+tests' in self.spec:
|
||||
make("check")
|
||||
|
||||
make("check")
|
||||
make("install")
|
||||
|
@@ -1,5 +1,8 @@
|
||||
from spack import *
|
||||
import glob
|
||||
import os
|
||||
import sys
|
||||
from llnl.util.filesystem import fix_darwin_install_name
|
||||
|
||||
class Papi(Package):
|
||||
"""PAPI provides the tool designer and application engineer with a
|
||||
@@ -18,17 +21,27 @@ class Papi(Package):
|
||||
version('5.3.0', '367961dd0ab426e5ae367c2713924ffb')
|
||||
|
||||
def install(self, spec, prefix):
|
||||
os.chdir("src/")
|
||||
with working_dir("src"):
|
||||
|
||||
configure_args=["--prefix=%s" % prefix]
|
||||
configure_args=["--prefix=%s" % prefix]
|
||||
|
||||
# PAPI uses MPI if MPI is present; since we don't require an
|
||||
# MPI package, we ensure that all attempts to use MPI fail, so
|
||||
# that PAPI does not get confused
|
||||
configure_args.append('MPICC=:')
|
||||
# PAPI uses MPI if MPI is present; since we don't require
|
||||
# an MPI package, we ensure that all attempts to use MPI
|
||||
# fail, so that PAPI does not get confused
|
||||
configure_args.append('MPICC=:')
|
||||
|
||||
configure(*configure_args)
|
||||
configure(*configure_args)
|
||||
|
||||
make()
|
||||
make("install")
|
||||
# Don't use <malloc.h>
|
||||
for level in [".", "*", "*/*"]:
|
||||
files = glob.iglob(join_path(level, "*.[ch]"))
|
||||
filter_file(r"\<malloc\.h\>", "<stdlib.h>", *files)
|
||||
|
||||
make()
|
||||
make("install")
|
||||
|
||||
# The shared library is not installed correctly on Darwin
|
||||
if sys.platform == 'darwin':
|
||||
os.rename(join_path(prefix.lib, 'libpapi.so'),
|
||||
join_path(prefix.lib, 'libpapi.dylib'))
|
||||
fix_darwin_install_name(prefix.lib)
|
||||
|
@@ -0,0 +1,14 @@
|
||||
diff --git a/eo/src/CMakeLists.txt b/eo/src/CMakeLists.txt
|
||||
index b2b445a..d45ddc7 100644
|
||||
--- a/eo/src/CMakeLists.txt
|
||||
+++ b/eo/src/CMakeLists.txt
|
||||
@@ -47,7 +47,7 @@ install(DIRECTORY do es ga gp other utils
|
||||
add_subdirectory(es)
|
||||
add_subdirectory(ga)
|
||||
add_subdirectory(utils)
|
||||
-#add_subdirectory(serial)
|
||||
+add_subdirectory(serial) # Required when including <paradiseo/eo/utils/eoTimer.h> , which is need by <paradiseo/eo/mpi/eoMpi.h>
|
||||
|
||||
if(ENABLE_PYEO)
|
||||
add_subdirectory(pyeo)
|
||||
|
@@ -0,0 +1,13 @@
|
||||
diff --git a/cmake/Config.cmake b/cmake/Config.cmake
|
||||
index 02593ba..d198ca9 100644
|
||||
--- a/cmake/Config.cmake
|
||||
+++ b/cmake/Config.cmake
|
||||
@@ -6,7 +6,7 @@ if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
||||
|
||||
# detect OS X version. (use '/usr/bin/sw_vers -productVersion' to extract V from '10.V.x'.)
|
||||
execute_process (COMMAND /usr/bin/sw_vers -productVersion OUTPUT_VARIABLE MACOSX_VERSION_RAW)
|
||||
- string(REGEX REPLACE "10\\.([0-9]).*" "\\1" MACOSX_VERSION "${MACOSX_VERSION_RAW}")
|
||||
+ string(REGEX REPLACE "10\\.([0-9]+).*" "\\1" MACOSX_VERSION "${MACOSX_VERSION_RAW}")
|
||||
if(${MACOSX_VERSION} LESS 5)
|
||||
message(FATAL_ERROR "Unsupported version of OS X : ${MACOSX_VERSION_RAW}")
|
||||
return()
|
13
var/spack/repos/builtin/packages/paradiseo/fix_tests.patch
Normal file
13
var/spack/repos/builtin/packages/paradiseo/fix_tests.patch
Normal file
@@ -0,0 +1,13 @@
|
||||
diff --git a/moeo/test/t-moeo2DMinHypervolumeArchive.cpp b/moeo/test/t-moeo2DMinHypervolumeArchive.cpp
|
||||
index 994a9a4..c4ba77b 100644
|
||||
--- a/moeo/test/t-moeo2DMinHypervolumeArchive.cpp
|
||||
+++ b/moeo/test/t-moeo2DMinHypervolumeArchive.cpp
|
||||
@@ -41,7 +41,7 @@
|
||||
#include <moeo>
|
||||
#include <cassert>
|
||||
|
||||
-#include<archive/moeo2DMinHyperVolumeArchive.h>
|
||||
+#include<archive/moeo2DMinHypervolumeArchive.h>
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
@@ -0,0 +1,13 @@
|
||||
diff --git a/eo/tutorial/Lesson3/exercise3.1.cpp b/eo/tutorial/Lesson3/exercise3.1.cpp
|
||||
index dc37479..d178941 100644
|
||||
--- a/eo/tutorial/Lesson3/exercise3.1.cpp
|
||||
+++ b/eo/tutorial/Lesson3/exercise3.1.cpp
|
||||
@@ -289,7 +289,7 @@ void main_function(int argc, char **argv)
|
||||
checkpoint.add(fdcStat);
|
||||
|
||||
// The Stdout monitor will print parameters to the screen ...
|
||||
- eoStdoutMonitor monitor(false);
|
||||
+ eoStdoutMonitor monitor;
|
||||
|
||||
// when called by the checkpoint (i.e. at every generation)
|
||||
checkpoint.add(monitor);
|
66
var/spack/repos/builtin/packages/paradiseo/package.py
Normal file
66
var/spack/repos/builtin/packages/paradiseo/package.py
Normal file
@@ -0,0 +1,66 @@
|
||||
from spack import *
|
||||
import sys
|
||||
|
||||
class Paradiseo(Package):
|
||||
"""A C++ white-box object-oriented framework dedicated to the reusable design of metaheuristics."""
|
||||
homepage = "http://paradiseo.gforge.inria.fr/"
|
||||
|
||||
# Installing from the development version is a better option at this
|
||||
# point than using the very old supplied packages
|
||||
version('head', git='https://gforge.inria.fr/git/paradiseo/paradiseo.git')
|
||||
# This is a version that the package formula author has tested successfully.
|
||||
# However, the clone is very large (~1Gb git history). The history in the
|
||||
# head version has been trimmed significantly.
|
||||
version('dev-safe', git='https://gforge.inria.fr/git/paradiseo/paradiseo.git',
|
||||
commit='dbb8fbe9a786efd4d1c26408ac1883442e7643a6')
|
||||
|
||||
variant('mpi', default=True, description='Compile with parallel and distributed metaheuristics module')
|
||||
variant('smp', default=True, description='Compile with symmetric multi-processing module ')
|
||||
variant('edo', default=True, description='Compile with (Experimental) EDO module')
|
||||
#variant('tests', default=False, description='Compile with build tests')
|
||||
#variant('doc', default=False, description='Compile with documentation')
|
||||
variant('debug', default=False, description='Builds a debug version of the libraries')
|
||||
variant('openmp', default=False, description='Enable OpenMP support')
|
||||
variant('gnuplot', default=False, description='Enable GnuPlot support')
|
||||
|
||||
# Required dependencies
|
||||
depends_on ("cmake")
|
||||
|
||||
# Optional dependencies
|
||||
depends_on ("mpi", when="+mpi")
|
||||
depends_on ("doxygen", when='+doc')
|
||||
depends_on ("gnuplot", when='+gnuplot')
|
||||
depends_on ("eigen", when='+edo')
|
||||
depends_on ("boost~mpi", when='+edo~mpi')
|
||||
depends_on ("boost+mpi", when='+edo+mpi')
|
||||
|
||||
# Patches
|
||||
patch('enable_eoserial.patch')
|
||||
patch('fix_osx_detection.patch')
|
||||
patch('fix_tests.patch')
|
||||
patch('fix_tutorials.patch')
|
||||
|
||||
def install(self, spec, prefix):
|
||||
options = []
|
||||
options.extend(std_cmake_args)
|
||||
|
||||
options.extend([
|
||||
'-DCMAKE_BUILD_TYPE:STRING=%s' % ('Debug' if '+debug' in spec else 'Release'),
|
||||
'-DINSTALL_TYPE:STRING=MIN',
|
||||
'-DMPI:BOOL=%s' % ('TRUE' if '+mpi' in spec else 'FALSE'),
|
||||
'-DSMP:BOOL=%s' % ('TRUE' if '+smp' in spec else 'FALSE'), # Note: This requires a C++11 compatible compiler
|
||||
'-DEDO:BOOL=%s' % ('TRUE' if '+edo' in spec else 'FALSE'),
|
||||
'-DENABLE_CMAKE_TESTING:BOOL=%s' % ('TRUE' if '+tests' in spec else 'FALSE'),
|
||||
'-DENABLE_OPENMP:BOOL=%s' % ('TRUE' if '+openmp' in spec else 'FALSE'),
|
||||
'-DENABLE_GNUPLOT:BOOL=%s' % ('TRUE' if '+gnuplot' in spec else 'FALSE')
|
||||
])
|
||||
|
||||
with working_dir('spack-build', create=True):
|
||||
# Configure
|
||||
cmake('..', *options)
|
||||
|
||||
# Build, test and install
|
||||
make("VERBOSE=1")
|
||||
if '+tests' in spec:
|
||||
make("test")
|
||||
make("install")
|
@@ -8,6 +8,7 @@ class ParallelNetcdf(Package):
|
||||
homepage = "https://trac.mcs.anl.gov/projects/parallel-netcdf"
|
||||
url = "http://cucis.ece.northwestern.edu/projects/PnetCDF/Release/parallel-netcdf-1.6.1.tar.gz"
|
||||
|
||||
version('1.7.0', '267eab7b6f9dc78c4d0e6def2def3aea4bc7c9f0')
|
||||
version('1.6.1', '62a094eb952f9d1e15f07d56e535052604f1ac34')
|
||||
|
||||
depends_on("m4")
|
||||
|
@@ -27,13 +27,14 @@ class Paraview(Package):
|
||||
|
||||
depends_on('bzip2')
|
||||
depends_on('freetype')
|
||||
depends_on('hdf5+mpi', when='+mpi')
|
||||
depends_on('hdf5~mpi', when='~mpi')
|
||||
#depends_on('hdf5+mpi', when='+mpi')
|
||||
#depends_on('hdf5~mpi', when='~mpi')
|
||||
depends_on('jpeg')
|
||||
depends_on('libpng')
|
||||
depends_on('libtiff')
|
||||
depends_on('libxml2')
|
||||
depends_on('netcdf')
|
||||
#depends_on('netcdf')
|
||||
#depends_on('netcdf-cxx')
|
||||
#depends_on('protobuf') # version mismatches?
|
||||
#depends_on('sqlite') # external version not supported
|
||||
depends_on('zlib')
|
||||
@@ -75,13 +76,13 @@ def nfeature_to_bool(feature):
|
||||
cmake('..',
|
||||
'-DCMAKE_INSTALL_PREFIX:PATH=%s' % prefix,
|
||||
'-DBUILD_TESTING:BOOL=OFF',
|
||||
'-DVTK_USER_SYSTEM_FREETYPE:BOOL=ON',
|
||||
'-DVTK_USER_SYSTEM_HDF5:BOOL=ON',
|
||||
'-DVTK_USER_SYSTEM_JPEG:BOOL=ON',
|
||||
'-DVTK_USER_SYSTEM_LIBXML2:BOOL=ON',
|
||||
'-DVTK_USER_SYSTEM_NETCDF:BOOL=ON',
|
||||
'-DVTK_USER_SYSTEM_TIFF:BOOL=ON',
|
||||
'-DVTK_USER_SYSTEM_ZLIB:BOOL=ON',
|
||||
'-DVTK_USE_SYSTEM_FREETYPE:BOOL=ON',
|
||||
'-DVTK_USE_SYSTEM_HDF5:BOOL=OFF',
|
||||
'-DVTK_USE_SYSTEM_JPEG:BOOL=ON',
|
||||
'-DVTK_USE_SYSTEM_LIBXML2:BOOL=ON',
|
||||
'-DVTK_USE_SYSTEM_NETCDF:BOOL=OFF',
|
||||
'-DVTK_USE_SYSTEM_TIFF:BOOL=ON',
|
||||
'-DVTK_USE_SYSTEM_ZLIB:BOOL=ON',
|
||||
*feature_args)
|
||||
make()
|
||||
make('install')
|
||||
|
@@ -10,7 +10,12 @@ class PkgConfig(Package):
|
||||
parallel = False
|
||||
|
||||
def install(self, spec, prefix):
|
||||
configure("--prefix=%s" %prefix, "--enable-shared")
|
||||
configure("--prefix=%s" %prefix,
|
||||
"--enable-shared",
|
||||
"--with-internal-glib") # There's a bootstrapping problem here;
|
||||
# glib uses pkg-config as well, so
|
||||
# break the cycle by using the internal
|
||||
# glib.
|
||||
|
||||
make()
|
||||
make("install")
|
||||
|
14
var/spack/repos/builtin/packages/py-SQLAlchemy/package.py
Normal file
14
var/spack/repos/builtin/packages/py-SQLAlchemy/package.py
Normal file
@@ -0,0 +1,14 @@
|
||||
from spack import *
|
||||
|
||||
class PySqlalchemy(Package):
|
||||
"""The Python SQL Toolkit and Object Relational Mapper"""
|
||||
|
||||
homepage = 'http://www.sqlalchemy.org/'
|
||||
url = "https://pypi.python.org/packages/source/S/SQLAlchemy/SQLAlchemy-1.0.12.tar.gz"
|
||||
|
||||
version('1.0.12', '6d19ef29883bbebdcac6613cf391cac4')
|
||||
|
||||
extends('python')
|
||||
|
||||
def install(self, spec, prefix):
|
||||
python('setup.py', 'install', '--prefix=%s' % prefix)
|
@@ -7,7 +7,7 @@ class PyBottleneck(Package):
|
||||
|
||||
version('1.0.0', '380fa6f275bd24f27e7cf0e0d752f5d2')
|
||||
|
||||
extends('python', ignore=r'bin/f2py$')
|
||||
extends('python')
|
||||
depends_on('py-numpy')
|
||||
|
||||
def install(self, spec, prefix):
|
||||
|
22
var/spack/repos/builtin/packages/py-csvkit/package.py
Normal file
22
var/spack/repos/builtin/packages/py-csvkit/package.py
Normal file
@@ -0,0 +1,22 @@
|
||||
from spack import *
|
||||
|
||||
class PyCsvkit(Package):
|
||||
"""A library of utilities for working with CSV, the king of tabular file
|
||||
formats"""
|
||||
|
||||
homepage = 'http://csvkit.rtfd.org/'
|
||||
url = "https://pypi.python.org/packages/source/c/csvkit/csvkit-0.9.1.tar.gz"
|
||||
|
||||
version('0.9.1', '48d78920019d18846933ee969502fff6')
|
||||
|
||||
extends('python')
|
||||
|
||||
depends_on('py-dateutil')
|
||||
depends_on('py-dbf')
|
||||
depends_on('py-xlrd')
|
||||
depends_on('py-SQLAlchemy')
|
||||
depends_on('py-six')
|
||||
depends_on('py-openpyxl')
|
||||
|
||||
def install(self, spec, prefix):
|
||||
python('setup.py', 'install', '--prefix=%s' % prefix)
|
15
var/spack/repos/builtin/packages/py-dbf/package.py
Normal file
15
var/spack/repos/builtin/packages/py-dbf/package.py
Normal file
@@ -0,0 +1,15 @@
|
||||
from spack import *
|
||||
|
||||
class PyDbf(Package):
|
||||
"""Pure python package for reading/writing dBase, FoxPro, and Visual FoxPro
|
||||
.dbf files (including memos)"""
|
||||
|
||||
homepage = 'https://pypi.python.org/pypi/dbf'
|
||||
url = "https://pypi.python.org/packages/source/d/dbf/dbf-0.96.005.tar.gz"
|
||||
|
||||
version('0.96.005', 'bce1a1ed8b454a30606e7e18dd2f8277')
|
||||
|
||||
extends('python')
|
||||
|
||||
def install(self, spec, prefix):
|
||||
python('setup.py', 'install', '--prefix=%s' % prefix)
|
14
var/spack/repos/builtin/packages/py-jdcal/package.py
Normal file
14
var/spack/repos/builtin/packages/py-jdcal/package.py
Normal file
@@ -0,0 +1,14 @@
|
||||
from spack import *
|
||||
|
||||
class PyJdcal(Package):
|
||||
"""Julian dates from proleptic Gregorian and Julian calendars"""
|
||||
|
||||
homepage = 'http://github.com/phn/jdcal'
|
||||
url = "https://pypi.python.org/packages/source/j/jdcal/jdcal-1.2.tar.gz"
|
||||
|
||||
version('1.2', 'ab8d5ba300fd1eb01514f363d19b1eb9')
|
||||
|
||||
extends('python')
|
||||
|
||||
def install(self, spec, prefix):
|
||||
python('setup.py', 'install', '--prefix=%s' % prefix)
|
@@ -12,7 +12,7 @@ class PyMatplotlib(Package):
|
||||
variant('gui', default=False, description='Enable GUI')
|
||||
variant('ipython', default=False, description='Enable ipython support')
|
||||
|
||||
extends('python', ignore=r'bin/nosetests.*$|bin/pbr$|bin/f2py$')
|
||||
extends('python', ignore=r'bin/nosetests.*$|bin/pbr$')
|
||||
|
||||
depends_on('py-pyside', when='+gui')
|
||||
depends_on('py-ipython', when='+ipython')
|
||||
@@ -26,6 +26,7 @@ class PyMatplotlib(Package):
|
||||
depends_on('py-pbr')
|
||||
depends_on('py-funcsigs')
|
||||
|
||||
depends_on('pkg-config')
|
||||
depends_on('freetype')
|
||||
depends_on('qt', when='+gui')
|
||||
depends_on('bzip2')
|
||||
|
@@ -9,7 +9,7 @@ class PyNumexpr(Package):
|
||||
version('2.4.6', '17ac6fafc9ea1ce3eb970b9abccb4fbd')
|
||||
version('2.5', '84f66cced45ba3e30dcf77a937763aaa')
|
||||
|
||||
extends('python', ignore=r'bin/f2py$')
|
||||
extends('python')
|
||||
depends_on('py-numpy')
|
||||
|
||||
def install(self, spec, prefix):
|
||||
|
17
var/spack/repos/builtin/packages/py-openpyxl/package.py
Normal file
17
var/spack/repos/builtin/packages/py-openpyxl/package.py
Normal file
@@ -0,0 +1,17 @@
|
||||
from spack import *
|
||||
|
||||
class PyOpenpyxl(Package):
|
||||
"""A Python library to read/write Excel 2007 xlsx/xlsm files"""
|
||||
|
||||
homepage = 'http://openpyxl.readthedocs.org/'
|
||||
url = "https://pypi.python.org/packages/source/o/openpyxl/openpyxl-2.4.0-a1.tar.gz"
|
||||
|
||||
version('2.4.0-a1', 'e5ca6d23ceccb15115d45cdf26e736fc')
|
||||
|
||||
extends('python')
|
||||
|
||||
depends_on('py-jdcal')
|
||||
depends_on('py-setuptools')
|
||||
|
||||
def install(self, spec, prefix):
|
||||
python('setup.py', 'install', '--prefix=%s' % prefix)
|
@@ -10,7 +10,7 @@ class PyPandas(Package):
|
||||
version('0.16.1', 'fac4f25748f9610a3e00e765474bdea8')
|
||||
version('0.18.0', 'f143762cd7a59815e348adf4308d2cf6')
|
||||
|
||||
extends('python', ignore=r'bin/f2py$')
|
||||
extends('python')
|
||||
depends_on('py-dateutil')
|
||||
depends_on('py-numpy')
|
||||
depends_on('py-setuptools')
|
||||
|
@@ -7,7 +7,7 @@ class PyScikitImage(Package):
|
||||
|
||||
version('0.12.3', '04ea833383e0b6ad5f65da21292c25e1')
|
||||
|
||||
extends('python', ignore=r'bin/.*\.py$|bin/f2py$')
|
||||
extends('python', ignore=r'bin/.*\.py$')
|
||||
|
||||
depends_on('py-dask')
|
||||
depends_on('py-pillow')
|
||||
|
@@ -5,11 +5,13 @@ class PySetuptools(Package):
|
||||
homepage = "https://pypi.python.org/pypi/setuptools"
|
||||
url = "https://pypi.python.org/packages/source/s/setuptools/setuptools-11.3.tar.gz"
|
||||
|
||||
version('11.3.1', '01f69212e019a2420c1693fb43593930')
|
||||
version('16.0', '0ace0b96233516fc5f7c857d086aa3ad')
|
||||
version('18.1', 'f72e87f34fbf07f299f6cb46256a0b06')
|
||||
version('19.2', '78353b1f80375ca5e088f4b4627ffe03')
|
||||
version('20.7.0', '5d12b39bf3e75e80fdce54e44b255615')
|
||||
version('20.6.7', '45d6110f3ec14924e44c33411db64fe6')
|
||||
version('20.5', 'fadc1e1123ddbe31006e5e43e927362b')
|
||||
version('19.2', '78353b1f80375ca5e088f4b4627ffe03')
|
||||
version('18.1', 'f72e87f34fbf07f299f6cb46256a0b06')
|
||||
version('16.0', '0ace0b96233516fc5f7c857d086aa3ad')
|
||||
version('11.3.1', '01f69212e019a2420c1693fb43593930')
|
||||
|
||||
extends('python')
|
||||
|
||||
|
15
var/spack/repos/builtin/packages/py-xlrd/package.py
Normal file
15
var/spack/repos/builtin/packages/py-xlrd/package.py
Normal file
@@ -0,0 +1,15 @@
|
||||
from spack import *
|
||||
|
||||
class PyXlrd(Package):
|
||||
"""Library for developers to extract data from Microsoft Excel (tm)
|
||||
spreadsheet files"""
|
||||
|
||||
homepage = 'http://www.python-excel.org/'
|
||||
url = "https://pypi.python.org/packages/source/x/xlrd/xlrd-0.9.4.tar.gz"
|
||||
|
||||
version('0.9.4', '911839f534d29fe04525ef8cd88fe865')
|
||||
|
||||
extends('python')
|
||||
|
||||
def install(self, spec, prefix):
|
||||
python('setup.py', 'install', '--prefix=%s' % prefix)
|
@@ -151,6 +151,8 @@ def python_ignore(self, ext_pkg, args):
|
||||
patterns.append(r'setuptools\.pth')
|
||||
patterns.append(r'bin/easy_install[^/]*$')
|
||||
patterns.append(r'setuptools.*egg$')
|
||||
if ext_pkg.name != 'py-numpy':
|
||||
patterns.append(r'bin/f2py$')
|
||||
|
||||
return match_predicate(ignore_arg, patterns)
|
||||
|
||||
|
@@ -29,7 +29,8 @@ class Qt(Package):
|
||||
depends_on("zlib")
|
||||
depends_on("dbus", when='@4:')
|
||||
depends_on("libtiff")
|
||||
depends_on("libpng")
|
||||
depends_on("libpng@1.2.56", when='@3')
|
||||
depends_on("libpng", when='@4:')
|
||||
depends_on("libmng")
|
||||
depends_on("jpeg")
|
||||
|
||||
@@ -100,7 +101,7 @@ def patch(self):
|
||||
|
||||
@property
|
||||
def common_config_args(self):
|
||||
return [
|
||||
config_args = [
|
||||
'-prefix', self.prefix,
|
||||
'-v',
|
||||
'-opensource',
|
||||
@@ -114,19 +115,29 @@ def common_config_args(self):
|
||||
'-no-openvg',
|
||||
'-no-pch',
|
||||
# NIS is deprecated in more recent glibc
|
||||
'-no-nis']
|
||||
'-no-nis'
|
||||
]
|
||||
|
||||
if '+gtk' in self.spec:
|
||||
config_args.append('-gtkstyle')
|
||||
else:
|
||||
config_args.append('-no-gtkstyle')
|
||||
|
||||
return config_args
|
||||
|
||||
# Don't disable all the database drivers, but should
|
||||
# really get them into spack at some point.
|
||||
|
||||
@when('@3')
|
||||
def configure(self):
|
||||
# An user report that this was necessary to link Qt3 on ubuntu
|
||||
os.environ['LD_LIBRARY_PATH'] = os.getcwd()+'/lib'
|
||||
configure('-prefix', self.prefix,
|
||||
'-v',
|
||||
'-thread',
|
||||
'-shared',
|
||||
'-release',
|
||||
'-fast'
|
||||
)
|
||||
'-fast')
|
||||
|
||||
@when('@4')
|
||||
def configure(self):
|
||||
|
11
var/spack/repos/builtin/packages/qthreads/ldflags.patch
Normal file
11
var/spack/repos/builtin/packages/qthreads/ldflags.patch
Normal file
@@ -0,0 +1,11 @@
|
||||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -40456,7 +40456,7 @@
|
||||
hwloc_saved_LDFLAGS="$LDFLAGS"
|
||||
if test "x$with_hwloc" != x; then
|
||||
CPPFLAGS="-I$with_hwloc/include $CPPFLAGS"
|
||||
- LDFLAGS="-L$with_hwloc/lib $CPPFLAGS"
|
||||
+ LDFLAGS="-L$with_hwloc/lib $LDFLAGS"
|
||||
fi
|
||||
|
||||
|
@@ -16,7 +16,12 @@ class Qthreads(Package):
|
||||
|
||||
version('1.10', '5af8c8bbe88c2a6d45361643780d1671')
|
||||
|
||||
patch("ldflags.patch")
|
||||
patch("restrict.patch")
|
||||
patch("trap.patch")
|
||||
|
||||
def install(self, spec, prefix):
|
||||
configure("--prefix=%s" % prefix)
|
||||
configure("--prefix=%s" % prefix,
|
||||
"--enable-guard-pages")
|
||||
make()
|
||||
make("install")
|
||||
|
12
var/spack/repos/builtin/packages/qthreads/restrict.patch
Normal file
12
var/spack/repos/builtin/packages/qthreads/restrict.patch
Normal file
@@ -0,0 +1,12 @@
|
||||
--- a/include/qthread/common.h.in
|
||||
+++ b/include/qthread/common.h.in
|
||||
@@ -84,7 +84,9 @@
|
||||
/* Define to the equivalent of the C99 'restrict' keyword, or to
|
||||
nothing if this is not supported. Do not define if restrict is
|
||||
supported directly. */
|
||||
+#ifndef restrict
|
||||
#undef restrict
|
||||
+#endif
|
||||
/* Work around a bug in Sun C++: it does not support _Restrict or
|
||||
__restrict__, even though the corresponding Sun C compiler ends up with
|
||||
"#define restrict _Restrict" or "#define restrict __restrict__" in the
|
11
var/spack/repos/builtin/packages/qthreads/trap.patch
Normal file
11
var/spack/repos/builtin/packages/qthreads/trap.patch
Normal file
@@ -0,0 +1,11 @@
|
||||
--- a/include/qthread/qthread.hpp
|
||||
+++ b/include/qthread/qthread.hpp
|
||||
@@ -236,7 +236,7 @@
|
||||
return qthread_incr64((uint64_t *)operand, incr);
|
||||
|
||||
default:
|
||||
- *(int *)(0) = 0;
|
||||
+ __builtin_trap();
|
||||
}
|
||||
return T(0); // never hit - keep compiler happy
|
||||
}
|
12
var/spack/repos/builtin/packages/raja/package.py
Normal file
12
var/spack/repos/builtin/packages/raja/package.py
Normal file
@@ -0,0 +1,12 @@
|
||||
from spack import *
|
||||
|
||||
class Raja(Package):
|
||||
"""RAJA Parallel Framework."""
|
||||
homepage = "http://software.llnl.gov/RAJA/"
|
||||
|
||||
version('git', git='https://github.com/LLNL/RAJA.git', branch="master")
|
||||
|
||||
def install(self, spec, prefix):
|
||||
cmake('.',*std_cmake_args)
|
||||
make()
|
||||
make('install')
|
13
var/spack/repos/builtin/packages/scons/package.py
Normal file
13
var/spack/repos/builtin/packages/scons/package.py
Normal file
@@ -0,0 +1,13 @@
|
||||
from spack import *
|
||||
|
||||
class Scons(Package):
|
||||
"""SCons is a software construction tool"""
|
||||
homepage = "http://scons.org"
|
||||
url = "http://downloads.sourceforge.net/project/scons/scons/2.5.0/scons-2.5.0.tar.gz"
|
||||
|
||||
version('2.5.0', '9e00fa0df8f5ca5c5f5975b40e0ed354')
|
||||
|
||||
extends('python')
|
||||
|
||||
def install(self, spec, prefix):
|
||||
python('setup.py', 'install', '--prefix=%s' % prefix)
|
51
var/spack/repos/builtin/packages/serf/package.py
Normal file
51
var/spack/repos/builtin/packages/serf/package.py
Normal file
@@ -0,0 +1,51 @@
|
||||
##############################################################################
|
||||
# Copyright (c) 2013, Lawrence Livermore National Security, LLC.
|
||||
# Produced at the Lawrence Livermore National Laboratory.
|
||||
#
|
||||
# This file is part of Spack.
|
||||
# Written by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
|
||||
# LLNL-CODE-647188
|
||||
#
|
||||
# For details, see https://github.com/llnl/spack
|
||||
# Please also see the LICENSE file for our notice and the LGPL.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License (as published by
|
||||
# the Free Software Foundation) version 2.1 dated February 1999.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
|
||||
# conditions of the GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# along with this program; if not, write to the Free Software Foundation,
|
||||
# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
##############################################################################
|
||||
from spack import *
|
||||
|
||||
class Serf(Package):
|
||||
"""Apache Serf - a high performance C-based HTTP client library built upon the Apache Portable Runtime (APR) library"""
|
||||
homepage = 'https://serf.apache.org/'
|
||||
url = 'https://archive.apache.org/dist/serf/serf-1.3.8.tar.bz2'
|
||||
|
||||
version('1.3.8', '1d45425ca324336ce2f4ae7d7b4cfbc5567c5446')
|
||||
|
||||
depends_on('apr')
|
||||
depends_on('apr-util')
|
||||
depends_on('scons')
|
||||
depends_on('expat')
|
||||
depends_on('openssl')
|
||||
|
||||
def install(self, spec, prefix):
|
||||
scons = which("scons")
|
||||
|
||||
options = ['PREFIX=%s' % prefix]
|
||||
options.append('APR=%s' % spec['apr'].prefix)
|
||||
options.append('APU=%s' % spec['apr-util'].prefix)
|
||||
options.append('OPENSSL=%s' % spec['openssl'].prefix)
|
||||
options.append('LINKFLAGS=-L%s/lib' % spec['expat'].prefix)
|
||||
options.append('CPPFLAGS=-I%s/include' % spec['expat'].prefix)
|
||||
|
||||
scons(*options)
|
||||
scons('install')
|
@@ -37,6 +37,7 @@ class Subversion(Package):
|
||||
depends_on('apr-util')
|
||||
depends_on('zlib')
|
||||
depends_on('sqlite')
|
||||
depends_on('serf')
|
||||
|
||||
# Optional: We need swig if we want the Perl, Python or Ruby
|
||||
# bindings.
|
||||
@@ -54,6 +55,7 @@ def install(self, spec, prefix):
|
||||
options.append('--with-apr-util=%s' % spec['apr-util'].prefix)
|
||||
options.append('--with-zlib=%s' % spec['zlib'].prefix)
|
||||
options.append('--with-sqlite=%s' % spec['sqlite'].prefix)
|
||||
options.append('--with-serf=%s' % spec['serf'].prefix)
|
||||
#options.append('--with-swig=%s' % spec['swig'].prefix)
|
||||
|
||||
configure(*options)
|
||||
|
@@ -6,7 +6,9 @@ class SuperluDist(Package):
|
||||
homepage = "http://crd-legacy.lbl.gov/~xiaoye/SuperLU/"
|
||||
url = "http://crd-legacy.lbl.gov/~xiaoye/SuperLU/superlu_dist_4.1.tar.gz"
|
||||
|
||||
version('4.3', 'ee66c84e37b4f7cc557771ccc3dc43ae')
|
||||
version('5.0.0', '2b53baf1b0ddbd9fcf724992577f0670')
|
||||
# default to version 4.3 since petsc and trilinos are not tested with 5.0.
|
||||
version('4.3', 'ee66c84e37b4f7cc557771ccc3dc43ae', preferred=True)
|
||||
version('4.2', 'ae9fafae161f775fbac6eba11e530a65')
|
||||
version('4.1', '4edee38cc29f687bd0c8eb361096a455')
|
||||
version('4.0', 'c0b98b611df227ae050bc1635c6940e0')
|
||||
|
@@ -22,6 +22,7 @@
|
||||
# along with this program; if not, write to the Free Software Foundation,
|
||||
# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
##############################################################################
|
||||
|
||||
from spack import *
|
||||
|
||||
class Swig(Package):
|
||||
@@ -33,14 +34,19 @@ class Swig(Package):
|
||||
code. In addition, SWIG provides a variety of customization
|
||||
features that let you tailor the wrapping process to suit your
|
||||
application."""
|
||||
homepage = "http://www.swig.org"
|
||||
url = "http://prdownloads.sourceforge.net/swig/swig-3.0.2.tar.gz"
|
||||
|
||||
homepage = "http://www.swig.org"
|
||||
url = "http://prdownloads.sourceforge.net/swig/swig-3.0.8.tar.gz"
|
||||
|
||||
version('3.0.8', 'c96a1d5ecb13d38604d7e92148c73c97')
|
||||
version('3.0.2', '62f9b0d010cef36a13a010dc530d0d41')
|
||||
version('2.0.12', 'c3fb0b2d710cc82ed0154b91e43085a4')
|
||||
version('2.0.2', 'eaf619a4169886923e5f828349504a29')
|
||||
version('1.3.40', '2df766c9e03e02811b1ab4bba1c7b9cc')
|
||||
|
||||
depends_on('pcre')
|
||||
|
||||
def install(self, spec, prefix):
|
||||
configure("--prefix=%s" % prefix)
|
||||
configure('--prefix=%s' % prefix)
|
||||
make()
|
||||
make("install")
|
||||
make('install')
|
||||
|
@@ -9,6 +9,7 @@ class TheSilverSearcher(Package):
|
||||
|
||||
depends_on('pcre')
|
||||
depends_on('xz')
|
||||
depends_on('pkg-config')
|
||||
|
||||
def install(self, spec, prefix):
|
||||
configure("--prefix=%s" % prefix)
|
||||
|
124
var/spack/repos/builtin/packages/turbomole/package.py
Normal file
124
var/spack/repos/builtin/packages/turbomole/package.py
Normal file
@@ -0,0 +1,124 @@
|
||||
from spack import *
|
||||
import os
|
||||
import subprocess
|
||||
|
||||
class Turbomole(Package):
|
||||
"""TURBOMOLE: Program Package for ab initio Electronic Structure
|
||||
Calculations. NB: Requires a license to download."""
|
||||
|
||||
# NOTE: Turbomole requires purchase of a license to download. Go to the
|
||||
# NOTE: Turbomole home page, http://www.turbomole-gmbh.com, for details.
|
||||
# NOTE: Spack will search the current directory for this file. It is
|
||||
# NOTE: probably best to add this file to a Spack mirror so that it can be
|
||||
# NOTE: found from anywhere. For information on setting up a Spack mirror
|
||||
# NOTE: see http://software.llnl.gov/spack/mirrors.html
|
||||
|
||||
homepage = "http://www.turbomole-gmbh.com/"
|
||||
|
||||
version('7.0.2', '92b97e1e52e8dcf02a4d9ac0147c09d6',
|
||||
url="file://%s/turbolinux702.tar.gz" % os.getcwd())
|
||||
|
||||
variant('mpi', default=False, description='Set up MPI environment')
|
||||
variant('smp', default=False, description='Set up SMP environment')
|
||||
|
||||
# Turbomole's install is odd. There are three variants
|
||||
# - serial
|
||||
# - parallel, MPI
|
||||
# - parallel, SMP
|
||||
#
|
||||
# Only one of these can be active at a time. MPI and SMP are set as
|
||||
# variants so there could be up to 3 installs per version. Switching
|
||||
# between them would be accomplished with `module swap` commands.
|
||||
|
||||
def do_fetch(self, mirror_only=True):
|
||||
if '+mpi' in self.spec and '+smp' in self.spec:
|
||||
raise InstallError('Can not have both SMP and MPI enabled in the same build.')
|
||||
super(Turbomole, self).do_fetch(mirror_only)
|
||||
|
||||
def get_tm_arch(self):
|
||||
# For python-2.7 we could use `tm_arch = subprocess.check_output()`
|
||||
# Use the following for compatibility with python 2.6
|
||||
if 'TURBOMOLE' in os.getcwd():
|
||||
tm_arch = subprocess.Popen(['sh', 'scripts/sysname'],
|
||||
stdout=subprocess.PIPE).communicate()[0]
|
||||
return tm_arch.rstrip('\n')
|
||||
else:
|
||||
return
|
||||
|
||||
def install(self, spec, prefix):
|
||||
if spec.satisfies('@:7.0.2'):
|
||||
calculate_version = 'calculate_2.4_linux64'
|
||||
molecontrol_version = 'MoleControl_2.5'
|
||||
|
||||
tm_arch=self.get_tm_arch()
|
||||
|
||||
tar = which('tar')
|
||||
dst = join_path(prefix, 'TURBOMOLE')
|
||||
|
||||
tar('-x', '-z', '-f', 'thermocalc.tar.gz')
|
||||
with working_dir('thermocalc'):
|
||||
cmd = 'sh install <<<y'
|
||||
subprocess.call(cmd, shell=True)
|
||||
|
||||
install_tree('basen', join_path(dst, 'basen'))
|
||||
install_tree('cabasen', join_path(dst, 'cabasen'))
|
||||
install_tree(calculate_version, join_path(dst, calculate_version))
|
||||
install_tree('cbasen', join_path(dst, 'cbasen'))
|
||||
install_tree('DOC', join_path(dst, 'DOC'))
|
||||
install_tree('jbasen', join_path(dst, 'jbasen'))
|
||||
install_tree('jkbasen', join_path(dst, 'jkbasen'))
|
||||
install_tree(molecontrol_version, join_path(dst, molecontrol_version))
|
||||
install_tree('parameter', join_path(dst, 'parameter'))
|
||||
install_tree('perlmodules', join_path(dst, 'perlmodules'))
|
||||
install_tree('scripts', join_path(dst, 'scripts'))
|
||||
install_tree('smprun_scripts', join_path(dst, 'smprun_scripts'))
|
||||
install_tree('structures', join_path(dst, 'structures'))
|
||||
install_tree('thermocalc', join_path(dst, 'thermocalc'))
|
||||
install_tree('TURBOTEST', join_path(dst, 'TURBOTEST'))
|
||||
install_tree('xbasen', join_path(dst, 'xbasen'))
|
||||
|
||||
install('Config_turbo_env', dst)
|
||||
install('Config_turbo_env.tcsh', dst)
|
||||
install('README', dst)
|
||||
install('README_LICENSES', dst)
|
||||
install('TURBOMOLE_702_LinuxPC', dst)
|
||||
|
||||
if '+mpi' in spec:
|
||||
install_tree('bin/%s_mpi' % tm_arch, join_path(dst, 'bin', '%s_mpi' % tm_arch))
|
||||
install_tree('libso/%s_mpi' % tm_arch, join_path(dst, 'libso', '%s_mpi' % tm_arch))
|
||||
install_tree('mpirun_scripts/%s_mpi' % tm_arch, join_path(dst, 'mpirun_scripts', '%s_mpi' % tm_arch))
|
||||
elif '+smp' in spec:
|
||||
install_tree('bin/%s_smp' % tm_arch, join_path(dst, 'bin', '%s_smp' % tm_arch))
|
||||
install_tree('libso/%s_smp' % tm_arch, join_path(dst, 'libso', '%s_smp' % tm_arch))
|
||||
install_tree('mpirun_scripts/%s_smp' % tm_arch, join_path(dst, 'mpirun_scripts', '%s_smp' % tm_arch))
|
||||
else:
|
||||
install_tree('bin/%s' % tm_arch, join_path(dst, 'bin', tm_arch))
|
||||
if '+mpi' in spec or '+smp' in spec:
|
||||
install('mpirun_scripts/ccsdf12', join_path(dst, 'mpirun_scripts'))
|
||||
install('mpirun_scripts/dscf', join_path(dst, 'mpirun_scripts'))
|
||||
install('mpirun_scripts/grad', join_path(dst, 'mpirun_scripts'))
|
||||
install('mpirun_scripts/mpgrad', join_path(dst, 'mpirun_scripts'))
|
||||
install('mpirun_scripts/pnoccsd', join_path(dst, 'mpirun_scripts'))
|
||||
install('mpirun_scripts/rdgrad', join_path(dst, 'mpirun_scripts'))
|
||||
install('mpirun_scripts/ricc2', join_path(dst, 'mpirun_scripts'))
|
||||
install('mpirun_scripts/ridft', join_path(dst, 'mpirun_scripts'))
|
||||
|
||||
def setup_environment(self, spack_env, run_env):
|
||||
if self.spec.satisfies('@:7.0.2'):
|
||||
molecontrol_version = 'MoleControl_2.5'
|
||||
|
||||
tm_arch=self.get_tm_arch()
|
||||
|
||||
run_env.set('TURBODIR', join_path(self.prefix, 'TURBOMOLE'))
|
||||
run_env.set('MOLE_CONTROL', join_path(self.prefix, 'TURBOMOLE', molecontrol_version))
|
||||
|
||||
run_env.prepend_path('PATH', join_path(self.prefix, 'TURBOMOLE', 'thermocalc'))
|
||||
run_env.prepend_path('PATH', join_path(self.prefix, 'TURBOMOLE', 'scripts'))
|
||||
if '+mpi' in self.spec:
|
||||
run_env.set('PARA_ARCH', 'MPI')
|
||||
run_env.prepend_path('PATH', join_path(self.prefix, 'TURBOMOLE', 'bin', '%s_mpi' % tm_arch))
|
||||
elif '+smp' in self.spec:
|
||||
run_env.set('PARA_ARCH', 'SMP')
|
||||
run_env.prepend_path('PATH', join_path(self.prefix, 'TURBOMOLE', 'bin', '%s_smp' % tm_arch))
|
||||
else:
|
||||
run_env.prepend_path('PATH', join_path(self.prefix, 'TURBOMOLE', 'bin', tm_arch))
|
12
var/spack/repos/builtin/packages/unibilium/package.py
Normal file
12
var/spack/repos/builtin/packages/unibilium/package.py
Normal file
@@ -0,0 +1,12 @@
|
||||
from spack import *
|
||||
|
||||
class Unibilium(Package):
|
||||
"""A terminfo parsing library"""
|
||||
homepage = "https://github.com/mauke/unibilium"
|
||||
url = "https://github.com/mauke/unibilium/archive/v1.2.0.tar.gz"
|
||||
|
||||
version('1.2.0', '9b1c97839a880a373da6c097443b43c4')
|
||||
|
||||
def install(self, spec, prefix):
|
||||
make("PREFIX="+prefix)
|
||||
make("install", "PREFIX="+prefix)
|
@@ -17,6 +17,8 @@ class Wget(Package):
|
||||
|
||||
def install(self, spec, prefix):
|
||||
configure("--prefix=%s" % prefix,
|
||||
"--with-ssl=openssl")
|
||||
"--with-ssl=openssl",
|
||||
"OPENSSL_CFLAGS=-I%s" % spec['openssl'].prefix.include,
|
||||
"OPENSSL_LIBS=-L%s -lssl -lcrypto -lz" % spec['openssl'].prefix.lib)
|
||||
make()
|
||||
make("install")
|
||||
|
@@ -1,19 +1,3 @@
|
||||
# FIXME:
|
||||
# This is a template package file for Spack. We've conveniently
|
||||
# put "FIXME" labels next to all the things you'll want to change.
|
||||
#
|
||||
# Once you've edited all the FIXME's, delete this whole message,
|
||||
# save this file, and test out your package like this:
|
||||
#
|
||||
# spack install xerces-c
|
||||
#
|
||||
# You can always get back here to change things with:
|
||||
#
|
||||
# spack edit xerces-c
|
||||
#
|
||||
# See the spack documentation for more information on building
|
||||
# packages.
|
||||
#
|
||||
from spack import *
|
||||
|
||||
class XercesC(Package):
|
||||
@@ -24,8 +8,8 @@ class XercesC(Package):
|
||||
"""
|
||||
|
||||
homepage = "https://xerces.apache.org/xerces-c"
|
||||
url = "https://www.apache.org/dist/xerces/c/3/sources/xerces-c-3.1.2.tar.gz"
|
||||
version('3.1.2', '9eb1048939e88d6a7232c67569b23985')
|
||||
url = "https://www.apache.org/dist/xerces/c/3/sources/xerces-c-3.1.3.tar.bz2"
|
||||
version('3.1.3', '5e333b55cb43e6b025ddf0e5d0f0fb0d')
|
||||
|
||||
def install(self, spec, prefix):
|
||||
configure("--prefix=%s" % prefix,
|
||||
|
@@ -1,3 +1,4 @@
|
||||
import re, os, glob
|
||||
from spack import *
|
||||
|
||||
class Zoltan(Package):
|
||||
@@ -12,8 +13,13 @@ class Zoltan(Package):
|
||||
base_url = "http://www.cs.sandia.gov/~kddevin/Zoltan_Distributions"
|
||||
|
||||
version('3.83', '1ff1bc93f91e12f2c533ddb01f2c095f')
|
||||
version('3.8', '9d8fba8a990896881b85351d4327c4a9')
|
||||
version('3.6', '9cce794f7241ecd8dbea36c3d7a880f9')
|
||||
version('3.3', '5eb8f00bda634b25ceefa0122bd18d65')
|
||||
|
||||
variant('debug', default=False, description='Builds a debug version of the library')
|
||||
variant('shared', default=True, description='Builds a shared version of the library')
|
||||
|
||||
variant('fortran', default=True, description='Enable Fortran support')
|
||||
variant('mpi', default=False, description='Enable MPI support')
|
||||
|
||||
@@ -24,28 +30,49 @@ def install(self, spec, prefix):
|
||||
'--enable-f90interface' if '+fortan' in spec else '--disable-f90interface',
|
||||
'--enable-mpi' if '+mpi' in spec else '--disable-mpi',
|
||||
]
|
||||
config_cflags = [
|
||||
'-O0' if '+debug' in spec else '-O3',
|
||||
'-g' if '+debug' in spec else '-g0',
|
||||
]
|
||||
|
||||
if '+shared' in spec:
|
||||
config_args.append('--with-ar=$(CXX) -shared $(LDFLAGS) -o')
|
||||
config_args.append('RANLIB=echo')
|
||||
config_cflags.append('-fPIC')
|
||||
|
||||
if '+mpi' in spec:
|
||||
config_args.append('--with-mpi=%s' % spec['mpi'].prefix)
|
||||
config_args.append('--with-mpi-compilers=%s' % spec['mpi'].prefix.bin)
|
||||
config_args.append('CC=%s/mpicc' % spec['mpi'].prefix.bin)
|
||||
config_args.append('CXX=%s/mpicxx' % spec['mpi'].prefix.bin)
|
||||
config_args.append('--with-mpi=%s' % spec['mpi'].prefix)
|
||||
config_args.append('--with-mpi-compilers=%s' % spec['mpi'].prefix.bin)
|
||||
|
||||
# NOTE: Early versions of Zoltan come packaged with a few embedded
|
||||
# library packages (e.g. ParMETIS, Scotch), which messes with Spack's
|
||||
# ability to descend directly into the package's source directory.
|
||||
if spec.satisfies('@:3.3'):
|
||||
if spec.satisfies('@:3.6'):
|
||||
cd('Zoltan_v%s' % self.version)
|
||||
|
||||
mkdirp('build')
|
||||
cd('build')
|
||||
|
||||
config_zoltan = Executable('../configure')
|
||||
config_zoltan('--prefix=%s' % pwd(), *config_args)
|
||||
config_zoltan(
|
||||
'--prefix=%s' % pwd(),
|
||||
'--with-cflags=%s' % ' '.join(config_cflags),
|
||||
'--with-cxxflags=%s' % ' '.join(config_cflags),
|
||||
*config_args)
|
||||
|
||||
make()
|
||||
make('install')
|
||||
|
||||
# NOTE: Unfortunately, Zoltan doesn't provide any configuration options for
|
||||
# the extension of the output library files, so this script must change these
|
||||
# extensions as a post-processing step.
|
||||
if '+shared' in spec:
|
||||
for libpath in glob.glob('lib/*.a'):
|
||||
libdir, libname = (os.path.dirname(libpath), os.path.basename(libpath))
|
||||
move(libpath, os.path.join(libdir, re.sub(r'\.a$', '.so', libname)))
|
||||
|
||||
mkdirp(prefix)
|
||||
move('include', prefix)
|
||||
move('lib', prefix)
|
||||
|
Reference in New Issue
Block a user