summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Olesen <Mark.Olesen@gmx.net>2018-01-03 19:30:10 +0000
committerscheibelp <scheibel1@llnl.gov>2018-01-03 11:30:10 -0800
commitf07ce6094e24f172add50ebfd786e71ee6ba7d28 (patch)
treedcbe5a7868eb2650584c509204f5400b13ff029f
parent2f551908b8c80d60f0a3f369e94b73b4c41e9738 (diff)
downloadspack-f07ce6094e24f172add50ebfd786e71ee6ba7d28.tar.gz
spack-f07ce6094e24f172add50ebfd786e71ee6ba7d28.tar.bz2
spack-f07ce6094e24f172add50ebfd786e71ee6ba7d28.tar.xz
spack-f07ce6094e24f172add50ebfd786e71ee6ba7d28.zip
package openfoam-com: add version 1712 and update patches (#6820)
* combine all patches for 1612 into a single file, with additional comments to explain the rational. * Add kahip decomposition variant. * Add support for ARM64 architecture. * filter instead of patching etc/config.*/settings. This eliminates patch files for 1706, perhaps for the future as well. * URLs at or before version 1612 have a different structure, so provide a url_for_version implementation to handle this
-rw-r--r--var/spack/repos/builtin/packages/openfoam-com/1612-bin.patch503
-rw-r--r--var/spack/repos/builtin/packages/openfoam-com/1612-build.patch17
-rw-r--r--var/spack/repos/builtin/packages/openfoam-com/1612-etc.patch41
-rw-r--r--var/spack/repos/builtin/packages/openfoam-com/1612-mgridgen-lib.patch41
-rw-r--r--var/spack/repos/builtin/packages/openfoam-com/1612-mpi.patch36
-rw-r--r--var/spack/repos/builtin/packages/openfoam-com/1612-scotch-metis-lib.patch48
-rw-r--r--var/spack/repos/builtin/packages/openfoam-com/1612-site.patch42
-rw-r--r--var/spack/repos/builtin/packages/openfoam-com/1612-spack-patches.patch876
-rw-r--r--var/spack/repos/builtin/packages/openfoam-com/1612-zoltan-lib.patch84
-rw-r--r--var/spack/repos/builtin/packages/openfoam-com/1706-site.patch22
-rw-r--r--var/spack/repos/builtin/packages/openfoam-com/package.py68
-rwxr-xr-xvar/spack/repos/builtin/packages/openfoam-org/assets/bin/foamEtcFile84
12 files changed, 956 insertions, 906 deletions
diff --git a/var/spack/repos/builtin/packages/openfoam-com/1612-bin.patch b/var/spack/repos/builtin/packages/openfoam-com/1612-bin.patch
deleted file mode 100644
index b9e87a7ec8..0000000000
--- a/var/spack/repos/builtin/packages/openfoam-com/1612-bin.patch
+++ /dev/null
@@ -1,503 +0,0 @@
---- OpenFOAM-v1612+.orig/bin/foamEtcFile 2016-12-23 15:22:59.000000000 +0100
-+++ OpenFOAM-v1612+/bin/foamEtcFile 2017-03-23 10:08:37.296887070 +0100
-@@ -4,7 +4,7 @@
- # \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
- # \\ / O peration |
- # \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
--# \\/ M anipulation |
-+# \\/ M anipulation | Copyright (C) 2017 OpenCFD Ltd.
- #-------------------------------------------------------------------------------
- # License
- # This file is part of OpenFOAM.
-@@ -26,7 +26,7 @@
- # foamEtcFile
- #
- # Description
--# Locate user/group/shipped file with semantics similar to the
-+# Locate user/group/other files with semantics similar to the
- # ~OpenFOAM/fileName expansion.
- #
- # The -mode option can be used to allow chaining from
-@@ -34,40 +34,53 @@
- #
- # For example, within the user ~/.OpenFOAM/<VER>/prefs.sh:
- # \code
--# foamPrefs=`$WM_PROJECT_DIR/bin/foamEtcFile -m go prefs.sh` \
--# && _foamSource $foamPrefs
-+# eval $(foamEtcFile -sh -mode=go prefs.sh)
- # \endcode
- #
-+# Environment
-+# - WM_PROJECT: (unset defaults to OpenFOAM)
-+# - WM_PROJECT_SITE: (unset defaults to PREFIX/site)
-+# - WM_PROJECT_VERSION: (unset defaults to detect from path)
-+#
- # Note
--# This script must exist in $FOAM_INST_DIR/OpenFOAM-<VERSION>/bin/
--# or $FOAM_INST_DIR/openfoam<VERSION>/bin/ (for the debian version)
-+# 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
- cat<<USAGE
-
--Usage: ${0##*/} [OPTION] fileName
-- ${0##*/} [OPTION] -list
-+Usage: foamEtcFile [OPTION] fileName
-+ foamEtcFile [OPTION] [-list|-list-test] [fileName]
- options:
-- -all return all files (otherwise stop after the first match)
-- -list list the directories to be searched
-- -mode <mode> any combination of u(user), g(group), o(other)
-- -prefix <dir> specify an alternative installation prefix
-- -quiet suppress all normal output
-- -silent suppress all stderr output
-- -version <ver> specify an alternative OpenFOAM version
-- in the form Maj.Min.Rev (eg, 1.7.0)
-- -help print the usage
-+ -a, -all Return all files (otherwise stop after the first match)
-+ -l, -list 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
-+ -help Print the usage
-
-- Locate user/group/shipped file with semantics similar to the
-+ Locate user/group/other file with semantics similar to the
- ~OpenFOAM/fileName expansion.
-
-- The options can also be specified as a single character
-- (eg, '-q' instead of '-quiet'), but must not be grouped.
-+ 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
-
- Exit status
- 0 when the file is found. Print resolved path to stdout.
-@@ -78,61 +91,117 @@
- exit 1
- }
-
--#-------------------------------------------------------------------------------
-+# Report error and exit
-+die()
-+{
-+ [ "${optQuiet:-$optSilent}" = true ] && exit 1
-+ exec 1>&2
-+ echo
-+ echo "Error encountered:"
-+ while [ "$#" -ge 1 ]; do echo " $1"; shift; done
-+ echo
-+ echo "See 'foamEtcFile -help' for usage"
-+ echo
-+ exit 1
-+}
-
--# the bin dir:
--binDir="${0%/*}"
-+#-------------------------------------------------------------------------------
-+binDir="${0%/*}" # The bin dir
-+projectDir="${binDir%/bin}" # The project dir
-+prefixDir="${projectDir%/*}" # The prefix dir (same as $WM_PROJECT_INST_DIR)
-
--# the project dir:
-+# Could not resolve projectDir, prefixDir? (eg, called as ./bin/foamEtcFile)
-+if [ "$prefixDir" = "$projectDir" ]
-+then
-+ binDir="$(cd $binDir && pwd -L)"
- projectDir="${binDir%/bin}"
--
--# the prefix dir (same as $FOAM_INST_DIR):
- prefixDir="${projectDir%/*}"
-+fi
-+projectDirName="${projectDir##*/}" # The project directory name
-
--# the name used for the project directory
--projectDirName="${projectDir##*/}"
-+projectName="${WM_PROJECT:-OpenFOAM}" # The project name
-+projectVersion="$WM_PROJECT_VERSION" # Empty? - will be treated later
-
--# version number used for debian packaging
--unset versionNum
-
-+#-------------------------------------------------------------------------------
-+
-+# Guess project version or simply get the stem part of the projectDirName.
-+# Handle standard and debian naming conventions.
- #
--# handle standard and debian naming convention
-+# - projectVersion: update unless already set
- #
--case "$projectDirName" in
--OpenFOAM-*) # standard naming convention OpenFOAM-<VERSION>
-- version="${projectDirName##OpenFOAM-}"
-- ;;
-+# Helper variables:
-+# - dirBase (for reassembling name) == projectDirName without the version
-+# - versionNum (debian packaging)
-+unset dirBase versionNum
-+guessVersion()
-+{
-+ local version
-
--openfoam[0-9]* | openfoam-dev) # debian naming convention 'openfoam<VERSION>'
-- versionNum="${projectDirName##openfoam}"
-- case "$versionNum" in
-- ??) # convert 2 digit version number to decimal delineated
-- version=$(echo "$versionNum" | sed -e 's@\(.\)\(.\)@\1.\2@')
-- ;;
-- ???) # convert 3 digit version number to decimal delineated
-- version=$(echo "$versionNum" | sed -e 's@\(.\)\(.\)\(.\)@\1.\2.\3@')
-- ;;
-- ????) # convert 4 digit version number to decimal delineated
-- version=$(echo "$versionNum" | sed -e 's@\(.\)\(.\)\(.\)\(.\)@\1.\2.\3.\4@')
-- ;;
-- *) # failback - use current environment setting
-- version="$WM_PROJECT_VERSION"
-+ case "$projectDirName" in
-+ (OpenFOAM-* | openfoam-*)
-+ # Standard naming: OpenFOAM-<VERSION> or openfoam-<VERSION>
-+ dirBase="${projectDirName%%-*}-"
-+ version="${projectDirName#*-}"
-+ 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"
-+ version="${projectDirName#openfoam}"
-+ versionNum="$version"
-+
-+ # Convert digits version number to decimal delineated
-+ case "${#versionNum}" in (2|3|4)
-+ version=$(echo "$versionNum" | sed -e 's@\([0-9]\)@\1.@g')
-+ version="${version%.}"
- ;;
- esac
-+
-+ # Ignore special treatment if no decimals were inserted.
-+ [ "${#version}" -gt "${#versionNum}" ] || unset versionNum
- ;;
-
--*)
-- echo "Error : unknown/unsupported naming convention"
-- exit 1
-+ (*)
-+ die "unknown/unsupported naming convention for '$projectDirName'"
- ;;
- esac
-
-+ # Set projectVersion if required
-+ : ${projectVersion:=$version}
-+}
-+
-+
-+# Set projectVersion and update versionNum, projectDirName accordingly
-+setVersion()
-+{
-+ projectVersion="$1"
-+
-+ # Need dirBase when reassembling projectDirName
-+ [ -n "$dirBase" ] || guessVersion
-+
-+ # Debian: update x.y.z -> xyz version
-+ if [ -n "$versionNum" ]
-+ then
-+ versionNum=$(echo "$projectVersion" | sed -e 's@\.@@g')
-+ fi
-+
-+ projectDirName="$dirBase${versionNum:-$projectVersion}"
-+}
-+
-
--# default mode is 'ugo'
--mode=ugo
--unset optAll optList optQuiet optSilent
-+optMode=ugo # Default mode is always 'ugo'
-+unset optAll optList optShell optVersion
-
--# parse options
-+# Parse options
- while [ "$#" -gt 0 ]
- do
- case "$1" in
-@@ -141,27 +210,45 @@
- ;;
- -a | -all)
- optAll=true
-+ unset optShell
- ;;
- -l | -list)
- optList=true
-+ unset optShell
-+ ;;
-+ -list-test)
-+ optList='test'
-+ unset optShell
-+ ;;
-+ -csh | -sh | -csh-verbose | -sh-verbose)
-+ optShell="${1#-}"
-+ unset optAll
-+ ;;
-+ -mode=[ugo]*)
-+ optMode="${1#*=}"
-+ ;;
-+ -prefix=/*)
-+ prefixDir="${1#*=}"
-+ prefixDir="${prefixDir%/}"
-+ ;;
-+ -version=*)
-+ optVersion="${1#*=}"
- ;;
- -m | -mode)
-- [ "$#" -ge 2 ] || usage "'$1' option requires an argument"
-- mode="$2"
--
-- # sanity check:
-- case "$mode" in
-- *u* | *g* | *o* )
-+ optMode="$2"
-+ shift
-+ # Sanity check. Handles missing argument too.
-+ case "$optMode" in
-+ ([ugo]*)
- ;;
-- *)
-- usage "'$1' option with invalid mode '$mode'"
-+ (*)
-+ die "invalid mode '$optMode'"
- ;;
- esac
-- shift
- ;;
- -p | -prefix)
-- [ "$#" -ge 2 ] || usage "'$1' option requires an argument"
-- prefixDir="$2"
-+ [ "$#" -ge 2 ] || die "'$1' option requires an argument"
-+ prefixDir="${2%/}"
- shift
- ;;
- -q | -quiet)
-@@ -171,13 +258,8 @@
- optSilent=true
- ;;
- -v | -version)
-- [ "$#" -ge 2 ] || usage "'$1' option requires an argument"
-- version="$2"
-- # convert x.y.z -> xyz version (if installation looked like debian)
-- if [ -n "$versionNum" ]
-- then
-- versionNum=$(echo "$version" | sed -e 's@\.@@g')
-- fi
-+ [ "$#" -ge 2 ] || die "'$1' option requires an argument"
-+ optVersion="$2"
- shift
- ;;
- --)
-@@ -185,7 +267,7 @@
- break
- ;;
- -*)
-- usage "unknown option: '$*'"
-+ die "unknown option: '$1'"
- ;;
- *)
- break
-@@ -195,11 +277,28 @@
- done
-
-
--# debugging:
--# echo "Installed locations:"
--# for i in projectDir prefixDir projectDirName version versionNum
-+#-------------------------------------------------------------------------------
-+
-+if [ -n "$optVersion" ]
-+then
-+ setVersion $optVersion
-+elif [ -z "$projectVersion" ]
-+then
-+ guessVersion
-+fi
-+
-+# Updates:
-+# - projectDir for changes via -prefix or -version
-+# - projectSite for changes via -prefix
-+projectDir="$prefixDir/$projectDirName"
-+projectSite="${WM_PROJECT_SITE:-$prefixDir/site}"
-+
-+
-+# Debugging:
-+# echo "Installed locations:" 1>&2
-+# for i in projectDir prefixDir projectDirName projectVersion
- # do
--# eval echo "$i=\$$i"
-+# eval echo "$i=\$$i" 1>&2
- # done
-
-
-@@ -210,30 +309,18 @@
-
- # Define the various places to be searched:
- unset dirList
--case "$mode" in
--*u*) # user
-- userDir="$HOME/.${WM_PROJECT:-OpenFOAM}"
-- dirList="$dirList $userDir/$version $userDir"
-+case "$optMode" in (*u*) # (U)ser
-+ dirList="$dirList $HOME/.$projectName/$projectVersion $HOME/.$projectName"
- ;;
- esac
-
--case "$mode" in
--*g*) # group (site)
-- siteDir="${WM_PROJECT_SITE:-$prefixDir/site}"
-- dirList="$dirList $siteDir/$version $siteDir"
-+case "$optMode" in (*g*) # (G)roup == site
-+ dirList="$dirList $projectSite/$projectVersion $projectSite"
- ;;
- esac
-
--case "$mode" in
--*o*) # other (shipped)
-- if [ -n "$versionNum" ]
-- then
-- # debian packaging
-- dirList="$dirList $prefixDir/openfoam$versionNum/etc"
-- else
-- # standard packaging
-- dirList="$dirList $prefixDir/${WM_PROJECT:-OpenFOAM}-$version/etc"
-- fi
-+case "$optMode" in (*o*) # (O)ther == shipped
-+ dirList="$dirList $projectDir/etc"
- ;;
- esac
- set -- $dirList
-@@ -244,50 +331,87 @@
- #
-
- exitCode=0
--if [ "$optList" = true ]
-+if [ -n "$optList" ]
- then
-
-- # list directories, or potential file locations
-- [ "$nArgs" -le 1 ] || usage
-+ # List directories, or potential file locations
-+ [ "$nArgs" -le 1 ] || \
-+ die "-list expects 0 or 1 filename, but $nArgs provided"
-+
-+ # A silly combination, but -quiet does have precedence
-+ [ -n "$optQuiet" ] && exit 0
-
-- # a silly combination, but -quiet does have precedence
-- [ "$optQuiet" = true ] && 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
- do
-- if [ "$nArgs" -eq 1 ]
-+ resolved="$dir/$fileName"
-+ if [ -f "$resolved" ]
- then
-- echo "$dir/$fileName"
-+ echo "$resolved"
-+ exitCode=0 # OK
-+ fi
-+ done
- else
-+ for dir
-+ do
-+ if [ -d "$dir" ]
-+ then
- echo "$dir"
-+ exitCode=0 # OK
- fi
- done
-+ fi
-+ else
-+ for dir
-+ do
-+ echo "$dir${fileName:+/}$fileName"
-+ done
-+ fi
-
- else
-
-- [ "$nArgs" -eq 1 ] || usage
-+ [ "$nArgs" -eq 1 ] || die "One filename expected - $nArgs provided"
-
-- # general error, eg file not found
-- exitCode=2
-+ exitCode=2 # Fallback to a general error (file not found)
-
- for dir
- do
- if [ -f "$dir/$fileName" ]
- then
- exitCode=0
-- if [ "$optQuiet" = true ]
-- then
-+ [ -n "$optQuiet" ] && break
-+
-+ case "$optShell" in
-+ (*verbose)
-+ echo "Using: $dir/$fileName" 1>&2
-+ ;;
-+ esac
-+
-+ case "$optShell" in
-+ csh*)
-+ echo "source $dir/$fileName"
- break
-- else
-+ ;;
-+ sh*)
-+ echo ". $dir/$fileName"
-+ break
-+ ;;
-+ *)
- echo "$dir/$fileName"
-- [ "$optAll" = true ] || break
-- fi
-+ [ -n "$optAll" ] || break
-+ ;;
-+ esac
- fi
- done
-
- fi
-
--
- exit $exitCode
-
- #------------------------------------------------------------------------------
diff --git a/var/spack/repos/builtin/packages/openfoam-com/1612-build.patch b/var/spack/repos/builtin/packages/openfoam-com/1612-build.patch
deleted file mode 100644
index 26e2d8f085..0000000000
--- a/var/spack/repos/builtin/packages/openfoam-com/1612-build.patch
+++ /dev/null
@@ -1,17 +0,0 @@
---- OpenFOAM-v1612+.orig/Allwmake 2016-12-23 15:22:59.000000000 +0100
-+++ OpenFOAM-v1612+/Allwmake 2017-03-29 09:08:15.503865203 +0200
-@@ -17,6 +17,14 @@
- exit 1
- }
-
-+#------------------------------------------------------------------------------
-+echo "========================================"
-+date "+%Y-%m-%d %H:%M:%S %z" 2>/dev/null || echo "date is unknown"
-+echo "Starting ${WM_PROJECT_DIR##*/} ${0##*}"
-+echo " $WM_COMPILER $WM_COMPILER_TYPE compiler"
-+echo " ${WM_OPTIONS}, with ${WM_MPLIB} ${FOAM_MPI}"
-+echo
-+
- # Compile wmake support applications
- (cd wmake/src && make)
-
diff --git a/var/spack/repos/builtin/packages/openfoam-com/1612-etc.patch b/var/spack/repos/builtin/packages/openfoam-com/1612-etc.patch
deleted file mode 100644
index dd8146e953..0000000000
--- a/var/spack/repos/builtin/packages/openfoam-com/1612-etc.patch
+++ /dev/null
@@ -1,41 +0,0 @@
---- OpenFOAM-v1612+.orig/etc/bashrc 2016-12-23 15:22:59.000000000 +0100
-+++ OpenFOAM-v1612+/etc/bashrc 2017-03-22 16:05:05.751237072 +0100
-@@ -42,7 +42,8 @@
- #
- # Please set to the appropriate path if the default is not correct.
- #
--[ $BASH_SOURCE ] && FOAM_INST_DIR=$(\cd ${BASH_SOURCE%/*/*/*} && \pwd -P) || \
-+rc="${BASH_SOURCE:-${ZSH_NAME:+$0}}"
-+[ -n "$rc" ] && FOAM_INST_DIR=$(\cd $(dirname $rc)/../.. && \pwd -L) || \
- FOAM_INST_DIR=$HOME/$WM_PROJECT
- # FOAM_INST_DIR=~$WM_PROJECT
- # FOAM_INST_DIR=/opt/$WM_PROJECT
-@@ -135,8 +136,10 @@
- # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- . $WM_PROJECT_DIR/etc/config.sh/functions
-
--# Add in preset user or site preferences:
--_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile prefs.sh`
-+# Override definitions via prefs, with 'other' first so the sys-admin
-+# can provide base values independent of WM_PROJECT_SITE
-+_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile -mode o prefs.sh`
-+_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile -mode ug prefs.sh`
-
- # Evaluate command-line parameters and record settings for later
- # these can be used to set/unset values, or specify alternative pref files
-diff -uw OpenFOAM-v1612+.orig/etc/cshrc OpenFOAM-v1612+/etc/cshrc
---- OpenFOAM-v1612+.orig/etc/cshrc 2016-12-23 15:22:59.000000000 +0100
-+++ OpenFOAM-v1612+/etc/cshrc 2017-03-22 16:04:51.839291067 +0100
-@@ -148,8 +148,10 @@
- # Source files, possibly with some verbosity
- alias _foamSource 'if ($?FOAM_VERBOSE && $?prompt) echo "Sourcing: \!*"; if (\!* != "") source \!*'
-
--# Add in preset user or site preferences:
--_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile prefs.csh`
-+# Override definitions via prefs, with 'other' first so the sys-admin
-+# can provide base values independent of WM_PROJECT_SITE
-+_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile -mode o prefs.csh`
-+_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile -mode ug prefs.csh`
-
- # Evaluate command-line parameters and record settings for later
- # these can be used to set/unset values, or specify alternative pref files
diff --git a/var/spack/repos/builtin/packages/openfoam-com/1612-mgridgen-lib.patch b/var/spack/repos/builtin/packages/openfoam-com/1612-mgridgen-lib.patch
deleted file mode 100644
index 8dc0b995ff..0000000000
--- a/var/spack/repos/builtin/packages/openfoam-com/1612-mgridgen-lib.patch
+++ /dev/null
@@ -1,41 +0,0 @@
---- OpenFOAM-v1612+.orig/src/fvAgglomerationMethods/Allwmake 2017-01-02 09:56:17.578558265 +0100
-+++ OpenFOAM-v1612+/src/fvAgglomerationMethods/Allwmake 2017-04-18 18:58:38.236795902 +0200
-@@ -4,9 +4,13 @@
- # Parse arguments for library compilation
- . $WM_PROJECT_DIR/wmake/scripts/AllwmakeParseArguments
-
--export ParMGridGen=$WM_THIRD_PARTY_DIR/ParMGridGen-1.0
-+unset MGRIDGEN_ARCH_PATH
-+if settings=$($WM_PROJECT_DIR/bin/foamEtcFile config.sh/mgridgen)
-+then
-+ . $settings
-+fi
-
--if [ -e "$FOAM_LIBBIN/libMGridGen.so" ]
-+if [ -e "$MGRIDGEN_ARCH_PATH/include/mgridgen.h" ]
- then
- wmake $targetType MGridGenGamgAgglomeration
- fi
---- OpenFOAM-v1612+.orig/src/fvAgglomerationMethods/MGridGenGamgAgglomeration/Make/options 2017-01-02 09:56:17.578558265 +0100
-+++ OpenFOAM-v1612+/src/fvAgglomerationMethods/MGridGenGamgAgglomeration/Make/options 2017-04-18 18:59:16.860662811 +0200
-@@ -1,15 +1,9 @@
--/* Needs ParMGridGen environment variable set. (see Allwmake script) */
--
--TYPE_REAL=
--#if defined(WM_SP)
--TYPE_REAL=-DTYPE_REAL
--#endif
--
- EXE_INC = \
- -I$(LIB_SRC)/finiteVolume/lnInclude \
-- -I$(ParMGridGen)/MGridGen/Lib/lnInclude \
-- -I$(ParMGridGen)/MGridGen/IMlib/lnInclude \
-- $(TYPE_REAL)
-+ -I$(MGRIDGEN_ARCH_PATH)/include
-
- LIB_LIBS = \
-- -L$(FOAM_EXT_LIBBIN) -lMGridGen
-+ -L$(FOAM_EXT_LIBBIN) \
-+ -L$(MGRIDGEN_ARCH_PATH)/lib \
-+ -L$(MGRIDGEN_ARCH_PATH)/lib$(WM_COMPILER_LIB_ARCH) \
-+ -lmgrid
diff --git a/var/spack/repos/builtin/packages/openfoam-com/1612-mpi.patch b/var/spack/repos/builtin/packages/openfoam-com/1612-mpi.patch
deleted file mode 100644
index b3663b0a49..0000000000
--- a/var/spack/repos/builtin/packages/openfoam-com/1612-mpi.patch
+++ /dev/null
@@ -1,36 +0,0 @@
---- OpenFOAM-v1612+.orig/etc/config.sh/mpi 2016-12-23 15:22:59.000000000 +0100
-+++ OpenFOAM-v1612+/etc/config.sh/mpi 2017-03-29 13:55:57.507980699 +0200
-@@ -75,8 +75,15 @@
- _foamAddMan $MPI_ARCH_PATH/share/man
- ;;
-
-+USERMPI)
-+ # Use an arbitrary, user-specified mpi implementation
-+ export FOAM_MPI=mpi-user
-+ _foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.sh/mpi-user`
-+ ;;
-+
- SYSTEMMPI)
- export FOAM_MPI=mpi-system
-+ _foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.sh/mpi-system`
-
- if [ -z "$MPI_ROOT" ]
- then
---- OpenFOAM-v1612+.orig/etc/config.csh/mpi 2016-12-23 15:22:59.000000000 +0100
-+++ OpenFOAM-v1612+/etc/config.csh/mpi 2017-03-29 13:56:36.347835938 +0200
-@@ -71,8 +71,15 @@
- _foamAddMan $MPI_ARCH_PATH/share/man
- breaksw
-
-+case USERMPI:
-+ # Use an arbitrary, user-specified mpi implementation
-+ setenv FOAM_MPI mpi-user
-+ _foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.csh/mpi-user`
-+ breaksw
-+
- case SYSTEMMPI:
- setenv FOAM_MPI mpi-system
-+ _foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.csh/mpi-system`
-
- if ( ! ($?MPI_ROOT) ) then
- echo
diff --git a/var/spack/repos/builtin/packages/openfoam-com/1612-scotch-metis-lib.patch b/var/spack/repos/builtin/packages/openfoam-com/1612-scotch-metis-lib.patch
deleted file mode 100644
index b7530e6320..0000000000
--- a/var/spack/repos/builtin/packages/openfoam-com/1612-scotch-metis-lib.patch
+++ /dev/null
@@ -1,48 +0,0 @@
---- OpenFOAM-v1612+.orig/src/parallel/decompose/Allwmake 2017-03-21 16:34:44.599021283 +0100
-+++ OpenFOAM-v1612+/src/parallel/decompose/Allwmake 2017-03-21 16:28:57.243969660 +0100
-@@ -36,6 +36,7 @@
-
- # Library
- [ -r $FOAM_EXT_LIBBIN/libmetis.so ] || \
-+ [ -r $METIS_ARCH_PATH/lib/libmetis.so ] || \
- [ -r $METIS_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH/libmetis.so ] || \
- [ "${METIS_ARCH_PATH##*-}" = system ] || {
- echo "$warning (missing library)"
-@@ -90,6 +91,7 @@
-
- # Library
- [ -r $FOAM_EXT_LIBBIN/libscotch.so ] || \
-+ [ -r $SCOTCH_ARCH_PATH/lib/libscotch.so ] || \
- [ -r $SCOTCH_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH/libscotch.so ] || \
- [ "${SCOTCH_ARCH_PATH##*-}" = system ] || {
- echo "$warning (missing library)"
---- OpenFOAM-v1612+.orig/src/parallel/decompose/metisDecomp/Make/options 2017-03-21 16:34:25.383075328 +0100
-+++ OpenFOAM-v1612+/src/parallel/decompose/metisDecomp/Make/options 2017-03-21 16:30:15.727758338 +0100
-@@ -8,6 +8,7 @@
- * to support central, non-thirdparty installations
- */
- LIB_LIBS = \
-+ -L$(METIS_ARCH_PATH)/lib \
- -L$(METIS_ARCH_PATH)/lib$(WM_COMPILER_LIB_ARCH) \
- -L$(FOAM_EXT_LIBBIN) \
- -lmetis
---- OpenFOAM-v1612+.orig/src/parallel/decompose/ptscotchDecomp/Make/options 2017-03-21 16:34:34.607049385 +0100
-+++ OpenFOAM-v1612+/src/parallel/decompose/ptscotchDecomp/Make/options 2017-03-21 16:30:00.479799399 +0100
-@@ -16,6 +16,7 @@
- * to support central, non-thirdparty installations
- */
- LIB_LIBS = \
-+ -L$(SCOTCH_ARCH_PATH)/lib \
- -L$(SCOTCH_ARCH_PATH)/lib$(WM_COMPILER_LIB_ARCH) \
- -L$(FOAM_EXT_LIBBIN) \
- -L$(FOAM_EXT_LIBBIN)/$(FOAM_MPI) \
---- OpenFOAM-v1612+.orig/src/parallel/decompose/scotchDecomp/Make/options 2017-03-21 16:34:39.159036582 +0100
-+++ OpenFOAM-v1612+/src/parallel/decompose/scotchDecomp/Make/options 2017-03-21 16:29:46.719836452 +0100
-@@ -16,6 +16,7 @@
- * to support central, non-thirdparty installations
- */
- LIB_LIBS = \
-+ -L$(SCOTCH_ARCH_PATH)/lib \
- -L$(SCOTCH_ARCH_PATH)/lib$(WM_COMPILER_LIB_ARCH) \
- -L$(FOAM_EXT_LIBBIN) \
- -lscotch \
diff --git a/var/spack/repos/builtin/packages/openfoam-com/1612-site.patch b/var/spack/repos/builtin/packages/openfoam-com/1612-site.patch
deleted file mode 100644
index d988c2f9b8..0000000000
--- a/var/spack/repos/builtin/packages/openfoam-com/1612-site.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-diff -uw OpenFOAM-v1612+.orig/etc/config.sh/settings OpenFOAM-v1612+/etc/config.sh/settings
---- OpenFOAM-v1612+.orig/etc/config.sh/settings 2016-12-23 15:22:59.000000000 +0100
-+++ OpenFOAM-v1612+/etc/config.sh/settings 2017-03-23 12:22:52.002101020 +0100
-@@ -141,7 +141,7 @@
- #------------------------------------------------------------------------------
-
- # Location of the jobControl directory
--export FOAM_JOB_DIR=$WM_PROJECT_INST_DIR/jobControl
-+export FOAM_JOB_DIR=$HOME/.OpenFOAM/jobControl #SPACK: non-central location
-
- # wmake configuration
- export WM_DIR=$WM_PROJECT_DIR/wmake
-@@ -157,7 +157,7 @@
- export FOAM_EXT_LIBBIN=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER$WM_PRECISION_OPTION$WM_LABEL_OPTION/lib
-
- # Site-specific directory
--siteDir="${WM_PROJECT_SITE:-$WM_PROJECT_INST_DIR/site}"
-+siteDir="${WM_PROJECT_SITE:-$WM_PROJECT_DIR/site}" #SPACK: not in parent directory
-
- # Shared site executables/libraries
- # Similar naming convention as ~OpenFOAM expansion
-diff -uw OpenFOAM-v1612+.orig/etc/config.csh/settings OpenFOAM-v1612+/etc/config.csh/settings
---- OpenFOAM-v1612+.orig/etc/config.csh/settings 2016-12-23 15:22:59.000000000 +0100
-+++ OpenFOAM-v1612+/etc/config.csh/settings 2017-03-23 12:23:52.737891912 +0100
-@@ -137,7 +137,7 @@
- #------------------------------------------------------------------------------
-
- # Location of the jobControl directory
--setenv FOAM_JOB_DIR $WM_PROJECT_INST_DIR/jobControl
-+setenv FOAM_JOB_DIR=$HOME/.OpenFOAM/jobControl #SPACK: non-central location
-
- # wmake configuration
- setenv WM_DIR $WM_PROJECT_DIR/wmake
-@@ -156,7 +156,7 @@
- if ( $?WM_PROJECT_SITE ) then
- set siteDir=$WM_PROJECT_SITE
- else
-- set siteDir=$WM_PROJECT_INST_DIR/site
-+ set siteDir=$WM_PROJECT_DIR/site #SPACK: not in parent directory
- endif
-
- # Shared site executables/libraries
diff --git a/var/spack/repos/builtin/packages/openfoam-com/1612-spack-patches.patch b/var/spack/repos/builtin/packages/openfoam-com/1612-spack-patches.patch
new file mode 100644
index 0000000000..00679c4c1d
--- /dev/null
+++ b/var/spack/repos/builtin/packages/openfoam-com/1612-spack-patches.patch
@@ -0,0 +1,876 @@
+#############################################################################
+# This patch for OpenFOAM-1612 comprises the following changes:
+#
+# bin/foamEtcFile
+# - Adjust to cope with spack naming (eg, openfoam-com-1612-abcxzy).
+# Lets us avoid a needless directory layer.
+#
+# etc/bashrc
+# - improved robustness when sourcing.
+# - source top-level prefs.sh first (for sysadmin changes)
+#
+# etc/config.*/settings
+# - write job control information to the user directory
+# - site/ directory under the OpenFOAM project dir, not its parent dir
+#
+# etc/config.*/mpi
+# - added USERMPI as place for spack mpi information
+#
+# mgridgen, zoltan:
+# - make location configurable
+#
+# metis, scotch:
+# - also check lib path (not just lib64)
+#
+# All issues patched here are addressed in OpenFOAM-1706 and later.
+#
+# <Mark.Olesen@esi-group.com> ESI-OpenCFD www.openfoam.com
+#
+#############################################################################
+--- OpenFOAM-v1612+.orig/bin/foamEtcFile 2016-12-23 15:22:59.000000000 +0100
++++ OpenFOAM-plus/bin/foamEtcFile 2017-12-18 17:48:35.043291205 +0100
+@@ -4,164 +4,235 @@
+ # \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ # \\ / O peration |
+ # \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
+-# \\/ M anipulation |
++# \\/ M anipulation | Copyright (C) 2017 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/shipped file 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
+-# foamPrefs=`$WM_PROJECT_DIR/bin/foamEtcFile -m go prefs.sh` \
+-# && _foamSource $foamPrefs
++# eval $(foamEtcFile -sh -mode=o prefs.sh)
++# eval $(foamEtcFile -sh -mode=ug prefs.sh)
+ # \endcode
+ #
++# Environment
++# - WM_PROJECT: (unset defaults to OpenFOAM)
++# - WM_PROJECT_SITE: (unset defaults to PREFIX/site)
++# - WM_PROJECT_VERSION: (unset defaults to detect from path)
++#
+ # Note
+-# This script must exist in $FOAM_INST_DIR/OpenFOAM-<VERSION>/bin/
+-# or $FOAM_INST_DIR/openfoam<VERSION>/bin/ (for the debian version)
++# 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 (debian version)
+ #
+ #-------------------------------------------------------------------------------
+-usage() {
+- [ "${optQuiet:-$optSilent}" = true ] && exit 1
+-
+- exec 1>&2
+- while [ "$#" -ge 1 ]; do echo "$1"; shift; done
++printHelp() {
+ cat<<USAGE
+
+-Usage: ${0##*/} [OPTION] fileName
+- ${0##*/} [OPTION] -list
++Usage: foamEtcFile [OPTION] fileName
++ foamEtcFile [OPTION] [-list|-list-test] [fileName]
++
+ options:
+- -all return all files (otherwise stop after the first match)
+- -list list the directories to be searched
+- -mode <mode> any combination of u(user), g(group), o(other)
+- -prefix <dir> specify an alternative installation prefix
+- -quiet suppress all normal output
+- -silent suppress all stderr output
+- -version <ver> specify an alternative OpenFOAM version
+- in the form Maj.Min.Rev (eg, 1.7.0)
+- -help print the usage
+-
+- Locate user/group/shipped file with semantics similar to the
+- ~OpenFOAM/fileName expansion.
+-
+- The options can also be specified as a single character
+- (eg, '-q' instead of '-quiet'), but must not be grouped.
+-
+- Exit status
+- 0 when the file is found. Print resolved path to stdout.
+- 1 for miscellaneous errors.
+- 2 when the file is not found.
++ -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 Produce output suitable for a csh or sh 'eval'
++ -csh-verbose As per -csh with additional verbosity
++ -sh Produce output suitable for a csh or sh 'eval'
++ -sh-verbose As per -sh with additional verbosity
++ -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 as per '#includeEtc'
++
++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.
++ 1 for miscellaneous errors.
++ 2 when the file is not found.
+
+ USAGE
+- exit 1
++ exit 0 # A clean exit
+ }
+
+-#-------------------------------------------------------------------------------
+
+-# the bin dir:
+-binDir="${0%/*}"
++unset optQuiet optSilent
++# Report error and exit
++die()
++{
++ [ "${optQuiet:-$optSilent}" = true ] && exit 1
++ exec 1>&2
++ echo
++ echo "Error encountered:"
++ while [ "$#" -ge 1 ]; do echo " $1"; shift; done
++ echo
++ echo "See 'foamEtcFile -help' for usage"
++ echo
++ exit 1
++}
+
+-# the project dir:
+-projectDir="${binDir%/bin}"
++#-------------------------------------------------------------------------------
++binDir="${0%/*}" # The bin dir
++projectDir="${binDir%/bin}" # The project dir
++prefixDir="${projectDir%/*}" # The prefix dir (same as $WM_PROJECT_INST_DIR)
+
+-# the prefix dir (same as $FOAM_INST_DIR):
+-prefixDir="${projectDir%/*}"
++# Could not resolve projectDir, prefixDir? (eg, called as ./bin/foamEtcFile)
++if [ "$prefixDir" = "$projectDir" ]
++then
++ binDir="$(cd $binDir && pwd -L)"
++ projectDir="${binDir%/bin}"
++ prefixDir="${projectDir%/*}"
++fi
++projectDirName="${projectDir##*/}" # The project directory name
+
+-# the name used for the project directory
+-projectDirName="${projectDir##*/}"
++projectVersion="$WM_PROJECT_VERSION" # Empty? - will be treated later
++userDir="$HOME/.OpenFOAM" # Hard-coded as per foamVersion.H
+
+-# version number used for debian packaging
+-unset versionNum
++#-------------------------------------------------------------------------------
+
++# Guess project version or simply get the stem part of the projectDirName.
++# Handle standard and debian naming conventions.
+ #
+-# handle standard and debian naming convention
++# - projectVersion: update unless already set
+ #
+-case "$projectDirName" in
+-OpenFOAM-*) # standard naming convention OpenFOAM-<VERSION>
+- version="${projectDirName##OpenFOAM-}"
+- ;;
++# Helper variables:
++# - dirBase (for reassembling name) == projectDirName without the version
++# - versionNum (debian packaging)
++unset dirBase versionNum
++guessVersion()
++{
++ local version
++
++ case "$projectDirName" in
++ (OpenFOAM-* | openfoam-*)
++ # Standard 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"
++ version="${projectDirName#openfoam}"
++ versionNum="$version"
++
++ # Convert digits version number to decimal delineated
++ case "${#versionNum}" in (2|3|4)
++ version=$(echo "$versionNum" | sed -e 's@\([0-9]\)@\1.@g')
++ version="${version%.}"
++ ;;
++ esac
+
+-openfoam[0-9]* | openfoam-dev) # debian naming convention 'openfoam<VERSION>'
+- versionNum="${projectDirName##openfoam}"
+- case "$versionNum" in
+- ??) # convert 2 digit version number to decimal delineated
+- version=$(echo "$versionNum" | sed -e 's@\(.\)\(.\)@\1.\2@')
+- ;;
+- ???) # convert 3 digit version number to decimal delineated
+- version=$(echo "$versionNum" | sed -e 's@\(.\)\(.\)\(.\)@\1.\2.\3@')
++ # Ignore special treatment if no decimals were inserted.
++ [ "${#version}" -gt "${#versionNum}" ] || unset versionNum
+ ;;
+- ????) # convert 4 digit version number to decimal delineated
+- version=$(echo "$versionNum" | sed -e 's@\(.\)\(.\)\(.\)\(.\)@\1.\2.\3.\4@')
+- ;;
+- *) # failback - use current environment setting
+- version="$WM_PROJECT_VERSION"
++
++ (*)
++ die "unknown/unsupported naming convention for '$projectDirName'"
+ ;;
+ esac
+- ;;
+
+-*)
+- echo "Error : unknown/unsupported naming convention"
+- exit 1
+- ;;
+-esac
++ # Set projectVersion if required
++ : ${projectVersion:=$version}
++}
+
+
+-# default mode is 'ugo'
+-mode=ugo
+-unset optAll optList optQuiet optSilent
++# Set projectVersion and update versionNum, projectDirName accordingly
++setVersion()
++{
++ projectVersion="$1"
+
+-# parse options
++ # Need dirBase when reassembling projectDirName
++ [ -n "$dirBase" ] || guessVersion
++
++ # Debian: update x.y.z -> xyz version
++ if [ -n "$versionNum" ]
++ then
++ versionNum=$(echo "$projectVersion" | sed -e 's@\.@@g')
++ fi
++
++ projectDirName="$dirBase${versionNum:-$projectVersion}"
++}
++
++
++optMode=ugo # Default mode is always 'ugo'
++unset optAll optList optShell optVersion
++
++# Parse options
+ while [ "$#" -gt 0 ]
+ do
+ case "$1" in
+- -h | -help)
+- usage
++ -h | -help*)
++ printHelp
+ ;;
+ -a | -all)
+ optAll=true
++ unset optShell
+ ;;
+ -l | -list)
+ optList=true
++ unset optShell
++ ;;
++ -list-test)
++ optList='test'
++ unset optShell
++ ;;
++ -csh | -sh | -csh-verbose | -sh-verbose)
++ optShell="${1#-}"
++ unset optAll
++ ;;
++ -mode=[ugo]*)
++ optMode="${1#*=}"
++ ;;
++ -prefix=/*)
++ prefixDir="${1#*=}"
++ prefixDir="${prefixDir%/}"
++ ;;
++ -version=*)
++ optVersion="${1#*=}"
+ ;;
+ -m | -mode)
+- [ "$#" -ge 2 ] || usage "'$1' option requires an argument"
+- mode="$2"
+-
+- # sanity check:
+- case "$mode" in
+- *u* | *g* | *o* )
+- ;;
+- *)
+- usage "'$1' option with invalid mode '$mode'"
+- ;;
+- esac
++ optMode="$2"
+ shift
++ # Sanity check. Handles missing argument too.
++ case "$optMode" in
++ ([ugo]*)
++ ;;
++ (*)
++ die "invalid mode '$optMode'"
++ ;;
++ esac
+ ;;
+ -p | -prefix)
+- [ "$#" -ge 2 ] || usage "'$1' option requires an argument"
+- prefixDir="$2"
++ [ "$#" -ge 2 ] || die "'$1' option requires an argument"
++ prefixDir="${2%/}"
+ shift
+ ;;
+ -q | -quiet)
+@@ -171,13 +242,8 @@
+ optSilent=true
+ ;;
+ -v | -version)
+- [ "$#" -ge 2 ] || usage "'$1' option requires an argument"
+- version="$2"
+- # convert x.y.z -> xyz version (if installation looked like debian)
+- if [ -n "$versionNum" ]
+- then
+- versionNum=$(echo "$version" | sed -e 's@\.@@g')
+- fi
++ [ "$#" -ge 2 ] || die "'$1' option requires an argument"
++ optVersion="$2"
+ shift
+ ;;
+ --)
+@@ -185,7 +251,7 @@
+ break
+ ;;
+ -*)
+- usage "unknown option: '$*'"
++ die "unknown option: '$1'"
+ ;;
+ *)
+ break
+@@ -195,11 +261,28 @@
+ done
+
+
+-# debugging:
+-# echo "Installed locations:"
+-# for i in projectDir prefixDir projectDirName version versionNum
++#-------------------------------------------------------------------------------
++
++if [ -n "$optVersion" ]
++then
++ setVersion $optVersion
++elif [ -z "$projectVersion" ]
++then
++ guessVersion
++fi
++
++# Updates:
++# - projectDir for changes via -prefix or -version
++# - groupDir for changes via -prefix
++projectDir="$prefixDir/$projectDirName"
++groupDir="${WM_PROJECT_SITE:-$prefixDir/site}"
++
++
++# Debugging:
++# echo "Installed locations:" 1>&2
++# for i in projectDir prefixDir projectDirName projectVersion
+ # do
+-# eval echo "$i=\$$i"
++# eval echo "$i=\$$i" 1>&2
+ # done
+
+
+@@ -210,30 +293,18 @@
+
+ # Define the various places to be searched:
+ unset dirList
+-case "$mode" in
+-*u*) # user
+- userDir="$HOME/.${WM_PROJECT:-OpenFOAM}"
+- dirList="$dirList $userDir/$version $userDir"
++case "$optMode" in (*u*) # (U)ser
++ dirList="$dirList $userDir/$projectVersion $userDir"
+ ;;
+ esac
+
+-case "$mode" in
+-*g*) # group (site)
+- siteDir="${WM_PROJECT_SITE:-$prefixDir/site}"
+- dirList="$dirList $siteDir/$version $siteDir"
++case "$optMode" in (*g*) # (G)roup == site
++ dirList="$dirList $groupDir/$projectVersion $groupDir"
+ ;;
+ esac
+
+-case "$mode" in
+-*o*) # other (shipped)
+- if [ -n "$versionNum" ]
+- then
+- # debian packaging
+- dirList="$dirList $prefixDir/openfoam$versionNum/etc"
+- else
+- # standard packaging
+- dirList="$dirList $prefixDir/${WM_PROJECT:-OpenFOAM}-$version/etc"
+- fi
++case "$optMode" in (*o*) # (O)ther == shipped
++ dirList="$dirList $projectDir/etc"
+ ;;
+ esac
+ set -- $dirList
+@@ -244,50 +315,87 @@
+ #
+
+ exitCode=0
+-if [ "$optList" = true ]
++if [ -n "$optList" ]
+ then
+
+- # list directories, or potential file locations
+- [ "$nArgs" -le 1 ] || usage
++ # List directories, or potential file locations
++ [ "$nArgs" -le 1 ] || \
++ die "-list expects 0 or 1 filename, but $nArgs provided"
+
+- # a silly combination, but -quiet does have precedence
+- [ "$optQuiet" = true ] && exit 0
++ # A silly combination, but -quiet does have 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)
+
+- for dir
+- do
+ if [ "$nArgs" -eq 1 ]
+ then
+- echo "$dir/$fileName"
++ for dir
++ do
++ resolved="$dir/$fileName"
++ if [ -f "$resolved" ]
++ then
++ echo "$resolved"
++ exitCode=0 # OK
++ fi
++ done
+ else
+- echo "$dir"
++ for dir
++ do
++ if [ -d "$dir" ]
++ then
++ echo "$dir"
++ exitCode=0 # OK
++ fi
++ done
+ fi
+- done
++ else
++ for dir
++ do
++ echo "$dir${fileName:+/}$fileName"
++ done
++ fi
+
+ else
+
+- [ "$nArgs" -eq 1 ] || usage
++ [ "$nArgs" -eq 1 ] || die "One filename expected - $nArgs provided"
+
+- # general error, eg file not found
+- exitCode=2
++ exitCode=2 # Fallback to a general error (file not found)
+
+ for dir
+ do
+ if [ -f "$dir/$fileName" ]
+ then
+ exitCode=0
+- if [ "$optQuiet" = true ]
+- then
++ [ -n "$optQuiet" ] && break
++
++ case "$optShell" in
++ (*verbose)
++ echo "Using: $dir/$fileName" 1>&2
++ ;;
++ esac
++
++ case "$optShell" in
++ csh*)
++ echo "source $dir/$fileName"
+ break
+- else
++ ;;
++ sh*)
++ echo ". $dir/$fileName"
++ break
++ ;;
++ *)
+ echo "$dir/$fileName"
+- [ "$optAll" = true ] || break
+- fi
++ [ -n "$optAll" ] || break
++ ;;
++ esac
+ fi
+ done
+
+ fi
+
+-
+ exit $exitCode
+
+ #------------------------------------------------------------------------------
+--- OpenFOAM-v1612+.orig/etc/bashrc 2016-12-23 15:22:59.000000000 +0100
++++ OpenFOAM-v1612+/etc/bashrc 2017-03-22 16:05:05.751237072 +0100
+@@ -42,7 +42,8 @@
+ #
+ # Please set to the appropriate path if the default is not correct.
+ #
+-[ $BASH_SOURCE ] && FOAM_INST_DIR=$(\cd ${BASH_SOURCE%/*/*/*} && \pwd -P) || \
++rc="${BASH_SOURCE:-${ZSH_NAME:+$0}}"
++[ -n "$rc" ] && FOAM_INST_DIR=$(\cd $(dirname $rc)/../.. && \pwd -L) || \
+ FOAM_INST_DIR=$HOME/$WM_PROJECT
+ # FOAM_INST_DIR=~$WM_PROJECT
+ # FOAM_INST_DIR=/opt/$WM_PROJECT
+@@ -135,8 +136,10 @@
+ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ . $WM_PROJECT_DIR/etc/config.sh/functions
+
+-# Add in preset user or site preferences:
+-_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile prefs.sh`
++# Override definitions via prefs, with 'other' first so the sys-admin
++# can provide base values independent of WM_PROJECT_SITE
++_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile -mode o prefs.sh`
++_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile -mode ug prefs.sh`
+
+ # Evaluate command-line parameters and record settings for later
+ # these can be used to set/unset values, or specify alternative pref files
+diff -uw OpenFOAM-v1612+.orig/etc/cshrc OpenFOAM-v1612+/etc/cshrc
+--- OpenFOAM-v1612+.orig/etc/cshrc 2016-12-23 15:22:59.000000000 +0100
++++ OpenFOAM-v1612+/etc/cshrc 2017-03-22 16:04:51.839291067 +0100
+@@ -148,8 +148,10 @@
+ # Source files, possibly with some verbosity
+ alias _foamSource 'if ($?FOAM_VERBOSE && $?prompt) echo "Sourcing: \!*"; if (\!* != "") source \!*'
+
+-# Add in preset user or site preferences:
+-_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile prefs.csh`
++# Override definitions via prefs, with 'other' first so the sys-admin
++# can provide base values independent of WM_PROJECT_SITE
++_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile -mode o prefs.csh`
++_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile -mode ug prefs.csh`
+
+ # Evaluate command-line parameters and record settings for later
+ # these can be used to set/unset values, or specify alternative pref files
+--- OpenFOAM-v1612+.orig/etc/config.sh/settings 2016-12-23 15:22:59.000000000 +0100
++++ OpenFOAM-v1612+/etc/config.sh/settings 2017-12-21 20:40:50.109036445 +0100
+@@ -141,7 +141,7 @@
+ #------------------------------------------------------------------------------
+
+ # Location of the jobControl directory
+-export FOAM_JOB_DIR=$WM_PROJECT_INST_DIR/jobControl
++export FOAM_JOB_DIR="$HOME/.OpenFOAM/jobControl"
+
+ # wmake configuration
+ export WM_DIR=$WM_PROJECT_DIR/wmake
+@@ -198,8 +198,12 @@
+ unset siteDir
+
+ _foamAddPath $FOAM_USER_APPBIN:$FOAM_SITE_APPBIN:$FOAM_APPBIN
+-# Make sure to pick up dummy versions of external libraries last
+-_foamAddLib $FOAM_USER_LIBBIN:$FOAM_SITE_LIBBIN:$FOAM_LIBBIN:$FOAM_EXT_LIBBIN:$FOAM_LIBBIN/dummy
++_foamAddLib $FOAM_LIBBIN/dummy # Dummy versions of external libraries last
++if [ -n "$FOAM_EXT_LIBBIN" ] # External libraries (allowed to be unset)
++then
++ _foamAddLib $FOAM_EXT_LIBBIN
++fi
++_foamAddLib $FOAM_USER_LIBBIN:$FOAM_SITE_LIBBIN:$FOAM_LIBBIN
+
+ # Compiler settings
+ # ~~~~~~~~~~~~~~~~~
+--- OpenFOAM-v1612+.orig/etc/config.csh/settings 2016-12-23 15:22:59.000000000 +0100
++++ OpenFOAM-v1612+/etc/config.csh/settings 2017-12-21 20:37:24.301773802 +0100
+@@ -137,7 +137,7 @@
+ #------------------------------------------------------------------------------
+
+ # Location of the jobControl directory
+-setenv FOAM_JOB_DIR $WM_PROJECT_INST_DIR/jobControl
++setenv FOAM_JOB_DIR "$HOME/.OpenFOAM/jobControl"
+
+ # wmake configuration
+ setenv WM_DIR $WM_PROJECT_DIR/wmake
+@@ -196,8 +196,11 @@
+ unset siteDir
+
+ _foamAddPath ${FOAM_USER_APPBIN}:${FOAM_SITE_APPBIN}:${FOAM_APPBIN}
+-# Make sure to pick up dummy versions of external libraries last
+-_foamAddLib ${FOAM_USER_LIBBIN}:${FOAM_SITE_LIBBIN}:${FOAM_LIBBIN}:${FOAM_EXT_LIBBIN}:${FOAM_LIBBIN}/dummy
++_foamAddLib $FOAM_LIBBIN/dummy # Dummy versions of external libraries last
++if ( $?FOAM_EXT_LIBBIN ) then # External libraries (allowed to be unset)
++ _foamAddLib $FOAM_EXT_LIBBIN
++endif
++_foamAddLib ${FOAM_USER_LIBBIN}:${FOAM_SITE_LIBBIN}:${FOAM_LIBBIN}
+
+ # Compiler settings
+ # ~~~~~~~~~~~~~~~~~
+--- OpenFOAM-v1612+.orig/etc/config.sh/mpi 2016-12-23 15:22:59.000000000 +0100
++++ OpenFOAM-v1612+/etc/config.sh/mpi 2017-03-29 13:55:57.507980699 +0200
+@@ -75,8 +75,15 @@
+ _foamAddMan $MPI_ARCH_PATH/share/man
+ ;;
+
++USERMPI)
++ # Use an arbitrary, user-specified mpi implementation
++ export FOAM_MPI=mpi-user
++ _foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.sh/mpi-user`
++ ;;
++
+ SYSTEMMPI)
+ export FOAM_MPI=mpi-system
++ _foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.sh/mpi-system`
+
+ if [ -z "$MPI_ROOT" ]
+ then
+--- OpenFOAM-v1612+.orig/etc/config.csh/mpi 2016-12-23 15:22:59.000000000 +0100
++++ OpenFOAM-v1612+/etc/config.csh/mpi 2017-03-29 13:56:36.347835938 +0200
+@@ -71,8 +71,15 @@
+ _foamAddMan $MPI_ARCH_PATH/share/man
+ breaksw
+
++case USERMPI:
++ # Use an arbitrary, user-specified mpi implementation
++ setenv FOAM_MPI mpi-user
++ _foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.csh/mpi-user`
++ breaksw
++
+ case SYSTEMMPI:
+ setenv FOAM_MPI mpi-system
++ _foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.csh/mpi-system`
+
+ if ( ! ($?MPI_ROOT) ) then
+ echo
+--- OpenFOAM-v1612+.orig/src/fvAgglomerationMethods/Allwmake 2017-01-02 09:56:17.578558265 +0100
++++ OpenFOAM-v1612+/src/fvAgglomerationMethods/Allwmake 2017-04-18 18:58:38.236795902 +0200
+@@ -4,9 +4,13 @@
+ # Parse arguments for library compilation
+ . $WM_PROJECT_DIR/wmake/scripts/AllwmakeParseArguments
+
+-export ParMGridGen=$WM_THIRD_PARTY_DIR/ParMGridGen-1.0
++unset MGRIDGEN_ARCH_PATH
++if settings=$($WM_PROJECT_DIR/bin/foamEtcFile config.sh/mgridgen)
++then
++ . $settings
++fi
+
+-if [ -e "$FOAM_LIBBIN/libMGridGen.so" ]
++if [ -e "$MGRIDGEN_ARCH_PATH/include/mgridgen.h" ]
+ then
+ wmake $targetType MGridGenGamgAgglomeration
+ fi
+--- OpenFOAM-v1612+.orig/src/fvAgglomerationMethods/MGridGenGamgAgglomeration/Make/options 2017-01-02 09:56:17.578558265 +0100
++++ OpenFOAM-v1612+/src/fvAgglomerationMethods/MGridGenGamgAgglomeration/Make/options 2017-04-18 18:59:16.860662811 +0200
+@@ -1,15 +1,9 @@
+-/* Needs ParMGridGen environment variable set. (see Allwmake script) */
+-
+-TYPE_REAL=
+-#if defined(WM_SP)
+-TYPE_REAL=-DTYPE_REAL
+-#endif
+-
+ EXE_INC = \
+ -I$(LIB_SRC)/finiteVolume/lnInclude \
+- -I$(ParMGridGen)/MGridGen/Lib/lnInclude \
+- -I$(ParMGridGen)/MGridGen/IMlib/lnInclude \
+- $(TYPE_REAL)
++ -I$(MGRIDGEN_ARCH_PATH)/include
+
+ LIB_LIBS = \
+- -L$(FOAM_EXT_LIBBIN) -lMGridGen
++ -L$(FOAM_EXT_LIBBIN) \
++ -L$(MGRIDGEN_ARCH_PATH)/lib \
++ -L$(MGRIDGEN_ARCH_PATH)/lib$(WM_COMPILER_LIB_ARCH) \
++ -lmgrid
+--- OpenFOAM-v1612+.orig/src/parallel/decompose/Allwmake 2017-03-21 16:34:44.599021283 +0100
++++ OpenFOAM-v1612+/src/parallel/decompose/Allwmake 2017-03-21 16:28:57.243969660 +0100
+@@ -36,6 +36,7 @@
+
+ # Library
+ [ -r $FOAM_EXT_LIBBIN/libmetis.so ] || \
++ [ -r $METIS_ARCH_PATH/lib/libmetis.so ] || \
+ [ -r $METIS_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH/libmetis.so ] || \
+ [ "${METIS_ARCH_PATH##*-}" = system ] || {
+ echo "$warning (missing library)"
+@@ -90,6 +91,7 @@
+
+ # Library
+ [ -r $FOAM_EXT_LIBBIN/libscotch.so ] || \
++ [ -r $SCOTCH_ARCH_PATH/lib/libscotch.so ] || \
+ [ -r $SCOTCH_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH/libscotch.so ] || \
+ [ "${SCOTCH_ARCH_PATH##*-}" = system ] || {
+ echo "$warning (missing library)"
+--- OpenFOAM-v1612+.orig/src/parallel/decompose/metisDecomp/Make/options 2017-03-21 16:34:25.383075328 +0100
++++ OpenFOAM-v1612+/src/parallel/decompose/metisDecomp/Make/options 2017-03-21 16:30:15.727758338 +0100
+@@ -8,6 +8,7 @@
+ * to support central, non-thirdparty installations
+ */
+ LIB_LIBS = \
++ -L$(METIS_ARCH_PATH)/lib \
+ -L$(METIS_ARCH_PATH)/lib$(WM_COMPILER_LIB_ARCH) \
+ -L$(FOAM_EXT_LIBBIN) \
+ -lmetis
+--- OpenFOAM-v1612+.orig/src/parallel/decompose/ptscotchDecomp/Make/options 2017-03-21 16:34:34.607049385 +0100
++++ OpenFOAM-v1612+/src/parallel/decompose/ptscotchDecomp/Make/options 2017-03-21 16:30:00.479799399 +0100
+@@ -16,6 +16,7 @@
+ * to support central, non-thirdparty installations
+ */
+ LIB_LIBS = \
++ -L$(SCOTCH_ARCH_PATH)/lib \
+ -L$(SCOTCH_ARCH_PATH)/lib$(WM_COMPILER_LIB_ARCH) \
+ -L$(FOAM_EXT_LIBBIN) \
+ -L$(FOAM_EXT_LIBBIN)/$(FOAM_MPI) \
+--- OpenFOAM-v1612+.orig/src/parallel/decompose/scotchDecomp/Make/options 2017-03-21 16:34:39.159036582 +0100
++++ OpenFOAM-v1612+/src/parallel/decompose/scotchDecomp/Make/options 2017-03-21 16:29:46.719836452 +0100
+@@ -16,6 +16,7 @@
+ * to support central, non-thirdparty installations
+ */
+ LIB_LIBS = \
++ -L$(SCOTCH_ARCH_PATH)/lib \
+ -L$(SCOTCH_ARCH_PATH)/lib$(WM_COMPILER_LIB_ARCH) \
+ -L$(FOAM_EXT_LIBBIN) \
+ -lscotch \
+--- OpenFOAM-v1612+.orig/applications/utilities/mesh/manipulation/renumberMesh/Allwmake 2016-12-23 15:22:59.000000000 +0100
++++ OpenFOAM-v1612+/applications/utilities/mesh/manipulation/renumberMesh/Allwmake 2017-03-28 11:13:35.222727218 +0200
+@@ -4,20 +4,35 @@
+ # Parse arguments for compilation (at least for error catching)
+ . $WM_PROJECT_DIR/wmake/scripts/AllwmakeParseArguments
+
+-export COMPILE_FLAGS=''
+-export LINK_FLAGS=''
++unset COMP_FLAGS LINK_FLAGS
+
+ if [ -f "${FOAM_LIBBIN}/libSloanRenumber.so" ]
+ then
+- echo "Found libSloanRenumber.so -- enabling Sloan renumbering support."
++ echo " found libSloanRenumber -- enabling sloan renumbering support."
+ export LINK_FLAGS="${LINK_FLAGS} -lSloanRenumber"
+ fi
+
+-if [ -f "${ZOLTAN_ARCH_PATH}/lib/libzoltan.a" -a -f "${FOAM_LIBBIN}/libzoltanRenumber.so" ]
++if [ -f "${FOAM_LIBBIN}/libzoltanRenumber.so" ]
+ then
+- echo "Found libzoltanRenumber.so -- enabling zoltan renumbering support."
+- export COMPILE_FLAGS="-DFOAM_USE_ZOLTAN"
+- export LINK_FLAGS="${LINK_FLAGS} -lzoltanRenumber -L${ZOLTAN_ARCH_PATH}/lib -lzoltan"
++ if [ -z "$ZOLTAN_ARCH_PATH" ]
++ then
++ # Optional: get ZOLTAN_ARCH_PATH
++ if settings=$($WM_PROJECT_DIR/bin/foamEtcFile config.sh/zoltan)
++ then
++ . $settings
++ fi
++ fi
++
++ for libdir in lib "lib${WM_COMPILER_LIB_ARCH}"
++ do
++ if [ -f "$ZOLTAN_ARCH_PATH/$libdir/libzoltan.a" ]
++ then
++ echo " found libzoltanRenumber -- enabling zoltan renumbering support."
++ export COMP_FLAGS="-DFOAM_USE_ZOLTAN"
++ export LINK_FLAGS="${LINK_FLAGS} -lzoltanRenumber -L$ZOLTAN_ARCH_PATH/$libdir -lzoltan"
++ break
++ fi
++ done
+ fi
+
+ wmake $targetType
+--- OpenFOAM-v1612+.orig/src/renumber/Allwmake 2016-12-23 15:22:59.000000000 +0100
++++ OpenFOAM-v1612+/src/renumber/Allwmake 2017-03-28 11:10:22.195543610 +0200
+@@ -5,14 +5,11 @@
+ targetType=libso
+ . $WM_PROJECT_DIR/wmake/scripts/AllwmakeParseArguments
+
+-## Get ZOLTAN_ARCH_PATH
+-#if settings=$($WM_PROJECT_DIR/bin/foamEtcFile config.sh/zoltan)
+-#then
+-# . $settings
+-# echo "using ZOLTAN_ARCH_PATH=$ZOLTAN_ARCH_PATH"
+-#else
+-# echo "Error: no config.sh/zoltan settings"
+-#fi
++# Optional: get ZOLTAN_ARCH_PATH
++if settings=$($WM_PROJECT_DIR/bin/foamEtcFile config.sh/zoltan)
++then
++ . $settings
++fi
+
+ wmake $targetType renumberMethods
+
+--- OpenFOAM-v1612+.orig/src/renumber/zoltanRenumber/Make/options 2016-12-23 15:22:59.000000000 +0100
++++ OpenFOAM-v1612+/src/renumber/zoltanRenumber/Make/options 2017-03-28 11:50:46.484343848 +0200
+@@ -4,10 +4,13 @@
+ EXE_INC = \
+ /* -DFULLDEBUG -g -O0 */ \
+ $(PFLAGS) $(PINC) \
++ ${c++LESSWARN} \
+ -I$(FOAM_SRC)/renumber/renumberMethods/lnInclude \
+ -I$(ZOLTAN_ARCH_PATH)/include/ \
+ -I$(LIB_SRC)/meshTools/lnInclude
+
+ LIB_LIBS = \
+- /* -L$(ZOLTAN_ARCH_PATH)/lib -lzoltan */ \
++ -L$(ZOLTAN_ARCH_PATH)/lib \
++ -L$(ZOLTAN_ARCH_PATH)/lib$(WM_COMPILER_LIB_ARCH) \
++ -lzoltan \
+ -lmeshTools
diff --git a/var/spack/repos/builtin/packages/openfoam-com/1612-zoltan-lib.patch b/var/spack/repos/builtin/packages/openfoam-com/1612-zoltan-lib.patch
deleted file mode 100644
index 712e6a7dfd..0000000000
--- a/var/spack/repos/builtin/packages/openfoam-com/1612-zoltan-lib.patch
+++ /dev/null
@@ -1,84 +0,0 @@
---- OpenFOAM-v1612+.orig/applications/utilities/mesh/manipulation/renumberMesh/Allwmake 2016-12-23 15:22:59.000000000 +0100
-+++ OpenFOAM-v1612+/applications/utilities/mesh/manipulation/renumberMesh/Allwmake 2017-03-28 11:13:35.222727218 +0200
-@@ -4,20 +4,35 @@
- # Parse arguments for compilation (at least for error catching)
- . $WM_PROJECT_DIR/wmake/scripts/AllwmakeParseArguments
-
--export COMPILE_FLAGS=''
--export LINK_FLAGS=''
-+unset COMP_FLAGS LINK_FLAGS
-
- if [ -f "${FOAM_LIBBIN}/libSloanRenumber.so" ]
- then
-- echo "Found libSloanRenumber.so -- enabling Sloan renumbering support."
-+ echo " found libSloanRenumber -- enabling sloan renumbering support."
- export LINK_FLAGS="${LINK_FLAGS} -lSloanRenumber"
- fi
-
--if [ -f "${ZOLTAN_ARCH_PATH}/lib/libzoltan.a" -a -f "${FOAM_LIBBIN}/libzoltanRenumber.so" ]
-+if [ -f "${FOAM_LIBBIN}/libzoltanRenumber.so" ]
- then
-- echo "Found libzoltanRenumber.so -- enabling zoltan renumbering support."
-- export COMPILE_FLAGS="-DFOAM_USE_ZOLTAN"
-- export LINK_FLAGS="${LINK_FLAGS} -lzoltanRenumber -L${ZOLTAN_ARCH_PATH}/lib -lzoltan"
-+ if [ -z "$ZOLTAN_ARCH_PATH" ]
-+ then
-+ # Optional: get ZOLTAN_ARCH_PATH
-+ if settings=$($WM_PROJECT_DIR/bin/foamEtcFile config.sh/zoltan)
-+ then
-+ . $settings
-+ fi
-+ fi
-+
-+ for libdir in lib "lib${WM_COMPILER_LIB_ARCH}"
-+ do
-+ if [ -f "$ZOLTAN_ARCH_PATH/$libdir/libzoltan.a" ]
-+ then
-+ echo " found libzoltanRenumber -- enabling zoltan renumbering support."
-+ export COMP_FLAGS="-DFOAM_USE_ZOLTAN"
-+ export LINK_FLAGS="${LINK_FLAGS} -lzoltanRenumber -L$ZOLTAN_ARCH_PATH/$libdir -lzoltan"
-+ break
-+ fi
-+ done
- fi
-
- wmake $targetType
---- OpenFOAM-v1612+.orig/src/renumber/Allwmake 2016-12-23 15:22:59.000000000 +0100
-+++ OpenFOAM-v1612+/src/renumber/Allwmake 2017-03-28 11:10:22.195543610 +0200
-@@ -5,14 +5,11 @@
- targetType=libso
- . $WM_PROJECT_DIR/wmake/scripts/AllwmakeParseArguments
-
--## Get ZOLTAN_ARCH_PATH
--#if settings=$($WM_PROJECT_DIR/bin/foamEtcFile config.sh/zoltan)
--#then
--# . $settings
--# echo "using ZOLTAN_ARCH_PATH=$ZOLTAN_ARCH_PATH"
--#else
--# echo "Error: no config.sh/zoltan settings"
--#fi
-+# Optional: get ZOLTAN_ARCH_PATH
-+if settings=$($WM_PROJECT_DIR/bin/foamEtcFile config.sh/zoltan)
-+then
-+ . $settings
-+fi
-
- wmake $targetType renumberMethods
-
---- OpenFOAM-v1612+.orig/src/renumber/zoltanRenumber/Make/options 2016-12-23 15:22:59.000000000 +0100
-+++ OpenFOAM-v1612+/src/renumber/zoltanRenumber/Make/options 2017-03-28 11:50:46.484343848 +0200
-@@ -4,10 +4,13 @@
- EXE_INC = \
- /* -DFULLDEBUG -g -O0 */ \
- $(PFLAGS) $(PINC) \
-+ ${c++LESSWARN} \
- -I$(FOAM_SRC)/renumber/renumberMethods/lnInclude \
- -I$(ZOLTAN_ARCH_PATH)/include/ \
- -I$(LIB_SRC)/meshTools/lnInclude
-
- LIB_LIBS = \
-- /* -L$(ZOLTAN_ARCH_PATH)/lib -lzoltan */ \
-+ -L$(ZOLTAN_ARCH_PATH)/lib \
-+ -L$(ZOLTAN_ARCH_PATH)/lib$(WM_COMPILER_LIB_ARCH) \
-+ -lzoltan \
- -lmeshTools
diff --git a/var/spack/repos/builtin/packages/openfoam-com/1706-site.patch b/var/spack/repos/builtin/packages/openfoam-com/1706-site.patch
deleted file mode 100644
index 6dab9b555b..0000000000
--- a/var/spack/repos/builtin/packages/openfoam-com/1706-site.patch
+++ /dev/null
@@ -1,22 +0,0 @@
---- OpenFOAM-plus.orig/etc/config.sh/settings 2016-12-23 15:22:59.000000000 +0100
-+++ OpenFOAM-plus/etc/config.sh/settings 2017-04-04 12:21:31.295498985 +0200
-@@ -157,7 +157,7 @@
- export FOAM_EXT_LIBBIN=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER$WM_PRECISION_OPTION$WM_LABEL_OPTION/lib
-
- # Site-specific directory
--siteDir="${WM_PROJECT_SITE:-$WM_PROJECT_INST_DIR/site}"
-+siteDir="${WM_PROJECT_SITE:-$WM_PROJECT_DIR/site}" #SPACK: not in parent directory
-
- # Shared site executables/libraries
- # Similar naming convention as ~OpenFOAM expansion
---- OpenFOAM-plus.orig/etc/config.csh/settings 2016-12-23 15:22:59.000000000 +0100
-+++ OpenFOAM-plus/etc/config.csh/settings 2017-03-23 12:23:52.737891912 +0100
-@@ -156,7 +156,7 @@
- if ( $?WM_PROJECT_SITE ) then
- set siteDir=$WM_PROJECT_SITE
- else
-- set siteDir=$WM_PROJECT_INST_DIR/site
-+ set siteDir=$WM_PROJECT_DIR/site #SPACK: not in parent directory
- endif
-
- # Shared site executables/libraries
diff --git a/var/spack/repos/builtin/packages/openfoam-com/package.py b/var/spack/repos/builtin/packages/openfoam-com/package.py
index 1a01d45ce4..ec070f5103 100644
--- a/var/spack/repos/builtin/packages/openfoam-com/package.py
+++ b/var/spack/repos/builtin/packages/openfoam-com/package.py
@@ -1,5 +1,5 @@
##############################################################################
-# Copyright (c) 2017 Mark Olesen, OpenCFD Ltd.
+# Copyright (c) 2017-2018 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.
@@ -276,25 +276,28 @@ class OpenfoamCom(Package):
maintainers = ['olesenm']
homepage = "http://www.openfoam.com/"
- baseurl = "https://sourceforge.net/projects/openfoamplus/files/"
gitrepo = "https://develop.openfoam.com/Development/OpenFOAM-plus.git"
+ url = "https://sourceforge.net/projects/openfoamplus/files/v1706/OpenFOAM-v1706.tgz"
+ list_url = "https://sourceforge.net/projects/openfoamplus/files/"
+ list_depth = 2
- version('1706', '630d30770f7b54d6809efbf94b7d7c8f',
- url=baseurl + 'v1706/OpenFOAM-v1706.tgz')
- version('1612', 'ca02c491369150ab127cbb88ec60fbdf',
- url=baseurl + 'v1612+/OpenFOAM-v1612+.tgz')
+ version('1712', '6ad92df051f4d52c7d0ec34f4b8eb3bc')
+ version('1706', '630d30770f7b54d6809efbf94b7d7c8f')
+ version('1612', 'ca02c491369150ab127cbb88ec60fbdf')
version('develop', branch='develop', git=gitrepo) # Needs credentials
- variant('int64', default=False,
- description='Compile with 64-bit label')
variant('float32', default=False,
- description='Compile with 32-bit scalar (single-precision)')
+ description='Use single-precision')
+ variant('int64', default=False,
+ description='With 64-bit labels')
variant('knl', default=False,
description='Use KNL compiler settings')
- variant('scotch', default=True,
- description='With scotch/ptscotch for decomposition')
+ variant('kahip', default=True,
+ description='With kahip decomposition')
variant('metis', default=False,
- description='With metis for decomposition')
+ description='With metis decomposition')
+ variant('scotch', default=True,
+ description='With scotch/ptscotch decomposition')
variant('zoltan', default=False,
description='With zoltan renumbering')
# TODO?# variant('scalasca', default=False,
@@ -322,6 +325,7 @@ class OpenfoamCom(Package):
# Require scotch with ptscotch - corresponds to standard OpenFOAM setup
depends_on('scotch~metis+mpi~int64', when='+scotch~int64')
depends_on('scotch~metis+mpi+int64', when='+scotch+int64')
+ depends_on('kahip', when='+kahip')
depends_on('metis@5:', when='+metis')
depends_on('metis+int64', when='+metis+int64')
# mgridgen is statically linked
@@ -344,15 +348,7 @@ class OpenfoamCom(Package):
assets = []
# Version-specific patches
- patch('1612-bin.patch', when='@1612')
- patch('1612-build.patch', when='@1612')
- patch('1612-etc.patch', when='@1612')
- patch('1612-site.patch', when='@1612')
- patch('1612-mpi.patch', when='@1612')
- patch('1612-mgridgen-lib.patch', when='@1612')
- patch('1612-scotch-metis-lib.patch', when='@1612')
- patch('1612-zoltan-lib.patch', when='@1612')
- patch('1706-site.patch', when='@1706')
+ patch('1612-spack-patches.patch', when='@1612')
# Some user config settings
# default: 'compile-option': 'RpathOpt',
@@ -378,6 +374,15 @@ class OpenfoamCom(Package):
# - End of definitions / setup -
#
+ def url_for_version(self, version):
+ # Prior to 'v1706' and additional '+' in the naming
+ fmt = self.list_url
+ if version <= Version('1612'):
+ fmt += 'v{0}+/OpenFOAM-v{0}+.tgz'
+ else:
+ fmt += 'v{0}/OpenFOAM-v{0}.tgz'
+ return fmt.format(version, version)
+
def setup_environment(self, spack_env, run_env):
"""Add environment variables to the generated module file.
These environment variables come from running:
@@ -478,7 +483,6 @@ class OpenfoamCom(Package):
add_extra_files(self, self.common, self.assets)
# Avoid WM_PROJECT_INST_DIR for ThirdParty, site or jobControl.
- # Use openfoam-site.patch to handle jobControl, site.
#
# Filtering: bashrc,cshrc (using a patch is less flexible)
edits = {
@@ -499,6 +503,18 @@ class OpenfoamCom(Package):
posix=join_path('etc', 'config.sh', 'settings'),
cshell=join_path('etc', 'config.csh', 'settings'))
+ # The following filtering is non-vital. It simply prevents 'site' dirs
+ # from the the wrong level (likely non-existent anyhow) from being
+ # added to PATH, LD_LIBRARY_PATH.
+ for rcdir in ['config.sh', 'config.csh']:
+ rcfile = join_path('etc', rcdir, 'settings')
+ if os.path.isfile(rcfile):
+ filter_file(
+ 'WM_PROJECT_INST_DIR/',
+ 'WM_PROJECT_DIR/',
+ rcfile,
+ backup=False)
+
def configure(self, spec, prefix):
"""Make adjustments to the OpenFOAM configuration files in their various
locations: etc/bashrc, etc/config.sh/FEATURE and customizations that
@@ -547,6 +563,7 @@ class OpenfoamCom(Package):
('PATH', foamAddPath(user_mpi['bindir'])),
],
'scotch': {},
+ 'kahip': {},
'metis': {},
'ensight': {}, # Disable settings
'paraview': [],
@@ -560,6 +577,11 @@ class OpenfoamCom(Package):
'SCOTCH_VERSION': 'scotch-{0}'.format(spec['scotch'].version),
}
+ if '+kahip' in spec:
+ self.etc_config['kahip'] = {
+ 'KAHIP_ARCH_PATH': spec['kahip'].prefix,
+ }
+
if '+metis' in spec:
self.etc_config['metis'] = {
'METIS_ARCH_PATH': spec['metis'].prefix,
@@ -748,6 +770,8 @@ class OpenfoamArch(object):
platform += 'ia64'
elif target == 'armv7l':
platform += 'ARM7'
+ elif target == 'aarch64':
+ platform += 'ARM64'
elif target == 'ppc64':
platform += 'PPC64'
elif target == 'ppc64le':
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..e61279b591 100755
--- a/var/spack/repos/builtin/packages/openfoam-org/assets/bin/foamEtcFile
+++ b/var/spack/repos/builtin/packages/openfoam-org/assets/bin/foamEtcFile
@@ -7,34 +7,28 @@
# \\/ M anipulation | Copyright (C) 2017 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,37 @@
# 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
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 output suitable for a csh or sh 'eval'
+ -csh-verbose As per -csh with additional verbosity
+ -sh Produce output suitable for a csh or sh 'eval'
+ -sh-verbose As per -sh with additional verbosity
+ -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 +78,11 @@ 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 +137,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"
@@ -205,8 +189,8 @@ unset optAll optList optShell optVersion
while [ "$#" -gt 0 ]
do
case "$1" in
- -h | -help)
- usage
+ -h | -help*)
+ printHelp
;;
-a | -all)
optAll=true