mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
Merge branch 'feature-config' into 'develop'
ENH: update handling of versioning and make control (issue #1010) See merge request Development/OpenFOAM-plus!222
This commit is contained in:
5
META-INFO/.gitignore
vendored
Normal file
5
META-INFO/.gitignore
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
# Do not track build information
|
||||
build-info
|
||||
|
||||
# Do not track time-stamp
|
||||
time-stamp
|
||||
84
META-INFO/README.md
Normal file
84
META-INFO/README.md
Normal file
@ -0,0 +1,84 @@
|
||||
# META-INFO
|
||||
|
||||
Meta-information is for OpenFOAM internal use only.
|
||||
|
||||
Do not rely on any files or any file contents in this directory,
|
||||
or even the existence of this directory.
|
||||
|
||||
The format, content and meaning may be changed at anytime without
|
||||
notice.
|
||||
|
||||
The information is provided here for internal documentation purposes.
|
||||
|
||||
## api-info
|
||||
|
||||
This file and its contents are to be tracked by git.
|
||||
|
||||
- File content (api) generated by wmakeBuildInfo from OPENFOAM define
|
||||
in `wmake/rules/General/general`
|
||||
|
||||
- File content (patch) is manually generated content.
|
||||
|
||||
|
||||
## build-info
|
||||
|
||||
This file is *never* to be tracked by git, but may be present in shipped
|
||||
source archives.
|
||||
|
||||
- File content (branch, build) generated by wmakeBuildInfo from git
|
||||
information and cached from previous wmake (api)
|
||||
|
||||
|
||||
## Content types
|
||||
|
||||
### api
|
||||
|
||||
- 4-digit year-month (YYMM) integer corresponding to the major
|
||||
release or in unusual cases an intermediate release.
|
||||
|
||||
- Format is year-month, as per `date +%y%m`.
|
||||
Eg, `1712` for the Dec-2017 release.
|
||||
|
||||
|
||||
### patch
|
||||
|
||||
- 6-digit year-month-day (YYMMDD) integer corresponding to a patch-level
|
||||
for the given **released** API.
|
||||
Development branches have a patch value of `0`.
|
||||
|
||||
- Format is year-month-day, as per `date +%y%m%d`.
|
||||
|
||||
- The first release is by definition unpatched, and thus carries
|
||||
a patch value of `0`. If this release were to be patched the following
|
||||
day, the patch level would jump accordingly.
|
||||
|
||||
The patch value is only meaningful together with the api value.
|
||||
|
||||
|
||||
## Flow of information
|
||||
|
||||
Changes in the build information must be reflected in information
|
||||
available in the final binaries. Conversely, it is necessary for later
|
||||
distributions to have a record of the same information.
|
||||
|
||||
| property | source | saved |
|
||||
|-----------|---------------------------|------------|
|
||||
| api | wmake/rules | api-info |
|
||||
| patch | manual (api-info) | build-info |
|
||||
| branch | git | build-info |
|
||||
| build | git | build-info |
|
||||
|
||||
|
||||
The command `wmakeBuildInfo -check` is used to determine if
|
||||
the saved information needs synchronization. The command
|
||||
`wmakeBuildInfo -update` preforms the synchronitzation.
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
The saved information is split into two separate files. The `api-info`
|
||||
contains more permanent information, whereas the `build-info` is more
|
||||
transient in nature.
|
||||
|
||||
----
|
||||
2018-11-29
|
||||
2
META-INFO/api-info
Normal file
2
META-INFO/api-info
Normal file
@ -0,0 +1,2 @@
|
||||
api=1811
|
||||
patch=0
|
||||
180
bin/foamEtcFile
180
bin/foamEtcFile
@ -24,21 +24,20 @@
|
||||
# \endcode
|
||||
#
|
||||
# The -mode option can also be used when chaining settings.
|
||||
# For example, in the user ~/.OpenFOAM/<VERSION>/config.sh/compiler
|
||||
# For example, in the user ~/.OpenFOAM/config.sh/compiler
|
||||
# \code
|
||||
# eval $(foamEtcFile -sh -mode=go config.sh/compiler)
|
||||
# \endcode
|
||||
#
|
||||
# Environment
|
||||
# - WM_PROJECT (unset defaults to OpenFOAM)
|
||||
# - WM_PROJECT_VERSION (unset defaults to detect from path)
|
||||
# - WM_PROJECT_SITE (unset defaults to PREFIX/site)
|
||||
# - WM_PROJECT_SITE (unset defaults to PROJECT/site)
|
||||
#
|
||||
# Note
|
||||
# This script must exist in one of these locations:
|
||||
# - PREFIX/OpenFOAM-<VERSION>/bin
|
||||
# - PREFIX/openfoam-<VERSION>/bin
|
||||
# - PREFIX/openfoam<VERSION>/bin
|
||||
# This script must exist in the project 'bin' directory
|
||||
#
|
||||
# The '-show-api' and '-show-patch' options implement partial logic
|
||||
# from wmake/wmakeBuildInfo.
|
||||
# Make sure that any changes there are also reflected here.
|
||||
#
|
||||
#-------------------------------------------------------------------------------
|
||||
printHelp() {
|
||||
@ -52,8 +51,6 @@ options:
|
||||
-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, 1712, 1806, ...)
|
||||
-csh Produce 'source FILE' output for a csh eval
|
||||
-sh Produce '. FILE' output for a sh eval
|
||||
-csh-verbose As per -csh, with additional verbosity
|
||||
@ -61,6 +58,9 @@ options:
|
||||
-config Add config directory prefix for shell type:
|
||||
with -csh* for a config.csh/ prefix
|
||||
with -sh* for a config.sh/ prefix
|
||||
-show-api Print api value from wmake/rules, or meta-info and exit
|
||||
-show-patch Print patch value from meta-info and exit
|
||||
-with-api=NUM Specify alternative api value to search with
|
||||
-quiet (-q) Suppress all normal output
|
||||
-silent (-s) Suppress stderr, except -csh-verbose, -sh-verbose output
|
||||
-help Print the usage
|
||||
@ -70,8 +70,8 @@ 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
|
||||
| -prefix=DIR | -prefix DIR | -p DIR [obsolete 1812]
|
||||
| -version=VER | -version VER | -v VER [obsolete 1812]
|
||||
|
||||
Exit status
|
||||
0 when the file is found. Print resolved path to stdout.
|
||||
@ -98,80 +98,71 @@ die()
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
binDir="${0%/*}" # The bin dir
|
||||
projectDir="${binDir%/bin}" # The project dir
|
||||
prefixDir="${projectDir%/*}" # The prefix dir (same as $WM_PROJECT_INST_DIR)
|
||||
binDir="${0%/*}" # The bin dir
|
||||
projectDir="$(\cd $(dirname $binDir) && \pwd -L)" # Project dir
|
||||
|
||||
# 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
|
||||
|
||||
projectVersion="$WM_PROJECT_VERSION" # Empty? - will be treated later
|
||||
userDir="$HOME/.OpenFOAM" # Hard-coded as per foamVersion.H
|
||||
userDir="$HOME/.OpenFOAM" # As per foamVersion.H
|
||||
groupDir="${WM_PROJECT_SITE:-$projectDir/site}" # As per foamVersion.H
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
|
||||
# Guess project version or simply get the stem part of the projectDirName.
|
||||
# Handle standard naming conventions:
|
||||
# The API locations. See wmake/wmakeBuildInfo
|
||||
rulesFile="$projectDir/wmake/rules/General/general"
|
||||
metaInfoDir="$projectDir/META-INFO"
|
||||
|
||||
# Get api from rules/General/general
|
||||
#
|
||||
# * OpenFOAM-<version>[-extra...]
|
||||
# * openfoam-<version>[-extra...]
|
||||
# * openfoam<digits>
|
||||
# Failure modes:
|
||||
# - No api information (can't find file etc).
|
||||
# -> Fatal for building, but could be OK for a stripped down version
|
||||
#
|
||||
# - projectVersion: update unless already set
|
||||
# Fallback. Get from api-info
|
||||
#
|
||||
# Helper variables:
|
||||
# - dirBase (for reassembling name) == projectDirName without the version
|
||||
unset dirBase
|
||||
guessVersion()
|
||||
getApi()
|
||||
{
|
||||
local version
|
||||
local value
|
||||
|
||||
case "$projectDirName" in
|
||||
(OpenFOAM-* | openfoam-*)
|
||||
# Dashed naming: OpenFOAM-<VERSION> or openfoam-<VERSION>
|
||||
dirBase="${projectDirName%%-*}-"
|
||||
version="${projectDirName#*-}"
|
||||
version="${version%%*-}" # Extra safety, eg openfoam-version-packager
|
||||
;;
|
||||
value="$(sed -ne '/^ *#/!{ /WM_VERSION.*OPENFOAM=/{ s@^.*OPENFOAM= *\([0-9][0-9]*\).*@\1@p; q }}' $rulesFile 2>/dev/null)"
|
||||
if [ -z "$value" ] && [ -f "$metaInfoDir/api-info" ]
|
||||
then
|
||||
# Fallback. Get from api-info
|
||||
value="$(sed -ne 's@^ *api *= *\([0-9][0-9]*\).*@\1@p' $metaInfoDir/api-info 2>/dev/null)"
|
||||
fi
|
||||
|
||||
(openfoam[0-9]*)
|
||||
# Debian-style naming: openfoam<VERSION>
|
||||
dirBase="openfoam"
|
||||
version="${projectDirName#openfoam}"
|
||||
;;
|
||||
|
||||
(*)
|
||||
die "unknown/unsupported naming convention for '$projectDirName'"
|
||||
;;
|
||||
esac
|
||||
|
||||
# Set projectVersion if required
|
||||
: ${projectVersion:=$version}
|
||||
if [ -n "$value" ]
|
||||
then
|
||||
echo "$value"
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
# Set projectVersion and update versionNum, projectDirName accordingly
|
||||
setVersion()
|
||||
# Get patch from meta-info / api-info
|
||||
#
|
||||
# Failure modes:
|
||||
# - No patch information (can't find file etc).
|
||||
#
|
||||
getPatchLevel()
|
||||
{
|
||||
projectVersion="$1"
|
||||
local value
|
||||
|
||||
# Need dirBase when reassembling projectDirName
|
||||
[ -n "$dirBase" ] || guessVersion
|
||||
# Fallback. Get from api-info
|
||||
value="$(sed -ne 's@^ *patch *= *\([0-9][0-9]*\).*@\1@p' $metaInfoDir/api-info 2>/dev/null)"
|
||||
|
||||
projectDirName="$dirBase$projectVersion"
|
||||
if [ -n "$value" ]
|
||||
then
|
||||
echo "$value"
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
optMode=ugo # Default mode is always 'ugo'
|
||||
unset shellOutput verboseOutput
|
||||
unset optAll optConfig optList optVersion
|
||||
unset optAll optConfig optList projectApi
|
||||
|
||||
# Parse options
|
||||
while [ "$#" -gt 0 ]
|
||||
@ -180,6 +171,19 @@ do
|
||||
-h | -help*)
|
||||
printHelp
|
||||
;;
|
||||
-show-api)
|
||||
# Show API and exit
|
||||
getApi
|
||||
exit $?
|
||||
;;
|
||||
-show-patch)
|
||||
# Show patch level and exit
|
||||
getPatchLevel
|
||||
exit $?
|
||||
;;
|
||||
-with-api=*)
|
||||
projectApi="${1#*=}"
|
||||
;;
|
||||
-a | -all)
|
||||
optAll=true
|
||||
unset shellOutput verboseOutput
|
||||
@ -204,13 +208,6 @@ do
|
||||
-mode=[ugo]*)
|
||||
optMode="${1#*=}"
|
||||
;;
|
||||
-prefix=/*)
|
||||
prefixDir="${1#*=}"
|
||||
prefixDir="${prefixDir%/}"
|
||||
;;
|
||||
-version=*)
|
||||
optVersion="${1#*=}"
|
||||
;;
|
||||
-m | -mode)
|
||||
optMode="$2"
|
||||
shift
|
||||
@ -223,22 +220,23 @@ do
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
-p | -prefix)
|
||||
[ "$#" -ge 2 ] || die "'$1' option requires an argument"
|
||||
prefixDir="${2%/}"
|
||||
shift
|
||||
;;
|
||||
-q | -quiet)
|
||||
optQuiet=true
|
||||
;;
|
||||
-s | -silent)
|
||||
optSilent=true
|
||||
;;
|
||||
-v | -version)
|
||||
|
||||
-prefix=* | -version=*)
|
||||
echo "ignored defunct option '${1%%=*}'" 1>&2
|
||||
;;
|
||||
-p | -prefix | -v | -version)
|
||||
# Ignored, but still need to check/discard its argument
|
||||
[ "$#" -ge 2 ] || die "'$1' option requires an argument"
|
||||
optVersion="$2"
|
||||
echo "ignored defunct option '$1'" 1>&2
|
||||
shift
|
||||
;;
|
||||
|
||||
--)
|
||||
shift
|
||||
break
|
||||
@ -255,6 +253,10 @@ done
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
|
||||
# Establish the API value
|
||||
[ -n "$projectApi" ] || projectApi=$(getApi)
|
||||
|
||||
|
||||
# Split arguments into filename (for searching) and trailing bits for shell eval
|
||||
# Silently remove leading ~OpenFOAM/ (as per Foam::findEtcFile)
|
||||
nArgs=$#
|
||||
@ -279,25 +281,9 @@ then
|
||||
fi
|
||||
|
||||
|
||||
# Get version information
|
||||
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
|
||||
# for i in projectDir
|
||||
# do
|
||||
# eval echo "$i=\$$i" 1>&2
|
||||
# done
|
||||
@ -305,12 +291,12 @@ groupDir="${WM_PROJECT_SITE:-$prefixDir/site}"
|
||||
# Define the various places to be searched:
|
||||
unset dirList
|
||||
case "$optMode" in (*u*) # (U)ser
|
||||
dirList="$dirList $userDir/$projectVersion $userDir"
|
||||
dirList="$dirList $userDir/$projectApi $userDir"
|
||||
;;
|
||||
esac
|
||||
|
||||
case "$optMode" in (*g*) # (G)roup == site
|
||||
dirList="$dirList $groupDir/$projectVersion/etc $groupDir/etc"
|
||||
dirList="$dirList $groupDir/$projectApi/etc $groupDir/etc"
|
||||
;;
|
||||
esac
|
||||
|
||||
|
||||
145
bin/foamExec
145
bin/foamExec
@ -1,145 +0,0 @@
|
||||
#!/bin/bash
|
||||
#------------------------------------------------------------------------------
|
||||
# ========= |
|
||||
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
# \\ / O peration |
|
||||
# \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
|
||||
# \\/ M anipulation | Copyright (C) 2018 OpenCFD Ltd.
|
||||
#-------------------------------------------------------------------------------
|
||||
# License
|
||||
# This file is part of OpenFOAM.
|
||||
#
|
||||
# OpenFOAM is free software: you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
# for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# Script
|
||||
# foamExec
|
||||
#
|
||||
# Description
|
||||
# Usage: foamExec [-version=foamVersion] <foamCommand> ...
|
||||
#
|
||||
# Runs the <foamVersion> version of executable <foamCommand>
|
||||
# with the rest of the arguments.
|
||||
#
|
||||
# Can also be used for parallel runs. For example,
|
||||
# \code
|
||||
# mpirun -np <nProcs> \
|
||||
# foamExec -version=VERSION <foamCommand> ... -parallel
|
||||
# \endcode
|
||||
#
|
||||
# Note
|
||||
# This script must exist in $WM_PROJECT_INST_DIR/OpenFOAM-<VERSION>/bin
|
||||
# or $WM_PROJECT_INST_DIR/openfoam<VERSION>/bin (debian)
|
||||
#
|
||||
# foamEtcFile located in the same directory as this script
|
||||
#
|
||||
# See also
|
||||
# foamEtcFile
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
usage() {
|
||||
exec 1>&2
|
||||
while [ "$#" -ge 1 ]; do echo "$1"; shift; done
|
||||
cat<<USAGE
|
||||
|
||||
Usage: ${0##*/} [OPTION] <application> ...
|
||||
|
||||
options:
|
||||
-mode=MODE Any combination of u(user), g(group), o(other)
|
||||
-prefix=DIR Specify an alternative installation prefix
|
||||
pass through to foamEtcFile
|
||||
-version=VER Specify alternative OpenFOAM version (eg, 3.0, 1612, ...)
|
||||
pass through to foamEtcFile
|
||||
-help Print the usage
|
||||
|
||||
Run a particular OpenFOAM version of <APPLICATION>
|
||||
|
||||
USAGE
|
||||
exit 1
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
binDir="${0%/*}" # The bin dir
|
||||
projectDir="${binDir%/bin}" # The project dir
|
||||
# prefixDir="${projectDir%/*}" # The prefix dir (same as $WM_PROJECT_INST_DIR)
|
||||
|
||||
projectVersion="${WM_PROJECT_VERSION:-unknown}"
|
||||
|
||||
unset etcOpts
|
||||
# parse options
|
||||
while [ "$#" -gt 0 ]
|
||||
do
|
||||
case "$1" in
|
||||
-h | -help*)
|
||||
usage
|
||||
;;
|
||||
-mode=*)
|
||||
etcOpts="$etcOpts $1" # pass-thru to foamEtcFile
|
||||
;;
|
||||
-prefix=/*)
|
||||
etcOpts="$etcOpts $1" # pass-thru to foamEtcFile
|
||||
;;
|
||||
-version=*)
|
||||
etcOpts="$etcOpts $1" # pass-thru to foamEtcFile
|
||||
projectVersion="${1#*=}" # for reporting
|
||||
;;
|
||||
-m | -mode)
|
||||
[ "$#" -ge 2 ] || usage "'$1' option requires an argument"
|
||||
etcOpts="$etcOpts $1 $2" # pass-thru to foamEtcFile
|
||||
shift
|
||||
;;
|
||||
-p | -prefix)
|
||||
[ "$#" -ge 2 ] || usage "'$1' option requires an argument"
|
||||
etcOpts="$etcOpts $1 $2" # pass-thru to foamEtcFile
|
||||
shift
|
||||
;;
|
||||
-v | -version)
|
||||
[ "$#" -ge 2 ] || usage "'$1' option requires an argument"
|
||||
etcOpts="$etcOpts $1 $2" # pass-thru to foamEtcFile
|
||||
projectVersion="$2" # for reporting
|
||||
shift
|
||||
;;
|
||||
--)
|
||||
shift
|
||||
break
|
||||
;;
|
||||
-*)
|
||||
usage "invalid option '$1'"
|
||||
;;
|
||||
*)
|
||||
break
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
|
||||
# Find and source the OpenFOAM <etc/bashrc>
|
||||
# placed in function to preserve command-line arguments
|
||||
sourceBashrc()
|
||||
{
|
||||
rcFile="$($binDir/foamEtcFile $etcOpts bashrc)" || {
|
||||
echo "Error: bashrc file could not be found for OpenFOAM-$projectVersion" 1>&2
|
||||
exit 2
|
||||
}
|
||||
|
||||
. $rcFile $FOAM_SETTINGS
|
||||
}
|
||||
|
||||
|
||||
[ "$#" -ge 1 ] || usage "no application specified"
|
||||
|
||||
sourceBashrc
|
||||
exec "$@"
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
@ -297,9 +297,7 @@ reportExecutable()
|
||||
|
||||
checkOpenFOAMEnvironment()
|
||||
{
|
||||
[ -d "$WM_PROJECT_INST_DIR" ] && \
|
||||
[ -d "$WM_PROJECT_DIR" ] && \
|
||||
[ -d "$WM_THIRD_PARTY_DIR" ] || {
|
||||
[ -d "$WM_PROJECT_DIR" ] && [ -d "$WM_THIRD_PARTY_DIR" ] || {
|
||||
echo ""
|
||||
echo "FATAL ERROR: OpenFOAM environment not configured."
|
||||
echo ""
|
||||
@ -389,7 +387,6 @@ COL5="Crit"
|
||||
hline
|
||||
echo "$COL1 $COL2 $COL3 $COL5"
|
||||
hline
|
||||
reportEnv '$WM_PROJECT_INST_DIR' noPath yes
|
||||
reportEnv '$WM_PROJECT_USER_DIR' noPath no
|
||||
reportEnv '$WM_THIRD_PARTY_DIR' noPath yes
|
||||
hline
|
||||
@ -415,11 +412,12 @@ hline
|
||||
reportEnv '$FOAM_LIBBIN' '$LD_LIBRARY_PATH' yes
|
||||
reportEnv '$FOAM_SITE_LIBBIN' '$LD_LIBRARY_PATH' no
|
||||
reportEnv '$FOAM_USER_LIBBIN' '$LD_LIBRARY_PATH' no
|
||||
reportEnv '$FOAM_EXT_LIBBIN' '$LD_LIBRARY_PATH' maybe
|
||||
reportEnv '$MPI_ARCH_PATH' '$LD_LIBRARY_PATH' yes
|
||||
hline
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
heading "Third-party software"
|
||||
heading "Software Components"
|
||||
hline
|
||||
echo "$(fixlen Software 9) $(fixlen Version 10) $(fixlen Location 10)"
|
||||
hline
|
||||
|
||||
23
bin/foamLog
23
bin/foamLog
@ -28,11 +28,16 @@
|
||||
# Description
|
||||
# Extract data for each time-step from a log file for graphing.
|
||||
#
|
||||
# Environment
|
||||
# WM_PROJECT_API
|
||||
# WM_PROJECT_DIR
|
||||
# WM_PROJECT_SITE
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
Script=${0##*/}
|
||||
toolsDir=${0%/*}/tools
|
||||
siteDir="${WM_PROJECT_SITE:-${WM_PROJECT_DIR:-<unknown>}/site}"
|
||||
userDir=$HOME/.OpenFOAM
|
||||
Script="${0##*/}"
|
||||
toolsDir="${0%/*}/tools"
|
||||
groupDir="${WM_PROJECT_SITE:-${WM_PROJECT_DIR:-<unknown>}/site}"
|
||||
userDir="$HOME/.OpenFOAM"
|
||||
|
||||
usage() {
|
||||
exec 1>&2
|
||||
@ -85,11 +90,11 @@ cat <<HELP
|
||||
|
||||
The database ($Script.db) will taken from these locations:
|
||||
.
|
||||
$userDir/$WM_PROJECT_VERSION
|
||||
$userDir
|
||||
$siteDir/$WM_PROJECT_VERSION
|
||||
$siteDir
|
||||
$WM_PROJECT_DIR/etc
|
||||
$userDir/$WM_PROJECT_API/
|
||||
$userDir/
|
||||
$groupDir/$WM_PROJECT_API/etc/
|
||||
$groupDir/etc/
|
||||
$WM_PROJECT_DIR/etc/
|
||||
$toolsDir
|
||||
|
||||
option -quiet : suppresses the default information and only prints the
|
||||
|
||||
@ -4,7 +4,7 @@
|
||||
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
# \\ / O peration |
|
||||
# \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
|
||||
# \\/ M anipulation |
|
||||
# \\/ M anipulation | Copyright (C) 2018 OpenCFD Ltd.
|
||||
#-------------------------------------------------------------------------------
|
||||
# License
|
||||
# This file is part of OpenFOAM.
|
||||
@ -29,10 +29,15 @@
|
||||
# Create a new case from a template for particular applications
|
||||
# - requires rsync
|
||||
#
|
||||
# Environment
|
||||
# WM_PROJECT_API
|
||||
# WM_PROJECT_DIR
|
||||
# WM_PROJECT_SITE
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
siteDir="${WM_PROJECT_SITE:-${WM_PROJECT_DIR:-<unknown>}/site}"
|
||||
groupDir="${WM_PROJECT_SITE:-${WM_PROJECT_DIR:-<unknown>}/site}"
|
||||
userDir="$HOME/.OpenFOAM"
|
||||
version="${WM_PROJECT_VERSION:-unknown}"
|
||||
projectApi="${WM_PROJECT_API:-unknown}"
|
||||
|
||||
templateDir="appTemplates"
|
||||
|
||||
@ -44,20 +49,22 @@ usage() {
|
||||
|
||||
Usage: ${0##*/} [OPTION]
|
||||
options:
|
||||
-app <name> specify the application to use
|
||||
-case <dir> specify alternative case directory, default is the cwd
|
||||
-app NAME specify the application to use
|
||||
-case DIR specify alternative case directory, default is the cwd
|
||||
-list list the applications available
|
||||
-version <ver> specify an alternative version (default: '$WM_PROJECT_VERSION')
|
||||
-with-api=NUM specify alternative api to use (default: \$WM_PROJECT_API)
|
||||
-version VER [obsolete]
|
||||
-help Print the usage
|
||||
|
||||
clone initial application settings to the specified case from
|
||||
$userDir/$templateDir/{$version,}/<APP>
|
||||
$siteDir/$templateDir/{$version,}/<APP>
|
||||
$userDir/$templateDir/{$projectApi,}/APP
|
||||
$groupDir/$templateDir/{$projectApi,}/APP
|
||||
|
||||
USAGE
|
||||
exit 1
|
||||
}
|
||||
#------------------------------------------------------------------------------
|
||||
unset appName caseName listOpt
|
||||
unset appName caseName optList
|
||||
|
||||
# parse options
|
||||
while [ "$#" -gt 0 ]
|
||||
@ -69,21 +76,23 @@ do
|
||||
-app)
|
||||
[ "$#" -ge 2 ] || usage "'$1' option requires an argument"
|
||||
appName="$2"
|
||||
shift 2
|
||||
shift
|
||||
;;
|
||||
-case)
|
||||
[ "$#" -ge 2 ] || usage "'$1' option requires an argument"
|
||||
caseName="$2"
|
||||
shift 2
|
||||
shift
|
||||
;;
|
||||
-l | -list)
|
||||
listOpt=true
|
||||
shift
|
||||
optList=true
|
||||
;;
|
||||
-v | -ver | -version)
|
||||
[ "$#" -ge 2 ] || usage "'$1' option requires an argument"
|
||||
version="$2"
|
||||
shift 2
|
||||
echo "ignored defunct option -version" 1>&2
|
||||
shift
|
||||
;;
|
||||
-with-api=*)
|
||||
projectApi="${1#*=}"
|
||||
;;
|
||||
-*)
|
||||
usage "unknown option: '$*'"
|
||||
@ -92,19 +101,16 @@ do
|
||||
usage "unexpected argument: '$*'"
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
# need rsync, except for when listing
|
||||
type rsync >/dev/null 2>&1 || [ "$listOpt" = true ] || usage "Error: 'rsync' seems to be missing"
|
||||
command -v rsync >/dev/null 2>&1 || \
|
||||
[ "$optList" = true ] || usage "Error: 'rsync' seems to be missing"
|
||||
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
[ -n "$version" ] || {
|
||||
echo "Error: no -version specified and \$WM_PROJECT_VERSION is not set"
|
||||
exit 1
|
||||
}
|
||||
|
||||
#
|
||||
# find apps in current directory
|
||||
# considered an app if it has constant/ and system/ directories
|
||||
@ -113,18 +119,23 @@ findApps()
|
||||
{
|
||||
for app in $(/bin/ls -d * 2>/dev/null)
|
||||
do
|
||||
[ -d "$app/constant" -a -d "$app/system" ] && echo $app
|
||||
[ -d "$app/constant" -a -d "$app/system" ] && echo "$app"
|
||||
done
|
||||
}
|
||||
|
||||
|
||||
appList=$(
|
||||
for dir in $userDir/$templateDir $siteDir/$templateDir
|
||||
for dir in "$userDir/$templateDir" "$groupDir/$templateDir"
|
||||
do
|
||||
if cd $dir 2>/dev/null
|
||||
if cd "$dir" 2>/dev/null
|
||||
then
|
||||
findApps ## generic
|
||||
cd $version 2>/dev/null && findApps ## version-specific
|
||||
|
||||
## version-specific
|
||||
if [ -n "$projectApi" ]
|
||||
then
|
||||
cd "$projectApi" 2>/dev/null && findApps
|
||||
fi
|
||||
fi
|
||||
done | sort | uniq
|
||||
)
|
||||
@ -142,7 +153,7 @@ listApps()
|
||||
}
|
||||
|
||||
|
||||
if [ "$listOpt" = true ]
|
||||
if [ "$optList" = true ]
|
||||
then
|
||||
listApps
|
||||
exit 0
|
||||
@ -160,11 +171,11 @@ fi
|
||||
|
||||
# get the corresponding srcDir name
|
||||
srcDir=$(
|
||||
for dir in $userDir/$templateDir $siteDir/$templateDir
|
||||
for dir in "$userDir/$templateDir" "$groupDir/$templateDir"
|
||||
do
|
||||
if [ -d $dir ]
|
||||
then
|
||||
for appDir in $dir/$version/$appName $dir/$appName
|
||||
for appDir in "$dir/$projectApi/$appName" "$dir/$appName"
|
||||
do
|
||||
if [ -d $appDir -a -d $appDir/constant -a -d $appDir/system ]
|
||||
then
|
||||
@ -211,21 +222,6 @@ echo " syncing ..."
|
||||
# sync updated files only, itemize changes so we know what is going on
|
||||
rsync -aui $srcDir/ $newDir
|
||||
|
||||
|
||||
#
|
||||
# reuse or create new FOAM_SETTINGS (useful for queuing systems)
|
||||
#
|
||||
if [ -e "$newDir/FOAM_SETTINGS" ]
|
||||
then
|
||||
echo " retaining FOAM_SETTINGS"
|
||||
else
|
||||
echo " creating FOAM_SETTINGS"
|
||||
cat << SETTINGS > "$newDir/FOAM_SETTINGS"
|
||||
APPLICATION=$appName
|
||||
FOAM_VERSION=OpenFOAM-$version
|
||||
SETTINGS
|
||||
fi
|
||||
|
||||
echo Done
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
@ -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) 2018 OpenCFD Ltd.
|
||||
#------------------------------------------------------------------------------
|
||||
# License
|
||||
# This file is part of OpenFOAM.
|
||||
@ -44,7 +44,7 @@ options:
|
||||
-help print the usage
|
||||
|
||||
Updates the header of application files and removes consecutive blank lines.
|
||||
By default, writes current OpenFOAM version in the header.
|
||||
By default, writes current OpenFOAM API number version in the header.
|
||||
An alternative version can be specified with the -version option.
|
||||
|
||||
USAGE
|
||||
@ -74,8 +74,12 @@ do
|
||||
esac
|
||||
done
|
||||
|
||||
# constant width for version - default to WM_PROJECT_VERSION
|
||||
version=$(printf %-36s ${version:-$WM_PROJECT_VERSION})
|
||||
# Constant width for version - default to WM_PROJECT_API
|
||||
|
||||
: ${version:=$WM_PROJECT_API}
|
||||
: ${version:=$WM_PROJECT_VERSION}
|
||||
|
||||
version=$(printf %-36s ${version:-OPENFOAM})
|
||||
|
||||
[ $# -ge 1 ] || usage
|
||||
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
# ========= |
|
||||
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
# \\ / O peration |
|
||||
# \\ / A nd | Copyright (C) 2017 OpenCFD Ltd.
|
||||
# \\ / A nd | Copyright (C) 2017-2018 OpenCFD Ltd.
|
||||
# \\/ M anipulation |
|
||||
#------------------------------------------------------------------------------
|
||||
# License
|
||||
@ -25,7 +25,7 @@
|
||||
# . change-sitedir.sh PREFIX [SUFFIX]
|
||||
#
|
||||
# Shortcuts (prefix)
|
||||
# -prefix "$WM_PROJECT_INST_DIR/site"
|
||||
# -prefix "$WM_PROJECT_DIR/../site"
|
||||
# -project "$WM_PROJECT_DIR/site"
|
||||
# -none remove from environment
|
||||
#
|
||||
@ -46,7 +46,7 @@
|
||||
#
|
||||
# corresponds to the standard site location:
|
||||
#
|
||||
# $WM_PROJECT_DIR/site{/$WM_PROJECT_VERSION/platforms/$WM_OPTIONS}
|
||||
# $WM_PROJECT_DIR/site{/$WM_PROJECT_API/platforms/$WM_OPTIONS}
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
@ -56,7 +56,7 @@ then
|
||||
suffix="$2"
|
||||
|
||||
foamOldDirs="$FOAM_SITE_APPBIN $FOAM_SITE_LIBBIN \
|
||||
$WM_PROJECT_SITE $WM_PROJECT_INST_DIR/site $WM_PROJECT_DIR/site"
|
||||
$WM_PROJECT_SITE $WM_PROJECT_DIR/site"
|
||||
foamClean=$WM_PROJECT_DIR/bin/foamCleanPath
|
||||
if [ -x "$foamClean" ]
|
||||
then
|
||||
@ -66,12 +66,12 @@ then
|
||||
fi
|
||||
|
||||
case "$suffix" in
|
||||
-plat*) suffix="platforms/$WM_OPTIONS" ;;
|
||||
-plat*) suffix="platforms/$WM_OPTIONS" ;;
|
||||
esac
|
||||
case "$prefix" in
|
||||
-prefix) prefix="$WM_PROJECT_INST_DIR/site" ;;
|
||||
-project) prefix="$WM_PROJECT_DIR/site" ;;
|
||||
-none) unset prefix ;;
|
||||
-prefix) prefix="${WM_PROJECT_DIR%/*}/site" ;;
|
||||
-project) prefix="$WM_PROJECT_DIR/site" ;;
|
||||
-none) unset prefix ;;
|
||||
esac
|
||||
|
||||
if [ -n "$prefix" ]
|
||||
|
||||
@ -69,8 +69,8 @@ then
|
||||
-plat*) suffix="platforms/$WM_OPTIONS" ;;
|
||||
esac
|
||||
case "$prefix" in
|
||||
-home) prefix="$HOME/OpenFOAM/$USER-${WM_PROJECT_VERSION:-unknown}" ;;
|
||||
-none) unset prefix ;;
|
||||
-home) prefix="$HOME/OpenFOAM/$USER-${WM_PROJECT_VERSION:-unknown}" ;;
|
||||
-none) unset prefix ;;
|
||||
esac
|
||||
|
||||
if [ -n "$prefix" ]
|
||||
|
||||
@ -25,9 +25,8 @@ usage() {
|
||||
usage: ${0##*/} options
|
||||
|
||||
Basic
|
||||
-prefix DIR specify installation directory (eg, /opt)
|
||||
-version VER specify project version (eg, 1612)
|
||||
-projectName NAME specify project directory name (eg, openfoam1612)
|
||||
-project-path DIR specify 'WM_PROJECT_DIR' (eg, /opt/openfoam1806-patch1)
|
||||
-version VER specify project version (eg, v1806)
|
||||
-archOption 32|64 specify 'WM_ARCH_OPTION' architecture option
|
||||
-SP | -float32 specify 'WM_PRECISION_OPTION' for single precision
|
||||
-DP | -float64 specify 'WM_PRECISION_OPTION' for double precision
|
||||
@ -61,31 +60,26 @@ Components
|
||||
-metis ver specify 'METIS_VERSION'
|
||||
-metis-path DIR specify 'METIS_ARCH_PATH'
|
||||
-scotch VER specify 'SCOTCH_VERSION' (eg, scotch_6.0.4)
|
||||
-scotch-path DIR specify 'SCOTCH_ARCH_PATH' (eg, /opt/OpenFOAM-scotch_6.0.4)
|
||||
-scotch-path DIR specify 'SCOTCH_ARCH_PATH' (eg, /opt/scotch_6.0.4)
|
||||
|
||||
Graphics
|
||||
-paraview VER specify 'ParaView_VERSION' (eg, 5.4.1)
|
||||
-paraview-qt VER specify 'ParaView_QT' (eg, qt-system)
|
||||
-paraview-path DIR specify 'ParaView_DIR' (eg, /opt/ParaView-5.4.1)
|
||||
-vtk VER specify 'vtk_version' (eg, VTK-7.1.0)
|
||||
-mesa VER specify 'mesa_version' (eg, mesa-13.0.1)
|
||||
|
||||
Misc
|
||||
-default-third default ThirdParty location: PREFIX/ThirdParty-VERSION
|
||||
-no-third use PROJECT/ThirdParty for ThirdParty location
|
||||
-third-path DIR specify 'WM_THIRD_PARTY_DIR'
|
||||
-default-site set PREFIX/site as fallback for WM_PROJECT_SITE
|
||||
-no-site use PROJECT/site as fallback for WM_PROJECT_SITE
|
||||
|
||||
-sigfpe | -no-sigfpe [defunct - now under etc/controlDict]
|
||||
-foamInstall DIR [obsolete]
|
||||
-projectName NAME [obsolete]
|
||||
-sigfpe|-no-sigfpe [obsolete - now under etc/controlDict]
|
||||
|
||||
|
||||
Adjusts hardcoded versions and installation paths (for bash, POSIX shell).
|
||||
|
||||
|
||||
Equivalent options:
|
||||
-prefix -foamInstall --foamInstall
|
||||
-version -foamVersion --projectVersion
|
||||
-projectName --projectName
|
||||
-version -foamVersion --projectVersion
|
||||
-archOption --archOption
|
||||
-third -ThirdParty
|
||||
-paraview --paraviewVersion | -paraviewVersion
|
||||
@ -186,6 +180,31 @@ replace()
|
||||
done
|
||||
}
|
||||
|
||||
# Standard <key> <val> type of replacements.
|
||||
# replace <file> <key1> <val1> .. <keyN> <valN>
|
||||
# looks for "setenv KEYWORD value"
|
||||
# but avoids "setenv KEYWORD" without a value
|
||||
replaceCsh()
|
||||
{
|
||||
local file="$1"
|
||||
shift
|
||||
|
||||
local key val
|
||||
|
||||
while [ "$#" -ge 2 ]
|
||||
do
|
||||
key=$1
|
||||
val=$2
|
||||
shift 2
|
||||
|
||||
_inlineSed \
|
||||
"$file" \
|
||||
"setenv *$key [^ #]*" \
|
||||
"setenv $key $val" \
|
||||
"Replaced $key setenv by '$val'"
|
||||
done
|
||||
}
|
||||
|
||||
# Get the option's value (argument).
|
||||
# Die if the argument doesn't exist or is empty
|
||||
# $1 option
|
||||
@ -196,13 +215,14 @@ getOptionValue()
|
||||
echo "$2"
|
||||
}
|
||||
|
||||
# Remove BASH_SOURCE and FOAM_INST_DIR=... magic that looks like this:
|
||||
|
||||
# Remove BASH_SOURCE and projectDir=... magic that looks like this:
|
||||
# ----
|
||||
# variable=$BASH_SOURCE
|
||||
# [ -n "$variable" ] && FOAM_INST_DIR= ...
|
||||
# FOAM_INST_DIR=...
|
||||
# projectDir=$BASH_SOURCE
|
||||
# [ -n "$projectDir" ] && projectDir= ...
|
||||
# projectDir=...
|
||||
# ----
|
||||
removeMagic()
|
||||
removeBashMagic()
|
||||
{
|
||||
local file="$1"
|
||||
|
||||
@ -211,10 +231,33 @@ removeMagic()
|
||||
exit 2 # Fatal
|
||||
}
|
||||
|
||||
echo " Remove default FOAM_INST_DIR setting ($file)"
|
||||
echo " Remove automatic projectDir setting ($file)"
|
||||
|
||||
sed -i \
|
||||
-e '/^ *#/!{/\(BASH_SOURCE\|FOAM_INST_DIR=\)/s/^/##IGNORE## /}' \
|
||||
-e '/^ *#/!{/\(BASH_SOURCE\|projectDir=\)/s/^/##IGNORE## /}' \
|
||||
"$file"
|
||||
}
|
||||
|
||||
|
||||
# Remove set projectName=, set projectDir= magic that looks like this:
|
||||
# ----
|
||||
# set projectName="$WM_PROJECT"
|
||||
# set projectDir=`lsof +p $$ |& \
|
||||
# sed -n -e 's@^[^/]*@@; s@\(/'"$projectName"'[^/]*\)/etc/cshrc[^/]*@\1@p'`
|
||||
# ----
|
||||
removeCshMagic()
|
||||
{
|
||||
local file="$1"
|
||||
|
||||
[ -f "$file" ] || {
|
||||
echo "Missing file: $file"
|
||||
exit 2 # Fatal
|
||||
}
|
||||
|
||||
echo " Remove automatic projectDir setting ($file)"
|
||||
|
||||
sed -i \
|
||||
-e '/^ *#/!{\@\(projectName=\|projectDir=\|/etc/cshrc\)@s/^/##IGNORE## /}' \
|
||||
"$file"
|
||||
}
|
||||
|
||||
@ -235,23 +278,15 @@ do
|
||||
|
||||
## Basic ##
|
||||
|
||||
-prefix | -foamInstall | --foamInstall)
|
||||
# Replace WM_PROJECT_INST_DIR, disable FOAM_INST_DIR discovery
|
||||
-project-path)
|
||||
# Replace WM_PROJECT_DIR=...
|
||||
optionValue=$(getOptionValue "$@")
|
||||
removeMagic etc/bashrc
|
||||
replace etc/bashrc WM_PROJECT_INST_DIR "$optionValue"
|
||||
adjusted=true
|
||||
shift
|
||||
;;
|
||||
replace etc/bashrc WM_PROJECT_DIR "\"$optionValue\""
|
||||
replaceCsh etc/cshrc WM_PROJECT_DIR "\"$optionValue\""
|
||||
|
||||
removeBashMagic etc/bashrc
|
||||
removeCshMagic etc/cshrc
|
||||
|
||||
-projectName | --projectName)
|
||||
# Replace basename part of WM_PROJECT_DIR=...
|
||||
optionValue=$(getOptionValue "$@")
|
||||
_inlineSed \
|
||||
etc/bashrc \
|
||||
'WM_PROJECT_DIR=.*' \
|
||||
'WM_PROJECT_DIR=$WM_PROJECT_INST_DIR/'"$optionValue" \
|
||||
"Replaced WM_PROJECT_DIR basename by $optionValue"
|
||||
adjusted=true
|
||||
shift
|
||||
;;
|
||||
@ -259,7 +294,8 @@ do
|
||||
-version | -foamVersion | --projectVersion)
|
||||
# Replace WM_PROJECT_VERSION=...
|
||||
optionValue=$(getOptionValue "$@")
|
||||
replace etc/bashrc WM_PROJECT_VERSION "$optionValue"
|
||||
replace etc/bashrc WM_PROJECT_VERSION "$optionValue"
|
||||
replaceCsh etc/cshrc WM_PROJECT_VERSION "$optionValue"
|
||||
adjusted=true
|
||||
shift
|
||||
;;
|
||||
@ -275,7 +311,8 @@ do
|
||||
echo "WM_ARCH_OPTION already set to $optionValue"
|
||||
: ${adjusted:=false}
|
||||
else
|
||||
replace etc/bashrc WM_ARCH_OPTION "$optionValue"
|
||||
replace etc/bashrc WM_ARCH_OPTION "$optionValue"
|
||||
replaceCsh etc/cshrc WM_ARCH_OPTION "$optionValue"
|
||||
adjusted=true
|
||||
fi
|
||||
shift
|
||||
@ -283,20 +320,23 @@ do
|
||||
|
||||
-SP | -float32)
|
||||
# Replace WM_PRECISION_OPTION=...
|
||||
replace etc/bashrc WM_PRECISION_OPTION "SP"
|
||||
replace etc/bashrc WM_PRECISION_OPTION "SP"
|
||||
replaceCsh etc/cshrc WM_PRECISION_OPTION "SP"
|
||||
adjusted=true
|
||||
;;
|
||||
|
||||
-DP | -float64)
|
||||
# Replace WM_PRECISION_OPTION=...
|
||||
replace etc/bashrc WM_PRECISION_OPTION "DP"
|
||||
replace etc/bashrc WM_PRECISION_OPTION "DP"
|
||||
replaceCsh etc/cshrc WM_PRECISION_OPTION "DP"
|
||||
adjusted=true
|
||||
;;
|
||||
|
||||
-int32 | -int64)
|
||||
# Replace WM_LABEL_SIZE=...
|
||||
optionValue="${1#-int}"
|
||||
replace etc/bashrc WM_LABEL_SIZE "$optionValue"
|
||||
replace etc/bashrc WM_LABEL_SIZE "$optionValue"
|
||||
replaceCsh etc/cshrc WM_LABEL_SIZE "$optionValue"
|
||||
adjusted=true
|
||||
;;
|
||||
|
||||
@ -306,7 +346,8 @@ do
|
||||
-clang)
|
||||
# Replace clang_version=...
|
||||
optionValue=$(getOptionValue "$@")
|
||||
replace etc/config.sh/compiler clang_version "$optionValue"
|
||||
replace etc/config.sh/compiler clang_version "$optionValue"
|
||||
replace etc/config.csh/compiler clang_version "$optionValue"
|
||||
adjusted=true
|
||||
shift
|
||||
;;
|
||||
@ -314,7 +355,8 @@ do
|
||||
-gcc)
|
||||
# Replace gcc_version=...
|
||||
optionValue=$(getOptionValue "$@")
|
||||
replace etc/config.sh/compiler gcc_version "$optionValue"
|
||||
replace etc/config.sh/compiler gcc_version "$optionValue"
|
||||
replace etc/config.csh/compiler gcc_version "$optionValue"
|
||||
adjusted=true
|
||||
shift
|
||||
;;
|
||||
@ -325,6 +367,9 @@ do
|
||||
replace etc/bashrc \
|
||||
WM_COMPILER_TYPE system \
|
||||
WM_COMPILER "$optionValue"
|
||||
replaceCsh etc/cshrc \
|
||||
WM_COMPILER_TYPE system \
|
||||
WM_COMPILER "$optionValue"
|
||||
adjusted=true
|
||||
shift
|
||||
;;
|
||||
@ -335,25 +380,31 @@ do
|
||||
replace etc/bashrc \
|
||||
WM_COMPILER_TYPE ThirdParty \
|
||||
WM_COMPILER "$optionValue"
|
||||
replaceCsh etc/cshrc \
|
||||
WM_COMPILER_TYPE ThirdParty \
|
||||
WM_COMPILER "$optionValue"
|
||||
adjusted=true
|
||||
shift
|
||||
;;
|
||||
|
||||
gmp-[4-9]* | gmp-system)
|
||||
# gcc-related package
|
||||
replace etc/config.sh/compiler gmp_version "$1"
|
||||
replace etc/config.sh/compiler gmp_version "$1"
|
||||
replace etc/config.csh/compiler gmp_version "$1"
|
||||
adjusted=true
|
||||
;;
|
||||
|
||||
mpfr-[2-9]* | mpfr-system)
|
||||
# gcc-related package
|
||||
replace etc/config.sh/compiler mpfr_version "$1"
|
||||
replace etc/config.sh/compiler mpfr_version "$1"
|
||||
replace etc/config.csh/compiler mpfr_version "$1"
|
||||
adjusted=true
|
||||
;;
|
||||
|
||||
mpc-[0-9]* | mpc-system)
|
||||
# gcc-related package
|
||||
replace etc/config.sh/compiler mpc_version "$1"
|
||||
replace etc/config.sh/compiler mpc_version "$1"
|
||||
replace etc/config.csh/compiler mpc_version "$1"
|
||||
adjusted=true
|
||||
;;
|
||||
|
||||
@ -363,7 +414,8 @@ do
|
||||
-mpi)
|
||||
# Explicitly set WM_MPLIB=...
|
||||
optionValue=$(getOptionValue "$@")
|
||||
replace etc/bashrc WM_MPLIB "$optionValue"
|
||||
replace etc/bashrc WM_MPLIB "$optionValue"
|
||||
replaceCsh etc/bashrc WM_MPLIB "$optionValue"
|
||||
optMpi=system
|
||||
adjusted=true
|
||||
shift
|
||||
@ -383,21 +435,29 @@ do
|
||||
"FOAM_MPI=$optMpi" \
|
||||
"Replaced 'FOAM_MPI=$expected' setting by 'FOAM_MPI=$optMpi'"
|
||||
|
||||
replace etc/bashrc WM_MPLIB OPENMPI
|
||||
_inlineSed etc/config.csh/mpi \
|
||||
"FOAM_MPI $expected" \
|
||||
"FOAM_MPI $optMpi" \
|
||||
"Replaced 'FOAM_MPI $expected' setting by 'FOAM_MPI $optMpi'"
|
||||
|
||||
replace etc/bashrc WM_MPLIB OPENMPI
|
||||
replaceCsh etc/cshrc WM_MPLIB OPENMPI
|
||||
adjusted=true
|
||||
shift
|
||||
;;
|
||||
|
||||
-openmpi-system)
|
||||
# Explicitly set WM_MPLIB=SYSTEMOPENMPI
|
||||
replace etc/bashrc WM_MPLIB SYSTEMOPENMPI
|
||||
replace etc/bashrc WM_MPLIB SYSTEMOPENMPI
|
||||
replaceCsh etc/cshrc WM_MPLIB SYSTEMOPENMPI
|
||||
optMpi=system
|
||||
adjusted=true
|
||||
;;
|
||||
|
||||
-openmpi-third)
|
||||
# Explicitly set WM_MPLIB=OPENMPI, using default setting for openmpi
|
||||
replace etc/bashrc WM_MPLIB OPENMPI
|
||||
replace etc/bashrc WM_MPLIB OPENMPI
|
||||
replaceCsh etc/cshrc WM_MPLIB OPENMPI
|
||||
optMpi=third
|
||||
adjusted=true
|
||||
;;
|
||||
@ -408,7 +468,8 @@ do
|
||||
-boost)
|
||||
# Replace boost_version=...
|
||||
optionValue=$(getOptionValue "$@")
|
||||
replace etc/config.sh/CGAL boost_version "$optionValue"
|
||||
replace etc/config.sh/CGAL boost_version "$optionValue"
|
||||
replace etc/config.csh/CGAL boost_version "$optionValue"
|
||||
adjusted=true
|
||||
shift
|
||||
;;
|
||||
@ -416,7 +477,8 @@ do
|
||||
-boost-path)
|
||||
# Replace BOOST_ARCH_PATH=...
|
||||
optionValue=$(getOptionValue "$@")
|
||||
replace etc/config.sh/CGAL BOOST_ARCH_PATH "$optionValue"
|
||||
replace etc/config.sh/CGAL BOOST_ARCH_PATH "\"$optionValue\""
|
||||
replaceCsh etc/config.csh/CGAL BOOST_ARCH_PATH "\"$optionValue\""
|
||||
adjusted=true
|
||||
shift
|
||||
;;
|
||||
@ -424,7 +486,8 @@ do
|
||||
-cgal)
|
||||
# Replace cgal_version=...
|
||||
optionValue=$(getOptionValue "$@")
|
||||
replace etc/config.sh/CGAL cgal_version "$optionValue"
|
||||
replace etc/config.sh/CGAL cgal_version "$optionValue"
|
||||
replace etc/config.csh/CGAL cgal_version "$optionValue"
|
||||
adjusted=true
|
||||
shift
|
||||
;;
|
||||
@ -432,7 +495,8 @@ do
|
||||
-cgal-path)
|
||||
# Replace CGAL_ARCH_PATH=...
|
||||
optionValue=$(getOptionValue "$@")
|
||||
replace etc/config.sh/CGAL CGAL_ARCH_PATH "$optionValue"
|
||||
replace etc/config.sh/CGAL CGAL_ARCH_PATH "$optionValue"
|
||||
replaceCsh etc/config.csh/CGAL CGAL_ARCH_PATH "$optionValue"
|
||||
adjusted=true
|
||||
shift
|
||||
;;
|
||||
@ -440,7 +504,8 @@ do
|
||||
-fftw)
|
||||
# Replace fftw_version=...
|
||||
optionValue=$(getOptionValue "$@")
|
||||
replace etc/config.sh/FFTW fftw_version "$optionValue"
|
||||
replace etc/config.sh/FFTW fftw_version "$optionValue"
|
||||
replace etc/config.csh/FFTW fftw_version "$optionValue"
|
||||
adjusted=true
|
||||
shift
|
||||
;;
|
||||
@ -448,7 +513,8 @@ do
|
||||
-fftw-path)
|
||||
# Replace FFTW_ARCH_PATH=...
|
||||
optionValue=$(getOptionValue "$@")
|
||||
replace etc/config.sh/FFTW FFTW_ARCH_PATH "$optionValue"
|
||||
replace etc/config.sh/FFTW FFTW_ARCH_PATH "\"$optionValue\""
|
||||
replaceCsh etc/config.csh/FFTW FFTW_ARCH_PATH "\"$optionValue\""
|
||||
adjusted=true
|
||||
shift
|
||||
;;
|
||||
@ -456,7 +522,8 @@ do
|
||||
-cmake)
|
||||
# Replace cmake_version=...
|
||||
optionValue=$(getOptionValue "$@")
|
||||
replace etc/config.sh/paraview cmake_version "$optionValue"
|
||||
replace etc/config.sh/paraview cmake_version "$optionValue"
|
||||
replace etc/config.csh/paraview cmake_version "$optionValue"
|
||||
adjusted=true
|
||||
shift
|
||||
;;
|
||||
@ -472,7 +539,7 @@ do
|
||||
-kahip-path)
|
||||
# Replace KAHIP_ARCH_PATH=...
|
||||
optionValue=$(getOptionValue "$@")
|
||||
replace etc/config.sh/kahip KAHIP_ARCH_PATH "$optionValue"
|
||||
replace etc/config.sh/kahip KAHIP_ARCH_PATH "\"$optionValue\""
|
||||
adjusted=true
|
||||
shift
|
||||
;;
|
||||
@ -488,7 +555,7 @@ do
|
||||
-metis-path)
|
||||
# Replace METIS_ARCH_PATH=...
|
||||
optionValue=$(getOptionValue "$@")
|
||||
replace etc/config.sh/metis METIS_ARCH_PATH "$optionValue"
|
||||
replace etc/config.sh/metis METIS_ARCH_PATH "\"$optionValue\""
|
||||
adjusted=true
|
||||
shift
|
||||
;;
|
||||
@ -504,7 +571,7 @@ do
|
||||
-scotch-path | -scotchArchPath | --scotchArchPath)
|
||||
# Replace SCOTCH_ARCH_PATH=...
|
||||
optionValue=$(getOptionValue "$@")
|
||||
replace etc/config.sh/scotch SCOTCH_ARCH_PATH "$optionValue"
|
||||
replace etc/config.sh/scotch SCOTCH_ARCH_PATH "\"$optionValue\""
|
||||
adjusted=true
|
||||
shift
|
||||
;;
|
||||
@ -519,7 +586,17 @@ do
|
||||
_matches "$optionValue" "$expected" || \
|
||||
die "'$1' has bad value: '$optionValue'"
|
||||
|
||||
replace etc/config.sh/paraview ParaView_VERSION "$optionValue"
|
||||
replace etc/config.sh/paraview ParaView_VERSION "$optionValue"
|
||||
replaceCsh etc/config.csh/paraview ParaView_VERSION "$optionValue"
|
||||
adjusted=true
|
||||
shift
|
||||
;;
|
||||
|
||||
-paraview-qt)
|
||||
# Replace ParaView_QT=...
|
||||
optionValue=$(getOptionValue "$@")
|
||||
replace etc/config.sh/paraview ParaView_QT "$optionValue"
|
||||
replace etc/config.csh/paraview ParaView_QT "$optionValue"
|
||||
adjusted=true
|
||||
shift
|
||||
;;
|
||||
@ -527,7 +604,8 @@ do
|
||||
-paraview-path | -paraviewInstall | --paraviewInstall)
|
||||
# Replace ParaView_DIR=...
|
||||
optionValue=$(getOptionValue "$@")
|
||||
replace etc/config.sh/paraview ParaView_DIR "$optionValue"
|
||||
replace etc/config.sh/paraview ParaView_DIR \""$optionValue\""
|
||||
replaceCsh etc/config.csh/paraview ParaView_DIR \""$optionValue\""
|
||||
adjusted=true
|
||||
shift
|
||||
;;
|
||||
@ -535,7 +613,8 @@ do
|
||||
-vtk)
|
||||
# Replace vtk_version=...
|
||||
optionValue=$(getOptionValue "$@")
|
||||
replace etc/config.sh/vtk vtk_version "$optionValue"
|
||||
replace etc/config.sh/vtk vtk_version "$optionValue"
|
||||
replace etc/config.csh/vtk vtk_version "$optionValue"
|
||||
adjusted=true
|
||||
shift
|
||||
;;
|
||||
@ -543,7 +622,8 @@ do
|
||||
-mesa)
|
||||
# Replace mesa_version=...
|
||||
optionValue=$(getOptionValue "$@")
|
||||
replace etc/config.sh/vtk mesa_version "$optionValue"
|
||||
replace etc/config.sh/vtk mesa_version "$optionValue"
|
||||
replace etc/config.csh/vtk mesa_version "$optionValue"
|
||||
adjusted=true
|
||||
shift
|
||||
;;
|
||||
@ -551,55 +631,17 @@ do
|
||||
|
||||
## Misc ##
|
||||
|
||||
-no-third)
|
||||
# Replace WM_THIRD_PARTY_DIR=... with location within the project dir
|
||||
replace etc/bashrc WM_THIRD_PARTY_DIR '$WM_PROJECT_DIR/ThirdParty'
|
||||
adjusted=true
|
||||
shift
|
||||
;;
|
||||
|
||||
-default-third)
|
||||
# Replace WM_THIRD_PARTY_DIR=... with default location/naming
|
||||
replace etc/bashrc WM_THIRD_PARTY_DIR \
|
||||
'$WM_PROJECT_INST_DIR/ThirdParty-$WM_PROJECT_VERSION'
|
||||
adjusted=true
|
||||
shift
|
||||
;;
|
||||
|
||||
-third-path)
|
||||
# Replace WM_THIRD_PARTY_DIR=...
|
||||
optionValue=$(getOptionValue "$@")
|
||||
replace etc/bashrc WM_THIRD_PARTY_DIR "$optionValue"
|
||||
adjusted=true
|
||||
shift
|
||||
;;
|
||||
|
||||
-no-site)
|
||||
# Replace fallback value for site within the project dir
|
||||
_inlineSed \
|
||||
etc/config.sh/settings \
|
||||
'^ *siteDir=.*\/site' \
|
||||
'siteDir=$WM_PROJECT_DIR/site' \
|
||||
"Setting fallback site-dir '\$WM_PROJECT_DIR/site'"
|
||||
adjusted=true
|
||||
shift
|
||||
;;
|
||||
|
||||
-default-site)
|
||||
# Replace WM_THIRD_PARTY_DIR=... with standard location
|
||||
_inlineSed \
|
||||
etc/config.sh/settings \
|
||||
'^ *siteDir=.*\/site' \
|
||||
'siteDir=$WM_PROJECT_INST_DIR/site' \
|
||||
"Setting fallback site-dir '\$WM_PROJECT_INST_DIR/site'"
|
||||
adjusted=true
|
||||
shift
|
||||
;;
|
||||
|
||||
-sigfpe | -no-sigfpe)
|
||||
echo "Enable/disable FOAM_SIGFPE now via controlDict" 1>&2
|
||||
;;
|
||||
|
||||
-foamInstall | --foamInstall | -projectName | --projectName)
|
||||
# Removed for 1812
|
||||
optionValue=$(getOptionValue "$@")
|
||||
echo "Ignoring obsolete option $1" 1>&2
|
||||
shift
|
||||
;;
|
||||
|
||||
*)
|
||||
die "unknown option/argument: '$1'"
|
||||
;;
|
||||
|
||||
@ -219,7 +219,7 @@ echo "Using openfoam: $WM_PROJECT_DIR" 1>&2
|
||||
echo "==> $moduleOutput" 1>&2
|
||||
|
||||
# Remove some cruft
|
||||
unset FOAM_JOB_DIR FOAM_RUN FOAM_SETTINGS FOAM_INST_DIR
|
||||
unset FOAM_JOB_DIR FOAM_RUN FOAM_SETTINGS FOAM_INST_DIR WM_PROJECT_INST_DIR
|
||||
unset WM_PROJECT_USER_DIR WM_THIRD_PARTY_DIR
|
||||
unset SCOTCH_VERSION
|
||||
|
||||
|
||||
29
etc/README.md
Normal file
29
etc/README.md
Normal file
@ -0,0 +1,29 @@
|
||||
OpenFOAM Configuration
|
||||
----------------------
|
||||
|
||||
The main OpenFOAM settings are located in the parent `etc/` directory.
|
||||
Both POSIX (bash, dash,...) and csh shells are supported.
|
||||
To configure OpenFOAM, source either the `etc/bashrc` or the
|
||||
`etc/cshrc` file, as appropriate for your shell.
|
||||
|
||||
These source the following files in the `config.sh/` or
|
||||
`config.csh/` directories:
|
||||
|
||||
* `setup` : finalize setup of OpenFOAM environment (called by bashrc,cshrc)
|
||||
* `settings` : core settings
|
||||
* `aliases` : aliases for interactive shells
|
||||
* `unset` : sourced to clear as many OpenFOAM environment settings as possible
|
||||
* `mpi` : MPI communications library settings
|
||||
* `ensight` : application settings for EnSight
|
||||
* `paraview` : application settings for ParaView
|
||||
* `scotch` : application settings for compiling against scotch
|
||||
* `metis` : application settings for compiling against metis
|
||||
|
||||
The `config.*/example` directories contain additional example configuration
|
||||
files for the corresponding shell:
|
||||
|
||||
* `compiler` : an example of fine tuning ThirdParty compiler settings
|
||||
* `openmpi` : an example of fine tuning openmpi settings for OpenFOAM
|
||||
* `paraview` : an example of chaining to the standard config/paraview
|
||||
with a different ParaView_VERSION
|
||||
* `prefs`: an example of supplying alternative site-defined settings
|
||||
@ -1,21 +0,0 @@
|
||||
* OpenFOAM Configuration
|
||||
The main OpenFOAM settings are located in the parent etc/ directory. The bash
|
||||
and csh shells are supported and to configure OpenFOAM source etc/bashrc or
|
||||
etc/cshrc respectively which source the following files in the config.sh or
|
||||
config.csh respectively:
|
||||
+ =settings=: core settings
|
||||
+ =aliases=: aliases for interactive shells
|
||||
+ =unset=: sourced to clear as many OpenFOAM environment settings as possible
|
||||
+ =mpi=: MPI communications library settings
|
||||
+ =ensight=: application settings for EnSight
|
||||
+ =paraview=: application settings for ParaView
|
||||
+ =scotch=: application settings for compiling against scotch
|
||||
+ =metis=: application settings for compiling against metis 5
|
||||
|
||||
The config.*/example directories contains various example configuration files
|
||||
for the corresponding shell:
|
||||
+ =compiler=: an example of fine tuning ThirdParty compiler settings
|
||||
+ =openmpi=: an example of fine tuning openmpi settings for OpenFOAM
|
||||
+ =paraview=: an example of chaining to the standard config/paraview with a
|
||||
different ParaView_VERSION
|
||||
+ =prefs=: an example of supplying alternative site-defined settings
|
||||
133
etc/bashrc
133
etc/bashrc
@ -22,9 +22,9 @@
|
||||
# - $WM_PROJECT_DIR/etc/prefs.sh
|
||||
#
|
||||
# - User or group values (first file found):
|
||||
# - ~/.OpenFOAM/$WM_PROJECT_VERSION/prefs.sh
|
||||
# - ~/.OpenFOAM/$WM_PROJECT_API/prefs.sh
|
||||
# - ~/.OpenFOAM/prefs.sh
|
||||
# - $WM_PROJECT_SITE/$WM_PROJECT_VERSION/etc/prefs.sh
|
||||
# - $WM_PROJECT_SITE/$WM_PROJECT_API/etc/prefs.sh
|
||||
# - $WM_PROJECT_SITE/etc/prefs.sh
|
||||
#
|
||||
# Environment
|
||||
@ -43,21 +43,22 @@
|
||||
export WM_PROJECT=OpenFOAM
|
||||
export WM_PROJECT_VERSION=plus
|
||||
|
||||
# [FOAM_INST_DIR] - parent directory containing the OpenFOAM installation.
|
||||
# [projectDir] - directory containing this OpenFOAM version.
|
||||
# \- When this file is located as $WM_PROJECT_DIR/etc/bashrc, the next lines
|
||||
# should work when sourced by BASH or ZSH shells. If this however fails,
|
||||
# set one of the fallback values to an appropriate path.
|
||||
# --
|
||||
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="/opt/$WM_PROJECT"
|
||||
# FOAM_INST_DIR="/usr/local/$WM_PROJECT"
|
||||
#
|
||||
# This can be removed if an absolute path is provided for WM_PROJECT_DIR
|
||||
# later on in this file
|
||||
# --
|
||||
projectDir="${BASH_SOURCE:-${ZSH_NAME:+$0}}";
|
||||
[ -n "$projectDir" ] && projectDir="$(\cd $(dirname $projectDir)/.. && \pwd -L)" ||\
|
||||
projectDir="$HOME/OpenFOAM/OpenFOAM-$WM_PROJECT_VERSION"
|
||||
# projectDir="/opt/OpenFOAM/OpenFOAM-$WM_PROJECT_VERSION"
|
||||
# projectDir="/usr/local/OpenFOAM/OpenFOAM-$WM_PROJECT_VERSION"
|
||||
# END OF (NORMAL) USER EDITABLE PART
|
||||
################################################################################
|
||||
: # Safety statement (if the user removed all fallback values)
|
||||
unset rc
|
||||
|
||||
# Configuration environment variables.
|
||||
# Should override via <prefs.sh> file instead of editing this file.
|
||||
@ -127,113 +128,31 @@ foamOldDirs="$WM_PROJECT_DIR $WM_THIRD_PARTY_DIR \
|
||||
$HOME/$WM_PROJECT/$USER $FOAM_USER_APPBIN $FOAM_USER_LIBBIN \
|
||||
$WM_PROJECT_SITE $FOAM_SITE_APPBIN $FOAM_SITE_LIBBIN"
|
||||
|
||||
# Location of installation and third-party software
|
||||
export WM_PROJECT_INST_DIR=$FOAM_INST_DIR
|
||||
export WM_PROJECT_DIR=$WM_PROJECT_INST_DIR/$WM_PROJECT-$WM_PROJECT_VERSION
|
||||
export WM_THIRD_PARTY_DIR=$WM_PROJECT_INST_DIR/ThirdParty-$WM_PROJECT_VERSION
|
||||
# [WM_PROJECT_DIR] - Location of this OpenFOAM version
|
||||
export WM_PROJECT_DIR="$projectDir"
|
||||
|
||||
# [WM_PROJECT_USER_DIR] - Location of user files
|
||||
export WM_PROJECT_USER_DIR=$HOME/$WM_PROJECT/$USER-$WM_PROJECT_VERSION
|
||||
export WM_PROJECT_USER_DIR="$HOME/$WM_PROJECT/$USER-$WM_PROJECT_VERSION"
|
||||
|
||||
# [WM_PROJECT_SITE] - Location of site-specific (group) files
|
||||
# Default (unset) implies WM_PROJECT_DIR/site
|
||||
# Normally defined in calling environment
|
||||
|
||||
if [ -d "$WM_PROJECT_SITE" ]
|
||||
|
||||
# Finalize setup of OpenFOAM environment for POSIX shell
|
||||
if [ -d "$WM_PROJECT_DIR" ]
|
||||
then
|
||||
export WM_PROJECT_SITE
|
||||
if [ -n "$FOAM_VERBOSE" ] && [ -n "$PS1" ]
|
||||
then
|
||||
echo "source $WM_PROJECT_DIR/etc/config.sh/setup" 1>&2
|
||||
fi
|
||||
. "$WM_PROJECT_DIR/etc/config.sh/setup" "$@"
|
||||
else
|
||||
unset WM_PROJECT_SITE
|
||||
echo "Error: did not locate installation path for $WM_PROJECT-$WM_PROJECT_VERSION" 1>&2
|
||||
echo "No directory: $WM_PROJECT_DIR" 1>&2
|
||||
fi
|
||||
|
||||
# Load shell functions
|
||||
unset WM_SHELL_FUNCTIONS
|
||||
. $WM_PROJECT_DIR/etc/config.sh/functions
|
||||
|
||||
# Overrides via <prefs.sh>
|
||||
# 1. other (system) values
|
||||
_foamEtc -mode=o prefs.sh
|
||||
|
||||
# 2. user or group values (unless disabled)
|
||||
[ -z "$FOAM_CONFIG_NOUSER" ] && _foamEtc -mode=ug prefs.sh
|
||||
|
||||
# Evaluate command-line parameters and record settings for later.
|
||||
# These can be used to set/unset values, specify additional files etc.
|
||||
FOAM_SETTINGS="$@"
|
||||
if [ -z "$FOAM_SETTINGS" ]
|
||||
then
|
||||
unset FOAM_SETTINGS
|
||||
else
|
||||
export FOAM_SETTINGS
|
||||
_foamEval "$@"
|
||||
fi
|
||||
|
||||
# Clean standard environment variables (PATH, MANPATH, LD_LIBRARY_PATH)
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
export PATH MANPATH LD_LIBRARY_PATH
|
||||
_foamClean PATH "$foamOldDirs"
|
||||
_foamClean MANPATH "$foamOldDirs"
|
||||
_foamClean LD_LIBRARY_PATH "$foamOldDirs"
|
||||
|
||||
# Setup for OpenFOAM compilation etc
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
_foamEtc -config settings
|
||||
|
||||
# Setup for third-party packages
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
_foamEtc -config mpi
|
||||
_foamEtc -config paraview -- "$@" # Pass through for evaluation
|
||||
_foamEtc -config vtk
|
||||
_foamEtc -config ensight
|
||||
_foamEtc -config gperftools
|
||||
## _foamEtc -config ADIOS
|
||||
## _foamEtc -config ADIOS2
|
||||
_foamEtc -config CGAL
|
||||
_foamEtc -config scotch
|
||||
_foamEtc -config FFTW
|
||||
|
||||
if [ -d "$WM_PROJECT_DIR/doc/man1" ]
|
||||
then
|
||||
_foamAddMan "$WM_PROJECT_DIR/doc"
|
||||
fi
|
||||
|
||||
# Interactive shell
|
||||
if /usr/bin/tty -s 2>/dev/null
|
||||
then
|
||||
_foamEtc -config aliases
|
||||
[ "${BASH_VERSINFO:-0}" -ge 4 ] && _foamEtc -config bash_completion
|
||||
fi
|
||||
|
||||
|
||||
# Clean environment paths again. Only remove duplicates
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
export PATH MANPATH LD_LIBRARY_PATH
|
||||
|
||||
_foamClean PATH
|
||||
_foamClean MANPATH
|
||||
_foamClean LD_LIBRARY_PATH
|
||||
|
||||
# Add trailing ':' for system manpages
|
||||
if [ -n "$MANPATH" ]
|
||||
then
|
||||
MANPATH="${MANPATH}:"
|
||||
fi
|
||||
|
||||
if [ -n "$LD_PRELOAD" ]
|
||||
then
|
||||
export LD_PRELOAD
|
||||
_foamClean LD_PRELOAD
|
||||
fi
|
||||
|
||||
|
||||
# Cleanup temporary information
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
# Unload shell functions
|
||||
. $WM_PROJECT_DIR/etc/config.sh/functions
|
||||
|
||||
# Variables (done as the last statement for a clean exit code)
|
||||
unset FOAM_INST_DIR # Old variable name (OpenFOAM-v1606) - now unneeded
|
||||
unset cleaned foamOldDirs
|
||||
# Cleanup variables (done as final statement for a clean exit code)
|
||||
unset foamOldDirs projectDir
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
@ -33,6 +33,13 @@ alias _foamAddLib 'setenv LD_LIBRARY_PATH \!*\:${LD_LIBRARY_PATH}'
|
||||
# $2 = fallback libname ('lib' or 'lib64')
|
||||
alias _foamAddLibAuto 'eval `$WM_PROJECT_DIR/bin/tools/lib-dir -csh \!*`'
|
||||
|
||||
# Echo values when FOAM_VERBOSE is on, no-op otherwise
|
||||
if ($?FOAM_VERBOSE && $?prompt) then
|
||||
alias _foamEcho 'echo \!*'
|
||||
else
|
||||
alias _foamEcho 'true'
|
||||
endif
|
||||
|
||||
# Source an etc file, possibly with some verbosity
|
||||
if ($?FOAM_VERBOSE && $?prompt) then
|
||||
if ($?FOAM_CONFIG_NOUSER) then
|
||||
|
||||
@ -147,9 +147,6 @@ setenv WM_OPTIONS "$WM_ARCH$WM_COMPILER$WM_PRECISION_OPTION$WM_LABEL_OPTION$WM_C
|
||||
setenv FOAM_APPBIN "$WM_PROJECT_DIR/platforms/$WM_OPTIONS/bin"
|
||||
setenv FOAM_LIBBIN "$WM_PROJECT_DIR/platforms/$WM_OPTIONS/lib"
|
||||
|
||||
# External (ThirdParty) libraries
|
||||
setenv FOAM_EXT_LIBBIN "$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER$WM_PRECISION_OPTION$WM_LABEL_OPTION/lib"
|
||||
|
||||
# Site-specific (group) files
|
||||
|
||||
# Default
|
||||
@ -173,7 +170,7 @@ setenv FOAM_USER_LIBBIN "$WM_PROJECT_USER_DIR/platforms/$WM_OPTIONS/lib"
|
||||
# Prepend wmake to the path - not required for runtime-only environment
|
||||
set foundDir="${WM_PROJECT_DIR}/wmake"
|
||||
if ( $?WM_DIR ) then
|
||||
if ( -d "${WM_DIR}" ) foundDir="${WM_DIR}"
|
||||
if ( -d "${WM_DIR}" ) set foundDir="${WM_DIR}"
|
||||
endif
|
||||
if ( -d "$foundDir" ) then
|
||||
setenv PATH "${foundDir}:${PATH}"
|
||||
@ -189,8 +186,8 @@ setenv PATH "${WM_PROJECT_DIR}/bin:${PATH}"
|
||||
if ( -d "$siteDir/bin" ) then # Generic
|
||||
_foamAddPath "$siteDir/bin"
|
||||
endif
|
||||
if ( -d "$siteDir/$WM_PROJECT_VERSION/bin" ) then # Version-specific
|
||||
_foamAddPath "$siteDir/$WM_PROJECT_VERSION/bin"
|
||||
if ( -d "$siteDir/$WM_PROJECT_API/bin" ) then # API-specific
|
||||
_foamAddPath "$siteDir/$WM_PROJECT_API/bin"
|
||||
endif
|
||||
|
||||
# OpenFOAM executables (user, group, standard)
|
||||
@ -200,8 +197,11 @@ _foamAddPath "${FOAM_USER_APPBIN}:${FOAM_SITE_APPBIN}:${FOAM_APPBIN}"
|
||||
_foamAddLib "$FOAM_LIBBIN/dummy"
|
||||
|
||||
# External (ThirdParty) libraries. Also allowed to be unset
|
||||
if ( $?FOAM_EXT_LIBBIN ) then
|
||||
_foamAddLib $FOAM_EXT_LIBBIN
|
||||
if ( -d "$WM_THIRD_PARTY_DIR" ) then
|
||||
setenv FOAM_EXT_LIBBIN "$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER$WM_PRECISION_OPTION$WM_LABEL_OPTION/lib"
|
||||
_foamAddLib "$FOAM_EXT_LIBBIN"
|
||||
else
|
||||
unsetenv FOAM_EXT_LIBBIN
|
||||
endif
|
||||
|
||||
# OpenFOAM libraries (user, group, standard)
|
||||
|
||||
187
etc/config.csh/setup
Normal file
187
etc/config.csh/setup
Normal file
@ -0,0 +1,187 @@
|
||||
#----------------------------------*-sh-*--------------------------------------
|
||||
# ========= |
|
||||
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
# \\ / O peration |
|
||||
# \\ / A nd | Copyright (C) 2018 OpenCFD Ltd.
|
||||
# \\/ M anipulation |
|
||||
#------------------------------------------------------------------------------
|
||||
# License
|
||||
# This file is part of OpenFOAM, licensed under GNU General Public License
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# File
|
||||
# etc/config.csh/setup
|
||||
# - sourced by OpenFOAM-*/etc/cshrc
|
||||
#
|
||||
# Description
|
||||
# Finalize setup of OpenFOAM environment for C-shell (csh, tcsh)
|
||||
#
|
||||
# Environment
|
||||
# FOAM_VERBOSE (set/unset)
|
||||
# - add extra verbosity when sourcing files
|
||||
# FOAM_CONFIG_NOUSER (set/unset)
|
||||
# - suppress use of user/group configuration files
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# [WM_PROJECT_API] - The API level for the project
|
||||
setenv WM_PROJECT_API `$WM_PROJECT_DIR/bin/foamEtcFile -show-api`
|
||||
|
||||
# The installation parent directory
|
||||
set prefixDir="${WM_PROJECT_DIR:h}"
|
||||
|
||||
# Load shell "functions" (actually aliases)
|
||||
source "$WM_PROJECT_DIR/etc/config.csh/functions"
|
||||
|
||||
|
||||
# [WM_THIRD_PARTY_DIR] - Location of third-party software components
|
||||
# \- This may be installed in a directory parallel to the OpenFOAM project
|
||||
# directory, with the same version name or using the API value.
|
||||
# It may also not be required at all, in which case a dummy "ThirdParty"
|
||||
# directory inside of the OpenFOAM project directory.
|
||||
#
|
||||
# Note: only accept if the directory exists and contains a "Allwmake" file
|
||||
|
||||
setenv WM_THIRD_PARTY_DIR
|
||||
set foundDir=''
|
||||
_foamEcho "Locating ThirdParty directory"
|
||||
foreach WM_THIRD_PARTY_DIR (\
|
||||
"$WM_PROJECT_DIR/ThirdParty" \
|
||||
"$prefixDir/ThirdParty-$WM_PROJECT_VERSION" \
|
||||
"$prefixDir/ThirdParty-v$WM_PROJECT_API" \
|
||||
"$prefixDir/ThirdParty-$WM_PROJECT_API" \
|
||||
"$prefixDir/ThirdParty-common" \
|
||||
)
|
||||
_foamEcho "... $WM_THIRD_PARTY_DIR"
|
||||
if ( -d "$WM_THIRD_PARTY_DIR" ) then
|
||||
if ( -f "$WM_THIRD_PARTY_DIR/Allwmake" || -d "$WM_THIRD_PARTY_DIR/platforms" ) then
|
||||
set foundDir=true
|
||||
break
|
||||
endif
|
||||
endif
|
||||
end
|
||||
|
||||
if ( "${%foundDir}" ) then
|
||||
_foamEcho "Using $WM_THIRD_PARTY_DIR"
|
||||
else
|
||||
# Dummy fallback value
|
||||
setenv WM_THIRD_PARTY_DIR "$WM_PROJECT_DIR/ThirdParty"
|
||||
_foamEcho "Dummy $WM_THIRD_PARTY_DIR"
|
||||
endif
|
||||
# Done with ThirdParty discovery
|
||||
|
||||
|
||||
# Overrides via <prefs.csh>
|
||||
# 1. other (system) values
|
||||
_foamEtc -mode=o prefs.csh
|
||||
|
||||
# 2. user or group values (unless disabled)
|
||||
if (! $?FOAM_CONFIG_NOUSER ) then
|
||||
_foamEtc -mode=ug prefs.csh
|
||||
endif
|
||||
|
||||
|
||||
# Capture and evaluate any command-line parameters
|
||||
# These can be used to set/unset values, specify additional files etc.
|
||||
setenv FOAM_SETTINGS "${*}"
|
||||
|
||||
while ( $#argv > 0 )
|
||||
switch ($argv[1])
|
||||
case -*:
|
||||
# Stray option (not meant for us here) -> get out
|
||||
break
|
||||
breaksw
|
||||
case *=:
|
||||
# name= -> unsetenv name
|
||||
_foamEcho "unsetenv $argv[1]:s/=//"
|
||||
eval "unsetenv $argv[1]:s/=//"
|
||||
breaksw
|
||||
case *=*:
|
||||
# name=value -> setenv name value
|
||||
_foamEcho "setenv $argv[1]:s/=/ /"
|
||||
eval "setenv $argv[1]:s/=/ /"
|
||||
breaksw
|
||||
default:
|
||||
# Filename: source it
|
||||
if ( -f "$argv[1]" ) then
|
||||
_foamEcho "Using: $argv[1]"
|
||||
source "$argv[1]"
|
||||
else
|
||||
_foamEtc -silent "$argv[1]"
|
||||
endif
|
||||
breaksw
|
||||
endsw
|
||||
shift
|
||||
end
|
||||
|
||||
|
||||
# Clean standard environment variables (PATH, MANPATH, LD_LIBRARY_PATH)
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
# Prevent local variables from shadowing setenv variables
|
||||
unset PATH MANPATH LD_LIBRARY_PATH LD_PRELOAD
|
||||
if (! $?LD_LIBRARY_PATH ) setenv LD_LIBRARY_PATH
|
||||
if (! $?MANPATH ) setenv MANPATH
|
||||
|
||||
_foamClean PATH "$foamOldDirs"
|
||||
_foamClean MANPATH "$foamOldDirs"
|
||||
_foamClean LD_LIBRARY_PATH "$foamOldDirs"
|
||||
|
||||
# Setup for OpenFOAM compilation etc
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
_foamEtc -config settings
|
||||
|
||||
# Setup for third-party packages
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
_foamEtc -config mpi
|
||||
_foamEtc -config paraview -- "$FOAM_SETTINGS" # Pass through for evaluation
|
||||
_foamEtc -config vtk
|
||||
_foamEtc -config ensight
|
||||
## _foamEtc -config ADIOS
|
||||
## _foamEtc -config ADIOS2
|
||||
_foamEtc -config CGAL
|
||||
_foamEtc -config FFTW
|
||||
|
||||
if ( -d "$WM_PROJECT_DIR/doc/man1" ) then
|
||||
_foamAddMan "$WM_PROJECT_DIR/doc"
|
||||
endif
|
||||
|
||||
# Interactive shell
|
||||
if ($?prompt) then
|
||||
_foamEtc -config aliases
|
||||
_foamEtc -config tcsh_completion
|
||||
endif
|
||||
|
||||
|
||||
# Clean environment paths again. Only remove duplicates
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
_foamClean PATH
|
||||
_foamClean MANPATH
|
||||
_foamClean LD_LIBRARY_PATH
|
||||
|
||||
# Add trailing ':' for system manpages
|
||||
if ( $?MANPATH ) then
|
||||
setenv MANPATH "${MANPATH}:"
|
||||
endif
|
||||
|
||||
if ( $?LD_PRELOAD ) then
|
||||
_foamClean LD_PRELOAD
|
||||
endif
|
||||
|
||||
|
||||
# Cleanup temporary information
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
# Unload shell "functions"
|
||||
unalias _foamClean
|
||||
unalias _foamEcho
|
||||
unalias _foamEtc
|
||||
unalias _foamAddPath
|
||||
unalias _foamAddMan
|
||||
unalias _foamAddLib
|
||||
unalias _foamAddLibAuto
|
||||
|
||||
# Variables (done as final statement for a clean exit code)
|
||||
unset cleaned foamOldDirs foundDir prefixDir
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
@ -59,6 +59,7 @@ unsetenv WM_OPTIONS
|
||||
unsetenv WM_OSTYPE
|
||||
unsetenv WM_PRECISION_OPTION
|
||||
unsetenv WM_PROJECT
|
||||
unsetenv WM_PROJECT_API
|
||||
unsetenv WM_PROJECT_DIR
|
||||
unsetenv WM_PROJECT_INST_DIR
|
||||
unsetenv WM_PROJECT_SITE
|
||||
|
||||
@ -40,6 +40,15 @@ then
|
||||
unset "foamVar_name"
|
||||
}
|
||||
|
||||
# Echo values to stderr when FOAM_VERBOSE is on, no-op otherwise
|
||||
unset -f _foamEcho 2>/dev/null
|
||||
if [ -n "$FOAM_VERBOSE" ] && [ -n "$PS1" ]
|
||||
then
|
||||
_foamEcho() { echo "$@" 1>&2; }
|
||||
else
|
||||
_foamEcho() { true; }
|
||||
fi
|
||||
|
||||
# Source an etc file, possibly with some verbosity
|
||||
# - use eval to avoid intermediate variables (ksh doesn't have 'local')
|
||||
unset -f _foamEtc 2>/dev/null
|
||||
@ -216,7 +225,7 @@ else
|
||||
# Was previously loaded/defined - now unset
|
||||
|
||||
unset -f _foamAddPath _foamAddMan _foamAddLib _foamAddLibAuto 2>/dev/null
|
||||
unset -f _foamClean _foamEtc _foamEval 2>/dev/null
|
||||
unset -f _foamClean _foamEcho _foamEtc _foamEval 2>/dev/null
|
||||
unset foamClean
|
||||
unset WM_SHELL_FUNCTIONS
|
||||
|
||||
|
||||
@ -140,9 +140,6 @@ export WM_OPTIONS="$WM_ARCH$WM_COMPILER$WM_PRECISION_OPTION$WM_LABEL_OPTION$WM_C
|
||||
export FOAM_APPBIN="$WM_PROJECT_DIR/platforms/$WM_OPTIONS/bin"
|
||||
export FOAM_LIBBIN="$WM_PROJECT_DIR/platforms/$WM_OPTIONS/lib"
|
||||
|
||||
# External (ThirdParty) libraries
|
||||
export FOAM_EXT_LIBBIN="$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER$WM_PRECISION_OPTION$WM_LABEL_OPTION/lib"
|
||||
|
||||
# Site-specific (group) files
|
||||
|
||||
# Default
|
||||
@ -187,9 +184,9 @@ if [ -d "$siteDir/bin" ] # Generic
|
||||
then
|
||||
_foamAddPath "$siteDir/bin"
|
||||
fi
|
||||
if [ -d "$siteDir/$WM_PROJECT_VERSION/bin" ] # Version-specific
|
||||
if [ -d "$siteDir/$WM_PROJECT_API/bin" ] # API-specific
|
||||
then
|
||||
_foamAddPath "$siteDir/$WM_PROJECT_VERSION/bin"
|
||||
_foamAddPath "$siteDir/$WM_PROJECT_API/bin"
|
||||
fi
|
||||
|
||||
# OpenFOAM executables (user, group, standard)
|
||||
@ -198,10 +195,13 @@ _foamAddPath "$FOAM_USER_APPBIN:$FOAM_SITE_APPBIN:$FOAM_APPBIN"
|
||||
# Dummy versions of external libraries. To be found last in LD_LIBRARY_PATH
|
||||
_foamAddLib "$FOAM_LIBBIN/dummy"
|
||||
|
||||
# External libraries (allowed to be unset)
|
||||
if [ -n "$FOAM_EXT_LIBBIN" ]
|
||||
# External (ThirdParty) libraries. Also allowed to be unset
|
||||
if [ -d "$WM_THIRD_PARTY_DIR" ]
|
||||
then
|
||||
_foamAddLib $FOAM_EXT_LIBBIN
|
||||
export FOAM_EXT_LIBBIN="$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER$WM_PRECISION_OPTION$WM_LABEL_OPTION/lib"
|
||||
_foamAddLib "$FOAM_EXT_LIBBIN"
|
||||
else
|
||||
unset FOAM_EXT_LIBBIN
|
||||
fi
|
||||
|
||||
# OpenFOAM libraries (user, group, standard)
|
||||
|
||||
171
etc/config.sh/setup
Normal file
171
etc/config.sh/setup
Normal file
@ -0,0 +1,171 @@
|
||||
#----------------------------------*-sh-*--------------------------------------
|
||||
# ========= |
|
||||
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
# \\ / O peration |
|
||||
# \\ / A nd | Copyright (C) 2018 OpenCFD Ltd.
|
||||
# \\/ M anipulation |
|
||||
#------------------------------------------------------------------------------
|
||||
# License
|
||||
# This file is part of OpenFOAM, licensed under GNU General Public License
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# File
|
||||
# etc/config.sh/setup
|
||||
# - sourced by OpenFOAM-*/etc/bashrc
|
||||
#
|
||||
# Description
|
||||
# Finalize setup of OpenFOAM environment for POSIX shell.
|
||||
#
|
||||
# Environment
|
||||
# FOAM_VERBOSE (set/unset)
|
||||
# - add extra verbosity when sourcing files
|
||||
# FOAM_CONFIG_NOUSER (set/unset)
|
||||
# - suppress use of user/group configuration files
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# [WM_PROJECT_API] - The API level for the project
|
||||
export WM_PROJECT_API="$($WM_PROJECT_DIR/bin/foamEtcFile -show-api)"
|
||||
|
||||
# The installation parent directory
|
||||
prefixDir="${WM_PROJECT_DIR%/*}"
|
||||
|
||||
# Load shell functions
|
||||
unset WM_SHELL_FUNCTIONS
|
||||
. "$WM_PROJECT_DIR/etc/config.sh/functions"
|
||||
|
||||
|
||||
# [WM_THIRD_PARTY_DIR] - Location of third-party software components
|
||||
# \- This may be installed in a directory parallel to the OpenFOAM project
|
||||
# directory, with the same version name or using the API value.
|
||||
# It may also not be required at all, in which case a dummy "ThirdParty"
|
||||
# directory inside of the OpenFOAM project directory.
|
||||
#
|
||||
# Note: only accept if the directory exists and contains a "Allwmake" file
|
||||
export WM_THIRD_PARTY_DIR
|
||||
unset foundDir
|
||||
|
||||
_foamEcho "Locating ThirdParty directory"
|
||||
|
||||
for WM_THIRD_PARTY_DIR in \
|
||||
"$WM_PROJECT_DIR/ThirdParty" \
|
||||
"$prefixDir/ThirdParty-$WM_PROJECT_VERSION" \
|
||||
"$prefixDir/ThirdParty-v$WM_PROJECT_API" \
|
||||
"$prefixDir/ThirdParty-$WM_PROJECT_API" \
|
||||
"$prefixDir/ThirdParty-common" \
|
||||
;
|
||||
do
|
||||
_foamEcho "... $WM_THIRD_PARTY_DIR"
|
||||
if [ -d "$WM_THIRD_PARTY_DIR" ]
|
||||
then
|
||||
if [ -f "$WM_THIRD_PARTY_DIR/Allwmake" ] || \
|
||||
[ -d "$WM_THIRD_PARTY_DIR/platforms" ]
|
||||
then
|
||||
foundDir=true
|
||||
break
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
if [ -n "$foundDir" ]
|
||||
then
|
||||
_foamEcho "Using $WM_THIRD_PARTY_DIR"
|
||||
else
|
||||
# Dummy fallback value
|
||||
WM_THIRD_PARTY_DIR="$WM_PROJECT_DIR/ThirdParty"
|
||||
_foamEcho "Dummy $WM_THIRD_PARTY_DIR"
|
||||
fi
|
||||
# Done with ThirdParty discovery
|
||||
|
||||
|
||||
# Overrides via <prefs.sh>
|
||||
# 1. other (system) values
|
||||
_foamEtc -mode=o prefs.sh
|
||||
|
||||
# 2. user or group values (unless disabled)
|
||||
[ -z "$FOAM_CONFIG_NOUSER" ] && _foamEtc -mode=ug prefs.sh
|
||||
|
||||
|
||||
# Capture and evaluate any command-line parameters
|
||||
# These can be used to set/unset values, specify additional files etc.
|
||||
FOAM_SETTINGS="$@"
|
||||
|
||||
# Evaluate the command-line parameters, which were saved as FOAM_SETTINGS.
|
||||
# These can be used to set/unset values, specify additional files etc.
|
||||
if [ -z "$FOAM_SETTINGS" ]
|
||||
then
|
||||
unset FOAM_SETTINGS
|
||||
else
|
||||
export FOAM_SETTINGS
|
||||
_foamEval "$@"
|
||||
fi
|
||||
|
||||
|
||||
# Clean standard environment variables (PATH, MANPATH, LD_LIBRARY_PATH)
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
export PATH MANPATH LD_LIBRARY_PATH
|
||||
_foamClean PATH "$foamOldDirs"
|
||||
_foamClean MANPATH "$foamOldDirs"
|
||||
_foamClean LD_LIBRARY_PATH "$foamOldDirs"
|
||||
|
||||
# Setup for OpenFOAM compilation etc
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
_foamEtc -config settings
|
||||
|
||||
# Setup for third-party packages
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
_foamEtc -config mpi
|
||||
_foamEtc -config paraview -- "$@" # Pass through for evaluation
|
||||
_foamEtc -config vtk
|
||||
_foamEtc -config ensight
|
||||
_foamEtc -config gperftools
|
||||
## _foamEtc -config ADIOS
|
||||
## _foamEtc -config ADIOS2
|
||||
_foamEtc -config CGAL
|
||||
_foamEtc -config scotch
|
||||
_foamEtc -config FFTW
|
||||
|
||||
if [ -d "$WM_PROJECT_DIR/doc/man1" ]
|
||||
then
|
||||
_foamAddMan "$WM_PROJECT_DIR/doc"
|
||||
fi
|
||||
|
||||
# Interactive shell
|
||||
if /usr/bin/tty -s 2>/dev/null
|
||||
then
|
||||
_foamEtc -config aliases
|
||||
[ "${BASH_VERSINFO:-0}" -ge 4 ] && _foamEtc -config bash_completion
|
||||
fi
|
||||
|
||||
|
||||
# Clean environment paths again. Only remove duplicates
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
export PATH MANPATH LD_LIBRARY_PATH
|
||||
|
||||
_foamClean PATH
|
||||
_foamClean MANPATH
|
||||
_foamClean LD_LIBRARY_PATH
|
||||
|
||||
# Add trailing ':' for system manpages
|
||||
if [ -n "$MANPATH" ]
|
||||
then
|
||||
MANPATH="${MANPATH}:"
|
||||
fi
|
||||
|
||||
if [ -n "$LD_PRELOAD" ]
|
||||
then
|
||||
export LD_PRELOAD
|
||||
_foamClean LD_PRELOAD
|
||||
fi
|
||||
|
||||
|
||||
# Cleanup temporary information
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
# Unload shell functions
|
||||
. "$WM_PROJECT_DIR/etc/config.sh/functions"
|
||||
|
||||
# Variables (done as the last statement for a clean exit code)
|
||||
unset cleaned foamOldDirs foundDir prefixDir
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
@ -50,6 +50,7 @@ unset WM_OPTIONS
|
||||
unset WM_OSTYPE
|
||||
unset WM_PRECISION_OPTION
|
||||
unset WM_PROJECT
|
||||
unset WM_PROJECT_API
|
||||
unset WM_PROJECT_DIR
|
||||
unset WM_PROJECT_INST_DIR
|
||||
unset WM_PROJECT_SITE
|
||||
|
||||
150
etc/cshrc
150
etc/cshrc
@ -22,10 +22,10 @@
|
||||
# - $WM_PROJECT_DIR/etc/prefs.csh
|
||||
#
|
||||
# - User or group values (first file found):
|
||||
# - ~/.OpenFOAM/$WM_PROJECT_VERSION/prefs.csh
|
||||
# - ~/.OpenFOAM/$WM_PROJECT_API/prefs.csh
|
||||
# - ~/.OpenFOAM/prefs.csh
|
||||
# - $WM_PROJECT_SITE/$WM_PROJECT_VERSION/etc/prefs.csh
|
||||
# - $WM_PROJECT_SITE/etc/prefs.csh
|
||||
# - $WM_PROJECT_SITE/$WM_PROJECT_API/etc/prefs.csh
|
||||
# - $WM_PROJECT_SITE/prefs.csh
|
||||
#
|
||||
# Environment
|
||||
# FOAM_VERBOSE (set/unset)
|
||||
@ -43,17 +43,22 @@
|
||||
setenv WM_PROJECT OpenFOAM
|
||||
setenv WM_PROJECT_VERSION plus
|
||||
|
||||
# [FOAM_INST_DIR] - parent directory containing the OpenFOAM installation.
|
||||
# [projectDir] - parent directory containing the OpenFOAM installation.
|
||||
# \- When this file is located as $WM_PROJECT_DIR/etc/cshrc, the next lines
|
||||
# should work when sourced by CSH or TCSH shells. If this however fails,
|
||||
# set one of the fallback values to an appropriate path.
|
||||
# --
|
||||
set FOAM_INST_DIR=`lsof +p $$ |& \
|
||||
sed -n -e 's@[^/]*@@' -e 's@/'$WM_PROJECT'[^/]*/etc/cshrc.*@@p'`
|
||||
# set FOAM_INST_DIR=$HOME/$WM_PROJECT
|
||||
# set FOAM_INST_DIR=/opt/$WM_PROJECT
|
||||
# set FOAM_INST_DIR=/usr/local/$WM_PROJECT
|
||||
#
|
||||
# This can be removed if an absolute path is provided for WM_PROJECT_DIR
|
||||
# later on in this file.
|
||||
# --
|
||||
# If the directory naming does not match WM_PROJECT, need to change here
|
||||
set projectName="$WM_PROJECT"
|
||||
set projectDir=`lsof +p $$ |& \
|
||||
sed -n -e 's@^[^/]*@@; s@\(/'"$projectName"'[^/]*\)/etc/cshrc[^/]*@\1@p'`
|
||||
|
||||
# set projectDir="$HOME/OpenFOAM/OpenFOAM-$WM_PROJECT_VERSION"
|
||||
# set projectDir="/opt/OpenFOAM/OpenFOAM-$WM_PROJECT_VERSION"
|
||||
# set projectDir="/usr/local/OpenFOAM/OpenFOAM-$WM_PROJECT_VERSION"
|
||||
# END OF (NORMAL) USER EDITABLE PART
|
||||
################################################################################
|
||||
|
||||
@ -138,10 +143,8 @@ if ( $?FOAM_SITE_LIBBIN ) then
|
||||
set foamOldDirs="$foamOldDirs $FOAM_SITE_LIBBIN"
|
||||
endif
|
||||
|
||||
# Location of installation and third-party software
|
||||
setenv WM_PROJECT_INST_DIR $FOAM_INST_DIR
|
||||
setenv WM_PROJECT_DIR $WM_PROJECT_INST_DIR/$WM_PROJECT-$WM_PROJECT_VERSION
|
||||
setenv WM_THIRD_PARTY_DIR $WM_PROJECT_INST_DIR/ThirdParty-$WM_PROJECT_VERSION
|
||||
# [WM_PROJECT_DIR] - Location of this OpenFOAM version
|
||||
setenv WM_PROJECT_DIR "$projectDir"
|
||||
|
||||
# [WM_PROJECT_USER_DIR] - Location of user files
|
||||
setenv WM_PROJECT_USER_DIR "$HOME/$WM_PROJECT/$LOGNAME-$WM_PROJECT_VERSION"
|
||||
@ -157,118 +160,17 @@ else
|
||||
unsetenv WM_PROJECT_SITE
|
||||
endif
|
||||
|
||||
# Load shell "functions" (actually aliases)
|
||||
source $WM_PROJECT_DIR/etc/config.csh/functions
|
||||
|
||||
# Overrides via <prefs.csh>
|
||||
# 1. other (system) values
|
||||
_foamEtc -mode=o prefs.csh
|
||||
|
||||
# 2. user or group values (unless disabled)
|
||||
if (! $?FOAM_CONFIG_NOUSER ) then
|
||||
_foamEtc -mode=ug prefs.csh
|
||||
# Finalize setup of OpenFOAM environment
|
||||
if ( -d "$WM_PROJECT_DIR" ) then
|
||||
if ($?FOAM_VERBOSE && $?prompt) echo "source $WM_PROJECT_DIR/etc/config.csh/setup"
|
||||
source "$WM_PROJECT_DIR/etc/config.csh/setup" "${*}"
|
||||
else
|
||||
echo "Error: did not locate installation path for $WM_PROJECT-$WM_PROJECT_VERSION"
|
||||
echo "No directory: $WM_PROJECT_DIR"
|
||||
endif
|
||||
|
||||
# Evaluate command-line parameters and record settings for later.
|
||||
# These can be used to set/unset values, specify additional files etc.
|
||||
setenv FOAM_SETTINGS "${*}"
|
||||
while ( $#argv > 0 )
|
||||
switch ($argv[1])
|
||||
case -*:
|
||||
# Stray option (not meant for us here) -> get out
|
||||
break
|
||||
breaksw
|
||||
case *=:
|
||||
# name= -> unsetenv name
|
||||
if ($?FOAM_VERBOSE && $?prompt) echo "unsetenv $argv[1]:s/=//"
|
||||
eval "unsetenv $argv[1]:s/=//"
|
||||
breaksw
|
||||
case *=*:
|
||||
# name=value -> setenv name value
|
||||
if ($?FOAM_VERBOSE && $?prompt) echo "setenv $argv[1]:s/=/ /"
|
||||
eval "setenv $argv[1]:s/=/ /"
|
||||
breaksw
|
||||
default:
|
||||
# Filename: source it
|
||||
if ( -f "$argv[1]" ) then
|
||||
if ($?FOAM_VERBOSE && $?prompt) echo "Using: $argv[1]"
|
||||
source "$argv[1]"
|
||||
else
|
||||
_foamEtc -silent "$argv[1]"
|
||||
endif
|
||||
breaksw
|
||||
endsw
|
||||
shift
|
||||
end
|
||||
|
||||
|
||||
# Clean standard environment variables (PATH, MANPATH, LD_LIBRARY_PATH)
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
# Prevent local variables from shadowing setenv variables
|
||||
unset PATH MANPATH LD_LIBRARY_PATH LD_PRELOAD
|
||||
if (! $?LD_LIBRARY_PATH ) setenv LD_LIBRARY_PATH
|
||||
if (! $?MANPATH ) setenv MANPATH
|
||||
|
||||
_foamClean PATH "$foamOldDirs"
|
||||
_foamClean MANPATH "$foamOldDirs"
|
||||
_foamClean LD_LIBRARY_PATH "$foamOldDirs"
|
||||
|
||||
# Setup for OpenFOAM compilation etc
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
_foamEtc -config settings
|
||||
|
||||
# Setup for third-party packages
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
_foamEtc -config mpi
|
||||
_foamEtc -config paraview -- "$FOAM_SETTINGS" # Pass through for evaluation
|
||||
_foamEtc -config vtk
|
||||
_foamEtc -config ensight
|
||||
## _foamEtc -config ADIOS
|
||||
## _foamEtc -config ADIOS2
|
||||
_foamEtc -config CGAL
|
||||
_foamEtc -config FFTW
|
||||
|
||||
if ( -d "$WM_PROJECT_DIR/doc/man1" ) then
|
||||
_foamAddMan "$WM_PROJECT_DIR/doc"
|
||||
endif
|
||||
|
||||
# Interactive shell
|
||||
if ($?prompt) then
|
||||
_foamEtc -config aliases
|
||||
_foamEtc -config tcsh_completion
|
||||
endif
|
||||
|
||||
|
||||
# Clean environment paths again. Only remove duplicates
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
_foamClean PATH
|
||||
_foamClean MANPATH
|
||||
_foamClean LD_LIBRARY_PATH
|
||||
|
||||
# Add trailing ':' for system manpages
|
||||
if ( $?MANPATH ) then
|
||||
setenv MANPATH "${MANPATH}:"
|
||||
endif
|
||||
|
||||
if ( $?LD_PRELOAD ) then
|
||||
_foamClean LD_PRELOAD
|
||||
endif
|
||||
|
||||
|
||||
# Cleanup temporary information
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
# Unload shell "functions"
|
||||
unalias _foamClean
|
||||
unalias _foamEtc
|
||||
unalias _foamAddPath
|
||||
unalias _foamAddMan
|
||||
unalias _foamAddLib
|
||||
unalias _foamAddLibAuto
|
||||
|
||||
# Variables (done as the last statement for a clean exit code)
|
||||
unset FOAM_INST_DIR # Old variable name (OpenFOAM-v1606) - now unneeded
|
||||
unset cleaned foamOldDirs
|
||||
# Cleanup variables (done as final statement for a clean exit code)
|
||||
unset foamOldDirs projectDir projectName
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
@ -16,7 +16,7 @@ cd ${0%/*} && wmakeCheckPwd "$WM_PROJECT_DIR/src" 2>/dev/null || {
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# Trigger update of version strings as required
|
||||
wmakePrintBuild -check || wrmo OpenFOAM/global/global.o 2>/dev/null
|
||||
wmakeBuildInfo -check || wrmo OpenFOAM/global/global.o 2>/dev/null
|
||||
|
||||
wmakeLnInclude -u OpenFOAM
|
||||
wmakeLnInclude -u OSspecific/"${WM_OSTYPE:-POSIX}"
|
||||
|
||||
@ -81,6 +81,7 @@ void Foam::dynamicCode::checkSecurity
|
||||
<< " allowSystemOperations 1" << nl << nl
|
||||
<< "to the InfoSwitches setting in the system controlDict." << nl
|
||||
<< "The system controlDict is any of" << nl << nl
|
||||
<< " ~/.OpenFOAM/" << OPENFOAM << "/controlDict" << nl
|
||||
<< " ~/.OpenFOAM/controlDict" << nl
|
||||
<< " $WM_PROJECT_DIR/etc/controlDict" << nl << endl
|
||||
<< exit(FatalIOError);
|
||||
|
||||
@ -119,18 +119,8 @@ Foam::fileNameList searchEtc
|
||||
bool (*accept)(const Foam::fileName&)
|
||||
)
|
||||
{
|
||||
Foam::fileName version(Foam::getEnv("WM_PROJECT_VERSION"));
|
||||
|
||||
// Fallback when WM_PROJECT_VERSION is unset
|
||||
if (version.empty())
|
||||
{
|
||||
#if OPENFOAM
|
||||
version.assign(std::to_string(OPENFOAM));
|
||||
#else
|
||||
version.assign(foamVersion::version);
|
||||
#endif
|
||||
}
|
||||
|
||||
// Could use foamVersion::api, but this more direct.
|
||||
const Foam::fileName version(std::to_string(OPENFOAM));
|
||||
|
||||
Foam::fileNameList list;
|
||||
Foam::fileName dir, candidate;
|
||||
|
||||
@ -26,8 +26,8 @@ Description
|
||||
It is important that these are constructed in the appropriate order to
|
||||
avoid the use of unconstructed data in the global namespace.
|
||||
|
||||
This file has the extension .Cver to trigger a Makefile rule that converts
|
||||
'VERSION\_STRING' and 'BUILD\_STRING' into the appropriate strings.
|
||||
This file has a '.Cver' extension to trigger a Makefile rule to replace
|
||||
'BUILD', 'VERSION' tags with the corresponding strings.
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
@ -48,14 +48,14 @@ const int Foam::foamVersion::api
|
||||
// Value of PATCH generated by the build-script
|
||||
const std::string Foam::foamVersion::patch
|
||||
(
|
||||
""
|
||||
"@PATCH@"
|
||||
);
|
||||
|
||||
|
||||
// Value of the BUILD generated by the build-script
|
||||
const std::string Foam::foamVersion::build
|
||||
(
|
||||
"BUILD_STRING"
|
||||
"@BUILD@"
|
||||
);
|
||||
|
||||
|
||||
@ -78,7 +78,7 @@ const std::string Foam::foamVersion::buildArch
|
||||
// Only required for compatibility
|
||||
const std::string Foam::foamVersion::version
|
||||
(
|
||||
"VERSION_STRING"
|
||||
"@VERSION@"
|
||||
);
|
||||
|
||||
|
||||
|
||||
@ -127,6 +127,7 @@ bool Foam::functionObjects::systemCall::read(const dictionary& dict)
|
||||
<< " allowSystemOperations 1" << nl << nl
|
||||
<< "to the InfoSwitches setting in the system controlDict." << nl
|
||||
<< "The system controlDict is any of" << nl << nl
|
||||
<< " ~/.OpenFOAM/" << OPENFOAM << "/controlDict" << nl
|
||||
<< " ~/.OpenFOAM/controlDict" << nl
|
||||
<< " $WM_PROJECT_DIR/etc/controlDict" << nl << endl
|
||||
<< exit(FatalError);
|
||||
|
||||
@ -2,11 +2,9 @@
|
||||
|
||||
SUFFIXES += .Cver
|
||||
|
||||
# Update version strings in C++ file and in $WM_PROJECT_DIR/.build file
|
||||
# Update strings in C++ file and in META-INFO files
|
||||
Cvertoo = \
|
||||
sed -e 's!VERSION_STRING!$(shell wmakePrintBuild -major)!' \
|
||||
-e 's!BUILD_STRING!$(shell wmakePrintBuild -update)!' \
|
||||
$< > $(@D)/$(<F).C; \
|
||||
wmakeBuildInfo -update -filter $< > $(@D)/$(<F).C; \
|
||||
$(CC) $(c++FLAGS) -c $(@D)/$(<F).C -o $@
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
531
wmake/wmakeBuildInfo
Executable file
531
wmake/wmakeBuildInfo
Executable file
@ -0,0 +1,531 @@
|
||||
#!/bin/bash
|
||||
#------------------------------------------------------------------------------
|
||||
# ========= |
|
||||
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
# \\ / O peration |
|
||||
# \\ / A nd | Copyright (C) 2018 OpenCFD Ltd.
|
||||
# \\/ M anipulation |
|
||||
#-------------------------------------------------------------------------------
|
||||
# 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/>.
|
||||
#
|
||||
# Script
|
||||
# wmakeBuildInfo
|
||||
#
|
||||
# Description
|
||||
# Print the version used when building the project
|
||||
#
|
||||
# Environment
|
||||
# - WM_PROJECT_DIR
|
||||
# - WM_DIR (unset defaults to WM_PROJECT_DIR/wmake)
|
||||
#
|
||||
# Note
|
||||
# Partial logic is also implemented in the bin/foamEtcFile
|
||||
# -show-api and -show-patch options.
|
||||
# Make sure that any changes here are also reflected there.
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
# Locations
|
||||
rulesFile="${WM_DIR:-$WM_PROJECT_DIR/wmake}/rules/General/general"
|
||||
metaInfoDir="$WM_PROJECT_DIR/META-INFO"
|
||||
|
||||
usage() {
|
||||
exec 1>&2
|
||||
|
||||
while [ "$#" -ge 1 ]; do echo "$1"; shift; done
|
||||
cat<<USAGE
|
||||
Usage: ${0##*/} [OPTION]
|
||||
${0##*/} [-update] -filter FILE
|
||||
options:
|
||||
-check Compare make and meta information (exit 0 for no changes)
|
||||
-diff Display differences between make and meta information
|
||||
(exit code 0 for no changes)
|
||||
-dry-run In combination with -update
|
||||
-update Update meta-info from make information
|
||||
-filter FILE Filter/replace @API@, @BUILD@ tags in specified file
|
||||
with corresponding make information
|
||||
-query Report make-info and meta-info
|
||||
-query-make Report make-info values (api, branch, build)
|
||||
-query-meta Report meta-info values (api, branch, build)
|
||||
-show-api Print api value from wmake/rules, or meta-info and exit
|
||||
-show-patch Print patch value from meta-info and exit
|
||||
-help Print the usage
|
||||
|
||||
Query/manage status of api,branch,build information.
|
||||
Default without any arguments is the same as '-query-make'.
|
||||
|
||||
USAGE
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Report error and exit
|
||||
die()
|
||||
{
|
||||
exec 1>&2
|
||||
echo
|
||||
echo "Error encountered:"
|
||||
while [ "$#" -ge 1 ]; do echo " $1"; shift; done
|
||||
echo
|
||||
echo "See '${0##*/} -help' for usage"
|
||||
echo
|
||||
exit 1
|
||||
}
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# Parse arguments and options
|
||||
#------------------------------------------------------------------------------
|
||||
unset optCheck optDryRun optUpdate optQuery optFilter
|
||||
|
||||
while [ "$#" -gt 0 ]
|
||||
do
|
||||
case "$1" in
|
||||
-h | -help*)
|
||||
usage
|
||||
;;
|
||||
-check)
|
||||
optCheck=true
|
||||
;;
|
||||
-diff)
|
||||
optCheck=verbose
|
||||
;;
|
||||
-dry-run)
|
||||
optDryRun=true
|
||||
;;
|
||||
-update)
|
||||
optUpdate=true
|
||||
;;
|
||||
-query)
|
||||
optQuery="make:meta"
|
||||
;;
|
||||
-query-make | -query-meta)
|
||||
optQuery="$optQuery:${1##*-}"
|
||||
;;
|
||||
-show-api)
|
||||
optQuery="api"
|
||||
;;
|
||||
-show-patch)
|
||||
optQuery="patch"
|
||||
;;
|
||||
-filter)
|
||||
optFilter=true
|
||||
shift # Stop here, a file name follows
|
||||
break
|
||||
;;
|
||||
*)
|
||||
die "unknown option/argument: '$1'"
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
if [ "$optFilter" = true ]
|
||||
then
|
||||
[ -f "$1" ] || {
|
||||
echo "Error in ${0##*/}: file not found '$1'" 1>&2
|
||||
exit 2
|
||||
}
|
||||
|
||||
# Disable other methods that generate output to stdout
|
||||
unset optCheck optQuery
|
||||
else
|
||||
[ "$#" -eq 0 ] || die "Unexpected option/arguments $@"
|
||||
|
||||
# Nothing specified? Default to -query-make
|
||||
if [ -z "$optCheck$optUpdate$optQuery" ]
|
||||
then
|
||||
optQuery="make"
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# Variables
|
||||
declare -A makeInfo
|
||||
declare -A metaInfo
|
||||
|
||||
#
|
||||
# Populate makeInfo array
|
||||
#
|
||||
# - api : from rules/General/general
|
||||
# - patch : cached value from previous make
|
||||
# - branch : from git
|
||||
# - build : from git
|
||||
#
|
||||
# Failure modes:
|
||||
# - No api information (can't find file etc).
|
||||
# -> FATAL: should never happen.
|
||||
#
|
||||
# - No git installed or no git repo
|
||||
# -> branch and build are populated as empty strings
|
||||
#
|
||||
# - Working on detached head.
|
||||
# -> branch has value "HEAD" instead of something more readable.
|
||||
#
|
||||
getMakeInfo()
|
||||
{
|
||||
local api patch build branch
|
||||
makeInfo=()
|
||||
|
||||
# (api) from WM_DIR/rules/General/general
|
||||
# - extract WM_VERSION = OPENFOAM=<digits>
|
||||
|
||||
api="$(sed -ne '/^ *#/!{ /WM_VERSION.*OPENFOAM=/{ s@^.*OPENFOAM= *\([0-9][0-9]*\).*@\1@p; q }}' $rulesFile 2>/dev/null)"
|
||||
|
||||
if [ -d "$metaInfoDir" ]
|
||||
then
|
||||
# (patch) from build-info - not from api-info
|
||||
patch="$(sed -ne 's@^patch *= *\([0-9][0-9]*\).*@\1@p' $metaInfoDir/build-info 2>/dev/null)"
|
||||
fi
|
||||
|
||||
# Build info from git
|
||||
build="$(git --git-dir=$WM_PROJECT_DIR/.git log -1 --date='format:%y%m%d' --format='%h-%ad' 2>/dev/null)"
|
||||
|
||||
# Branch info from git
|
||||
if [ -n "$build" ]
|
||||
then
|
||||
branch="$(git --git-dir=$WM_PROJECT_DIR/.git rev-parse --abbrev-ref HEAD 2>/dev/null)"
|
||||
fi
|
||||
|
||||
makeInfo[api]="$api"
|
||||
makeInfo[patch]="${patch:-0}" # default is 0
|
||||
makeInfo[branch]="$branch"
|
||||
makeInfo[build]="$build"
|
||||
makeInfo[cached]=true
|
||||
}
|
||||
|
||||
|
||||
#
|
||||
# Populate metaInfo array
|
||||
#
|
||||
# - api : from META-INFO/api-info
|
||||
# - patch : from META-INFO/api-info
|
||||
# - branch : from META-INFO/build-info
|
||||
# - build : from META-INFO/build-info
|
||||
#
|
||||
# Failure modes:
|
||||
# - Directory, file or entry not found.
|
||||
# -> corresponding entries are empty strings
|
||||
#
|
||||
getMetaInfo()
|
||||
{
|
||||
local api patch build branch
|
||||
metaInfo=()
|
||||
|
||||
if [ -d "$metaInfoDir" ]
|
||||
then
|
||||
# (api, patch) from api-info
|
||||
# (branch, build) from build-info
|
||||
|
||||
api="$(sed -ne 's@^api *= *\([0-9][0-9]*\).*@\1@p' $metaInfoDir/api-info 2>/dev/null)"
|
||||
patch="$(sed -ne 's@^patch *= *\([0-9][0-9]*\).*@\1@p' $metaInfoDir/api-info 2>/dev/null)"
|
||||
branch="$(sed -ne 's@^branch *= *\([^ ]*\).*@\1@p' $metaInfoDir/build-info 2>/dev/null)"
|
||||
build="$(sed -ne 's@^build *= *\([^ ]*\).*@\1@p' $metaInfoDir/build-info 2>/dev/null)"
|
||||
fi
|
||||
|
||||
metaInfo[api]="$api"
|
||||
metaInfo[patch]="${patch:-0}" # default is 0
|
||||
metaInfo[branch]="$branch"
|
||||
metaInfo[build]="$build"
|
||||
metaInfo[cached]=true
|
||||
}
|
||||
|
||||
|
||||
#
|
||||
# Get api from rules/General/general
|
||||
#
|
||||
# Failure modes:
|
||||
# - No api information (can't find file etc).
|
||||
# -> Fatal for building, but could be OK for a stripped down version
|
||||
#
|
||||
# Fallback. Get from api-info
|
||||
#
|
||||
getApi()
|
||||
{
|
||||
[ -n "${makeInfo[cached]}" ] || getMakeInfo
|
||||
|
||||
# Local copy
|
||||
local api="${makeInfo[api]}"
|
||||
|
||||
if [ -z "$api" ]
|
||||
then
|
||||
[ -n "${metaInfo[cached]}" ] || getMetaInfo
|
||||
api="${metaInfo[api]}"
|
||||
fi
|
||||
|
||||
if [ -n "$api" ]
|
||||
then
|
||||
echo "$api"
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
# Get patch from meta-info / api-info
|
||||
#
|
||||
# Failure modes:
|
||||
# - No patch information (can't find file etc).
|
||||
#
|
||||
getPatchLevel()
|
||||
{
|
||||
[ -n "${metaInfo[cached]}" ] || getMetaInfo
|
||||
|
||||
# Local copy
|
||||
local value="${metaInfo[patch]}"
|
||||
|
||||
if [ -n "$value" ]
|
||||
then
|
||||
echo "$value"
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
# Report make info
|
||||
reportMakeInfo()
|
||||
{
|
||||
local key
|
||||
|
||||
[ -n "${makeInfo[cached]}" ] || getMakeInfo
|
||||
[ -n "${metaInfo[cached]}" ] || getMetaInfo
|
||||
|
||||
local patch="${metaInfo[patch]}" # <- From meta-info only
|
||||
makeInfo[patch]="${patch:=0}" # Extra safety
|
||||
|
||||
echo "make"
|
||||
for key in api patch branch build
|
||||
do
|
||||
echo " $key = ${makeInfo[$key]}"
|
||||
done
|
||||
}
|
||||
|
||||
|
||||
# Report meta info
|
||||
reportMetaInfo()
|
||||
{
|
||||
local key
|
||||
|
||||
[ -n "${metaInfo[cached]}" ] || getMetaInfo
|
||||
|
||||
local patch="${metaInfo[patch]}" # <- From meta-info only
|
||||
metaInfo[patch]="${patch:=0}" # Extra safety
|
||||
|
||||
echo "meta"
|
||||
for key in api patch branch build
|
||||
do
|
||||
echo " $key = ${metaInfo[$key]}"
|
||||
done
|
||||
}
|
||||
|
||||
|
||||
# Test make vs meta info.
|
||||
# Return 0 for no differences, 1 otherwise
|
||||
# $1 == verbose, print as diff. Silent otherwise
|
||||
checkDiff()
|
||||
{
|
||||
local verbose="$1"
|
||||
local key diff
|
||||
|
||||
[ -n "${makeInfo[cached]}" ] || getMakeInfo
|
||||
[ -n "${metaInfo[cached]}" ] || getMetaInfo
|
||||
|
||||
for key in api patch branch build
|
||||
do
|
||||
if [ "${makeInfo[$key]}" != "${metaInfo[$key]}" ]
|
||||
then
|
||||
diff="$diff $key"
|
||||
fi
|
||||
done
|
||||
|
||||
if [ "$verbose" = verbose ] && [ -n "$diff" ]
|
||||
then
|
||||
echo "Differences"
|
||||
for key in $diff
|
||||
do
|
||||
echo "$key:"
|
||||
echo " make ${makeInfo[$key]}"
|
||||
echo " meta ${metaInfo[$key]}"
|
||||
done
|
||||
fi
|
||||
|
||||
test -z "$diff"
|
||||
}
|
||||
|
||||
|
||||
#
|
||||
# Update metaInfo (on disk) based on the makeInfo
|
||||
#
|
||||
performUpdate()
|
||||
{
|
||||
[ -n "${makeInfo[cached]}" ] || getMakeInfo
|
||||
[ -n "${metaInfo[cached]}" ] || getMetaInfo
|
||||
|
||||
# Local copies of the make info
|
||||
local api="${makeInfo[api]}"
|
||||
local branch="${makeInfo[branch]}"
|
||||
local build="${makeInfo[build]}"
|
||||
local patch="${makeInfo[patch]}"
|
||||
|
||||
# If any of the make-info are empty (bad),
|
||||
# use the meta-info to avoid spurious changes
|
||||
[ -n "$api" ] || api="${metaInfo[api]}"
|
||||
[ -n "$branch" ] || branch="${metaInfo[branch]}"
|
||||
[ -n "$build" ] || build="${metaInfo[build]}"
|
||||
|
||||
local outputFile
|
||||
|
||||
# build-info
|
||||
outputFile="$metaInfoDir/build-info"
|
||||
if [ "$branch" != "${metaInfo[branch]}" ] || \
|
||||
[ "$build" != "${metaInfo[build]}" ] || \
|
||||
[ "$patch" != "${metaInfo[patch]}" ]
|
||||
then
|
||||
patch="${metaInfo[patch]}" # <- From meta-info only
|
||||
: "${patch:=0}" # Extra safety
|
||||
|
||||
if [ -n "$optDryRun" ]
|
||||
then
|
||||
echo "dry-run (update) ${outputFile##*/} branch=${branch}" 1>&2
|
||||
echo "dry-run (update) ${outputFile##*/} build=${build}" 1>&2
|
||||
echo "dry-run (update) ${outputFile##*/} patch=${patch}" 1>&2
|
||||
else
|
||||
echo "branch=${branch}" >| "$outputFile"
|
||||
echo "build=${build}" >> "$outputFile"
|
||||
echo "patch=${patch}" >> "$outputFile"
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
# api-info
|
||||
outputFile="$metaInfoDir/api-info"
|
||||
if [ "$api" != "${metaInfo[api]}" ]
|
||||
then
|
||||
patch="${metaInfo[patch]}" # <- From meta-info only
|
||||
: "${patch:=0}" # Extra safety
|
||||
|
||||
if [ -n "$optDryRun" ]
|
||||
then
|
||||
echo "dry-run (update) ${outputFile##*/} api=${api}" 1>&2
|
||||
echo "dry-run (update) ${outputFile##*/} patch=${patch}" 1>&2
|
||||
else
|
||||
echo "api=${api}" >| "$outputFile"
|
||||
echo "patch=${patch}" >> "$outputFile"
|
||||
fi
|
||||
fi
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
|
||||
#
|
||||
# Update metaInfo (on disk) based on the makeInfo
|
||||
# This is the
|
||||
#
|
||||
performFiltering()
|
||||
{
|
||||
local input="$1"
|
||||
|
||||
[ -f "$input" ] || {
|
||||
echo "Error in ${0##*/}: file not found '$1'" 1>&2
|
||||
exit 2
|
||||
}
|
||||
|
||||
[ -n "${makeInfo[cached]}" ] || getMakeInfo
|
||||
[ -n "${metaInfo[cached]}" ] || getMetaInfo
|
||||
|
||||
# Local copies of the make info
|
||||
local api="${makeInfo[api]}"
|
||||
local branch="${makeInfo[branch]}"
|
||||
local build="${makeInfo[build]}"
|
||||
local patch="${metaInfo[patch]}" # <- From meta-info only
|
||||
: "${patch:=0}" # Extra safety
|
||||
|
||||
|
||||
# If any of the make-info are empty (bad),
|
||||
# conjure up something from the meta-info
|
||||
|
||||
# api is not normally needed (available directly from -Ddefine)
|
||||
# but we may wish to filter other types of files
|
||||
|
||||
if [ -z "$api" ]
|
||||
then
|
||||
api="${metaInfo[api]}"
|
||||
api="${api:-0}" # integer value
|
||||
fi
|
||||
|
||||
# branch/build could be missing for non-git
|
||||
if [ -z "$branch" ]
|
||||
then
|
||||
branch="${metaInfo[branch]}"
|
||||
branch="${branch:-unknown}"
|
||||
fi
|
||||
if [ -z "$build" ]
|
||||
then
|
||||
build="${metaInfo[build]}"
|
||||
build="nogit${build:+-$build}"
|
||||
fi
|
||||
|
||||
sed \
|
||||
-e 's!@API@!'"${api}"'!g' \
|
||||
-e 's!@PATCH@!'"${patch:-0}"'!g' \
|
||||
-e 's!@BRANCH@!'"${branch}"'!g' \
|
||||
-e 's!@BUILD@!'"${build}"'!g' \
|
||||
-e 's!@VERSION@!'"${WM_PROJECT_VERSION}"'!g' \
|
||||
"$input"
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# Dispatching
|
||||
|
||||
if [ -n "$optCheck" ]
|
||||
then
|
||||
checkDiff $optCheck
|
||||
exit $?
|
||||
elif [ "$optQuery" = api ]
|
||||
then
|
||||
# Show API and exit
|
||||
getApi
|
||||
exit $?
|
||||
elif [ "$optQuery" = patch ]
|
||||
then
|
||||
# Show patch level and exit
|
||||
getPatchLevel
|
||||
exit $?
|
||||
else
|
||||
# Other queries
|
||||
case "$optQuery" in (*make*) reportMakeInfo ;; esac
|
||||
case "$optQuery" in (*meta*) reportMetaInfo ;; esac
|
||||
fi
|
||||
|
||||
[ -n "$optUpdate" ] && performUpdate
|
||||
|
||||
if [ -n "$optFilter" ]
|
||||
then
|
||||
# Perform filter on file
|
||||
performFiltering "$1"
|
||||
fi
|
||||
|
||||
exit 0 # clean exit
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
@ -61,6 +61,17 @@ die()
|
||||
}
|
||||
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
cat << WARN_OBSOLETE 1>&2
|
||||
###############################################################################
|
||||
## The wmakePrintBuild utility is OBSOLETE (Dec-2018). ##
|
||||
## The wmakeBuildInfo utility is to be used instead. ##
|
||||
###############################################################################
|
||||
|
||||
WARN_OBSOLETE
|
||||
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# Parse arguments and options
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user