summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordanielsjensen1 <danielsjensen1@gmail.com>2017-01-15 03:30:47 -0700
committerTodd Gamblin <tgamblin@llnl.gov>2017-01-15 02:30:47 -0800
commit957cb968c619e32fc764babb8dc8ed977b42c789 (patch)
treeb2a77bfb44f58c5727020568dba508d2a853b51f
parentc6c6773c03098f2eb22619ddde90ce3ebfcbc99b (diff)
downloadspack-957cb968c619e32fc764babb8dc8ed977b42c789.tar.gz
spack-957cb968c619e32fc764babb8dc8ed977b42c789.tar.bz2
spack-957cb968c619e32fc764babb8dc8ed977b42c789.tar.xz
spack-957cb968c619e32fc764babb8dc8ed977b42c789.zip
Features/octopus 6.0 (#2819)
* Added support for Octopus 6.0 and the optional libraries: metis, parmetis, netcdf, arpack-ng, and scalapack. * Fix PEP 8 line too long error. * Changed format syntax {} to {0} to support Python 2.6.
-rw-r--r--var/spack/repos/builtin/packages/octopus/package.py61
1 files changed, 53 insertions, 8 deletions
diff --git a/var/spack/repos/builtin/packages/octopus/package.py b/var/spack/repos/builtin/packages/octopus/package.py
index a100f7896a..b74befbe35 100644
--- a/var/spack/repos/builtin/packages/octopus/package.py
+++ b/var/spack/repos/builtin/packages/octopus/package.py
@@ -30,22 +30,47 @@ class Octopus(Package):
theory code."""
homepage = "http://www.tddft.org/programs/octopus/"
- url = "http://www.tddft.org/programs/octopus/down.php?file=5.0.1/octopus-5.0.1.tar.gz"
+ base_url = "http://www.tddft.org/programs/octopus/down.php?file="
+ version('6.0', '5d1168c2a8d7fd9cb9492eaebaa7182e')
version('5.0.1', '2b6392ab67b843f9d4ca7413fc07e822')
+ # Sample url is:
+ # "http://www.tddft.org/programs/octopus/down.php?file=5.0.1/octopus-5.0.1.tar.gz"
+ def url_for_version(self, version):
+ return '{0}/{1}/octopus-{1}.tar.gz'.format(Octopus.base_url,
+ version.dotted)
+
+ variant('scalapack', default=False,
+ description='Compile with Scalapack')
+ variant('metis', default=True,
+ description='Compile with METIS')
+ variant('parmetis', default=False,
+ description='Compile with ParMETIS')
+ variant('netcdf', default=False,
+ description='Compile with Netcdf')
+ variant('arpack-ng', default=False,
+ description='Compile with ARPACK-ng')
+
depends_on('blas')
depends_on('gsl')
depends_on('lapack')
depends_on('libxc')
depends_on('mpi')
depends_on('fftw+mpi')
+ depends_on('metis@5:', when='+metis')
+ depends_on('parmetis', when='+parmetis')
+ depends_on('scalapack', when='+scalapack')
+ depends_on('netcdf-fortran', when='+netcdf')
+ depends_on('arpack-ng', when='+arpack-ng')
# optional dependencies:
- # TODO: scalapack, metis, parmetis, netcdf, etsf-io, sparskit, arpack,
+ # TODO: parmetis, etsf-io, sparskit,
# feast, libfm, pfft, isf, pnfft
def install(self, spec, prefix):
+ arpack = find_libraries(['libarpack'], root=spec[
+ 'arpack-ng'].prefix.lib, shared=True)
lapack = spec['lapack'].lapack_libs
blas = spec['blas'].blas_libs
args = []
@@ -58,17 +83,37 @@ class Octopus(Package):
'CC=%s' % spec['mpi'].mpicc,
'FC=%s' % spec['mpi'].mpifc,
'--enable-mpi',
- '--with-fft-lib=-L%s -lfftw3' % spec['fftw'].prefix.lib
- # --with-blacs=${prefix}/lib/libscalapack.dylib
- # --with-netcdf-prefix=netcdf-fortran
+ '--with-fft-lib=-L%s -lfftw3' % spec['fftw'].prefix.lib,
+ ])
+ if '+metis' in spec:
+ args.extend([
+ '--with-metis-prefix=%s' % spec['metis'].prefix,
+ ])
+ if '+parmetis' in spec:
+ args.extend([
+ '--with-parmetis-prefix=%s' % spec['parmetis'].prefix,
+ ])
+ if '+netcdf' in spec:
+ args.extend([
+ '--with-netcdf-prefix=%s' % spec['netcdf-fortran'].prefix,
+ '--with-netcdf-include=%s' %
+ spec['netcdf-fortran'].prefix.include,
+ ])
+ if '+arpack-ng' in spec:
+ args.extend([
+ '--with-arpack={0}'.format(arpack.joined()),
+ ])
+ if '+scalapack' in spec:
+ args.extend([
+ '--with-blacs=%s' % spec['scalapack'].scalapack_libs,
+ '--with-scalapack=%s' % spec['scalapack'].scalapack_libs,
+ ])
# --with-etsf-io-prefix=
# --with-sparskit=${prefix}/lib/libskit.a
# --with-pfft-prefix=${prefix} --with-mpifftw-prefix=${prefix}
- # --with-arpack=${prefix}/lib/libarpack.dylib
# --with-parpack=${prefix}/lib/libparpack.dylib
- # --with-metis-prefix=${prefix} --with-parmetis-prefix=${prefix}
+ # --with-parmetis-prefix=${prefix}
# --with-berkeleygw-prefix=${prefix}
- ])
# When preprocessor expands macros (i.e. CFLAGS) defined as quoted
# strings the result may be > 132 chars and is terminated.