CONFIG: adjust paraview libs, intelmpi handling

- fix overly aggressive match in the API value

- allow `INTELMPI*` generic value, this can be used to specify something
  like INTELMPI_custom and populate the corresponding wmake rule
  manually

STYLE: mention FOAM_BUILDROOT in wmake -help-full output

STYLE: adjust openfoam shell session welcome information

- adjust internal variable names to reduce collision potential

- improve handling of openfoam -etc=...
This commit is contained in:
Mark Olesen 2021-12-07 10:51:09 +01:00
parent 810d0c72ee
commit b25e1486de
9 changed files with 115 additions and 60 deletions

View File

@ -39,16 +39,18 @@ fi
#------------------------------------------------------------------------------
if [ -d "$projectDir" ]
_com_openfoam_projectDir="$projectDir"
if [ -d "$_com_openfoam_projectDir" ]
then
_foamSourceBashEnv="$projectDir/etc/bashrc"
_com_openfoam_bashrcFile="${_com_openfoam_projectDir}/etc/bashrc"
else
unset _foamSourceBashEnv
unset _com_openfoam_bashrcFile
fi
# Source the user bashrc first.
# Simply hope that they don't unset/reset _foamSourceBashEnv !!
# Source the user bashrc first. Improbable they use the following variables:
# * _com_openfoam_bashrcFile
# * _com_openfoam_projectDir
if [ -f "$HOME/.bashrc" ]
then
@ -58,20 +60,46 @@ fi
# Source the OpenFOAM etc/bashrc
if [ -f "$_foamSourceBashEnv" ]
if [ -f "$_com_openfoam_bashrcFile" ]
then
. "$_foamSourceBashEnv" $FOAM_SETTINGS
. "$_com_openfoam_bashrcFile" $FOAM_SETTINGS
# Avoid further inheritance
unset FOAM_SETTINGS
else
echo "Missing OpenFOAM etc/bashrc in '${_com_openfoam_projectDir}'" 1>&2
fi
unset _com_openfoam_bashrcFile _com_openfoam_projectDir
# Some feedback
if [ -n "$PS1" ] && [ -d "$WM_PROJECT_DIR" ]
# Welcome banner - format somewhat like Ubuntu welcome
#----
## Welcome to Ubuntu VER (GNU/Linux ... x86_64)
##
## * Documentation: ...
#----
if [ -n "$PS1" ] ## Interactive
then
if [ -d "$WM_PROJECT_DIR" ]
then
_foam_api="$("$WM_PROJECT_DIR"/bin/foamEtcFile -show-api 2>/dev/null)"
_foam_patch="$("$WM_PROJECT_DIR"/bin/foamEtcFile -show-patch 2>/dev/null)"
_foam_build="$("$WM_PROJECT_DIR"/bin/foamEtcFile -show-build 2>/dev/null)"
unset _foam_arch1
case "$WM_OPTIONS" in # Or WM_LABEL_SIZE?
(*Int32*) _foam_arch1="label=32" ;;
(*Int64*) _foam_arch1="label=64" ;;
esac
unset _foam_arch2
case "$WM_OPTIONS" in # Or WM_PRECISION_OPTION?
(*SPDPInt*) _foam_arch2="scalar=32;solveScalar=64" ;;
(*SPInt*) _foam_arch2="scalar=32" ;;
(*DPInt*) _foam_arch2="scalar=64" ;;
esac
if [ "${_foam_patch:-0}" = 0 ]
then
unset _foam_patch
@ -86,15 +114,17 @@ then
_foam_verinfo="${_foam_api}${_foam_patch:+ patch=${_foam_patch}}"
fi
echo "Using: OpenFOAM-$WM_PROJECT_VERSION (${_foam_verinfo}) - visit www.openfoam.com" 1>&2
echo "openfoam = $WM_PROJECT_DIR" 1>&2
echo 1>&2
echo " * Using: OpenFOAM-$WM_PROJECT_VERSION (${_foam_verinfo}) - visit www.openfoam.com" 1>&2
if [ -n "$_foam_build" ]
then
echo "Build: ${_foam_build}" 1>&2
echo " * Build: ${_foam_build}" 1>&2
fi
echo "Arch: $WM_OPTIONS (mpi=$FOAM_MPI)" 1>&2
# Arch: LSB;label=32;scalar=64
## echo 1>&2
# Arch: LSB;label=32;scalar=64
echo " * Arch: $_foam_arch1;$_foam_arch2" 1>&2
echo " * Platform: $WM_OPTIONS (mpi=$FOAM_MPI)" 1>&2
echo 1>&2
# Set prompt as reminder that this is a shell session
@ -102,18 +132,18 @@ then
# PS1="openfoam${_foam_api}:"'$(foamPwd)\n\u\$ '
PS1="openfoam${_foam_api}:"'\w/\n\u\$ '
unset _foam_arch1 _foam_arch2
unset _foam_api _foam_patch _foam_build _foam_verinfo
else
# Adjust prompt if not found - reminder that it is a shell session
PS1="openfoam(not-found):"'\w/\n\u\$ '
fi
else
echo "Could not locate OpenFOAM etc/bashrc in '$projectDir'" 1>&2
echo "OpenFOAM shell session - use 'exit' to quit" 1>&2
echo 1>&2
fi
echo 1>&2
echo "openfoam = $WM_PROJECT_DIR" 1>&2
echo "OpenFOAM shell session - use exit to quit" 1>&2
echo 1>&2
# Cleanup variables (done as final statement for a clean exit code)
unset _foamSourceBashEnv projectDir
unset projectDir
#------------------------------------------------------------------------------

View File

@ -437,10 +437,10 @@ case SGIMPI:
# ----
# Also support any ending (eg, INTELMPI_custom) to allow custom wmake rules
case intelmpi:
case intelmpi-[1-9]*:
case INTELMPI:
case INTELMPI-[1-9]*:
case INTELMPI*: ## Also includes (INTELMPI | INTELMPI-[1-9]*)
setenv FOAM_MPI intelmpi
## Add version embedded in the naming

View File

@ -99,7 +99,7 @@ case "none":
breaksw
case "system":
# Obtain major.minor from `paraview --version`
# Obtain (major.minor) from `paraview --version`
set pv_api=`paraview --version | sed -ne 's/^[^0-9]*\([0-9][0-9]*\.[0-9][0-9]*\).*$/\1/p'`
if ("${pv_api}" == "") then
@ -183,7 +183,7 @@ default:
set pvLibDir="${libDir}/paraview-${pv_api}"
if ( -d "${ParaView_DIR}/${pvLibDir}" ) then
switch ("$pv_api")
case 5.[0-4]*:
case 5.[0-4]:
set libDir="$pvLibDir" # Needs lib/paraview-X.X (not lib)
breaksw
endsw
@ -203,8 +203,8 @@ default:
# Any extra library directories
if ( -n "$pv_libdirs" != "" ) then
switch "WM_ARCH" in
if ( "$pv_libdirs" != "" ) then
switch ("$WM_ARCH")
case darwin*:
setenv DYLD_LIBRARY_PATH "${pv_libdirs}:$DYLD_LIBRARY_PATH"
breaksw

View File

@ -442,8 +442,9 @@ SGIMPI)
# ----
# Also support any ending (eg, INTELMPI_custom) to allow custom wmake rules
intelmpi | intelmpi-[1-9]* |\
INTELMPI | INTELMPI-[1-9]* )
INTELMPI*) # Also includes (INTELMPI | INTELMPI-[1-9]*)
export FOAM_MPI=intelmpi
_foamMpiEmbedVersion intelmpi INTELMPI

View File

@ -118,7 +118,7 @@ case "$ParaView_VERSION" in
;;
([0-9]*)
# Extract API from VERSION
# Extract API (major.minor) from VERSION
pv_api=$(echo "$ParaView_VERSION" | \
sed -ne 's/^[^0-9]*\([0-9][0-9]*\.[0-9][0-9]*\).*$/\1/p')
;;
@ -162,7 +162,7 @@ case "$ParaView_VERSION" in
if [ -d "$ParaView_DIR/$pvLibDir" ]
then
case "$pv_api" in
(5.[0-4]*)
(5.[0-4])
libDir="$pvLibDir" # Needs lib/paraview-X.X (not lib)
;;
esac

View File

@ -264,7 +264,7 @@ GCC_NOT_FOUND
if [ -n "$FOAM_VERBOSE" ] && [ -n "$PS1" ]
then
echo "Using ThirdParty compiler"
echo " ${gccDir##*/} (${gmpDir##*/} $${mpfrDir##*/} ${mpcDir##*/})"
echo " ${gccDir##*/} (${gmpDir##*/} ${mpfrDir##*/} ${mpcDir##*/})"
fi
;;

View File

@ -130,22 +130,19 @@ then
;;
(*=)
# name= -> unset name
[ -n "$FOAM_VERBOSE" ] && [ -n "$PS1" ] \
&& echo "unset ${foamVar_eval%=}" 1>&2
_foamEcho "unset ${foamVar_eval%=}"
eval "unset ${foamVar_eval%=}"
;;
(*=*)
# name=value -> export name=value
[ -n "$FOAM_VERBOSE" ] && [ -n "$PS1" ] \
&& echo "export $foamVar_eval" 1>&2
_foamEcho "export $foamVar_eval"
eval "export $foamVar_eval"
;;
(*)
# Filename: source it
if [ -f "$foamVar_eval" ]
then
[ -n "$FOAM_VERBOSE" ] && [ -n "$PS1" ] \
&& echo "Using: $foamVar_eval" 1>&2
_foamEcho "Use file: $foamVar_eval"
. "$foamVar_eval"
elif [ -n "$foamVar_eval" ]
then
@ -229,7 +226,7 @@ then
_foamAddMan "$WM_PROJECT_DIR/doc"
fi
# Interactive shell (use PS1, not tty)
# Interactive shell
if [ -n "$PS1" ]
then
_foamEtc -config aliases

View File

@ -107,7 +107,8 @@ getApiInfo()
# - No inheritance of FOAM_SETTINGS
# - No default verbosity (only as command-line option)
unset FOAM_CONFIG_ETC FOAM_SETTINGS FOAM_VERBOSE
unset _foamEtcDir _foamSettings _foamScriptCommand _foamSourceBashEnv
unset _foam_config_etc _foam_bashrcFile
unset _foamSettings _foamScriptCommand
unset optTestTut
# Parse options
@ -162,9 +163,14 @@ do
_foamSettings="$_foamSettings${_foamSettings:+ }WM_LABEL_SIZE=${1#-int}"
;;
#TDB: -etc-*)
#TDB: # Define FOAM_CONFIG_ETC for finding files
#TDB: _foam_config_etc="${1#*-}"
#TDB: ;;
-etc=*)
# Define FOAM_CONFIG_ETC for finding files
_foamEtcDir="${1#*=}"
_foam_config_etc="${1#*=}"
;;
-prefix=*)
@ -172,7 +178,7 @@ do
;;
-init=*)
_foamSourceBashEnv="${1#*=}"
_foam_bashrcFile="${1#*=}"
;;
-verbose)
@ -227,28 +233,48 @@ then
interactive=true
fi
if [ -z "$_foamSourceBashEnv" ]
if [ -z "$_foam_bashrcFile" ]
then
if [ -n "$interactive" ]
then
# Interactive shell, chain off via a file
_foamSourceBashEnv="$projectDir/bin/tools/source-bashrc"
_foam_bashrcFile="$projectDir/bin/tools/source-bashrc"
else
# Default: OPENFOAM etc/bashrc
_foamSourceBashEnv="$projectDir/etc/bashrc"
_foam_bashrcFile="$projectDir/etc/bashrc"
fi
fi
[ -f "$_foamSourceBashEnv" ] || {
echo "Error: file not found: $_foamSourceBashEnv" 1>&2
[ -f "$_foam_bashrcFile" ] || {
echo "Error: file not found: $_foam_bashrcFile" 1>&2
exit 2
}
if [ -n "$_foamEtcDir" ] && [ -d "$_foamEtcDir" ]
# FOAM_CONFIG_ETC: additional etc directory
case "$_foam_config_etc" in
('') # Empty - ignore
;;
(/*) # Absolute
[ -d "$_foam_config_etc" ] || unset _foam_config_etc
;;
(*) # Relative
if [ -d "$_foam_config_etc" ]
then
# Qualify local dir
_foam_config_etc="$PWD/$_foam_config_etc"
else
[ -d "$projectDir/$_foam_config_etc" ] || unset _foam_config_etc
fi
;;
esac
if [ -n "$_foam_config_etc" ]
then
# Additional etc directory
export FOAM_CONFIG_ETC="$_foamEtcDir"
export FOAM_CONFIG_ETC="$_foam_config_etc"
fi
if [ -n "$interactive" ]
@ -266,10 +292,10 @@ then
export FOAM_SETTINGS="$_foamSettings"
fi
## echo "Source with $_foamSourceBashEnv with '$FOAM_SETTINGS'" 1>&2
## echo "Source with $_foam_bashrcFile with '$FOAM_SETTINGS'" 1>&2
# Newer bash can use --init-file instead of --rcfile
exec bash --rcfile "$_foamSourceBashEnv" -i
exec bash --rcfile "$_foam_bashrcFile" -i
exit $? # Safety
fi
@ -281,7 +307,7 @@ fi
# Suppresses aliases as a side-effect, but non-interactive anyhow.
sourceBashrc()
{
. "$_foamSourceBashEnv" $_foamSettings
. "$_foam_bashrcFile" $_foamSettings
}

View File

@ -128,15 +128,16 @@ cat<<HELP_TAIL_FULL
Makefile targets: platforms/linux64GccDPInt32Opt/.../fvMesh.o (for example)
Special targets:
all | queue Same as -all | -queue options
exe Compile statically linked executable
lib Compile statically linked archive lib (.a)
libo Compile statically linked lib (.o)
libso Compile dynamically linked lib (.so)
exe Create executable
lib Create statically linked archive lib (.a)
libo Create statically linked lib (.o)
libso Create dynamically linked lib (.so)
dep Create lnInclude and dependencies only
updatedep Create dependencies only (in case of broken dependencies)
objects Compile but not link
Environment
FOAM_BUILDROOT
FOAM_EXTRA_CFLAGS FOAM_EXTRA_CXXFLAGS FOAM_EXTRA_LDFLAGS
FOAM_MODULE_PREFIX
@ -146,8 +147,8 @@ cat<<HELP_TAIL_BRIEF
Some special targets (see -help-full for details):
all | queue Same as -all | -queue options
exe Executables
lib libo libso Libraries
exe Executable
lib libo libso Libraries (.a .o .so)
HELP_TAIL_BRIEF
fi