ocotpus and arpack-ng: fix arpack bug and add libs to arpack-ng (#3875)

* ocotpus and arpack-ng: fix arpack bug and add libs to arpack-ng

also rename the variant to be consistent with other packages

* fix a bug

* flake8
This commit is contained in:
Denis Davydov 2017-04-18 18:50:10 +02:00 committed by Adam J. Stewart
parent afbe81b455
commit ce714b5641
2 changed files with 27 additions and 11 deletions

View File

@ -80,6 +80,19 @@ class ArpackNg(Package):
depends_on('mpi', when='+mpi')
@property
def libs(self):
# TODO: do we need spec['arpack-ng:parallel'].libs ?
# query_parameters = self.spec.last_query.extra_parameters
libraries = ['libarpack']
if '+mpi' in self.spec:
libraries = ['libparpack'] + libraries
return find_libraries(
libraries, root=self.prefix, shared=True, recurse=True
)
@when('@3.4.0:')
def install(self, spec, prefix):
@ -114,7 +127,7 @@ def install(self, spec, prefix):
make('test')
make('install')
@when('@3.3.0')
@when('@3.3.0') # noqa
def install(self, spec, prefix):
# Apparently autotools are not bootstrapped
which('libtoolize')()

View File

@ -43,8 +43,8 @@ class Octopus(Package):
description='Compile with ParMETIS')
variant('netcdf', default=False,
description='Compile with Netcdf')
variant('arpack-ng', default=False,
description='Compile with ARPACK-ng')
variant('arpack', default=False,
description='Compile with ARPACK')
depends_on('blas')
depends_on('gsl')
@ -56,15 +56,13 @@ class Octopus(Package):
depends_on('parmetis', when='+parmetis')
depends_on('scalapack', when='+scalapack')
depends_on('netcdf-fortran', when='+netcdf')
depends_on('arpack-ng', when='+arpack-ng')
depends_on('arpack-ng', when='+arpack')
# optional dependencies:
# 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'].libs
blas = spec['blas'].libs
args = []
@ -93,20 +91,25 @@ def install(self, spec, prefix):
'--with-netcdf-include=%s' %
spec['netcdf-fortran'].prefix.include,
])
if '+arpack-ng' in spec:
if '+arpack' in spec:
arpack_libs = spec['arpack-ng'].libs.joined()
args.extend([
'--with-arpack={0}'.format(arpack.joined()),
'--with-arpack={0}'.format(arpack_libs),
])
if '+mpi' in spec['arpack-ng']:
args.extend([
'--with-parpack={0}'.format(arpack_libs),
])
if '+scalapack' in spec:
args.extend([
'--with-blacs=%s' % spec['scalapack'].libs,
'--with-scalapack=%s' % spec['scalapack'].libs,
'--with-scalapack=%s' % spec['scalapack'].libs
])
# --with-etsf-io-prefix=
# --with-sparskit=${prefix}/lib/libskit.a
# --with-pfft-prefix=${prefix} --with-mpifftw-prefix=${prefix}
# --with-parpack=${prefix}/lib/libparpack.dylib
# --with-parmetis-prefix=${prefix}
# --with-berkeleygw-prefix=${prefix}
# When preprocessor expands macros (i.e. CFLAGS) defined as quoted