summaryrefslogtreecommitdiff
path: root/var/spack/repos/builtin/packages/nekbone/package.py
diff options
context:
space:
mode:
Diffstat (limited to 'var/spack/repos/builtin/packages/nekbone/package.py')
-rw-r--r--var/spack/repos/builtin/packages/nekbone/package.py86
1 files changed, 42 insertions, 44 deletions
diff --git a/var/spack/repos/builtin/packages/nekbone/package.py b/var/spack/repos/builtin/packages/nekbone/package.py
index 3d419b9156..ff34fc25ac 100644
--- a/var/spack/repos/builtin/packages/nekbone/package.py
+++ b/var/spack/repos/builtin/packages/nekbone/package.py
@@ -1,27 +1,7 @@
-##############################################################################
-# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC.
-# Produced at the Lawrence Livermore National Laboratory.
+# Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
+# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
-# This file is part of Spack.
-# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
-# LLNL-CODE-647188
-#
-# For details, see https://github.com/spack/spack
-# Please also see the LICENSE file for our notice and the LGPL.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU Lesser General Public License (as
-# published by the Free Software Foundation) version 2.1, February 1999.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
-# conditions of the GNU Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-##############################################################################
+# SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack import *
@@ -33,32 +13,50 @@ class Nekbone(Package):
the spectral element method."""
homepage = "https://github.com/Nek5000/Nekbone"
- url = "https://github.com/Nek5000/Nekbone/tarball/v17.0"
+ url = "https://github.com/Nek5000/Nekbone/archive/v17.0.tar.gz"
+ git = "https://github.com/Nek5000/Nekbone.git"
tags = ['proxy-app', 'ecp-proxy-app']
- version('17.0', 'cc339684547614a0725959e41839fec1')
- version('develop', git='https://github.com/Nek5000/Nekbone.git')
+ version('develop', branch='master')
+ version('17.0', sha256='ae361cc61368a924398a28a296f675b7f0c4a9516788a7f8fa3c09d787cdf69b')
- depends_on('mpi')
+ # Variants
+ variant('mpi', default=True, description='Build with MPI')
- def install(self, spec, prefix):
+ # 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)
- working_dirs = ['example1', 'example2', 'example3', 'nek_comm',
- 'nek_delay', 'nek_mgrid']
+ def install(self, spec, prefix):
mkdir(prefix.bin)
- for wdir in working_dirs:
- with working_dir('test/' + wdir):
- makenec = FileFilter('makenek')
- makenec.filter('CC.*', 'CC=' + self.spec['mpi'].mpicc)
- makenec.filter('FF77.*', 'FF77=' + self.spec['mpi'].mpif77)
- makenek = Executable('./makenek')
- path = join_path(prefix.bin, wdir)
- makenek('ex1', '../../src')
- mkdir(path)
- install('nekbone', path)
- install('nekpmpi', path)
- install('data.rea', path)
- install('SIZE', path)
- install('README', path)
+ fc = self.compiler.fc
+ cc = self.compiler.cc
+ if '+mpi' in spec:
+ fc = spec['mpi'].mpif77
+ cc = spec['mpi'].mpicc
+
+ # Install Nekbone in prefix.bin
+ install_tree(self.stage.source_path, prefix.bin.Nekbone)
+
+ # Install scripts in prefix.bin
+ nekpmpi = 'test/example1/nekpmpi'
+ makenek = 'test/example1/makenek'
+
+ install(makenek, prefix.bin)
+ install(nekpmpi, prefix.bin)
+
+ 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')
+ filter_file(r'^F77\s*=.*', 'F77=\"' + fc + '\"', 'makenek')
+
+ if '+mpi' not in spec:
+ filter_file(r'^#IFMPI=\"false\"', 'IFMPI=\"false\"', 'makenek')