spack/var/spack/repos/builtin/packages/nekbone/package.py

73 lines
2.5 KiB
Python
Raw Normal View History

# Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
2017-07-15 01:40:18 +08:00
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
2017-07-15 01:40:18 +08:00
from spack import *
class Nekbone(Package):
"""NEK5000 emulation software called NEKbone. Nekbone captures the basic
structure and user interface of the extensive Nek5000 software.
Nek5000 is a high order, incompressible Navier-Stokes solver based on
the spectral element method."""
homepage = "https://github.com/Nek5000/Nekbone"
url = "https://github.com/Nek5000/Nekbone/archive/v17.0.tar.gz"
git = "https://github.com/Nek5000/Nekbone.git"
2017-07-15 01:40:18 +08:00
2017-11-01 00:47:24 +08:00
tags = ['proxy-app', 'ecp-proxy-app']
2017-07-20 08:03:53 +08:00
version('develop', branch='master')
version('17.0', sha256='ae361cc61368a924398a28a296f675b7f0c4a9516788a7f8fa3c09d787cdf69b')
2017-07-15 01:40:18 +08:00
2017-12-09 01:29:58 +08:00
# Variants
variant('mpi', default=True, description='Build with MPI')
2017-12-09 01:29:58 +08:00
# dependencies
depends_on('mpi', when='+mpi')
@run_before('install')
def fortran_check(self):
if not self.compiler.fc:
msg = 'Nekbone can not be built without a Fortran compiler.'
raise RuntimeError(msg)
2017-07-15 01:40:18 +08:00
2017-12-09 01:29:58 +08:00
def install(self, spec, prefix):
2017-07-15 01:40:18 +08:00
mkdir(prefix.bin)
fc = self.compiler.fc
cc = self.compiler.cc
2017-12-09 01:29:58 +08:00
if '+mpi' in spec:
fc = spec['mpi'].mpif77
cc = spec['mpi'].mpicc
2017-12-09 01:29:58 +08:00
# Install Nekbone in prefix.bin
2018-08-17 03:22:45 +08:00
install_tree(self.stage.source_path, prefix.bin.Nekbone)
2017-12-09 01:29:58 +08:00
# Install scripts in prefix.bin
nekpmpi = 'test/example1/nekpmpi'
makenek = 'test/example1/makenek'
install(makenek, prefix.bin)
install(nekpmpi, prefix.bin)
[WIP] CEED 2.0 (#10903) * Initial commit for v2.0 of the CEED software suite. * Update Nek packages and gslib * Help spack concretize the hypre version for ceed-2.0. * Fix nekcem install error * Add support for gfortran v8 in nek5000 and nekcem. * Split Nek5000 into Nek5000 and Nektools * Get Nektools to build fine in Theta * Fix travis failure: remove unused 'import numbers' from nek5000. * Check for gfortran if it is wrapped * Tweak the detection of gfortran in nek5000. * Fix Nek packages to add -std=legacy when FC=gcc * spack install ceed~petsc works fine on Theta * Fix flake8 errors * Fix more flake8 tests * Fix an import issue * Tweak the suite-sparse package to avoid interaction with existing system installations of suite-sparse. * petsc: update superlu-dist dependency * Updates in the packages: occa, libceed, and ceed. * In the libceed package, explicitly tell nvcc which host compiler to use. * Fix python formatting. * Simplify the test for gfortran in nek* packages. * ceed: 2.0 uses petsc@3.11.0 * hpgmg-0.4; use from ceed@2.0.0 * Update the hypre dependency for ceed 2.0. * Disable the superlu-dist dependency (through hypre) when using a +quickbuild of ceed 2.0. * petsc-3.11.0: add xlf fix * nekcem: has a build dependency on Python 2.7+ * hpgmg: better setting of compiler options and use python for configure * libceed: use v0.4 tag * libceed: fix 0.4 release oops (pkgconfig version) * Add a patch for magma-2.5.0 that brings it up the current 'master'. * In the mfem package, install the examples, miniapps, and data under $prefix/share/mfem. * In the magma package, apply a patch to v2.5.0 that disables magma_sparse - for testing purposes. * In the magma package, link the 'magma' library with the 'nvToolsExt' library. * In the magma package, update the 'magma-2.5.0.patch' with the latest commits from the magma source repository. Also, remove the library 'nvToolsExt' from the 'magma-2.5.0-cmake.patch' - now it is not needed. * In the magma package, disable OpenMP when using v2.5.0 with the IBM XL compiler. Please enter the commit message for your changes. Lines starting * In the mfem package, add version for the 'laghos-v2.0' tag; also, prefix the versions `laghos-v*` with their respective development version numbers -- this way they are properly ordered within spack relative to the official numbered versions. * petsc: add version 3.11.1 (#11179) (cherry picked from commit 1eab6e3c865836d209db4621d0cd44bc8663656b) * ceed-2.0: use petsc-3.11.1 * this-is-so-dumb.f -> empty.f
2019-04-18 08:37:41 +08:00
error = Executable(fc)('empty.f', output=str, error=str,
fail_on_error=False)
fflags = ''
if 'gfortran' in error or 'GNU' in error or 'gfortran' in fc:
# Use '-std=legacy' to suppress an error that used to be a
# warning in previous versions of gfortran.
fflags = ' -std=legacy'
2017-12-09 01:29:58 +08:00
with working_dir(prefix.bin):
filter_file(r'^SOURCE_ROOT\s*=.*', 'SOURCE_ROOT=\"' +
prefix.bin.Nekbone + '/src\"', 'makenek')
filter_file(r'^CC\s*=.*', 'CC=\"' + cc + '\"', 'makenek')
[WIP] CEED 2.0 (#10903) * Initial commit for v2.0 of the CEED software suite. * Update Nek packages and gslib * Help spack concretize the hypre version for ceed-2.0. * Fix nekcem install error * Add support for gfortran v8 in nek5000 and nekcem. * Split Nek5000 into Nek5000 and Nektools * Get Nektools to build fine in Theta * Fix travis failure: remove unused 'import numbers' from nek5000. * Check for gfortran if it is wrapped * Tweak the detection of gfortran in nek5000. * Fix Nek packages to add -std=legacy when FC=gcc * spack install ceed~petsc works fine on Theta * Fix flake8 errors * Fix more flake8 tests * Fix an import issue * Tweak the suite-sparse package to avoid interaction with existing system installations of suite-sparse. * petsc: update superlu-dist dependency * Updates in the packages: occa, libceed, and ceed. * In the libceed package, explicitly tell nvcc which host compiler to use. * Fix python formatting. * Simplify the test for gfortran in nek* packages. * ceed: 2.0 uses petsc@3.11.0 * hpgmg-0.4; use from ceed@2.0.0 * Update the hypre dependency for ceed 2.0. * Disable the superlu-dist dependency (through hypre) when using a +quickbuild of ceed 2.0. * petsc-3.11.0: add xlf fix * nekcem: has a build dependency on Python 2.7+ * hpgmg: better setting of compiler options and use python for configure * libceed: use v0.4 tag * libceed: fix 0.4 release oops (pkgconfig version) * Add a patch for magma-2.5.0 that brings it up the current 'master'. * In the mfem package, install the examples, miniapps, and data under $prefix/share/mfem. * In the magma package, apply a patch to v2.5.0 that disables magma_sparse - for testing purposes. * In the magma package, link the 'magma' library with the 'nvToolsExt' library. * In the magma package, update the 'magma-2.5.0.patch' with the latest commits from the magma source repository. Also, remove the library 'nvToolsExt' from the 'magma-2.5.0-cmake.patch' - now it is not needed. * In the magma package, disable OpenMP when using v2.5.0 with the IBM XL compiler. Please enter the commit message for your changes. Lines starting * In the mfem package, add version for the 'laghos-v2.0' tag; also, prefix the versions `laghos-v*` with their respective development version numbers -- this way they are properly ordered within spack relative to the official numbered versions. * petsc: add version 3.11.1 (#11179) (cherry picked from commit 1eab6e3c865836d209db4621d0cd44bc8663656b) * ceed-2.0: use petsc-3.11.1 * this-is-so-dumb.f -> empty.f
2019-04-18 08:37:41 +08:00
filter_file(r'^F77\s*=.*', 'F77=\"' + fc + fflags + '\"',
'makenek')
2017-12-09 01:29:58 +08:00
if '+mpi' not in spec:
filter_file(r'^#IFMPI=\"false\"', 'IFMPI=\"false\"', 'makenek')