diff options
Diffstat (limited to 'var/spack/repos/builtin/packages/openfoam-org')
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') |