summaryrefslogtreecommitdiff
path: root/var
diff options
context:
space:
mode:
authorAndrew Williams <williamsa89@cardiff.ac.uk>2016-08-18 13:19:36 +0100
committerAndrew Williams <williamsa89@cardiff.ac.uk>2016-08-18 13:19:36 +0100
commit6641f424177ca3565a99c493827582f5511b100a (patch)
tree3a844f410be6416ecf87d7ed4a57297bd79feb6f /var
parentb99e945e6da8f3e38090fe8e30f21bf105449240 (diff)
downloadspack-6641f424177ca3565a99c493827582f5511b100a.tar.gz
spack-6641f424177ca3565a99c493827582f5511b100a.tar.bz2
spack-6641f424177ca3565a99c493827582f5511b100a.tar.xz
spack-6641f424177ca3565a99c493827582f5511b100a.zip
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.
Diffstat (limited to 'var')
-rw-r--r--var/spack/repos/builtin/packages/intelmpi/package.py9
-rw-r--r--var/spack/repos/builtin/packages/plumed/package.py42
2 files changed, 32 insertions, 19 deletions
diff --git a/var/spack/repos/builtin/packages/intelmpi/package.py b/var/spack/repos/builtin/packages/intelmpi/package.py
index 6750ee695a..5a9cdcdbf1 100644
--- a/var/spack/repos/builtin/packages/intelmpi/package.py
+++ b/var/spack/repos/builtin/packages/intelmpi/package.py
@@ -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)
diff --git a/var/spack/repos/builtin/packages/plumed/package.py b/var/spack/repos/builtin/packages/plumed/package.py
index 023de82b9b..b1e74c5827 100644
--- a/var/spack/repos/builtin/packages/plumed/package.py
+++ b/var/spack/repos/builtin/packages/plumed/package.py
@@ -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 @@ class Plumed(Package):
'+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([
- # Modules
-# "--enable-modules=%s" % "".join(module_opts) if module_opts is not None,
-# "--enable-mpi" if '+mpi' in spec
+# "--enable-mpi" if '+mpi' in spec else "--disable-mpi"
# ])
- if modules_opts:
- config_args.extend(["--enable-modules=%s" % "".join(module_opts)])
-
- config_args.extend([
- "--enable-mpi" if '+mpi' in spec else "--disable-mpi"
- ])
+ # Configure
+ configure(*config_args)
make()
make("install")