summaryrefslogtreecommitdiff
path: root/var/spack/repos/builtin/packages/openfoam-org
diff options
context:
space:
mode:
Diffstat (limited to 'var/spack/repos/builtin/packages/openfoam-org')
-rw-r--r--var/spack/repos/builtin/packages/openfoam-org/240-etc.patch88
-rw-r--r--var/spack/repos/builtin/packages/openfoam-org/50-etc.patch24
-rwxr-xr-xvar/spack/repos/builtin/packages/openfoam-org/assets/bin/foamEtcFile244
-rw-r--r--var/spack/repos/builtin/packages/openfoam-org/package.py96
4 files changed, 313 insertions, 139 deletions
diff --git a/var/spack/repos/builtin/packages/openfoam-org/240-etc.patch b/var/spack/repos/builtin/packages/openfoam-org/240-etc.patch
new file mode 100644
index 0000000000..cc0c19c78d
--- /dev/null
+++ b/var/spack/repos/builtin/packages/openfoam-org/240-etc.patch
@@ -0,0 +1,88 @@
+--- OpenFOAM-2.4.x.orig/etc/bashrc 2016-10-16 16:11:45.000000000 +0200
++++ OpenFOAM-2.4.x/etc/bashrc 2017-03-24 12:41:25.233267894 +0100
+@@ -55,6 +55,8 @@
+ # overridden from the prefs.sh file or from command-line specification
+ #
+ #- note the location for later use (eg, in job scripts)
++rc="${BASH_SOURCE:-${ZSH_NAME:+$0}}"
++[ -n "$rc" ] && FOAM_INST_DIR=$(\cd $(dirname $rc)/../.. && \pwd -L) || \
+ : ${FOAM_INST_DIR:=$foamInstall}; export FOAM_INST_DIR
+
+ #- Compiler location:
+--- OpenFOAM-2.4.x.orig/applications/utilities/mesh/conversion/ansysToFoam/ansysToFoam.L 2018-04-05 14:18:12.112228183 +0100
++++ OpenFOAM-2.4.x/applications/utilities/mesh/conversion/ansysToFoam/ansysToFoam.L 2018-04-05 14:19:20.795393577 +0100
+@@ -77,7 +77,7 @@
+ // Dummy yywrap to keep yylex happy at compile time.
+ // It is called by yylex but is not used as the mechanism to change file.
+ // See <<EOF>>
+-#if YY_FLEX_SUBMINOR_VERSION < 34
++#if YY_FLEX_MINOR_VERSION < 6 && YY_FLEX_SUBMINOR_VERSION < 34
+ extern "C" int yywrap()
+ #else
+ int yyFlexLexer::yywrap()
+--- OpenFOAM-2.4.x.orig/src/thermophysicalModels/reactionThermo/chemistryReaders/chemkinReader/chemkinLexer.L 2018-04-05 14:18:19.137347383 +0100
++++ OpenFOAM-2.4.x/src/thermophysicalModels/reactionThermo/chemistryReaders/chemkinReader/chemkinLexer.L 2018-04-05 14:19:27.556508297 +0100
+@@ -54,7 +54,7 @@
+ // It is called by yylex but is not used as the mechanism to change file.
+ // See <<EOF>>
+ //! \cond dummy
+-#if YY_FLEX_SUBMINOR_VERSION < 34
++#if YY_FLEX_MINOR_VERSION < 6 && YY_FLEX_SUBMINOR_VERSION < 34
+ extern "C" int yywrap()
+ #else
+ int yyFlexLexer::yywrap()
+--- OpenFOAM-2.4.x.orig/applications/utilities/mesh/conversion/gambitToFoam/gambitToFoam.L 2018-04-05 14:18:45.689797916 +0100
++++ OpenFOAM-2.4.x/applications/utilities/mesh/conversion/gambitToFoam/gambitToFoam.L 2018-04-05 14:19:43.195773659 +0100
+@@ -80,7 +80,7 @@
+ // Dummy yywrap to keep yylex happy at compile time.
+ // It is called by yylex but is not used as the mechanism to change file.
+ // See <<EOF>>
+-#if YY_FLEX_SUBMINOR_VERSION < 34
++#if YY_FLEX_MINOR_VERSION < 6 && YY_FLEX_SUBMINOR_VERSION < 34
+ extern "C" int yywrap()
+ #else
+ int yyFlexLexer::yywrap()
+--- OpenFOAM-2.4.x.orig/src/triSurface/triSurface/interfaces/STL/readSTLASCII.L 2018-04-05 14:18:50.432878396 +0100
++++ OpenFOAM-2.4.x/src/triSurface/triSurface/interfaces/STL/readSTLASCII.L 2018-04-05 14:19:46.299826328 +0100
+@@ -55,7 +55,7 @@
+ // It is called by yylex but is not used as the mechanism to change file.
+ // See <<EOF>>
+ //! \cond dummy
+-#if YY_FLEX_SUBMINOR_VERSION < 34
++#if YY_FLEX_MINOR_VERSION < 6 && YY_FLEX_SUBMINOR_VERSION < 34
+ extern "C" int yywrap()
+ #else
+ int yyFlexLexer::yywrap()
+--- OpenFOAM-2.4.x.orig/src/surfMesh/surfaceFormats/stl/STLsurfaceFormatASCII.L 2018-04-05 14:18:57.064990927 +0100
++++ OpenFOAM-2.4.x/src/surfMesh/surfaceFormats/stl/STLsurfaceFormatASCII.L 2018-04-05 14:19:49.258876536 +0100
+@@ -50,7 +50,7 @@
+ // It is called by yylex but is not used as the mechanism to change file.
+ // See <<EOF>>
+ //! \cond dummy
+-#if YY_FLEX_SUBMINOR_VERSION < 34
++#if YY_FLEX_MINOR_VERSION < 6 && YY_FLEX_SUBMINOR_VERSION < 34
+ extern "C" int yywrap()
+ #else
+ int yyFlexLexer::yywrap()
+--- OpenFOAM-2.4.x.orig/applications/utilities/mesh/conversion/fluent3DMeshToFoam/fluent3DMeshToFoam.L 2018-04-05 14:18:27.152483381 +0100
++++ OpenFOAM-2.4.x/applications/utilities/mesh/conversion/fluent3DMeshToFoam/fluent3DMeshToFoam.L 2018-04-05 14:19:32.180586757 +0100
+@@ -123,7 +123,7 @@
+ // Dummy yywrap to keep yylex happy at compile time.
+ // It is called by yylex but is not used as the mechanism to change file.
+ // See <<EOF>>
+-#if YY_FLEX_SUBMINOR_VERSION < 34
++#if YY_FLEX_MINOR_VERSION < 6 && YY_FLEX_SUBMINOR_VERSION < 34
+ extern "C" int yywrap()
+ #else
+ int yyFlexLexer::yywrap()
+--- OpenFOAM-2.4.x.orig/applications/utilities/mesh/conversion/fluentMeshToFoam/fluentMeshToFoam.L. 2018-04-05 14:18:35.049617377 +0100
++++ OpenFOAM-2.4.x/applications/utilities/mesh/conversion/fluentMeshToFoam/fluentMeshToFoam.L 2018-04-05 14:19:38.493693876 +0100
+@@ -100,7 +100,7 @@
+ // Dummy yywrap to keep yylex happy at compile time.
+ // It is called by yylex but is not used as the mechanism to change file.
+ // See <<EOF>>
+-#if YY_FLEX_SUBMINOR_VERSION < 34
++#if YY_FLEX_MINOR_VERSION < 6 && YY_FLEX_SUBMINOR_VERSION < 34
+ extern "C" int yywrap()
+ #else
+ int yyFlexLexer::yywrap()int yyFlexLexer::yywrap()
diff --git a/var/spack/repos/builtin/packages/openfoam-org/50-etc.patch b/var/spack/repos/builtin/packages/openfoam-org/50-etc.patch
new file mode 100644
index 0000000000..ee28dfcd1b
--- /dev/null
+++ b/var/spack/repos/builtin/packages/openfoam-org/50-etc.patch
@@ -0,0 +1,24 @@
+--- OpenFOAM-5.x.org/etc/bashrc 2017-07-25 18:43:40.000000000 +0200
++++ OpenFOAM-5.x/etc/bashrc 2017-12-11 13:36:09.479818186 +0100
+@@ -42,15 +42,17 @@
+ #
+ # Please set to the appropriate path if the default is not correct.
+ #
+-[ ${BASH_SOURCE:-$0} ] && \
+-export FOAM_INST_DIR=$(cd $(dirname ${BASH_SOURCE:-$0})/../.. && pwd -P) || \
+-export FOAM_INST_DIR=$HOME/$WM_PROJECT
+-# export FOAM_INST_DIR=~$WM_PROJECT
++rc="${BASH_SOURCE:-${ZSH_NAME:+$0}}"
++[ -n "$rc" ] && FOAM_INST_DIR=$(\cd $(dirname $rc)/../.. && \pwd -P) || \
++FOAM_INST_DIR=$HOME/$WM_PROJECT
+ # export FOAM_INST_DIR=/opt/$WM_PROJECT
+ # export FOAM_INST_DIR=/usr/local/$WM_PROJECT
+ #
+ # END OF (NORMAL) USER EDITABLE PART
+ ################################################################################
++: # Extra safety - if the user commented out all fallback values
++export FOAM_INST_DIR
++unset rc
+
+ # The default environment variables below can be overridden in a prefs.sh file
+ # located in ~/.OpenFOAM/$WM_PROJECT_VERSION, ~/.OpenFOAM,
diff --git a/var/spack/repos/builtin/packages/openfoam-org/assets/bin/foamEtcFile b/var/spack/repos/builtin/packages/openfoam-org/assets/bin/foamEtcFile
index 294cc26505..195b91bdbe 100755
--- a/var/spack/repos/builtin/packages/openfoam-org/assets/bin/foamEtcFile
+++ b/var/spack/repos/builtin/packages/openfoam-org/assets/bin/foamEtcFile
@@ -4,37 +4,31 @@
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
# \\ / O peration |
# \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
-# \\/ M anipulation | Copyright (C) 2017 OpenCFD Ltd.
+# \\/ M anipulation | Copyright (C) 2017-2018 OpenCFD Ltd.
#-------------------------------------------------------------------------------
# License
-# This file is part of OpenFOAM.
-#
-# OpenFOAM is free software: you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# OpenFOAM 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 GNU General Public License
-# for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
+# This file is part of OpenFOAM, licensed under GNU General Public License
+# <http://www.gnu.org/licenses/>.
#
# Script
# foamEtcFile
#
# Description
-# Locate user/group/other files with semantics similar to the
-# ~OpenFOAM/fileName expansion.
+# Locate user/group/other file as per '#includeEtc'.
+#
+# The -mode option can be used to allow chaining from personal settings
+# to site-wide settings.
#
-# The -mode option can be used to allow chaining from
-# personal settings to site-wide settings.
+# For example, within the user ~/.OpenFOAM/<VER>/config.sh/compiler:
+# \code
+# eval $(foamEtcFile -sh -mode=go config.sh/compiler)
+# \endcode
#
-# For example, within the user ~/.OpenFOAM/<VER>/prefs.sh:
+# The -mode option is similarly used within etc/{bashrc,cshrc} to ensure
+# that system prefs are respected:
# \code
-# eval $(foamEtcFile -sh -mode=go prefs.sh)
+# eval $(foamEtcFile -sh -mode=o prefs.sh)
+# eval $(foamEtcFile -sh -mode=ug prefs.sh)
# \endcode
#
# Environment
@@ -46,42 +40,40 @@
# This script must exist in one of these locations:
# - $WM_PROJECT_INST_DIR/OpenFOAM-<VERSION>/bin
# - $WM_PROJECT_INST_DIR/openfoam-<VERSION>/bin
-# - $WM_PROJECT_INST_DIR/OpenFOAM+<VERSION>/bin
-# - $WM_PROJECT_INST_DIR/openfoam+<VERSION>/bin
# - $WM_PROJECT_INST_DIR/openfoam<VERSION>/bin (debian version)
#
#-------------------------------------------------------------------------------
-unset optQuiet optSilent
-usage() {
- [ "${optQuiet:-$optSilent}" = true ] && exit 1
- exec 1>&2
- while [ "$#" -ge 1 ]; do echo "$1"; shift; done
+printHelp() {
cat<<USAGE
-Usage: foamEtcFile [OPTION] fileName
+Usage: foamEtcFile [OPTION] fileName [-- args]
foamEtcFile [OPTION] [-list|-list-test] [fileName]
options:
- -a, -all Return all files (otherwise stop after the first match)
- -l, -list List directories or files to be checked
+ -all (-a) Return all files (otherwise stop after the first match)
+ -list (-l) List directories or files to be checked
-list-test List (existing) directories or files to be checked
-mode=MODE Any combination of u(user), g(group), o(other)
-prefix=DIR Specify an alternative installation prefix
-version=VER Specify alternative OpenFOAM version (eg, 3.0, 1612, ...)
- -csh | -sh Produce output suitable for a csh or sh 'eval'
- -csh-verbose | -sh-verbose
- As per -csh | -sh, with additional verbosity
- -q, -quiet Suppress all normal output
- -s, -silent Suppress stderr, except -csh-verbose, -sh-verbose output
+ -csh Produce 'source FILE' output for a csh eval
+ -sh Produce '. FILE' output for a sh eval
+ -csh-verbose As per -csh, with additional verbosity
+ -sh-verbose As per -sh, with additional verbosity
+ -config Add config directory prefix for shell type:
+ with -csh* for a config.csh/ prefix
+ with -sh* for a config.sh/ prefix
+ -quiet (-q) Suppress all normal output
+ -silent (-s) Suppress stderr, except -csh-verbose, -sh-verbose output
-help Print the usage
-Locate user/group/other file with semantics similar to the
-~OpenFOAM/fileName expansion.
+Locate user/group/other file as per '#includeEtc'
-Single character options must not be grouped. Equivalent options:
- -mode=MODE, -mode MODE, -m MODE
- -prefix=DIR, -prefix DIR, -p DIR
- -version=VER, -version VER, -v VER
+Do not group single character options.
+Equivalent options:
+ | -mode=MODE | -mode MODE | -m MODE
+ | -prefix=DIR | -prefix DIR | -p DIR
+ | -version=VER | -version VER | -v VER
Exit status
0 when the file is found. Print resolved path to stdout.
@@ -89,9 +81,10 @@ Exit status
2 when the file is not found.
USAGE
- exit 1
+ exit 0 # A clean exit
}
+unset optQuiet optSilent
# Report error and exit
die()
{
@@ -146,13 +139,6 @@ guessVersion()
version="${version%%*-}" # Extra safety, eg openfoam-version-packager
;;
- (OpenFOAM+* | openfoam+*)
- # Alternative naming: OpenFOAM+<VERSION> or openfoam+<VERSION>
- dirBase="${projectDirName%%+*}+"
- version="${projectDirName#*+}"
- version="${version%%*-}" # Extra safety, eg openfoam-version-packager
- ;;
-
(openfoam[0-9]*)
# Debian naming: openfoam<VERSION>
dirBase="openfoam"
@@ -199,30 +185,36 @@ setVersion()
optMode=ugo # Default mode is always 'ugo'
-unset optAll optList optShell optVersion
+unset shellOutput verboseOutput
+unset optAll optConfig optList optVersion
# Parse options
while [ "$#" -gt 0 ]
do
case "$1" in
- -h | -help)
- usage
+ -h | -help*)
+ printHelp
;;
-a | -all)
optAll=true
- unset optShell
+ unset shellOutput verboseOutput
;;
-l | -list)
optList=true
- unset optShell
;;
-list-test)
optList='test'
- unset optShell
;;
- -csh | -sh | -csh-verbose | -sh-verbose)
- optShell="${1#-}"
- unset optAll
+ -csh | -sh)
+ shellOutput="${1#-}"
+ unset verboseOutput
+ ;;
+ -csh-verbose | -sh-verbose)
+ shellOutput="${1#-}"
+ verboseOutput="source " # Report: "source FILE"
+ ;;
+ -config)
+ optConfig=true
;;
-mode=[ugo]*)
optMode="${1#*=}"
@@ -276,9 +268,33 @@ do
shift
done
-
#-------------------------------------------------------------------------------
+# Split arguments into filename (for searching) and trailing bits for shell eval
+# Silently remove leading ~OpenFOAM/ (as per Foam::findEtcFile)
+nArgs=$#
+fileName="${1#~OpenFOAM/}"
+unset evalArgs
+
+if [ "$nArgs" -eq 1 ]
+then
+ if [ "$1" = "--" ]
+ then
+ nArgs=0
+ unset fileName
+ fi
+elif [ "$nArgs" -ge 2 ]
+then
+ if [ "$2" = "--" ]
+ then
+ nArgs=1
+ shift 2
+ evalArgs="$@"
+ fi
+fi
+
+
+# Get version information
if [ -n "$optVersion" ]
then
setVersion $optVersion
@@ -301,12 +317,6 @@ groupDir="${WM_PROJECT_SITE:-$prefixDir/site}"
# eval echo "$i=\$$i" 1>&2
# done
-
-# Save the essential bits of information
-# silently remove leading ~OpenFOAM/ (used in Foam::findEtcFile)
-nArgs=$#
-fileName="${1#~OpenFOAM/}"
-
# Define the various places to be searched:
unset dirList
case "$optMode" in (*u*) # (U)ser
@@ -325,27 +335,61 @@ case "$optMode" in (*o*) # (O)ther == shipped
esac
set -- $dirList
+[ "$#" -ge 1 ] || die "No directories to scan. Programming error?"
+exitCode=2 # Fallback is a FileNotFound error
+
+
+#
+# Preliminaries
+#
+
+# Special handling of config.sh/ , config.csh/ directories
+if [ -n "$optConfig" -a -n "$shellOutput" -a -n "$fileName" ]
+then
+ case "$shellOutput" in
+ csh*)
+ optConfig="config.csh/"
+ ;;
+ sh*)
+ optConfig="config.sh/"
+ ;;
+ *)
+ unset optConfig
+ ;;
+ esac
+
+ if [ -n "$optConfig" ]
+ then
+ case "$fileName" in
+ /* | config.csh* | config.sh*)
+ # Does not need or cannot add a prefix
+ unset optConfig
+ ;;
+ *)
+ fileName="$optConfig$fileName"
+ ;;
+ esac
+ fi
+fi
+
#
# The main routine
#
-exitCode=0
if [ -n "$optList" ]
then
# List directories, or potential file locations
[ "$nArgs" -le 1 ] || \
- die "-list expects 0 or 1 filename, but $nArgs provided"
+ die "-list options expect 0 or 1 filename, but $nArgs provided"
- # A silly combination, but -quiet does have precedence
+ # A silly combination, but -quiet has absolute precedence
[ -n "$optQuiet" ] && exit 0
# Test for directory or file too?
if [ "$optList" = "test" ]
then
- exitCode=2 # Fallback to a general error (file not found)
-
if [ "$nArgs" -eq 1 ]
then
for dir
@@ -368,6 +412,7 @@ then
done
fi
else
+ exitCode=0 # OK, already verified that $# != 0
for dir
do
echo "$dir${fileName:+/}$fileName"
@@ -378,35 +423,44 @@ else
[ "$nArgs" -eq 1 ] || die "One filename expected - $nArgs provided"
- exitCode=2 # Fallback to a general error (file not found)
+ # Output for sourcing files ("source" for csh, "." for POSIX shell)
+ # Only allow sourcing a single file (disallow combination with -all)
+ case "$shellOutput" in
+ csh*)
+ shellOutput="source " # eg, "source FILE"
+ ;;
+ sh*)
+ shellOutput=". " # eg, ". FILE"
+ ;;
+ esac
+
+ # Anti-pattern: -all disables shell commands
+ if [ -n "$optAll" ]
+ then
+ unset shellOutput verboseOutput
+ fi
for dir
do
- if [ -f "$dir/$fileName" ]
+ resolved="$dir/$fileName"
+ if [ -f "$resolved" ]
then
- exitCode=0
- [ -n "$optQuiet" ] && break
-
- case "$optShell" in
- (*verbose)
- echo "Using: $dir/$fileName" 1>&2
- ;;
- esac
-
- case "$optShell" in
- csh*)
- echo "source $dir/$fileName"
- break
- ;;
- sh*)
- echo ". $dir/$fileName"
+ exitCode=0 # OK
+ if [ -n "$optQuiet" ]
+ then
break
- ;;
- *)
- echo "$dir/$fileName"
- [ -n "$optAll" ] || break
- ;;
- esac
+ elif [ -n "$verboseOutput" ]
+ then
+ echo "$verboseOutput$resolved" 1>&2
+ fi
+
+ if [ -n "$shellOutput" ]
+ then
+ echo "$shellOutput$resolved $evalArgs"
+ else
+ echo "$resolved"
+ fi
+ [ -n "$optAll" ] || break
fi
done
diff --git a/var/spack/repos/builtin/packages/openfoam-org/package.py b/var/spack/repos/builtin/packages/openfoam-org/package.py
index c176adcbe5..8857257878 100644
--- a/var/spack/repos/builtin/packages/openfoam-org/package.py
+++ b/var/spack/repos/builtin/packages/openfoam-org/package.py
@@ -1,28 +1,8 @@
-##############################################################################
-# Copyright (c) 2017 Mark Olesen, OpenCFD Ltd.
-#
-# This file was authored by Mark Olesen <mark.olesen@esi-group.com>
-# and is released as part of spack under the LGPL license.
-# LLNL-CODE-647188
-#
-# For details, see https://github.com/spack/spack
-# Please also see the NOTICE and LICENSE files for the LLNL notice and LGPL.
-#
-# License
-# -------
-# 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
+# Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
+# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
+# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+
# Legal Notice
# ------------
# OPENFOAM is a trademark owned by OpenCFD Ltd
@@ -55,7 +35,6 @@
##############################################################################
import glob
import re
-import shutil
import os
import llnl.util.tty as tty
@@ -80,10 +59,15 @@ class OpenfoamOrg(Package):
homepage = "http://www.openfoam.org/"
baseurl = "https://github.com/OpenFOAM"
url = "https://github.com/OpenFOAM/OpenFOAM-4.x/archive/version-4.1.tar.gz"
+ git = "https://github.com/OpenFOAM/OpenFOAM-dev.git"
- version('4.1', '318a446c4ae6366c7296b61184acd37c',
+ version('develop', branch='master')
+ version('5.0', 'cd8c5bdd3ff39c34f61747c8e55f59d1',
+ url=baseurl + '/OpenFOAM-5.x/archive/version-5.0.tar.gz')
+ version('4.1', 'afd7d8e66e7db0ffaf519b14f1a8e1d4',
url=baseurl + '/OpenFOAM-4.x/archive/version-4.1.tar.gz')
- version('develop', git='https://github.com/OpenFOAM/OpenFOAM-dev.git')
+ version('2.4.0', 'ad7d8b7b0753655b2b6fd9e92eefa92a',
+ url=baseurl + '/OpenFOAM-2.4.x/archive/version-2.4.0.tar.gz')
variant('int64', default=False,
description='Compile with 64-bit label')
@@ -107,15 +91,10 @@ class OpenfoamOrg(Package):
assets = ['bin/foamEtcFile']
# Version-specific patches
+ patch('50-etc.patch', when='@5.0:')
patch('41-etc.patch', when='@4.1')
- patch('41-site.patch', when='@4.1')
-
- # Some user config settings
- config = {
- 'mplib': 'SYSTEMMPI', # Use system mpi for spack
- # Add links into bin/, lib/ (eg, for other applications)
- 'link': False
- }
+ patch('41-site.patch', when='@4.1:')
+ patch('240-etc.patch', when='@2.4.0')
# The openfoam architecture, compiler information etc
_foam_arch = None
@@ -133,14 +112,34 @@ class OpenfoamOrg(Package):
# - End of definitions / setup -
#
+ # Some user config settings
+ @property
+ def config(self):
+ settings = {
+ # Use system mpi for spack
+ 'mplib': 'SYSTEMMPI',
+
+ # Add links into bin/, lib/ (eg, for other applications)
+ 'link': False,
+ }
+ # OpenFOAM v2.4 and earlier lacks WM_LABEL_OPTION
+ if self.spec.satisfies('@:2.4'):
+ settings['label-size'] = False
+ return settings
+
def setup_environment(self, spack_env, run_env):
+ # This should be similar to the openfoam-com package,
+ # but sourcing the etc/bashrc here seems to exit with an error.
+ # ... this needs to be examined in more detail.
+ #
+ # Minimal environment only.
run_env.set('FOAM_PROJECT_DIR', self.projectdir)
run_env.set('WM_PROJECT_DIR', self.projectdir)
for d in ['wmake', self.archbin]: # bin already added automatically
run_env.prepend_path('PATH', join_path(self.projectdir, d))
def setup_dependent_environment(self, spack_env, run_env, dependent_spec):
- """Provide location of the OpenFOAM project.
+ """Location of the OpenFOAM project directory.
This is identical to the WM_PROJECT_DIR value, but we avoid that
variable since it would mask the normal OpenFOAM cleanup of
previous versions.
@@ -199,8 +198,8 @@ class OpenfoamOrg(Package):
edits = {
'WM_THIRD_PARTY_DIR':
r'$WM_PROJECT_DIR/ThirdParty #SPACK: No separate third-party',
- 'WM_VERSION': self.version, # consistency
- 'FOAMY_HEX_MESH': '', # This is horrible (unset variable?)
+ 'WM_VERSION': str(self.version), # consistency
+ 'FOAMY_HEX_MESH': '', # This is horrible (unset variable?)
}
rewrite_environ_files( # Adjust etc/bashrc and etc/cshrc
edits,
@@ -258,10 +257,18 @@ class OpenfoamOrg(Package):
# Adjust components to use SPACK variants
for component, subdict in self.etc_config.items():
- write_environ(
- subdict,
- posix=join_path('etc', 'config.sh', component),
- cshell=join_path('etc', 'config.csh', component))
+ # Versions up to 3.0 used an etc/config/component.sh naming
+ # convention instead of etc/config.sh/component
+ if spec.satisfies('@:3.0'):
+ write_environ(
+ subdict,
+ posix=join_path('etc', 'config', component) + '.sh',
+ cshell=join_path('etc', 'config', component) + '.csh')
+ else:
+ write_environ(
+ subdict,
+ posix=join_path('etc', 'config.sh', component),
+ cshell=join_path('etc', 'config.csh', component))
def build(self, spec, prefix):
"""Build using the OpenFOAM Allwmake script, with a wrapper to source
@@ -317,12 +324,13 @@ class OpenfoamOrg(Package):
dirs.extend(['doc'])
# Install platforms (and doc) skipping intermediate targets
- ignored = ['src', 'applications', 'html', 'Guides']
+ relative_ignore_paths = ['src', 'applications', 'html', 'Guides']
+ ignore = lambda p: p in relative_ignore_paths
for d in dirs:
install_tree(
d,
join_path(self.projectdir, d),
- ignore=shutil.ignore_patterns(*ignored),
+ ignore=ignore,
symlinks=True)
etc_dir = join_path(self.projectdir, 'etc')