From 6641f424177ca3565a99c493827582f5511b100a Mon Sep 17 00:00:00 2001 From: Andrew Williams Date: Thu, 18 Aug 2016 13:19:36 +0100 Subject: 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. --- .../repos/builtin/packages/intelmpi/package.py | 9 +++-- var/spack/repos/builtin/packages/plumed/package.py | 42 +++++++++++++--------- 2 files changed, 32 insertions(+), 19 deletions(-) (limited to 'var') 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") -- cgit v1.2.3-60-g2f50