summaryrefslogtreecommitdiff
path: root/var/spack/repos/builtin/packages/superlu/package.py
diff options
context:
space:
mode:
Diffstat (limited to 'var/spack/repos/builtin/packages/superlu/package.py')
-rw-r--r--var/spack/repos/builtin/packages/superlu/package.py264
1 files changed, 137 insertions, 127 deletions
diff --git a/var/spack/repos/builtin/packages/superlu/package.py b/var/spack/repos/builtin/packages/superlu/package.py
index 1204ec9e28..8f20f90ea4 100644
--- a/var/spack/repos/builtin/packages/superlu/package.py
+++ b/var/spack/repos/builtin/packages/superlu/package.py
@@ -16,41 +16,49 @@ class Superlu(CMakePackage):
machines. SuperLU is designed for sequential machines."""
homepage = "https://crd-legacy.lbl.gov/~xiaoye/SuperLU/#superlu"
- url = "https://github.com/xiaoyeli/superlu/archive/refs/tags/v5.3.0.tar.gz"
-
- tags = ['e4s']
-
- version('5.3.0', sha256='3e464afa77335de200aeb739074a11e96d9bef6d0b519950cfa6684c4be1f350')
- version('5.2.2', sha256='470334a72ba637578e34057f46948495e601a5988a602604f5576367e606a28c')
- version('5.2.1', sha256='28fb66d6107ee66248d5cf508c79de03d0621852a0ddeba7301801d3d859f463')
- version('4.3', sha256='169920322eb9b9c6a334674231479d04df72440257c17870aaa0139d74416781',
- deprecated=True,
- url='https://crd-legacy.lbl.gov/~xiaoye/SuperLU/superlu_4.3.tar.gz')
- version('4.2', sha256='5a06e19bf5a597405dfeea39fe92aa8c5dd41da73c72c7187755a75f581efb28',
- deprecated=True,
- url='https://crd-legacy.lbl.gov/~xiaoye/SuperLU/superlu_4.2.tar.gz')
-
- variant('pic', default=True,
- description='Build with position independent code')
-
- depends_on('cmake', when='@5:', type='build')
- depends_on('blas')
- conflicts('@:5.2.1', when='%apple-clang@12:',
- msg='Older SuperLU is incompatible with newer compilers')
+ url = "https://github.com/xiaoyeli/superlu/archive/refs/tags/v5.3.0.tar.gz"
+
+ tags = ["e4s"]
+
+ version("5.3.0", sha256="3e464afa77335de200aeb739074a11e96d9bef6d0b519950cfa6684c4be1f350")
+ version("5.2.2", sha256="470334a72ba637578e34057f46948495e601a5988a602604f5576367e606a28c")
+ version("5.2.1", sha256="28fb66d6107ee66248d5cf508c79de03d0621852a0ddeba7301801d3d859f463")
+ version(
+ "4.3",
+ sha256="169920322eb9b9c6a334674231479d04df72440257c17870aaa0139d74416781",
+ deprecated=True,
+ url="https://crd-legacy.lbl.gov/~xiaoye/SuperLU/superlu_4.3.tar.gz",
+ )
+ version(
+ "4.2",
+ sha256="5a06e19bf5a597405dfeea39fe92aa8c5dd41da73c72c7187755a75f581efb28",
+ deprecated=True,
+ url="https://crd-legacy.lbl.gov/~xiaoye/SuperLU/superlu_4.2.tar.gz",
+ )
+
+ variant("pic", default=True, description="Build with position independent code")
+
+ depends_on("cmake", when="@5:", type="build")
+ depends_on("blas")
+ conflicts(
+ "@:5.2.1",
+ when="%apple-clang@12:",
+ msg="Older SuperLU is incompatible with newer compilers",
+ )
test_requires_compiler = True
# CMake installation method
def cmake_args(self):
- if self.version > Version('5.2.1'):
- _blaslib_key = 'enable_internal_blaslib'
+ if self.version > Version("5.2.1"):
+ _blaslib_key = "enable_internal_blaslib"
else:
- _blaslib_key = 'enable_blaslib'
+ _blaslib_key = "enable_blaslib"
args = [
self.define(_blaslib_key, False),
- self.define('CMAKE_INSTALL_LIBDIR', self.prefix.lib),
- self.define_from_variant('CMAKE_POSITION_INDEPENDENT_CODE', 'pic'),
- self.define('enable_tests', self.run_tests),
+ self.define("CMAKE_INSTALL_LIBDIR", self.prefix.lib),
+ self.define_from_variant("CMAKE_POSITION_INDEPENDENT_CODE", "pic"),
+ self.define("enable_tests", self.run_tests),
]
return args
@@ -62,66 +70,68 @@ class Superlu(CMakePackage):
config = []
# Define make.inc file
- config.extend([
- 'PLAT = _x86_64',
- 'SuperLUroot = %s' % self.stage.source_path,
- # 'SUPERLULIB = $(SuperLUroot)/lib/libsuperlu$(PLAT).a',
- 'SUPERLULIB = $(SuperLUroot)/lib/libsuperlu_{0}.a' \
- .format(self.spec.version),
- 'BLASDEF = -DUSE_VENDOR_BLAS',
- 'BLASLIB = {0}'.format(spec['blas'].libs.ld_flags),
- # or BLASLIB = -L/usr/lib64 -lblas
- 'TMGLIB = libtmglib.a',
- 'LIBS = $(SUPERLULIB) $(BLASLIB)',
- 'ARCH = ar',
- 'ARCHFLAGS = cr',
- 'RANLIB = {0}'.format('ranlib' if which('ranlib') else 'echo'),
- 'CC = {0}'.format(env['CC']),
- 'FORTRAN = {0}'.format(env['FC']),
- 'LOADER = {0}'.format(env['CC']),
- 'CDEFS = -DAdd_'
- ])
-
- if '+pic' in spec:
- config.extend([
- # Use these lines instead when pic_flag capability arrives
- 'CFLAGS = -O3 {0}'.format(self.compiler.cc_pic_flag),
- 'NOOPTS = {0}'.format(self.compiler.cc_pic_flag),
- 'FFLAGS = -O2 {0}'.format(self.compiler.f77_pic_flag),
- 'LOADOPTS = {0}'.format(self.compiler.cc_pic_flag)
- ])
+ config.extend(
+ [
+ "PLAT = _x86_64",
+ "SuperLUroot = %s" % self.stage.source_path,
+ # 'SUPERLULIB = $(SuperLUroot)/lib/libsuperlu$(PLAT).a',
+ "SUPERLULIB = $(SuperLUroot)/lib/libsuperlu_{0}.a".format(self.spec.version),
+ "BLASDEF = -DUSE_VENDOR_BLAS",
+ "BLASLIB = {0}".format(spec["blas"].libs.ld_flags),
+ # or BLASLIB = -L/usr/lib64 -lblas
+ "TMGLIB = libtmglib.a",
+ "LIBS = $(SUPERLULIB) $(BLASLIB)",
+ "ARCH = ar",
+ "ARCHFLAGS = cr",
+ "RANLIB = {0}".format("ranlib" if which("ranlib") else "echo"),
+ "CC = {0}".format(env["CC"]),
+ "FORTRAN = {0}".format(env["FC"]),
+ "LOADER = {0}".format(env["CC"]),
+ "CDEFS = -DAdd_",
+ ]
+ )
+
+ if "+pic" in spec:
+ config.extend(
+ [
+ # Use these lines instead when pic_flag capability arrives
+ "CFLAGS = -O3 {0}".format(self.compiler.cc_pic_flag),
+ "NOOPTS = {0}".format(self.compiler.cc_pic_flag),
+ "FFLAGS = -O2 {0}".format(self.compiler.f77_pic_flag),
+ "LOADOPTS = {0}".format(self.compiler.cc_pic_flag),
+ ]
+ )
else:
- config.extend([
- 'CFLAGS = -O3',
- 'NOOPTS = ',
- 'FFLAGS = -O2',
- 'LOADOPTS = '
- ])
+ config.extend(
+ ["CFLAGS = -O3", "NOOPTS = ", "FFLAGS = -O2", "LOADOPTS = "]
+ )
# Write configuration options to make.inc file
- with open('make.inc', 'w') as inc:
+ with open("make.inc", "w") as inc:
for option in config:
- inc.write('{0}\n'.format(option))
+ inc.write("{0}\n".format(option))
make(parallel=False)
# Install manually
- install_tree('lib', prefix.lib)
+ install_tree("lib", prefix.lib)
mkdir(prefix.include)
- install(join_path('SRC', '*.h'), prefix.include)
+ install(join_path("SRC", "*.h"), prefix.include)
- examples_src_dir = 'EXAMPLE'
- make_hdr_file = 'make.inc'
+ examples_src_dir = "EXAMPLE"
+ make_hdr_file = "make.inc"
- @run_after('install')
+ @run_after("install")
def cache_test_sources(self):
"""Copy the example source files after the package is installed to an
install test subdirectory for use during `spack test run`."""
- if self.spec.satisfies('@5.2.2:'):
+ if self.spec.satisfies("@5.2.2:"):
# Include dir was hardcoded in 5.2.2
- filter_file(r'INCLUDEDIR = -I\.\./SRC',
- 'INCLUDEDIR = -I' + self.prefix.include,
- join_path(self.examples_src_dir, 'Makefile'))
+ filter_file(
+ r"INCLUDEDIR = -I\.\./SRC",
+ "INCLUDEDIR = -I" + self.prefix.include,
+ join_path(self.examples_src_dir, "Makefile"),
+ )
self.cache_extra_test_sources(self.examples_src_dir)
@@ -129,85 +139,85 @@ class Superlu(CMakePackage):
config_args = []
# Define make.inc file
- config_args.extend([
- 'SuperLUroot = {0}'.format(self.prefix),
- 'SUPERLULIB = {0}/libsuperlu.a'.format(self.prefix.lib),
- 'BLASLIB = {0}'.format(self.spec['blas'].libs.ld_flags),
- 'TMGLIB = libtmglib.a',
- 'LIBS = $(SUPERLULIB) $(BLASLIB)',
- 'ARCH = ar',
- 'ARCHFLAGS = cr',
- 'RANLIB = {0}'.format('ranlib' if which('ranlib') else 'echo'),
- 'CC = {0}'.format(env['CC']),
- 'FORTRAN = {0}'.format(env['FC']),
- 'LOADER = {0}'.format(env['CC']),
- 'CFLAGS = -O3 -DNDEBUG -DUSE_VENDOR_BLAS -DPRNTlevel=0 -DAdd_',
- 'NOOPTS = -O0'
- ])
+ config_args.extend(
+ [
+ "SuperLUroot = {0}".format(self.prefix),
+ "SUPERLULIB = {0}/libsuperlu.a".format(self.prefix.lib),
+ "BLASLIB = {0}".format(self.spec["blas"].libs.ld_flags),
+ "TMGLIB = libtmglib.a",
+ "LIBS = $(SUPERLULIB) $(BLASLIB)",
+ "ARCH = ar",
+ "ARCHFLAGS = cr",
+ "RANLIB = {0}".format("ranlib" if which("ranlib") else "echo"),
+ "CC = {0}".format(env["CC"]),
+ "FORTRAN = {0}".format(env["FC"]),
+ "LOADER = {0}".format(env["CC"]),
+ "CFLAGS = -O3 -DNDEBUG -DUSE_VENDOR_BLAS -DPRNTlevel=0 -DAdd_",
+ "NOOPTS = -O0",
+ ]
+ )
return config_args
# Pre-cmake configuration
- @when('@:4')
+ @when("@:4")
def _generate_make_hdr_for_test(self):
config_args = []
# Define make.inc file
- config_args.extend([
- 'PLAT = _x86_64',
- 'SuperLUroot = {0}'.format(self.prefix),
- 'SUPERLULIB = {0}/libsuperlu_{1}.a'.format(self.prefix.lib,
- self.spec.version),
- 'BLASLIB = {0}'.format(self.spec['blas'].libs.ld_flags),
- 'TMGLIB = libtmglib.a',
- 'LIBS = $(SUPERLULIB) $(BLASLIB)',
- 'ARCH = ar',
- 'ARCHFLAGS = cr',
- 'RANLIB = {0}'.format('ranlib' if which('ranlib') else 'echo'),
- 'CC = {0}'.format(env['CC']),
- 'FORTRAN = {0}'.format(env['FC']),
- 'LOADER = {0}'.format(env['CC']),
- 'CFLAGS = -O3 -DNDEBUG -DUSE_VENDOR_BLAS -DPRNTlevel=0 -DAdd_',
- 'NOOPTS = -O0'
- ])
+ config_args.extend(
+ [
+ "PLAT = _x86_64",
+ "SuperLUroot = {0}".format(self.prefix),
+ "SUPERLULIB = {0}/libsuperlu_{1}.a".format(self.prefix.lib, self.spec.version),
+ "BLASLIB = {0}".format(self.spec["blas"].libs.ld_flags),
+ "TMGLIB = libtmglib.a",
+ "LIBS = $(SUPERLULIB) $(BLASLIB)",
+ "ARCH = ar",
+ "ARCHFLAGS = cr",
+ "RANLIB = {0}".format("ranlib" if which("ranlib") else "echo"),
+ "CC = {0}".format(env["CC"]),
+ "FORTRAN = {0}".format(env["FC"]),
+ "LOADER = {0}".format(env["CC"]),
+ "CFLAGS = -O3 -DNDEBUG -DUSE_VENDOR_BLAS -DPRNTlevel=0 -DAdd_",
+ "NOOPTS = -O0",
+ ]
+ )
return config_args
def run_superlu_test(self, test_dir, exe, args):
- if not self.run_test('make',
- options=args,
- purpose='test: compile {0} example'.format(exe),
- work_dir=test_dir):
- tty.warn('Skipping test: failed to compile example')
+ if not self.run_test(
+ "make",
+ options=args,
+ purpose="test: compile {0} example".format(exe),
+ work_dir=test_dir,
+ ):
+ tty.warn("Skipping test: failed to compile example")
return
- if not self.run_test(exe,
- purpose='test: run {0} example'.format(exe),
- work_dir=test_dir):
- tty.warn('Skipping test: failed to run example')
+ if not self.run_test(exe, purpose="test: run {0} example".format(exe), work_dir=test_dir):
+ tty.warn("Skipping test: failed to run example")
def test(self):
config_args = self._generate_make_hdr_for_test()
# Write configuration options to make.inc file
- make_file_inc = join_path(self.test_suite.current_test_cache_dir,
- self.make_hdr_file)
- with open(make_file_inc, 'w') as inc:
+ make_file_inc = join_path(self.test_suite.current_test_cache_dir, self.make_hdr_file)
+ with open(make_file_inc, "w") as inc:
for option in config_args:
- inc.write('{0}\n'.format(option))
+ inc.write("{0}\n".format(option))
args = []
- if self.version < Version('5.2.2'):
- args.append('HEADER=' + self.prefix.include)
- args.append('superlu')
+ if self.version < Version("5.2.2"):
+ args.append("HEADER=" + self.prefix.include)
+ args.append("superlu")
- test_dir = join_path(self.test_suite.current_test_cache_dir,
- self.examples_src_dir)
- exe = 'superlu'
+ test_dir = join_path(self.test_suite.current_test_cache_dir, self.examples_src_dir)
+ exe = "superlu"
- if not os.path.isfile(join_path(test_dir, '{0}.c'.format(exe))):
- tty.warn('Skipping superlu test:'
- 'missing file {0}.c'.format(exe))
+ if not os.path.isfile(join_path(test_dir, "{0}.c".format(exe))):
+ tty.warn("Skipping superlu test:" "missing file {0}.c".format(exe))
return
self.run_superlu_test(test_dir, exe, args)