diff options
author | Mark Olesen <Mark.Olesen@gmx.net> | 2018-01-03 19:30:10 +0000 |
---|---|---|
committer | scheibelp <scheibel1@llnl.gov> | 2018-01-03 11:30:10 -0800 |
commit | f07ce6094e24f172add50ebfd786e71ee6ba7d28 (patch) | |
tree | dcbe5a7868eb2650584c509204f5400b13ff029f | |
parent | 2f551908b8c80d60f0a3f369e94b73b4c41e9738 (diff) | |
download | spack-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
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 |