Backport the prefs.sh-facility from 1.7.x
--HG-- branch : bgschaidMac
This commit is contained in:
parent
f6cbade3d7
commit
5f910c4d02
5 changed files with 437 additions and 12 deletions
277
bin/foamEtcFile
Executable file
277
bin/foamEtcFile
Executable file
|
@ -0,0 +1,277 @@
|
|||
#!/bin/sh
|
||||
#------------------------------------------------------------------------------
|
||||
# ========= |
|
||||
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
# \\ / O peration |
|
||||
# \\ / A nd | Copyright (C) 2008-2010 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
|
||||
# foamEtcFile
|
||||
#
|
||||
# Description
|
||||
# Locate user/group/shipped file with semantics similar to the
|
||||
# ~OpenFOAM/fileName expansion.
|
||||
#
|
||||
# The -mode option can be used to allow chaining from
|
||||
# personal settings to site-wide settings.
|
||||
#
|
||||
# For example, within the user ~/.OpenFOAM/<VER>/prefs.sh:
|
||||
# @verbatim
|
||||
# foamPrefs=`$WM_PROJECT_DIR/bin/foamEtcFile -m go prefs.sh` \
|
||||
# && _foamSource $foamPrefs
|
||||
# @endverbatim
|
||||
#
|
||||
#-------------------------------------------------------------------------------
|
||||
usage() {
|
||||
[ "$quietOpt" = true ] && exit 1
|
||||
|
||||
exec 1>&2
|
||||
while [ "$#" -ge 1 ]; do echo "$1"; shift; done
|
||||
cat<<USAGE
|
||||
|
||||
Usage: ${0##*/} [OPTION] fileName
|
||||
${0##*/} [OPTION] -list
|
||||
options:
|
||||
-list list the directories to be searched
|
||||
-mode <mode> any combination of u(user), g(group), o(other)
|
||||
-prefix <dir> specify an alternative installation prefix
|
||||
-quiet suppress all normal output
|
||||
-version <ver> specify an alternative OpenFOAM version
|
||||
in the form Maj.Min.Rev (eg, 1.7.0)
|
||||
-help print the usage
|
||||
|
||||
Locate user/group/shipped file with semantics similar to the
|
||||
~OpenFOAM/fileName expansion.
|
||||
|
||||
The options can also be specified as a single character
|
||||
(eg, '-q' instead of '-quiet'), but must not be grouped.
|
||||
|
||||
Exit status
|
||||
0 when the file is found. Print resolved path to stdout.
|
||||
1 for miscellaneous errors.
|
||||
2 when the file is not found.
|
||||
|
||||
USAGE
|
||||
exit 1
|
||||
}
|
||||
|
||||
#
|
||||
# This script must exist in <foamInstall>/OpenFOAM-<VERSION>/bin/
|
||||
# or <foamInstall>/openfoam<VERSION>/bin/ (for the debian version)
|
||||
#
|
||||
#-------------------------------------------------------------------------------
|
||||
|
||||
# the bindir:
|
||||
binDir="${0%/*}"
|
||||
|
||||
# the project dir:
|
||||
projectDir="${binDir%/bin}"
|
||||
|
||||
# the prefix dir (same as foamInstall):
|
||||
prefixDir="${projectDir%/*}"
|
||||
|
||||
# the name used for the project directory
|
||||
projectDirName="${projectDir##*/}"
|
||||
|
||||
# version number used for debian packaging
|
||||
unset versionNum
|
||||
|
||||
#
|
||||
# handle standard and debian naming convention
|
||||
#
|
||||
case "$projectDirName" in
|
||||
OpenFOAM-*) # standard naming convention OpenFOAM-<VERSION>
|
||||
version="${projectDirName##OpenFOAM-}"
|
||||
;;
|
||||
|
||||
openfoam[0-9]*) # debian naming convention 'openfoam<VERSION>'
|
||||
versionNum="${projectDirName##openfoam}"
|
||||
case "$versionNum" in
|
||||
??) # convert 2 digit version number to decimal delineated
|
||||
version=$(echo "$versionNum" | sed -e 's@\(.\)\(.\)@\1.\2@')
|
||||
;;
|
||||
???) # convert 3 digit version number to decimal delineated
|
||||
version=$(echo "$versionNum" | sed -e 's@\(.\)\(.\)\(.\)@\1.\2.\3@')
|
||||
;;
|
||||
????) # convert 4 digit version number to decimal delineated
|
||||
version=$(echo "$versionNum" | sed -e 's@\(.\)\(.\)\(.\)\(.\)@\1.\2.\3.\4@')
|
||||
;;
|
||||
*) # failback - use current environment setting
|
||||
version="$WM_PROJECT_VERSION"
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "Error : unknown/unsupported naming convention"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
|
||||
# default mode is 'ugo'
|
||||
mode=ugo
|
||||
unset listOpt quietOpt
|
||||
|
||||
# parse options
|
||||
while [ "$#" -gt 0 ]
|
||||
do
|
||||
case "$1" in
|
||||
-h | -help)
|
||||
usage
|
||||
;;
|
||||
-l | -list)
|
||||
listOpt=true
|
||||
;;
|
||||
-m | -mode)
|
||||
[ "$#" -ge 2 ] || usage "'$1' option requires an argument"
|
||||
mode="$2"
|
||||
|
||||
# sanity check:
|
||||
case "$mode" in
|
||||
*u* | *g* | *o* )
|
||||
;;
|
||||
*)
|
||||
usage "'$1' option with invalid mode '$mode'"
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
;;
|
||||
-p | -prefix)
|
||||
[ "$#" -ge 2 ] || usage "'$1' option requires an argument"
|
||||
prefixDir="$2"
|
||||
shift
|
||||
;;
|
||||
-q | -quiet)
|
||||
quietOpt=true
|
||||
;;
|
||||
-v | -version)
|
||||
[ "$#" -ge 2 ] || usage "'$1' option requires an argument"
|
||||
version="$2"
|
||||
# convert x.y.z -> xyz version (if installation looked like debian)
|
||||
if [ -n "$versionNum" ]
|
||||
then
|
||||
versionNum=$(echo "$version" | sed -e 's@\.@@g')
|
||||
fi
|
||||
shift
|
||||
;;
|
||||
--)
|
||||
shift
|
||||
break
|
||||
;;
|
||||
-*)
|
||||
usage "unknown option: '$*'"
|
||||
;;
|
||||
*)
|
||||
break
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
|
||||
# debugging:
|
||||
# echo "Installed locations:"
|
||||
# for i in projectDir prefixDir projectDirName version versionNum
|
||||
# do
|
||||
# eval echo "$i=\$$i"
|
||||
# done
|
||||
|
||||
|
||||
# Save the essential bits of information
|
||||
# silently remove leading ~OpenFOAM/ (used in Foam::findEtcFile)
|
||||
nArgs=$#
|
||||
fileName="${1#~OpenFOAM/}"
|
||||
|
||||
# Define the various places to be searched:
|
||||
unset dirList
|
||||
case "$mode" in
|
||||
*u*) # user
|
||||
dirList="$dirList $HOME/.${WM_PROJECT:-OpenFOAM}/$version"
|
||||
dirList="$dirList $HOME/.${WM_PROJECT:-OpenFOAM}"
|
||||
;;
|
||||
esac
|
||||
|
||||
case "$mode" in
|
||||
*g*) # group
|
||||
dirList="$dirList $prefixDir/site/$version"
|
||||
dirList="$dirList $prefixDir/site"
|
||||
;;
|
||||
esac
|
||||
|
||||
case "$mode" in
|
||||
*o*) # other (shipped)
|
||||
if [ -n "$versionNum" ]
|
||||
then
|
||||
# debian packaging
|
||||
dirList="$dirList $prefixDir/openfoam$versionNum/etc"
|
||||
else
|
||||
# standard packaging
|
||||
dirList="$dirList $prefixDir/${WM_PROJECT:-OpenFOAM}-$version/etc"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
set -- $dirList
|
||||
|
||||
|
||||
#
|
||||
# The main routine
|
||||
#
|
||||
|
||||
if [ "$listOpt" = true ]
|
||||
then
|
||||
|
||||
# list directories, or potential file locations
|
||||
[ "$nArgs" -le 1 ] || usage
|
||||
|
||||
# a silly combination, but -quiet has precedence
|
||||
[ "$quietOpt" = true ] && exit 0
|
||||
|
||||
for dir
|
||||
do
|
||||
if [ "$nArgs" -eq 1 ]
|
||||
then
|
||||
echo "$dir/$fileName"
|
||||
else
|
||||
echo "$dir"
|
||||
fi
|
||||
done
|
||||
exit 0
|
||||
|
||||
else
|
||||
|
||||
[ "$nArgs" -eq 1 ] || usage
|
||||
|
||||
for dir
|
||||
do
|
||||
if [ -f "$dir/$fileName" ]
|
||||
then
|
||||
[ "$quietOpt" = true ] || echo "$dir/$fileName"
|
||||
exit 0
|
||||
fi
|
||||
done
|
||||
|
||||
fi
|
||||
|
||||
|
||||
# general error, eg file not found
|
||||
exit 2
|
||||
|
||||
#------------------------------------------------------------------------------
|
41
etc/bashrc
41
etc/bashrc
|
@ -78,6 +78,37 @@ export WM_PROJECT_USER_DIR=$HOME/$WM_PROJECT/$USER-$WM_PROJECT_VERSION
|
|||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
export WM_THIRD_PARTY_DIR=$WM_PROJECT_INST_DIR/ThirdParty-$WM_PROJECT_VERSION
|
||||
|
||||
# Source files, possibly with some verbosity
|
||||
_foamSource()
|
||||
{
|
||||
while [ $# -ge 1 ]
|
||||
do
|
||||
[ "$FOAM_VERBOSE" -a "$PS1" ] && echo "Sourcing: $1"
|
||||
. $1
|
||||
shift
|
||||
done
|
||||
}
|
||||
|
||||
# Add in preset user or site preferences:
|
||||
foamPrefs=`$WM_PROJECT_DIR/bin/foamEtcFile prefs.sh` && _foamSource $foamPrefs
|
||||
unset foamPrefs
|
||||
|
||||
# Evaluate command-line parameters
|
||||
while [ $# -gt 0 ]
|
||||
do
|
||||
case "$1" in
|
||||
*=)
|
||||
# name= -> unset name
|
||||
eval "unset ${1%=}"
|
||||
;;
|
||||
*=*)
|
||||
# name=value -> export name=value
|
||||
eval "export $1"
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
|
||||
# Operating System/Platform
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
@ -278,16 +309,6 @@ export PATH LD_LIBRARY_PATH MANPATH
|
|||
|
||||
# Source project setup files
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
_foamSource()
|
||||
{
|
||||
while [ $# -ge 1 ]
|
||||
do
|
||||
[ "$FOAM_VERBOSE" -a "$PS1" ] && echo "Sourcing: $1"
|
||||
. $1
|
||||
shift
|
||||
done
|
||||
}
|
||||
|
||||
|
||||
_foamSource $WM_PROJECT_DIR/etc/settings.sh
|
||||
_foamSource $WM_PROJECT_DIR/etc/aliases.sh
|
||||
|
|
27
etc/cshrc
27
etc/cshrc
|
@ -72,6 +72,31 @@ setenv WM_PROJECT_USER_DIR $HOME/$WM_PROJECT/$LOGNAME-$WM_PROJECT_VERSION
|
|||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
setenv WM_THIRD_PARTY_DIR $WM_PROJECT_INST_DIR/ThirdParty-$WM_PROJECT_VERSION
|
||||
|
||||
# Source files, possibly with some verbosity
|
||||
alias _foamSource 'if ($?FOAM_VERBOSE && $?prompt) echo "Sourcing: \!*"; source
|
||||
|
||||
# Add in preset user or site preferences:
|
||||
set foamPrefs=`$WM_PROJECT_DIR/bin/foamEtcFile prefs.csh`
|
||||
if ( $status == 0 ) then
|
||||
_foamSource $foamPrefs
|
||||
endif
|
||||
unset foamPrefs
|
||||
|
||||
# Evaluate command-line parameters
|
||||
while ( $#argv > 0 )
|
||||
switch ($argv[1])
|
||||
case *=:
|
||||
# name= -> unsetenv name
|
||||
eval "unsetenv $argv[1]:s/=//"
|
||||
breaksw
|
||||
case *=*:
|
||||
# name=value -> setenv name value
|
||||
eval "setenv $argv[1]:s/=/ /"
|
||||
breaksw
|
||||
endsw
|
||||
shift
|
||||
end
|
||||
|
||||
|
||||
# Operating System/Platform
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
@ -228,8 +253,6 @@ setenv MANPATH `$cleanProg "$MANPATH" "$foamOldDirs"`
|
|||
|
||||
# Source project setup files
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
alias _foamSource 'if ($?FOAM_VERBOSE && $?prompt) echo "Executing: \!*"; source \!*'
|
||||
|
||||
_foamSource $WM_PROJECT_DIR/etc/settings.csh
|
||||
_foamSource $WM_PROJECT_DIR/etc/aliases.csh
|
||||
|
||||
|
|
52
etc/prefs.csh-EXAMPLE
Normal file
52
etc/prefs.csh-EXAMPLE
Normal file
|
@ -0,0 +1,52 @@
|
|||
#----------------------------------*-sh-*--------------------------------------
|
||||
# ========= |
|
||||
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
# \\ / O peration |
|
||||
# \\ / A nd | Copyright (C) 2010-2010 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/>.
|
||||
#
|
||||
# File
|
||||
# etc/prefs.csh
|
||||
#
|
||||
# Description
|
||||
# Preset variables for the OpenFOAM configuration - C-Shell shell syntax.
|
||||
#
|
||||
# The prefs.csh file will be sourced by the OpenFOAM etc/cshrc when it is
|
||||
# found by foamEtcFile.
|
||||
#
|
||||
# See Also
|
||||
# 'foamEtcFile -help' or 'foamEtcFile -list' for information about the
|
||||
# paths searched
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
## Specify system compiler
|
||||
## ~~~~~~~~~~~~~~~~~~~~~~~
|
||||
#set compilerInstall=system
|
||||
|
||||
## Specify system openmpi
|
||||
## ~~~~~~~~~~~~~~~~~~~~~~
|
||||
#setenv WM_MPLIB SYSTEMOPENMPI
|
||||
|
||||
# Specify ParaView version
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
setenv ParaView_VERSION git # eg, cvs/git version
|
||||
setenv ParaView_MAJOR 3.7
|
||||
|
||||
# ----------------------------------------------------------------- end-of-file
|
52
etc/prefs.sh-EXAMPLE
Normal file
52
etc/prefs.sh-EXAMPLE
Normal file
|
@ -0,0 +1,52 @@
|
|||
#----------------------------------*-sh-*--------------------------------------
|
||||
# ========= |
|
||||
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
# \\ / O peration |
|
||||
# \\ / A nd | Copyright (C) 2010-2010 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/>.
|
||||
#
|
||||
# File
|
||||
# etc/prefs.sh
|
||||
#
|
||||
# Description
|
||||
# Preset variables for the OpenFOAM configuration - POSIX shell syntax.
|
||||
#
|
||||
# The prefs.sh file will be sourced by the OpenFOAM etc/bashrc when it is
|
||||
# found by foamEtcFile.
|
||||
#
|
||||
# See Also
|
||||
# 'foamEtcFile -help' or 'foamEtcFile -list' for information about the
|
||||
# paths searched
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# Specify system compiler
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~
|
||||
compilerInstall=system
|
||||
|
||||
# Specify system openmpi
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~
|
||||
export WM_MPLIB=SYSTEMOPENMPI
|
||||
|
||||
# Specify ParaView version
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
export ParaView_VERSION=git # eg, cvs/git version
|
||||
export ParaView_MAJOR=3.7
|
||||
|
||||
# ----------------------------------------------------------------- end-of-file
|
Reference in a new issue