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:
commit
7d5bb088b4
@ -1831,6 +1831,23 @@ successfully find ``libdwarf.h`` and ``libdwarf.so``, without the
|
||||
packager having to provide ``--with-libdwarf=/path/to/libdwarf`` on
|
||||
the command line.
|
||||
|
||||
Message Parsing Interface (MPI)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
It is common for high performance computing software/packages to use ``MPI``.
|
||||
As a result of conretization, a given package can be built using different
|
||||
implementations of MPI such as ``Openmpi``, ``MPICH`` or ``IntelMPI``.
|
||||
In some scenarios to configure a package one have to provide it with appropriate MPI
|
||||
compiler wrappers such as ``mpicc``, ``mpic++``.
|
||||
However different implementations of ``MPI`` may have different names for those
|
||||
wrappers. In order to make package's ``install()`` method indifferent to the
|
||||
choice ``MPI`` implementation, each package which implements ``MPI`` sets up
|
||||
``self.spec.mpicc``, ``self.spec.mpicxx``, ``self.spec.mpifc`` and ``self.spec.mpif77``
|
||||
to point to ``C``, ``C++``, ``Fortran 90`` and ``Fortran 77`` ``MPI`` wrappers.
|
||||
Package developers are advised to use these variables, for example ``self.spec['mpi'].mpicc``
|
||||
instead of hard-coding ``join_path(self.spec['mpi'].prefix.bin, 'mpicc')`` for
|
||||
the reasons outlined above.
|
||||
|
||||
|
||||
Forking ``install()``
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
|
@ -97,6 +97,9 @@ class Compiler(object):
|
||||
# argument used to get C++11 options
|
||||
cxx11_flag = "-std=c++11"
|
||||
|
||||
# argument used to get C++14 options
|
||||
cxx14_flag = "-std=c++1y"
|
||||
|
||||
|
||||
def __init__(self, cspec, cc, cxx, f77, fc):
|
||||
def check(exe):
|
||||
|
@ -54,9 +54,16 @@ def cxx11_flag(self):
|
||||
if self.version < ver('4.3'):
|
||||
tty.die("Only gcc 4.3 and above support c++11.")
|
||||
elif self.version < ver('4.7'):
|
||||
return "-std=gnu++0x"
|
||||
return "-std=c++0x"
|
||||
else:
|
||||
return "-std=gnu++11"
|
||||
return "-std=c++11"
|
||||
|
||||
@property
|
||||
def cxx14_flag(self):
|
||||
if self.version < ver('4.8'):
|
||||
tty.die("Only gcc 4.8 and above support c++14.")
|
||||
else:
|
||||
return "-std=c++14"
|
||||
|
||||
@classmethod
|
||||
def fc_version(cls, fc):
|
||||
|
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')()
|
@ -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
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')
|
@ -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")
|
||||
@ -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),
|
||||
|
@ -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')
|
||||
|
@ -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):
|
||||
|
@ -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')
|
||||
|
@ -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")
|
||||
|
@ -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)
|
||||
|
||||
|
@ -55,9 +55,10 @@ 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,
|
||||
|
@ -6,6 +6,7 @@ class Mrnet(Package):
|
||||
url = "ftp://ftp.cs.wisc.edu/paradyn/mrnet/mrnet_5.0.1.tar.gz"
|
||||
list_url = "http://ftp.cs.wisc.edu/paradyn/mrnet"
|
||||
|
||||
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')
|
||||
|
@ -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 = [
|
||||
|
@ -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;
|
||||
|
@ -20,13 +20,15 @@ class Openblas(Package):
|
||||
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']
|
||||
|
||||
|
@ -44,6 +44,8 @@ class Openmpi(Package):
|
||||
provides('mpi@:2.2', when='@1.6.5')
|
||||
provides('mpi@:3.0', when='@1.7.5:')
|
||||
|
||||
depends_on('hwloc')
|
||||
|
||||
|
||||
def url_for_version(self, version):
|
||||
return "http://www.open-mpi.org/software/ompi/v%s/downloads/openmpi-%s.tar.bz2" % (version.up_to(2), version)
|
||||
@ -55,6 +57,12 @@ def setup_dependent_environment(self, spack_env, run_env, dependent_spec):
|
||||
spack_env.set('OMPI_FC', spack_fc)
|
||||
spack_env.set('OMPI_F77', spack_f77)
|
||||
|
||||
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')
|
||||
|
||||
@property
|
||||
def verbs(self):
|
||||
# Up through version 1.6, this option was previously named --with-openib
|
||||
@ -66,6 +74,7 @@ def verbs(self):
|
||||
|
||||
def install(self, spec, prefix):
|
||||
config_args = ["--prefix=%s" % prefix,
|
||||
"--with-hwloc=%s" % spec['hwloc'].prefix,
|
||||
"--enable-shared",
|
||||
"--enable-static"]
|
||||
# Variant based arguments
|
||||
|
@ -15,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
|
||||
|
@ -7,6 +7,8 @@ class P4est(Package):
|
||||
|
||||
version('1.1', '37ba7f4410958cfb38a2140339dbf64f')
|
||||
|
||||
variant('tests', default=True, description='Run small tests')
|
||||
|
||||
# build dependencies
|
||||
depends_on('automake')
|
||||
depends_on('autoconf')
|
||||
@ -24,14 +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("check")
|
||||
# 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("install")
|
||||
|
@ -20,15 +20,20 @@ class Paradiseo(Package):
|
||||
#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")
|
||||
depends_on ("eigen")
|
||||
|
||||
# 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')
|
||||
@ -45,7 +50,9 @@ def install(self, spec, prefix):
|
||||
'-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_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):
|
||||
|
@ -101,7 +101,7 @@ def patch(self):
|
||||
|
||||
@property
|
||||
def common_config_args(self):
|
||||
return [
|
||||
config_args = [
|
||||
'-prefix', self.prefix,
|
||||
'-v',
|
||||
'-opensource',
|
||||
@ -115,7 +115,16 @@ 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.
|
||||
|
||||
@ -128,8 +137,7 @@ def configure(self):
|
||||
'-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')
|
||||
|
@ -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)
|
||||
|
@ -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):
|
||||
|
Loading…
Reference in New Issue
Block a user