From b25e1486de1f3e1be750ea981917900df23d0884 Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Tue, 7 Dec 2021 10:51:09 +0100 Subject: [PATCH] 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=... --- bin/tools/source-bashrc | 76 ++++++++++++++++++++++++++++------------- etc/config.csh/mpi | 4 +-- etc/config.csh/paraview | 8 ++--- etc/config.sh/mpi | 3 +- etc/config.sh/paraview | 4 +-- etc/config.sh/settings | 2 +- etc/config.sh/setup | 11 +++--- etc/openfoam | 54 +++++++++++++++++++++-------- wmake/wmake | 13 +++---- 9 files changed, 115 insertions(+), 60 deletions(-) diff --git a/bin/tools/source-bashrc b/bin/tools/source-bashrc index e95460fbfd..927b5e57b1 100644 --- a/bin/tools/source-bashrc +++ b/bin/tools/source-bashrc @@ -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 #------------------------------------------------------------------------------ diff --git a/etc/config.csh/mpi b/etc/config.csh/mpi index c43c97568c..57d3fdb0bb 100644 --- a/etc/config.csh/mpi +++ b/etc/config.csh/mpi @@ -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 diff --git a/etc/config.csh/paraview b/etc/config.csh/paraview index 861275b176..0b17a9e75b 100644 --- a/etc/config.csh/paraview +++ b/etc/config.csh/paraview @@ -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 diff --git a/etc/config.sh/mpi b/etc/config.sh/mpi index 5310a6c293..c8334250e5 100644 --- a/etc/config.sh/mpi +++ b/etc/config.sh/mpi @@ -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 diff --git a/etc/config.sh/paraview b/etc/config.sh/paraview index f7feadb4f9..734acfdc33 100644 --- a/etc/config.sh/paraview +++ b/etc/config.sh/paraview @@ -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 diff --git a/etc/config.sh/settings b/etc/config.sh/settings index b6d27002fa..8024eb7519 100644 --- a/etc/config.sh/settings +++ b/etc/config.sh/settings @@ -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 ;; diff --git a/etc/config.sh/setup b/etc/config.sh/setup index 0d912ce6b7..e757632966 100644 --- a/etc/config.sh/setup +++ b/etc/config.sh/setup @@ -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 diff --git a/etc/openfoam b/etc/openfoam index 7a29ff2b44..7f775cfc59 100755 --- a/etc/openfoam +++ b/etc/openfoam @@ -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 } diff --git a/wmake/wmake b/wmake/wmake index 078c27d935..9d144d1bc9 100755 --- a/wmake/wmake +++ b/wmake/wmake @@ -128,15 +128,16 @@ cat<