summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Richart <nicolas.richart@epfl.ch>2016-01-20 18:31:02 +0100
committerNicolas Richart <nicolas.richart@epfl.ch>2016-01-20 18:31:02 +0100
commitb71b478a3626ae9e1a0d3b5c7ab9945b5c478200 (patch)
tree8b365f29b8d60237ec053064d3db9a2e00709bf6
parent974fc65e0f15ac87d2422858d71e0c7624fb7726 (diff)
downloadspack-b71b478a3626ae9e1a0d3b5c7ab9945b5c478200.tar.gz
spack-b71b478a3626ae9e1a0d3b5c7ab9945b5c478200.tar.bz2
spack-b71b478a3626ae9e1a0d3b5c7ab9945b5c478200.tar.xz
spack-b71b478a3626ae9e1a0d3b5c7ab9945b5c478200.zip
Minor correction to install mumps+mpi
-rw-r--r--var/spack/repos/builtin/packages/mumps/Makefile.inc3
-rw-r--r--var/spack/repos/builtin/packages/mumps/package.py32
-rw-r--r--var/spack/repos/builtin/packages/netlib-scalapack/package.py17
3 files changed, 37 insertions, 15 deletions
diff --git a/var/spack/repos/builtin/packages/mumps/Makefile.inc b/var/spack/repos/builtin/packages/mumps/Makefile.inc
index 4b6696db5c..2e6a041878 100644
--- a/var/spack/repos/builtin/packages/mumps/Makefile.inc
+++ b/var/spack/repos/builtin/packages/mumps/Makefile.inc
@@ -23,9 +23,6 @@ LIBPAR = $(SCALAP)
LIBOTHERS = -lpthread
-#Preprocessor defs for calling Fortran from C (-DAdd_ or -DAdd__ or -DUPPER)
-CDEFS = -DAdd_
-
#Sequential:
ifeq ($(MUMPS_TYPE),seq)
INCS = $(INCSEQ)
diff --git a/var/spack/repos/builtin/packages/mumps/package.py b/var/spack/repos/builtin/packages/mumps/package.py
index b4e38c02de..44a37903cc 100644
--- a/var/spack/repos/builtin/packages/mumps/package.py
+++ b/var/spack/repos/builtin/packages/mumps/package.py
@@ -15,11 +15,10 @@ class Mumps(Package):
variant('ptscotch', default=False, description='Activate PT-Scotch as a possible ordering library')
variant('metis', default=False, description='Activate Metis as a possible ordering library')
variant('parmetis', default=False, description='Activate Parmetis as a possible ordering library')
- variant('double', default=True, description='Activate dmumps')
- variant('float', default=True, description='Activate smumps')
- variant('complex', default=True, description='Activate cmumps and/or zmumps')
+ variant('double', default=True, description='Activate the compilation of dmumps')
+ variant('float', default=True, description='Activate the compilation of smumps')
+ variant('complex', default=True, description='Activate the compilation of cmumps and/or zmumps')
variant('idx64', default=False, description='Use int64_t/integer*8 as default index type')
- variant('double', default=False, description='Use double precision floating point types')
depends_on('scotch + esmumps', when='~ptscotch+scotch')
@@ -27,10 +26,16 @@ class Mumps(Package):
depends_on('metis', when='~parmetis+metis')
depends_on('parmetis', when="+parmetis")
depends_on('blas')
+ depends_on('lapack')
depends_on('scalapack', when='+mpi')
depends_on('mpi', when='+mpi')
-
- def patch(self):
+
+ # this function is not a patch function because in case scalapack
+ # is needed it uses self.spec['scalapack'].fc_link set by the
+ # setup_dependent_environment in scalapck. This happen after patch
+ # end before install
+ # def patch(self):
+ def write_makefile_inc(self):
if ('+parmetis' in self.spec or '+ptscotch' in self.spec) and '+mpi' not in self.spec:
raise RuntimeError('You cannot use the variants parmetis or ptscotch without mpi')
@@ -61,8 +66,13 @@ class Mumps(Package):
makefile_conf.append("ORDERINGSF = %s" % (' '.join(orderings)))
+ # TODO: test this part, it needs a full blas, scalapack and
+ # partitionning environment with 64bit integers
if '+idx64' in self.spec:
makefile_conf.extend(
+ # the fortran compilation flags most probably are
+ # working only for intel and gnu compilers this is
+ # perhaps something the compiler should provide
['OPTF = -O -DALLOW_NON_INIT %s' % '-fdefault-integer-8' if self.compiler.name == "gcc" else '-i8',
'OPTL = -O ',
'OPTC = -O -DINTSIZE64'])
@@ -78,7 +88,8 @@ class Mumps(Package):
["CC = %s" % join_path(self.spec['mpi'].prefix.bin, 'mpicc'),
"FC = %s" % join_path(self.spec['mpi'].prefix.bin, 'mpif90'),
"FL = %s" % join_path(self.spec['mpi'].prefix.bin, 'mpif90'),
- "SCALAP = %s" % self.spec['scalapack'].fc_link])
+ "SCALAP = %s" % self.spec['scalapack'].fc_link,
+ "MUMPS_TYPE = par"])
else:
makefile_conf.extend(
["CC = cc",
@@ -86,6 +97,11 @@ class Mumps(Package):
"FL = fc",
"MUMPS_TYPE = seq"])
+ # TODO: change the value to the correct one according to the
+ # compiler possible values are -DAdd_, -DAdd__ and/or -DUPPER
+ makefile_conf.append("CDEFS = -DAdd_")
+
+
makefile_inc_template = join_path(os.path.dirname(self.module.__file__),
'Makefile.inc')
with open(makefile_inc_template, "r") as fh:
@@ -113,6 +129,8 @@ class Mumps(Package):
if '+complex' in spec:
make_libs.append('zexamples')
+ self.write_makefile_inc()
+
make(*make_libs)
install_tree('lib', prefix.lib)
diff --git a/var/spack/repos/builtin/packages/netlib-scalapack/package.py b/var/spack/repos/builtin/packages/netlib-scalapack/package.py
index 69df4d9da7..5be91c4a40 100644
--- a/var/spack/repos/builtin/packages/netlib-scalapack/package.py
+++ b/var/spack/repos/builtin/packages/netlib-scalapack/package.py
@@ -9,23 +9,30 @@ class NetlibScalapack(Package):
version('2.0.2', '2f75e600a2ba155ed9ce974a1c4b536f')
version('2.0.1', '17b8cde589ea0423afe1ec43e7499161')
version('2.0.0', '9e76ae7b291be27faaad47cfc256cbfe')
-
+ # versions before 2.0.0 are not using cmake and requires blacs as
+ # a separated package
+
variant('shared', default=True, description='Build the shared library version')
-
+ variant('fpic', default=False, description="Build with -fpic compiler option")
+
provides('scalapack')
depends_on('mpi')
- depends_on('blas')
depends_on('lapack')
def install(self, spec, prefix):
options = [
"-DBUILD_SHARED_LIBS:BOOL=%s" % 'ON' if '+shared' in spec else 'OFF',
"-DBUILD_STATIC_LIBS:BOOL=%s" % 'OFF' if '+shared' in spec else 'ON',
- "-DCMAKE_C_FLAGS=-fPIC",
- "-DCMAKE_Fortran_FLAGS=-fPIC",
+ "-DUSE_OPTIMIZED_LAPACK_BLAS:BOOL=ON", # forces scalapack to use find_package(LAPACK)
]
+ if '+fpic' in spec:
+ options.extend([
+ "-DCMAKE_C_FLAGS=-fPIC",
+ "-DCMAKE_Fortran_FLAGS=-fPIC"
+ ])
+
options.extend(std_cmake_args)
with working_dir('spack-build', create=True):