Skip to content
Snippets Groups Projects
Commit 6641f424 authored by Andrew Williams's avatar Andrew Williams
Browse files

Not compiling due to mpi error. Also getting this error from the command line...

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.
parent b99e945e
No related branches found
No related tags found
No related merge requests found
...@@ -3,6 +3,6 @@ packages: ...@@ -3,6 +3,6 @@ packages:
paths: paths:
intelmpi@4.1.0%gcc@4.4.7 arch=linux-x86_64: /software/compilers/intel/13.0/impi/4.1.0.024/intel64 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 buildable: False
all: # all:
providers: # providers:
mpi: [intelmpi, openmpi] # mpi: [intelmpi]
...@@ -37,16 +37,19 @@ class Intelmpi(Package): ...@@ -37,16 +37,19 @@ class Intelmpi(Package):
def setup_dependent_environment(self, spack_env, run_env, dependent_spec): def setup_dependent_environment(self, spack_env, run_env, dependent_spec):
spack_env.set('MPICC', join_path(self.prefix.bin, 'mpicc')) 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('MPIF77', join_path(self.prefix.bin, 'mpif77'))
spack_env.set('MPIF90', join_path(self.prefix.bin, 'mpif90')) 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): def setup_dependent_package(self, module, dep_spec):
self.spec.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.mpicxx = join_path(self.prefix.bin, 'mpicxx')
self.spec.mpifc = join_path(self.prefix.bin, 'mpif90') self.spec.mpifc = join_path(self.prefix.bin, 'mpif90')
self.spec.mpif77 = join_path(self.prefix.bin, 'mpif77') 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): # def install(self, spec, prefix):
# configure("--prefix=%s" % prefix) # configure("--prefix=%s" % prefix)
......
...@@ -30,13 +30,15 @@ class Plumed(Package): ...@@ -30,13 +30,15 @@ class Plumed(Package):
molecular systems which works together with some of the most popular molecular systems which works together with some of the most popular
molecular dynamics engines.""" 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" homepage = "http://www.plumed.org/home"
url = "https://github.com/plumed/plumed2" url = "https://github.com/plumed/plumed2"
version('2.2.3', git="https://github.com/plumed/plumed2.git", tag='v2.2.3') 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, variant('crystallization', default=False,
description='Build support for optional crystallization module.') description='Build support for optional crystallization module.')
variant('imd', default=False, variant('imd', default=False,
...@@ -46,15 +48,14 @@ class Plumed(Package): ...@@ -46,15 +48,14 @@ class Plumed(Package):
variant('mpi', default=False, variant('mpi', default=False,
description='Enable MPI support.') description='Enable MPI support.')
# Dependencies # Dependencies. LAPACK and BLAS are recommended but not essential.
depends_on("mpi", when="+mpi") depends_on("mpi", when="+mpi")
depends_on("netlib-lapack") depends_on("netlib-lapack")
depends_on("openblas") depends_on("openblas")
def install(self, spec, prefix): def install(self, spec, prefix):
configure("--prefix=" + prefix) # Prefix is the only compulsory argument.
# "--enable-mpi", config_args = ["--prefix=" + prefix]
# "-enable-modules=crystallization")
# Construct list of optional modules # Construct list of optional modules
module_opts=[] module_opts=[]
...@@ -64,19 +65,28 @@ def install(self, spec, prefix): ...@@ -64,19 +65,28 @@ def install(self, spec, prefix):
'+manyrestraints' if '+manyrestraints' in spec else '-manyrestraints' '+manyrestraints' if '+manyrestraints' in spec else '-manyrestraints'
]) ])
# Add optional arguments based on specs and variants # 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)])
# 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([ # config_args.extend([
# Modules # "--enable-mpi" if '+mpi' in spec else "--disable-mpi"
# "--enable-modules=%s" % "".join(module_opts) if module_opts is not None,
# "--enable-mpi" if '+mpi' in spec
# ]) # ])
if modules_opts: # Configure
config_args.extend(["--enable-modules=%s" % "".join(module_opts)]) configure(*config_args)
config_args.extend([
"--enable-mpi" if '+mpi' in spec else "--disable-mpi"
])
make() make()
make("install") make("install")
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment