Not compiling due to mpi error. Also getting this error from the command line so could be separate issue. Otherwise package definition first draft complete.

This commit is contained in:
Andrew Williams 2016-08-18 13:19:36 +01:00
parent b99e945e6d
commit 6641f42417
3 changed files with 36 additions and 23 deletions

View file

@ -3,6 +3,6 @@ packages:
paths:
intelmpi@4.1.0%gcc@4.4.7 arch=linux-x86_64: /software/compilers/intel/13.0/impi/4.1.0.024/intel64
buildable: False
all:
providers:
mpi: [intelmpi, openmpi]
# all:
# providers:
# mpi: [intelmpi]

View file

@ -37,16 +37,19 @@ class Intelmpi(Package):
def setup_dependent_environment(self, spack_env, run_env, dependent_spec):
spack_env.set('MPICC', join_path(self.prefix.bin, 'mpicc'))
spack_env.set('MPICXX', join_path(self.prefix.bin, 'mpic++'))
spack_env.set('MPICXX', join_path(self.prefix.bin, 'mpicxx'))
spack_env.set('MPIF77', join_path(self.prefix.bin, 'mpif77'))
spack_env.set('MPIF90', join_path(self.prefix.bin, 'mpif90'))
# NOTE: Need to find a better way of setting this compiler argument
# which is only required when building packages with intelmpi.
spack_env.set('CXXFLAGS', '-DMPICH_IGNORE_CXX_SEEK')
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.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')
self.spec.cppflags = '-DMPICH_IGNORE_CXX_SEEK'
# self.spec.cxxflags = '-DMPICH_IGNORE_CXX_SEEK'
# def install(self, spec, prefix):
# configure("--prefix=%s" % prefix)

View file

@ -30,13 +30,15 @@ class Plumed(Package):
molecular systems which works together with some of the most popular
molecular dynamics engines."""
# FIXME: Add a proper url for your package's homepage here.
# PLUMED homepage. The source is available on github.
homepage = "http://www.plumed.org/home"
url = "https://github.com/plumed/plumed2"
version('2.2.3', git="https://github.com/plumed/plumed2.git", tag='v2.2.3')
# Variants
# Variants. PLUMED by default builds a number of optional modules.
# The ones listed here are not built by default for various reasons,
# such as stability, lack of testing, or lack of demand.
variant('crystallization', default=False,
description='Build support for optional crystallization module.')
variant('imd', default=False,
@ -46,15 +48,14 @@ class Plumed(Package):
variant('mpi', default=False,
description='Enable MPI support.')
# Dependencies
# Dependencies. LAPACK and BLAS are recommended but not essential.
depends_on("mpi", when="+mpi")
depends_on("netlib-lapack")
depends_on("openblas")
def install(self, spec, prefix):
configure("--prefix=" + prefix)
# "--enable-mpi",
# "-enable-modules=crystallization")
# Prefix is the only compulsory argument.
config_args = ["--prefix=" + prefix]
# Construct list of optional modules
module_opts=[]
@ -64,19 +65,28 @@ def install(self, spec, prefix):
'+manyrestraints' if '+manyrestraints' in spec else '-manyrestraints'
])
# Add optional arguments based on specs and variants
# config_args.extend([
# Modules
# "--enable-modules=%s" % "".join(module_opts) if module_opts is not None,
# "--enable-mpi" if '+mpi' in spec
# ])
if modules_opts:
# If we have specified any optional modules then add the argument ro
# enable or disable them.
if module_opts:
config_args.extend(["--enable-modules=%s" % "".join(module_opts)])
config_args.extend([
"--enable-mpi" if '+mpi' in spec else "--disable-mpi"
])
# If using MPI then ensure the correct compiler wrapper is used.
if '+mpi' in spec:
config_args.extend([
"--enable-mpi",
"CC=%s" % self.spec['mpi'].mpicc,
"CXX=%s" % self.spec['mpi'].mpicxx,
"FC=%s" % self.spec['mpi'].mpifc,
"F77=%s" % self.spec['mpi'].mpif77
])
# Add remaining variant flags.
# config_args.extend([
# "--enable-mpi" if '+mpi' in spec else "--disable-mpi"
# ])
# Configure
configure(*config_args)
make()
make("install")