diff --git a/bin/foamEtcFile b/bin/foamEtcFile index 544ca7b543a79826c5ddf87dd75323f4e1167a29..fc8cc57bf5385104ed72ae76ab231be15695ed06 100755 --- a/bin/foamEtcFile +++ b/bin/foamEtcFile @@ -32,7 +32,13 @@ # \endcode # # Environment -# - WM_PROJECT_SITE (unset defaults to PROJECT/site) +# FOAM_CONFIG_ETC +# Alternative etc directory for shipped files +# +# FOAM_CONFIG_MODE +# Fallback search mode for etc files. Unset is the same as "ugo". +# +# WM_PROJECT_SITE (unset defaults to PROJECT/site) # # Note # This script must exist in the project 'bin' directory @@ -45,8 +51,8 @@ printHelp() { cat<<USAGE -Usage: foamEtcFile [OPTION] fileName [-- args] - foamEtcFile [OPTION] [-list|-list-test] [fileName] +Usage: ${0##*/} [OPTION] fileName [-- args] + ${0##*/} [OPTION] [-list|-list-test] [fileName] options: -all (-a) Return all files (otherwise stop after the first match) @@ -105,6 +111,20 @@ projectDir="$(\cd $(dirname $binDir) && \pwd -L)" # Project dir userDir="$HOME/.OpenFOAM" # As per foamVersion.H groupDir="${WM_PROJECT_SITE:-$projectDir/site}" # As per foamVersion.H +optMode=ugo # Default search = 'ugo' + +# Environment overrides +case "$FOAM_CONFIG_MODE" in ([ugo]*) optMode="$FOAM_CONFIG_MODE" ;; esac + +# Verify validity of FOAM_CONFIG_ETC +if [ -n "$FOAM_CONFIG_ETC" ] +then + if [ ! -d "$FOAM_CONFIG_ETC" ] || [ "$FOAM_CONFIG_ETC" = "$projectDir/etc" ] + then + # Bad directory or redundant value + unset FOAM_CONFIG_ETC + fi +fi #------------------------------------------------------------------------------- @@ -125,7 +145,6 @@ getApiInfo() #------------------------------------------------------------------------------- -optMode=ugo # Default mode is always 'ugo' unset shellOutput verboseOutput unset optAll optConfig optList projectApi @@ -168,7 +187,7 @@ do -config) optConfig=true ;; - -mode=[ugoa]*) + -mode=[ugo]*) optMode="${1#*=}" ;; -m | -mode) @@ -176,7 +195,7 @@ do shift # Sanity check. Handles missing argument too. case "$optMode" in - ([ugoa]*) + ([ugo]*) ;; (*) die "invalid mode '$optMode'" @@ -219,7 +238,6 @@ done # Establish the API value [ -n "$projectApi" ] || projectApi=$(getApiInfo api) - # Split arguments into filename (for searching) and trailing bits for shell eval # Silently remove leading ~OpenFOAM/ (as per Foam::findEtcFile) nArgs=$# @@ -253,23 +271,23 @@ fi # Define the various places to be searched: unset dirList -case "$optMode" in (*[au]*) # (A)ll or (U)ser +case "$optMode" in (*[u]*) # (U)ser dirList="$dirList $userDir/$projectApi $userDir" ;; esac -case "$optMode" in (*[ag]*) # (A)ll or (G)roup == site +case "$optMode" in (*[g]*) # (G)roup == site dirList="$dirList $groupDir/$projectApi/etc $groupDir/etc" ;; esac -case "$optMode" in (*[ao]*) # (A)ll or (O)ther == shipped - dirList="$dirList $projectDir/etc" +case "$optMode" in (*[o]*) # (O)ther == shipped + dirList="$dirList $FOAM_CONFIG_ETC $projectDir/etc" ;; esac set -- $dirList -[ "$#" -ge 1 ] || die "No directories to scan. Programming error?" +[ "$#" -ge 1 ] || die "No directories to scan. Programming or user error?" exitCode=2 # Fallback is a FileNotFound error @@ -278,7 +296,7 @@ exitCode=2 # Fallback is a FileNotFound error # # Special handling of config.sh/ , config.csh/ directories -if [ -n "$optConfig" -a -n "$shellOutput" -a -n "$fileName" ] +if [ -n "$optConfig" ] && [ -n "$shellOutput" ] && [ -n "$fileName" ] then case "$shellOutput" in csh*) diff --git a/bin/foamGetDict b/bin/foamGetDict index ebe5f304d95c0ea748559ecdd377a07096cce9c6..1809013ae9f2c368345d3bef717a5a0978aac6aa 100755 --- a/bin/foamGetDict +++ b/bin/foamGetDict @@ -33,7 +33,7 @@ # or {user,site} locations and copy it into the case directory. # # Environment -# FOAM_API +# FOAM_CONFIG_ETC # WM_PROJECT_DIR # WM_PROJECT_SITE # @@ -81,9 +81,7 @@ die() #------------------------------------------------------------------------------- projectDir="$WM_PROJECT_DIR" # Project dir -userDir="$HOME/.OpenFOAM" # As per foamVersion.H -groupDir="${WM_PROJECT_SITE:-$projectDir/site}" # As per foamVersion.H -projectApi="$FOAM_API" +unset projectApi #------------------------------------------------------------------------------- @@ -163,20 +161,12 @@ then fi -# No api specified -with-api= or from environment (FOAM_API) -if [ -z "$projectApi" ] -then - projectApi="$("$projectDir"/bin/foamEtcFile -show-api 2>/dev/null)" -fi - - -# Define the various places to be searched. -# Similar to foamEtcFile, but with etc/caseDicts/ for the projectDir -# Filter out nonexistent directories later +# The places to be searched. +# Like foamEtcFile, but "etc/caseDicts/" for the projectDir -searchDirs="${projectApi:+$userDir/$projectApi} $userDir \ -${projectApi:+$groupDir/$projectApi/etc} $groupDir/etc \ -$projectDir/etc/caseDicts"; +searchDirs="\ +$("$projectDir"/bin/foamEtcFile -list-test -mode=ug ${projectApi:+-with-api=$projectApi} 2>/dev/null) \ +$("$projectDir"/bin/foamEtcFile -list -mode=o caseDicts 2>/dev/null)"; ## echo "Using <$searchDirs>" 1>&2 diff --git a/bin/foamLog b/bin/foamLog index fa35d383bcfe6da027985b313003d3e8f8611dc8..25908fee22ac20fc5460481cd15e969c9273560a 100755 --- a/bin/foamLog +++ b/bin/foamLog @@ -7,6 +7,7 @@ # \\/ M anipulation | #------------------------------------------------------------------------------- # Copyright (C) 2011-2016 OpenFOAM Foundation +# Copyright (C) 2020 OpenCFD Ltd. #------------------------------------------------------------------------------ # License # This file is part of OpenFOAM. @@ -38,8 +39,6 @@ #------------------------------------------------------------------------------ Script="${0##*/}" toolsDir="${0%/*}/tools" -groupDir="${WM_PROJECT_SITE:-${WM_PROJECT_DIR:-<unknown>}/site}" -userDir="$HOME/.OpenFOAM" usage() { exec 1>&2 @@ -91,13 +90,9 @@ cat <<HELP The value taken will be the first (non-space)word after this column. The database ($Script.db) will taken from these locations: - . - $userDir/$FOAM_API/ - $userDir/ - $groupDir/$FOAM_API/etc/ - $groupDir/etc/ - $WM_PROJECT_DIR/etc/ - $toolsDir + ./ +$(foamEtcFile -list | sed -e 's#^# #') + $toolsDir option -quiet : suppresses the default information and only prints the extracted variables. diff --git a/bin/foamNewApp b/bin/foamNewApp index 756724fc5800a6d9d77d73371288c50cd3c12fee..9590a55199048c0d04c6f02ee0fabd69c0f79268 100755 --- a/bin/foamNewApp +++ b/bin/foamNewApp @@ -7,6 +7,7 @@ # \\/ M anipulation | #------------------------------------------------------------------------------- # Copyright (C) 2015-2017 OpenFOAM Foundation +# Copyright (C) 2020 OpenCFD Ltd. #------------------------------------------------------------------------------ # License # This file is part of OpenFOAM. @@ -32,7 +33,7 @@ # #------------------------------------------------------------------------------ Script=${0##*/} -DIR="$FOAM_ETC/codeTemplates/app" +DIR="$WM_PROJECT_DIR/etc/codeTemplates/app" usage() { while [ "$#" -ge 1 ]; do echo "$1"; shift; done diff --git a/bin/foamNewBC b/bin/foamNewBC index 496f13ba049be049fe2e9124eb0818fc7170414e..5b5384a9cb6f910b3f25047eec74c3d5bca7e3ec 100755 --- a/bin/foamNewBC +++ b/bin/foamNewBC @@ -7,6 +7,7 @@ # \\/ M anipulation | #------------------------------------------------------------------------------- # Copyright (C) 2015-2017 OpenFOAM Foundation +# Copyright (C) 2020 OpenCFD Ltd. #------------------------------------------------------------------------------ # License # This file is part of OpenFOAM. @@ -32,7 +33,7 @@ # #------------------------------------------------------------------------------ Script=${0##*/} -DIR="$FOAM_ETC/codeTemplates/BC" +DIR="$WM_PROJECT_DIR/etc/codeTemplates/BC" usage() { while [ "$#" -ge 1 ]; do echo "$1"; shift; done diff --git a/bin/foamNewFunctionObject b/bin/foamNewFunctionObject index 19feaf4a956e606a04da8d127404a3d6993f39aa..50763f8f66321727c80a80dca20e11f8b7e867e5 100755 --- a/bin/foamNewFunctionObject +++ b/bin/foamNewFunctionObject @@ -7,6 +7,7 @@ # \\/ M anipulation | #------------------------------------------------------------------------------- # Copyright (C) 2016-2017 OpenFOAM Foundation +# Copyright (C) 2020 OpenCFD Ltd. #------------------------------------------------------------------------------ # License # This file is part of OpenFOAM. @@ -33,7 +34,7 @@ # #------------------------------------------------------------------------------ Script=${0##*/} -DIR="$FOAM_ETC/codeTemplates/functionObject" +DIR="$WM_PROJECT_DIR/etc/codeTemplates/functionObject" usage() { while [ "$#" -ge 1 ]; do echo "$1"; shift; done diff --git a/bin/tools/foamConfigurePaths b/bin/tools/foamConfigurePaths index b267a235e266d3a9c4cf1e8cd7360e326c9c3542..f2d400ab2ff2df0fa0eb8edd21a0ee23debd4dda 100755 --- a/bin/tools/foamConfigurePaths +++ b/bin/tools/foamConfigurePaths @@ -19,15 +19,22 @@ # Adjust hardcoded installation versions and paths # in etc/{bashrc,cshrc} and etc/config.{sh,csh}/ # +# Requires +# - sed +# - bin/foamEtcFile +# +# Environment +# FOAM_CONFIG_ETC +# Alternative etc directory for shipped files +# #------------------------------------------------------------------------------ -usage() { - exec 1>&2 - while [ "$#" -ge 1 ]; do echo "$1"; shift; done +printHelp() { cat<<USAGE -usage: ${0##*/} options +usage: $0 options Basic + -etc=DIR set FOAM_CONFIG_ETC for alternative project files -project-path DIR specify 'WM_PROJECT_DIR' (eg, /opt/openfoam1806-patch1) -version VER specify project version (eg, v1806) -sp | -SP | -float32 single precision (WM_PRECISION_OPTION) @@ -36,13 +43,13 @@ Basic -int32 | -int64 the 'WM_LABEL_SIZE' Compiler - -system NAME specify 'system' compiler to use (eg, Gcc, Icc,...) - -third NAME specify 'ThirdParty' compiler to use (eg, Clang40,...) - -gcc VER specify 'default_gcc_version' for ThirdParty Gcc - -clang VER specify 'default_clang_version' for ThirdParty Clang - gmp-VERSION for ThirdParty gcc (gmp-system for system library) - mpfr-VERSION for ThirdParty gcc (mpfr-system for system library) - mpc-VERSION for ThirdParty gcc (mpc-system for system library) + -system-compiler NAME The 'system' compiler to use (eg, Gcc, Clang, Icc,...) + -third-compiler NAME The 'ThirdParty' compiler to use (eg, Clang40,...) + -gcc VER The 'default_gcc_version' for ThirdParty Gcc + -clang VER The 'default_clang_version' for ThirdParty Clang + gmp-VERSION For ThirdParty gcc (gmp-system for system library) + mpfr-VERSION For ThirdParty gcc (mpfr-system for system library) + mpc-VERSION For ThirdParty gcc (mpc-system for system library) MPI -mpi NAME specify 'WM_MPLIB' type (eg, INTELMPI, etc) @@ -50,22 +57,24 @@ MPI -openmpi-system use system openmpi -openmpi-third use ThirdParty openmpi (using default version) -Components +ThirdParty versions -adios VER specify 'adios2_version' - -adios-path DIR specify 'ADIOS2_ARCH_PATH' -boost VER specify 'boost_version' - -boost-path DIR specify 'BOOST_ARCH_PATH' -cgal ver specify 'cgal_version' - -cgal-path DIR specify 'CGAL_ARCH_PATH' -cmake VER specify 'cmake_version' -fftw VER specify 'fffw_version' - -fftw-path DIR specify 'FFTW_ARCH_PATH' -kahip VER specify 'KAHIP_VERSION' - -kahip-path DIR specify 'KAHIP_ARCH_PATH' -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/scotch_6.0.4) + +Components specified by absolute path + -adios-path DIR Path for 'ADIOS2_ARCH_PATH' (overrides -adios) + -boost-path DIR Path for 'BOOST_ARCH_PATH' (overrides -boost) + -cgal-path DIR Path for 'CGAL_ARCH_PATH' (overrides -cgal) + -fftw-path DIR Path for 'FFTW_ARCH_PATH' (overrides -fftw) + -kahip-path DIR Path for 'KAHIP_ARCH_PATH' (overrides -kahip) + -metis-path DIR Path for 'METIS_ARCH_PATH' (overrides -metis) + -scotch-path DIR Path for 'SCOTCH_ARCH_PATH' (overrides -scotch) Graphics -paraview VER specify 'ParaView_VERSION' (eg, 5.4.1 or system) @@ -92,11 +101,14 @@ Equivalent options: -paraview-path --paraviewInstall | -paraviewInstall -scotch --scotchVersion | -scotchVersion -scotch-path --scotchArchPath | -scotchArchPath + -system-compiler -system + -third-compiler -third USAGE - exit 1 + exit 0 # clean exit } + # Report error and exit die() { @@ -105,7 +117,7 @@ die() echo "Error encountered:" while [ "$#" -ge 1 ]; do echo " $1"; shift; done echo - echo "See '${0##*/} -help' for usage" + echo "See '$0 -help' for usage" echo exit 1 } @@ -113,8 +125,23 @@ die() # ----------------------------------------------------------------------------- # Check that it appears to be an OpenFOAM installation -[ -f etc/bashrc -a -d etc/config.sh ] || \ - usage "Please run from top-level directory of installation" +if [ -f etc/bashrc ] && [ -d "META-INFO" ] +then + echo "Configuring OpenFOAM" 1>&2 +else + die "Please run from the OpenFOAM top-level installation directory" \ + "No etc/bashrc or META-INFO/ found" +fi + +# Use foamEtcFile to locate files, but only edit shipped files +if [ -x bin/foamEtcFile ] +then + _foamEtc() { + ./bin/foamEtcFile -mode=o "$@" + } +else + die "No bin/foamEtcFile found in installation" +fi # Check if argument matches the expected input. Respects case. @@ -211,6 +238,28 @@ replaceCsh() done } +# Locate file with foamEtcFile -mode=o and forward to replace() +replaceEtc() +{ + local file="$1" + shift + + file=$(_foamEtc "$file") + replace $file "$@" +} + + +# Locate file with foamEtcFile -mode=o and forward to replaceCsh() +replaceEtcCsh() +{ + local file="$1" + shift + + file=$(_foamEtc "$file") + replaceCsh $file "$@" +} + + # Get the option's value (argument), or die on missing or empty argument # $1 option # $2 value @@ -275,22 +324,55 @@ while [ "$#" -gt 0 ] do case "$1" in -h | -help* | --help*) - usage + printHelp ;; '') # Discard empty arguments ;; + -debug-list) + # Undocumented (experimental) + # TDB: List files that can be edited by this script + cat << CONFIG_SH +etc/bashrc +etc/config.sh/adios2 +etc/config.sh/compiler +etc/config.sh/paraview +etc/config.sh/vtk +etc/config.sh/CGAL +etc/config.sh/FFTW +etc/config.sh/metis +etc/config.sh/kahip +etc/config.sh/scotch +CONFIG_SH + + cat << CONFIG_CSH +etc/cshrc +etc/config.csh/adios2 +etc/config.csh/compiler +etc/config.csh/paraview +etc/config.csh/vtk +etc/config.csh/CGAL +etc/config.csh/FFTW +CONFIG_CSH + exit 0 + ;; + ## Basic ## + -etc=*) + # Define FOAM_CONFIG_ETC for finding files + export FOAM_CONFIG_ETC="${1#*=}" + ;; + -project-path) # Replace WM_PROJECT_DIR=... optionValue=$(getOptionValue "$@") - replace etc/bashrc WM_PROJECT_DIR "\"$optionValue\"" - replaceCsh etc/cshrc WM_PROJECT_DIR "\"$optionValue\"" + replaceEtc bashrc WM_PROJECT_DIR "\"$optionValue\"" + replaceEtcCsh cshrc WM_PROJECT_DIR "\"$optionValue\"" - removeBashMagic etc/bashrc - removeCshMagic etc/cshrc + removeBashMagic $(_foamEtc bashrc) + removeCshMagic $(_foamEtc cshrc) adjusted=true shift @@ -299,8 +381,8 @@ do -version | -foamVersion | --projectVersion) # Replace WM_PROJECT_VERSION=... optionValue=$(getOptionValue "$@") - replace etc/bashrc WM_PROJECT_VERSION "$optionValue" - replaceCsh etc/cshrc WM_PROJECT_VERSION "$optionValue" + replaceEtc bashrc WM_PROJECT_VERSION "$optionValue" + replaceEtcCsh cshrc WM_PROJECT_VERSION "$optionValue" adjusted=true shift ;; @@ -314,30 +396,30 @@ do -sp | -SP | -float32) # Replace WM_PRECISION_OPTION=... - replace etc/bashrc WM_PRECISION_OPTION "SP" - replaceCsh etc/cshrc WM_PRECISION_OPTION "SP" + replaceEtc bashrc WM_PRECISION_OPTION "SP" + replaceEtcCsh cshrc WM_PRECISION_OPTION "SP" adjusted=true ;; -dp | -DP | -float64) # Replace WM_PRECISION_OPTION=... - replace etc/bashrc WM_PRECISION_OPTION "DP" - replaceCsh etc/cshrc WM_PRECISION_OPTION "DP" + replaceEtc bashrc WM_PRECISION_OPTION "DP" + replaceEtcCsh cshrc WM_PRECISION_OPTION "DP" adjusted=true ;; -spdp | -SPDP) # Replace WM_PRECISION_OPTION=... - replace etc/bashrc WM_PRECISION_OPTION "SPDP" - replaceCsh etc/cshrc WM_PRECISION_OPTION "SPDP" + replaceEtc bashrc WM_PRECISION_OPTION "SPDP" + replaceEtcCsh cshrc WM_PRECISION_OPTION "SPDP" adjusted=true ;; -int32 | -int64) # Replace WM_LABEL_SIZE=... optionValue="${1#-int}" - replace etc/bashrc WM_LABEL_SIZE "$optionValue" - replaceCsh etc/cshrc WM_LABEL_SIZE "$optionValue" + replaceEtc bashrc WM_LABEL_SIZE "$optionValue" + replaceEtcCsh cshrc WM_LABEL_SIZE "$optionValue" adjusted=true ;; @@ -347,8 +429,8 @@ do -clang) # Replace default_clang_version=... optionValue=$(getOptionValue "$@") - replace etc/config.sh/compiler default_clang_version "$optionValue" - replace etc/config.csh/compiler default_clang_version "$optionValue" + replaceEtc config.sh/compiler default_clang_version "$optionValue" + replaceEtc config.csh/compiler default_clang_version "$optionValue" adjusted=true shift ;; @@ -356,32 +438,32 @@ do -gcc) # Replace default_gcc_version=... optionValue=$(getOptionValue "$@") - replace etc/config.sh/compiler default_gcc_version "$optionValue" - replace etc/config.csh/compiler default_gcc_version "$optionValue" + replaceEtc config.sh/compiler default_gcc_version "$optionValue" + replaceEtc config.csh/compiler default_gcc_version "$optionValue" adjusted=true shift ;; - -system) + -system-compiler | -system) # Replace WM_COMPILER_TYPE=... and WM_COMPILER=... optionValue=$(getOptionValue "$@") - replace etc/bashrc \ + replaceEtc bashrc \ WM_COMPILER_TYPE system \ WM_COMPILER "$optionValue" - replaceCsh etc/cshrc \ + replaceEtcCsh cshrc \ WM_COMPILER_TYPE system \ WM_COMPILER "$optionValue" adjusted=true shift ;; - -third | -ThirdParty) + -third-compiler | -third | -ThirdParty) # Replace WM_COMPILER_TYPE=... and WM_COMPILER=... optionValue=$(getOptionValue "$@") - replace etc/bashrc \ + replaceEtc bashrc \ WM_COMPILER_TYPE ThirdParty \ WM_COMPILER "$optionValue" - replaceCsh etc/cshrc \ + replaceEtcCsh cshrc \ WM_COMPILER_TYPE ThirdParty \ WM_COMPILER "$optionValue" adjusted=true @@ -390,22 +472,22 @@ do gmp-[4-9]* | gmp-system) # gcc-related package - replace etc/config.sh/compiler default_gmp_version "$1" - replace etc/config.csh/compiler default_gmp_version "$1" + replaceEtc config.sh/compiler default_gmp_version "$1" + replaceEtc config.csh/compiler default_gmp_version "$1" adjusted=true ;; mpfr-[2-9]* | mpfr-system) # gcc-related package - replace etc/config.sh/compiler default_mpfr_version "$1" - replace etc/config.csh/compiler default_mpfr_version "$1" + replaceEtc config.sh/compiler default_mpfr_version "$1" + replaceEtc config.csh/compiler default_mpfr_version "$1" adjusted=true ;; mpc-[0-9]* | mpc-system) # gcc-related package - replace etc/config.sh/compiler default_mpc_version "$1" - replace etc/config.csh/compiler default_mpc_version "$1" + replaceEtc config.sh/compiler default_mpc_version "$1" + replaceEtc config.csh/compiler default_mpc_version "$1" adjusted=true ;; @@ -415,8 +497,8 @@ do -mpi) # Explicitly set WM_MPLIB=... optionValue=$(getOptionValue "$@") - replace etc/bashrc WM_MPLIB "$optionValue" - replaceCsh etc/bashrc WM_MPLIB "$optionValue" + replaceEtc bashrc WM_MPLIB "$optionValue" + replaceEtcCsh cshrc WM_MPLIB "$optionValue" optMpi=system adjusted=true shift @@ -431,34 +513,34 @@ do _matches "$optMpi" "$expected" || \ die "'$1' has bad value: '$optMpi'" - _inlineSed etc/config.sh/mpi \ + _inlineSed $(_foamEtc config.sh/mpi) \ "FOAM_MPI=$expected" \ "FOAM_MPI=$optMpi" \ "Replaced 'FOAM_MPI=$expected' setting by 'FOAM_MPI=$optMpi'" - _inlineSed etc/config.csh/mpi \ + _inlineSed $(_foamEtc 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 + replaceEtc bashrc WM_MPLIB OPENMPI + replaceEtcCsh cshrc WM_MPLIB OPENMPI adjusted=true shift ;; -openmpi-system) # Explicitly set WM_MPLIB=SYSTEMOPENMPI - replace etc/bashrc WM_MPLIB SYSTEMOPENMPI - replaceCsh etc/cshrc WM_MPLIB SYSTEMOPENMPI + replaceEtc bashrc WM_MPLIB SYSTEMOPENMPI + replaceEtcCsh 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 - replaceCsh etc/cshrc WM_MPLIB OPENMPI + replaceEtc bashrc WM_MPLIB OPENMPI + replaceEtcCsh cshrc WM_MPLIB OPENMPI optMpi=third adjusted=true ;; @@ -469,8 +551,8 @@ do -adios | -adios2) # Replace adios2_version=... optionValue=$(getOptionValue "$@") - replace etc/config.sh/adios2 adios2_version "$optionValue" - replace etc/config.csh/adios2 adios2_version "$optionValue" + replaceEtc config.sh/adios2 adios2_version "$optionValue" + replaceEtc config.csh/adios2 adios2_version "$optionValue" adjusted=true shift ;; @@ -478,8 +560,8 @@ do -adios-path | -adios2-path) # Replace ADIOS2_ARCH_PATH=... optionValue=$(getOptionValue "$@") - replace etc/config.sh/adios2 ADIOS2_ARCH_PATH "\"$optionValue\"" - replaceCsh etc/config.csh/adios2 ADIOS2_ARCH_PATH "\"$optionValue\"" + replaceEtc config.sh/adios2 ADIOS2_ARCH_PATH "\"$optionValue\"" + replaceEtcCsh config.csh/adios2 ADIOS2_ARCH_PATH "\"$optionValue\"" adjusted=true shift ;; @@ -487,8 +569,8 @@ do -boost) # Replace boost_version=... optionValue=$(getOptionValue "$@") - replace etc/config.sh/CGAL boost_version "$optionValue" - replace etc/config.csh/CGAL boost_version "$optionValue" + replaceEtc config.sh/CGAL boost_version "$optionValue" + replaceEtc config.csh/CGAL boost_version "$optionValue" adjusted=true shift ;; @@ -496,8 +578,8 @@ do -boost-path) # Replace BOOST_ARCH_PATH=... optionValue=$(getOptionValue "$@") - replace etc/config.sh/CGAL BOOST_ARCH_PATH "\"$optionValue\"" - replaceCsh etc/config.csh/CGAL BOOST_ARCH_PATH "\"$optionValue\"" + replaceEtc config.sh/CGAL BOOST_ARCH_PATH "\"$optionValue\"" + replaceEtcCsh config.csh/CGAL BOOST_ARCH_PATH "\"$optionValue\"" adjusted=true shift ;; @@ -505,8 +587,8 @@ do -cgal) # Replace cgal_version=... optionValue=$(getOptionValue "$@") - replace etc/config.sh/CGAL cgal_version "$optionValue" - replace etc/config.csh/CGAL cgal_version "$optionValue" + replaceEtc config.sh/CGAL cgal_version "$optionValue" + replaceEtc config.csh/CGAL cgal_version "$optionValue" adjusted=true shift ;; @@ -514,8 +596,8 @@ do -cgal-path) # Replace CGAL_ARCH_PATH=... optionValue=$(getOptionValue "$@") - replace etc/config.sh/CGAL CGAL_ARCH_PATH "$optionValue" - replaceCsh etc/config.csh/CGAL CGAL_ARCH_PATH "$optionValue" + replaceEtc config.sh/CGAL CGAL_ARCH_PATH "$optionValue" + replaceEtcCsh config.csh/CGAL CGAL_ARCH_PATH "$optionValue" adjusted=true shift ;; @@ -523,8 +605,8 @@ do -fftw) # Replace fftw_version=... optionValue=$(getOptionValue "$@") - replace etc/config.sh/FFTW fftw_version "$optionValue" - replace etc/config.csh/FFTW fftw_version "$optionValue" + replaceEtc config.sh/FFTW fftw_version "$optionValue" + replaceEtc config.csh/FFTW fftw_version "$optionValue" adjusted=true shift ;; @@ -532,8 +614,8 @@ do -fftw-path) # Replace FFTW_ARCH_PATH=... optionValue=$(getOptionValue "$@") - replace etc/config.sh/FFTW FFTW_ARCH_PATH "\"$optionValue\"" - replaceCsh etc/config.csh/FFTW FFTW_ARCH_PATH "\"$optionValue\"" + replaceEtc config.sh/FFTW FFTW_ARCH_PATH "\"$optionValue\"" + replaceEtcCsh config.csh/FFTW FFTW_ARCH_PATH "\"$optionValue\"" adjusted=true shift ;; @@ -541,8 +623,8 @@ do -cmake) # Replace cmake_version=... optionValue=$(getOptionValue "$@") - replace etc/config.sh/paraview cmake_version "$optionValue" - replace etc/config.csh/paraview cmake_version "$optionValue" + replaceEtc config.sh/paraview cmake_version "$optionValue" + replaceEtc config.csh/paraview cmake_version "$optionValue" adjusted=true shift ;; @@ -550,7 +632,7 @@ do -kahip) # Replace KAHIP_VERSION=... optionValue=$(getOptionValue "$@") - replace etc/config.sh/kahip KAHIP_VERSION "$optionValue" + replaceEtc config.sh/kahip KAHIP_VERSION "$optionValue" adjusted=true shift ;; @@ -558,7 +640,7 @@ do -kahip-path) # Replace KAHIP_ARCH_PATH=... optionValue=$(getOptionValue "$@") - replace etc/config.sh/kahip KAHIP_ARCH_PATH "\"$optionValue\"" + replaceEtc config.sh/kahip KAHIP_ARCH_PATH "\"$optionValue\"" adjusted=true shift ;; @@ -566,7 +648,7 @@ do -metis) # Replace METIS_VERSION=... optionValue=$(getOptionValue "$@") - replace etc/config.sh/metis METIS_VERSION "$optionValue" + replaceEtc config.sh/metis METIS_VERSION "$optionValue" adjusted=true shift ;; @@ -574,7 +656,7 @@ do -metis-path) # Replace METIS_ARCH_PATH=... optionValue=$(getOptionValue "$@") - replace etc/config.sh/metis METIS_ARCH_PATH "\"$optionValue\"" + replaceEtc config.sh/metis METIS_ARCH_PATH "\"$optionValue\"" adjusted=true shift ;; @@ -582,7 +664,7 @@ do -scotch | -scotchVersion | --scotchVersion) # Replace SCOTCH_VERSION=... optionValue=$(getOptionValue "$@") - replace etc/config.sh/scotch SCOTCH_VERSION "$optionValue" + replaceEtc config.sh/scotch SCOTCH_VERSION "$optionValue" adjusted=true shift ;; @@ -590,7 +672,7 @@ do -scotch-path | -scotchArchPath | --scotchArchPath) # Replace SCOTCH_ARCH_PATH=... optionValue=$(getOptionValue "$@") - replace etc/config.sh/scotch SCOTCH_ARCH_PATH "\"$optionValue\"" + replaceEtc config.sh/scotch SCOTCH_ARCH_PATH "\"$optionValue\"" adjusted=true shift ;; @@ -605,8 +687,8 @@ do _matches "$optionValue" "$expected" || \ [ "$optionValue" != "${optionValue%system}" ] || \ die "'$1' has bad value: '$optionValue'" - replace etc/config.sh/paraview ParaView_VERSION "$optionValue" - replace etc/config.csh/paraview ParaView_VERSION "$optionValue" + replaceEtc config.sh/paraview ParaView_VERSION "$optionValue" + replaceEtc config.csh/paraview ParaView_VERSION "$optionValue" adjusted=true shift ;; @@ -614,8 +696,8 @@ do -paraview-qt) # Replace ParaView_QT=... optionValue=$(getOptionValue "$@") - replace etc/config.sh/paraview ParaView_QT "$optionValue" - replace etc/config.csh/paraview ParaView_QT "$optionValue" + replaceEtc config.sh/paraview ParaView_QT "$optionValue" + replaceEtc config.csh/paraview ParaView_QT "$optionValue" adjusted=true shift ;; @@ -623,8 +705,8 @@ do -paraview-path | -paraviewInstall | --paraviewInstall) # Replace ParaView_DIR=... optionValue=$(getOptionValue "$@") - replace etc/config.sh/paraview ParaView_DIR \""$optionValue\"" - replaceCsh etc/config.csh/paraview ParaView_DIR \""$optionValue\"" + replaceEtc config.sh/paraview ParaView_DIR \""$optionValue\"" + replaceEtcCsh config.csh/paraview ParaView_DIR \""$optionValue\"" adjusted=true shift ;; @@ -632,8 +714,8 @@ do -vtk) # Replace vtk_version=... optionValue=$(getOptionValue "$@") - replace etc/config.sh/vtk vtk_version "$optionValue" - replace etc/config.csh/vtk vtk_version "$optionValue" + replaceEtc config.sh/vtk vtk_version "$optionValue" + replaceEtc config.csh/vtk vtk_version "$optionValue" adjusted=true shift ;; @@ -641,8 +723,8 @@ do -mesa) # Replace mesa_version=... optionValue=$(getOptionValue "$@") - replace etc/config.sh/vtk mesa_version "$optionValue" - replace etc/config.csh/vtk mesa_version "$optionValue" + replaceEtc config.sh/vtk mesa_version "$optionValue" + replaceEtc config.csh/vtk mesa_version "$optionValue" adjusted=true shift ;; diff --git a/bin/tools/foamCreateModuleInclude b/bin/tools/foamCreateModuleInclude index dd616ae30d1dec6c68cc61ad079985859ee117aa..7a955740575367048a3d47ce9a6eb64b439059a3 100755 --- a/bin/tools/foamCreateModuleInclude +++ b/bin/tools/foamCreateModuleInclude @@ -7,23 +7,10 @@ # \\/ M anipulation | #------------------------------------------------------------------------------ # Copyright (C) 2016-2017 CINECA -# Copyright (C) 2017-2019 OpenCFD Ltd. +# Copyright (C) 2017-2020 OpenCFD Ltd. #------------------------------------------------------------------------------ # License -# This file is part of OpenFOAM. -# -# OpenFOAM is free software: you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# OpenFOAM is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# for more details. -# -# You should have received a copy of the GNU General Public License -# along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. +# This file is part of OpenFOAM, distributed under GPL-3.0-or-later. # # Script # foamCreateModuleInclude @@ -134,15 +121,24 @@ syspath() { # Frontend: do all basic sanity checks in the front-end only if [ -z "$optBackend" ] then - # Check that it appears to be an OpenFOAM installation - [ -d "$projectDir" -a -f "$projectDir/etc/bashrc" ] || \ - die "Incorrect projectDir? $projectDir" - # Check preloads - for file in "$preloads" - do - [ -f "$file" ] || echo "No such file to preload: $file" 1>&2 - done + if [ -n "$preloads" ] + then + for file in $preloads + do + [ -f "$file" ] || echo "No such file to preload: $file" 1>&2 + done + fi + + # Check that it appears to be an OpenFOAM installation + # could also check [ -d "$projectDir/META-INFO" ] + if [ -d "$projectDir" ] && [ -f "etc/bashrc" ] + then + echo "Appears to be an OpenFOAM installation" 1>&2 + else + die "Incorrect OpenFOAM projectDir?" \ + " $projectDir" + fi # Call itself with clean environment. # Tag the start/end of the original PATH, MANPATH, LD_LIBRARY_PATH @@ -234,6 +230,9 @@ unset FOAM_INST_DIR WM_PROJECT_INST_DIR unset WM_PROJECT_USER_DIR WM_THIRD_PARTY_DIR unset SCOTCH_VERSION +# Probably don't want these either +unset FOAM_CONFIG_MODE + # Also remove user directories as being unreliable @@ -283,7 +282,7 @@ unalias util 2>/dev/null #------------------------------------------------ # Generalize environment. -# This needs rethinking since it largely duplicates logic from the etc/config.sh/settings +# Needs rethinking, it largely duplicates logic from etc/config.sh/settings rewriteEnv() { sed \ diff --git a/bin/tools/lib-dir b/bin/tools/lib-dir index 5cc178019db991b096f5342f881e45a8162f24a0..12651b22b6b9a2f48a19a8e6f6d7dd7a80269681 100755 --- a/bin/tools/lib-dir +++ b/bin/tools/lib-dir @@ -6,11 +6,10 @@ # \\ / A nd | www.openfoam.com # \\/ M anipulation | #------------------------------------------------------------------------------ -# Copyright (C) 2018 OpenCFD Ltd. +# Copyright (C) 2018-2020 OpenCFD Ltd. #------------------------------------------------------------------------------ # License -# This file is part of OpenFOAM, licensed under GNU General Public License -# <http://www.gnu.org/licenses/>. +# This file is part of OpenFOAM, distributed under GPL-3.0-or-later. # # Script # tools/lib-dir [OPTION] DIR [LIBEXT] @@ -135,7 +134,7 @@ then fi # 2) Use fallback if the previous failed -if [ -z "$resolved" -a -n "$alt" ] +if [ -z "$resolved" ] && [ -n "$alt" ] then # Fallback case "$alt" in diff --git a/etc/bashrc b/etc/bashrc index c242f6cd438c9bee5206f0a7249d75c60ce524ee..228d709edcb7f698ae26bc6c982953ec288531d4 100644 --- a/etc/bashrc +++ b/etc/bashrc @@ -35,10 +35,16 @@ # . /path/etc/bashrc WM_COMPILER=Clang WM_LABEL_SIZE=64 # # Environment -# FOAM_CONFIG_NOUSER (set/unset) -# - suppress use of user/group configuration files +# FOAM_CONFIG_ETC +# - alternative/additional location for OpenFOAM etc/ directory +# +# FOAM_CONFIG_MODE (search mode for etc config files - see foamEtcFile) +# - eg, FOAM_CONFIG_MODE="o" to only use OpenFOAM config files +# - no influence on OpenFOAM applications, just the config files +# # FOAM_VERBOSE (set/unset) # - add extra verbosity when sourcing files +# # WM_PROJECT_SITE (optional directory) # - local site-specific directory, uses WM_PROJECT_DIR/site if unset # diff --git a/etc/caseDicts/postProcessing/solvers/scalarTransport/scalarTransport b/etc/caseDicts/postProcessing/solvers/scalarTransport/scalarTransport index 24fc867895aac8be7878408fc535754bfa729da3..b7434eb2bec9f9f156bd3b858223152894beaa97 100644 --- a/etc/caseDicts/postProcessing/solvers/scalarTransport/scalarTransport +++ b/etc/caseDicts/postProcessing/solvers/scalarTransport/scalarTransport @@ -8,9 +8,10 @@ Description Solves a transport equation for a scalar field. - The name of the scalar field is specified in this file. A sample scalar - field file, that must be initialised for the case, typically in the 0 - directory, is available in $FOAM_ETC/caseDicts/solvers/scalarTransport. + The name of the scalar field is specified in this file. + A sample scalar field file, that must be initialised for the case, + typically in the 0 directory, + is available in tetc/caseDicts/solvers/scalarTransport \*---------------------------------------------------------------------------*/ diff --git a/etc/config.csh/functions b/etc/config.csh/functions index f71dd99015b9681447ee7d5ce5132c3fcd06331c..685b6462b0db20d593e540bf83ae5dc23c83ad07 100644 --- a/etc/config.csh/functions +++ b/etc/config.csh/functions @@ -5,11 +5,10 @@ # \\ / A nd | www.openfoam.com # \\/ M anipulation | #------------------------------------------------------------------------------ -# Copyright (C) 2018 OpenCFD Ltd. +# Copyright (C) 2018-2020 OpenCFD Ltd. #------------------------------------------------------------------------------ # License -# This file is part of OpenFOAM, licensed under GNU General Public License -# <http://www.gnu.org/licenses/>. +# This file is part of OpenFOAM, distributed under GPL-3.0-or-later. # # File # etc/config.csh/functions @@ -36,25 +35,13 @@ alias _foamAddLib 'setenv LD_LIBRARY_PATH \!*\:${LD_LIBRARY_PATH}' alias _foamAddLibAuto 'eval `$WM_PROJECT_DIR/bin/tools/lib-dir -csh \!*`' # Echo values when FOAM_VERBOSE is on, no-op otherwise +# Source an etc file, possibly with some verbosity if ($?FOAM_VERBOSE && $?prompt) then alias _foamEcho 'echo \!*' + alias _foamEtc 'eval `$WM_PROJECT_DIR/bin/foamEtcFile -csh-verbose \!*`' else alias _foamEcho 'true' -endif - -# Source an etc file, possibly with some verbosity -if ($?FOAM_VERBOSE && $?prompt) then - if ($?FOAM_CONFIG_NOUSER) then - alias _foamEtc 'eval `$WM_PROJECT_DIR/bin/foamEtcFile -csh-verbose -mode=o \!*`' - else - alias _foamEtc 'eval `$WM_PROJECT_DIR/bin/foamEtcFile -csh-verbose \!*`' - endif -else - if ($?FOAM_CONFIG_NOUSER) then - alias _foamEtc 'eval `$WM_PROJECT_DIR/bin/foamEtcFile -csh -mode=o \!*`' - else - alias _foamEtc 'eval `$WM_PROJECT_DIR/bin/foamEtcFile -csh \!*`' - endif + alias _foamEtc 'eval `$WM_PROJECT_DIR/bin/foamEtcFile -csh \!*`' endif diff --git a/etc/config.csh/settings b/etc/config.csh/settings index 206846e18ff656fac1915b153db9723470c7c6ff..196f66ebb01c010e9e7014460cc31037fc8f50f0 100644 --- a/etc/config.csh/settings +++ b/etc/config.csh/settings @@ -6,11 +6,10 @@ # \\/ M anipulation | #------------------------------------------------------------------------------ # Copyright (C) 2011-2016 OpenFOAM Foundation -# Copyright (C) 2016-2019 OpenCFD Ltd. +# Copyright (C) 2016-2020 OpenCFD Ltd. #------------------------------------------------------------------------------ # License -# This file is part of OpenFOAM, licensed under GNU General Public License -# <http://www.gnu.org/licenses/>. +# This file is part of OpenFOAM, distributed under GPL-3.0-or-later. # # File # etc/config.csh/settings diff --git a/etc/config.csh/setup b/etc/config.csh/setup index ecdea3b40f5a75d88896f89ba551895c05e5908c..497fdd795d14684984dbf0f78b3f7836ceaeadf2 100644 --- a/etc/config.csh/setup +++ b/etc/config.csh/setup @@ -18,10 +18,11 @@ # Finalize setup of OpenFOAM environment for C-shell (csh, tcsh) # # Environment +# FOAM_CONFIG_MODE (search mode for etc config files - see foamEtcFile) +# - eg, FOAM_CONFIG_MODE="o" to only use OpenFOAM config files +# # FOAM_VERBOSE (set/unset) # - add extra verbosity when sourcing files -# FOAM_CONFIG_NOUSER (set/unset) -# - suppress use of user/group configuration files # #------------------------------------------------------------------------------ @@ -77,14 +78,21 @@ endif # Overrides via <prefs.csh> -# 1. other (system) values +# 1. Always use (O)ther values from the OpenFOAM project etc/ directory _foamEtc -mode=o prefs.csh -# 2. user or group values (unless disabled) -if (! $?FOAM_CONFIG_NOUSER ) then - _foamEtc -mode=ug prefs.csh +# 2. (U)ser or (G)roup values (unless disabled). Could use some more work +if ($?FOAM_CONFIG_MODE) then + set configMode="${FOAM_CONFIG_MODE:s/o//}" # Already handled O(ther) +else + set configMode="ug" endif - +# Is the remainder valid - has U(ser) or G(roup)? +switch ("$configMode") +case *[ug]*: + _foamEtc -mode="$configMode" prefs.csh + breaksw +endsw # Capture and evaluate any command-line parameters # These can be used to set/unset values, specify additional files etc. @@ -119,6 +127,16 @@ while ( $#argv > 0 ) shift end +# The prefs may have injected a FOAM_CONFIG_ETC value. +# Verify that it makes sense before continuing. +if ( $?FOAM_CONFIG_ETC ) then + if ( ! -d "$FOAM_CONFIG_ETC" ) then + echo "Ignore invalid FOAM_CONFIG_ETC = $FOAM_CONFIG_ETC" + else if ( "$FOAM_CONFIG_ETC" == "$WM_PROJECT_DIR/etc" ) then + unsetenv FOAM_CONFIG_ETC + endif +endif + # Clean standard environment variables (PATH, MANPATH, LD_LIBRARY_PATH) # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/etc/config.csh/unset b/etc/config.csh/unset index 94dc6f84908bb6d43094f31085e2ac9e7f41d43a..580fb8c85639b79cf9ad9ca1ca514b40a0f16263 100644 --- a/etc/config.csh/unset +++ b/etc/config.csh/unset @@ -6,7 +6,7 @@ # \\/ M anipulation | #------------------------------------------------------------------------------ # Copyright (C) 2011-2016 OpenFOAM Foundation -# Copyright (C) 2016-2019 OpenCFD Ltd. +# Copyright (C) 2016-2020 OpenCFD Ltd. #------------------------------------------------------------------------------ # License # This file is part of OpenFOAM, distributed under GPL-3.0-or-later. @@ -82,6 +82,8 @@ unsetenv FOAM_API unsetenv FOAM_APPBIN unsetenv FOAM_APP unsetenv FOAM_CODE_TEMPLATES +unsetenv FOAM_CONFIG_ETC +unsetenv FOAM_CONFIG_MODE unsetenv FOAM_ETC unsetenv FOAM_EXTRA_CXXFLAGS unsetenv FOAM_EXTRA_LDFLAGS diff --git a/etc/config.sh/functions b/etc/config.sh/functions index 6bd5ac74f028d34895878931b8c84847f5d631d6..30ca825534383825afd3e2f7f35dbde0acd17692 100644 --- a/etc/config.sh/functions +++ b/etc/config.sh/functions @@ -6,11 +6,10 @@ # \\/ M anipulation | #------------------------------------------------------------------------------ # Copyright (C) 2011-2016 OpenFOAM Foundation -# Copyright (C) 2017-2018 OpenCFD Ltd. +# Copyright (C) 2017-2020 OpenCFD Ltd. #------------------------------------------------------------------------------ # License -# This file is part of OpenFOAM, licensed under GNU General Public License -# <http://www.gnu.org/licenses/>. +# This file is part of OpenFOAM, distributed under GPL-3.0-or-later. # # File # etc/config.sh/functions @@ -39,32 +38,25 @@ then { foamVar_name="$1" shift - eval "$($foamClean -sh-env=$foamVar_name $@)" + eval "$($foamClean -sh-env="$foamVar_name" "$@")" 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 _foamEcho 2>/dev/null unset -f _foamEtc 2>/dev/null if [ -n "$FOAM_VERBOSE" ] && [ -n "$PS1" ] then - _foamEtc() - { - eval "$($WM_PROJECT_DIR/bin/foamEtcFile -sh-verbose ${FOAM_CONFIG_NOUSER:+-mode=o} $@)"; + _foamEcho() { echo "$@" 1>&2; } + _foamEtc() { + eval "$("$WM_PROJECT_DIR"/bin/foamEtcFile -sh-verbose "$@")"; } else - _foamEtc() - { - eval "$($WM_PROJECT_DIR/bin/foamEtcFile -sh ${FOAM_CONFIG_NOUSER:+-mode=o} $@)"; + _foamEcho() { true; } + _foamEtc() { + eval "$("$WM_PROJECT_DIR"/bin/foamEtcFile -sh "$@")"; } fi @@ -162,7 +154,7 @@ then # - use lib-dir script instead of rewriting _foamAddLibAuto() { - eval "$($WM_PROJECT_DIR/bin/tools/lib-dir -sh $@)"; + eval "$("$WM_PROJECT_DIR"/bin/tools/lib-dir -sh "$@")"; } fi diff --git a/etc/config.sh/paraview b/etc/config.sh/paraview index ab2f12e6044f3fac0b3aa7e5fb763a320be25a6a..d850ccf307b9f93ec3a0ffc76c81fbf8be1d66b8 100644 --- a/etc/config.sh/paraview +++ b/etc/config.sh/paraview @@ -6,11 +6,10 @@ # \\/ M anipulation | #------------------------------------------------------------------------------ # Copyright (C) 2011-2016 OpenFOAM Foundation -# Copyright (C) 2016-2019 OpenCFD Ltd. +# Copyright (C) 2016-2020 OpenCFD Ltd. #------------------------------------------------------------------------------ # License -# This file is part of OpenFOAM, licensed under GNU General Public License -# <http://www.gnu.org/licenses/>. +# This file is part of OpenFOAM, distributed under GPL-3.0-or-later. # # File # etc/config.sh/paraview @@ -109,7 +108,7 @@ case "$ParaView_VERSION" in (system) unset PV_PLUGIN_PATH - eval "$($WM_PROJECT_DIR/bin/foamEtcFile -sh ${FOAM_CONFIG_NOUSER:+-mode=o} -config paraview-system)" + eval "$($WM_PROJECT_DIR/bin/foamEtcFile -sh -config paraview-system)" ;; (*) diff --git a/etc/config.sh/settings b/etc/config.sh/settings index 8b3ba1248fccb52a7aca795bb97279108b9ecc6a..fefba566bc47f5b30e13c13ed9557c727a6938a4 100644 --- a/etc/config.sh/settings +++ b/etc/config.sh/settings @@ -6,11 +6,10 @@ # \\/ M anipulation | #------------------------------------------------------------------------------ # Copyright (C) 2011-2016 OpenFOAM Foundation -# Copyright (C) 2016-2019 OpenCFD Ltd. +# Copyright (C) 2016-2020 OpenCFD Ltd. #------------------------------------------------------------------------------ # License -# This file is part of OpenFOAM, licensed under GNU General Public License -# <http://www.gnu.org/licenses/>. +# This file is part of OpenFOAM, distributed under GPL-3.0-or-later. # # File # etc/config.sh/settings diff --git a/etc/config.sh/setup b/etc/config.sh/setup index afead38f9ff69a509f4d08f33bb062536502b4ff..407aa4cce68050705da87b30ce2f570d915aeaea 100644 --- a/etc/config.sh/setup +++ b/etc/config.sh/setup @@ -5,11 +5,10 @@ # \\ / A nd | www.openfoam.com # \\/ M anipulation | #------------------------------------------------------------------------------ -# Copyright (C) 2018 OpenCFD Ltd. +# Copyright (C) 2018-2020 OpenCFD Ltd. #------------------------------------------------------------------------------ # License -# This file is part of OpenFOAM, licensed under GNU General Public License -# <http://www.gnu.org/licenses/>. +# This file is part of OpenFOAM, distributed under GPL-3.0-or-later. # # File # etc/config.sh/setup @@ -19,15 +18,16 @@ # Finalize setup of OpenFOAM environment for POSIX shell. # # Environment +# FOAM_CONFIG_MODE (search mode for etc config files - see foamEtcFile) +# - eg, FOAM_CONFIG_MODE="o" to only use OpenFOAM config files +# # FOAM_VERBOSE (set/unset) # - add extra verbosity when sourcing files -# FOAM_CONFIG_NOUSER (set/unset) -# - suppress use of user/group configuration files # #------------------------------------------------------------------------------ # [FOAM_API] - The API level for the project -export FOAM_API="$($WM_PROJECT_DIR/bin/foamEtcFile -show-api)" +export FOAM_API=$("$WM_PROJECT_DIR/bin/foamEtcFile" -show-api) # The installation parent directory prefixDir="${WM_PROJECT_DIR%/*}" @@ -83,11 +83,22 @@ fi # Overrides via <prefs.sh> -# 1. other (system) values +# 1. Always use O(ther) values from the OpenFOAM project etc/ directory _foamEtc -mode=o prefs.sh -# 2. user or group values (unless disabled) -[ -z "$FOAM_CONFIG_NOUSER" ] && _foamEtc -mode=ug prefs.sh +# 2. (U)ser or (G)roup values (unless disabled). +unset configMode +if [ -z "$FOAM_CONFIG_MODE" ] +then + configMode="ug" +else + case "$FOAM_CONFIG_MODE" in (*[u]*) configMode="${configMode}u" ;; esac + case "$FOAM_CONFIG_MODE" in (*[g]*) configMode="${configMode}g" ;; esac +fi +if [ -n "$configMode" ] +then + _foamEtc -mode="$configMode" prefs.sh +fi # Capture and evaluate any command-line parameters @@ -104,6 +115,21 @@ else _foamEval "$@" fi +# The prefs may have injected a FOAM_CONFIG_ETC value. +# Verify that it makes sense before continuing. +if [ -n "$FOAM_CONFIG_ETC" ] +then + if [ ! -d "$FOAM_CONFIG_ETC" ] + then + echo "Ignore invalid FOAM_CONFIG_ETC = $FOAM_CONFIG_ETC" 1>&2 + unset FOAM_CONFIG_ETC + elif [ "$FOAM_CONFIG_ETC" = "$WM_PROJECT_DIR/etc" ] + then + # Redundant value + unset FOAM_CONFIG_ETC + fi +fi + # Clean standard environment variables (PATH, MANPATH, LD_LIBRARY_PATH) # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/etc/config.sh/unset b/etc/config.sh/unset index 4b9bcbf15f7799bc49fd30f383315a8601c844a3..6f05533f1ba0485779468bdec78cdeb3f90e4c5d 100644 --- a/etc/config.sh/unset +++ b/etc/config.sh/unset @@ -69,6 +69,8 @@ unset FOAM_API unset FOAM_APPBIN unset FOAM_APP unset FOAM_CODE_TEMPLATES +unset FOAM_CONFIG_ETC +unset FOAM_CONFIG_MODE unset FOAM_ETC unset FOAM_EXTRA_CXXFLAGS unset FOAM_EXTRA_LDFLAGS diff --git a/etc/cshrc b/etc/cshrc index db231b57de0a39be328a8c7f68ec03652cc77fd5..380f9d3d495afd0f9af08b85e1869fd245d62c8f 100644 --- a/etc/cshrc +++ b/etc/cshrc @@ -35,10 +35,16 @@ # source /path/etc/cshrc WM_COMPILER=Clang WM_LABEL_SIZE=64 # # Environment -# FOAM_CONFIG_NOUSER (set/unset) -# - suppress use of user/group configuration files +# FOAM_CONFIG_ETC +# - alternative/additional location for OpenFOAM etc/ directory +# +# FOAM_CONFIG_MODE (search mode for etc config files - see foamEtcFile) +# - eg, FOAM_CONFIG_MODE="o" to only use OpenFOAM config files +# - no influence on OpenFOAM applications, just the config files +# # FOAM_VERBOSE (set/unset) # - add extra verbosity when sourcing files +# # WM_PROJECT_SITE (optional directory) # - local site-specific directory, uses WM_PROJECT_DIR/site if unset # diff --git a/etc/openfoam b/etc/openfoam index e6d67dcb5754339c070c2f30604808c8f8610061..7bbe622fe3c5b15523c3fc1c79fa6331e2de1f2f 100755 --- a/etc/openfoam +++ b/etc/openfoam @@ -51,6 +51,7 @@ options: -dp Double precision -spdp Mixed single/double precision -int32 | -int64 The label-size + -etc=DIR Additional project etc/ directory -prefix=DIR Alternative OpenFOAM project directory -show-api | -version Print META-INFO api value and exit -show-patch Print META-INFO patch value and exit @@ -91,7 +92,7 @@ getApiInfo() # No inheritance of FOAM_SETTINGS unset FOAM_SETTINGS -unset _foamSettings _foamScriptCommand +unset _foamEtcDir _foamSettings _foamScriptCommand # Parse options while [ "$#" -gt 0 ] @@ -142,6 +143,11 @@ do _foamSettings="$_foamSettings${_foamSettings:+ }WM_LABEL_SIZE=${1#-int}" ;; + -etc=*) + # Define FOAM_CONFIG_ETC for finding files + _foamEtcDir="${1#*=}" + ;; + -prefix=*) projectDir="${1#*=}" ;; @@ -205,6 +211,14 @@ fi exit 2 } +if [ -n "$_foamEtcDir" ] && [ -d "$_foamEtcDir" ] +then + # Additional etc directory + export FOAM_CONFIG_ETC="$_foamEtcDir" +else + unset FOAM_CONFIG_ETC +fi + if [ -n "$interactive" ] then # Interactive shell diff --git a/etc/templates/closedVolume/README b/etc/templates/closedVolume/README index e82f1320ee6dbc3b3c155d93031516e658e5b26c..0ff3c261e72786c57c8c09e9f75548df15a14a00 100644 --- a/etc/templates/closedVolume/README +++ b/etc/templates/closedVolume/README @@ -11,7 +11,7 @@ Overview Meshing ======= + Meshing is setup as in the inflowOutflow template -+ See $FOAM_ETC/templates/inflowOutflow/README for details ++ See etc/templates/inflowOutflow/README for details + The setup includes an example for one named patch to be generated in the mesh + In snappyHexMeshDict, replace <CADregionName> with the name of region in the trisurface; replace <patchName> with the name of the resulting mesh patch @@ -21,4 +21,4 @@ Initialisation + In the field files in the 0 directory, set initial values + The template includes a fixedValue boundary condition on <patchName> in 0/T + The user can replace <patchName> with a real mesh patch name and apply a - fixed temperature on that patch \ No newline at end of file + fixed temperature on that patch diff --git a/src/OpenFOAM/global/fileOperations/collatedFileOperation/collatedFileOperation.C b/src/OpenFOAM/global/fileOperations/collatedFileOperation/collatedFileOperation.C index 4ae1f70db00e018dbc31d67c45aae9fb9086a28b..935084e476e49ab5b574d82320e61c0ff9b2452e 100644 --- a/src/OpenFOAM/global/fileOperations/collatedFileOperation/collatedFileOperation.C +++ b/src/OpenFOAM/global/fileOperations/collatedFileOperation/collatedFileOperation.C @@ -294,7 +294,7 @@ Foam::fileOperations::collatedFileOperation::collatedFileOperation "enabled, deactivate" << nl << " threading by setting maxThreadFileBufferSize " "to 0 in" << nl - << " $FOAM_ETC/controlDict" + << " OpenFOAM etc/controlDict" << endl; } diff --git a/wmake/scripts/have_adios2 b/wmake/scripts/have_adios2 index e5503993d6238765e4be160456762cb7835b54b0..821eea7e1be53bbc37e5d516d993c48edca48306 100644 --- a/wmake/scripts/have_adios2 +++ b/wmake/scripts/have_adios2 @@ -51,7 +51,7 @@ echo_adios2() } -# Provide hint for enabling +# Hint for enabling hint_adios2() { /bin/cat<<INFORMATION 1>&2 @@ -114,10 +114,10 @@ have_adios2() elif hasAbsdir "$prefix" then header=$(findFirstFile "$prefix/include/$incName") - library="$(findExtLib $libName)" + library=$(findExtLib "$libName") elif isSystem "$prefix" then - header=$(findFirstFile "/usr/local/include/$incName" "/usr/include/$incName") + header=$(findSystemInclude -name="$incName") prefix=$(sysPrefix "$header") else unset prefix @@ -131,10 +131,9 @@ have_adios2() } # Library - [ -n "$library" ] || library=$(findLibrary \ - "$prefix/lib/$libName" \ - "$prefix/lib$WM_COMPILER_LIB_ARCH/$libName" \ - ) || { + [ -n "$library" ] \ + || library=$(findLibrary -prefix="$prefix" -name="$libName") \ + || { [ -n "$warn" ] && echo "$warn (no library)" return 2 } @@ -149,7 +148,7 @@ have_adios2() } -# Force reset of old variables +# Reset variables no_adios2 # Test/query diff --git a/wmake/scripts/have_boost b/wmake/scripts/have_boost index 9e9d168ef59a3281973d2717e8be6cd18cca9662..d901e7a27703f4d90cbbfb95bb3f554935013b53 100644 --- a/wmake/scripts/have_boost +++ b/wmake/scripts/have_boost @@ -90,10 +90,10 @@ have_boost() elif hasAbsdir "$prefix" then header=$(findFirstFile "$prefix/include/$incName") - library="$(findExtLib $libName)" + library=$(findExtLib "$libName") elif isSystem "$prefix" then - header=$(findFirstFile "/usr/local/include/$incName" "/usr/include/$incName") + header=$(findSystemInclude -name="$incName") prefix=$(sysPrefix "$header") else unset prefix @@ -107,10 +107,9 @@ have_boost() } # Library - [ -n "$library" ] || library=$(findLibrary \ - "$prefix/lib/$libName" \ - "$prefix/lib$WM_COMPILER_LIB_ARCH/$libName" \ - ) || { + [ -n "$library" ] \ + || library=$(findLibrary -prefix="$prefix" -name="$libName") \ + || { [ -n "$warn" ] && echo "$warn (no library)" return 2 } @@ -127,7 +126,7 @@ have_boost() } -# Force reset of old variables +# Reset variables no_boost # Test/query diff --git a/wmake/scripts/have_ccmio b/wmake/scripts/have_ccmio index c9962fcf0609f96323effb36d5dd6b387e8c7cda..c3dc3f3595156b373ca30b90feb407580402797f 100644 --- a/wmake/scripts/have_ccmio +++ b/wmake/scripts/have_ccmio @@ -97,7 +97,7 @@ have_ccmio() elif hasAbsdir "$prefix" then header=$(findFirstFile "$prefix/include/$incName") - library="$(findExtLib $libName)" + library=$(findExtLib "$libName") else unset prefix fi @@ -110,10 +110,9 @@ have_ccmio() } # Library - [ -n "$library" ] || library=$(findLibrary \ - "$prefix/lib/$libName" \ - "$prefix/lib$WM_COMPILER_LIB_ARCH/$libName" \ - ) || { + [ -n "$library" ] \ + || library=$(findLibrary -prefix="$prefix" -name="$libName") \ + || { [ -n "$warn" ] && echo "$warn (no library)" return 2 } @@ -153,7 +152,7 @@ have_ccmio() } -# Force reset of old variables +# Reset variables no_ccmio # Test/query diff --git a/wmake/scripts/have_cgal b/wmake/scripts/have_cgal index e4bce0da18caba3ee5193aa4172ca76f64f0834e..ae6b9362cd6dc6bacb0c4b71c5f736a75e88fa37 100644 --- a/wmake/scripts/have_cgal +++ b/wmake/scripts/have_cgal @@ -90,10 +90,10 @@ have_cgal() elif hasAbsdir "$prefix" then header=$(findFirstFile "$prefix/include/$incName") - library="$(findExtLib $libName)" + library=$(findExtLib "$libName") elif isSystem "$prefix" then - header=$(findFirstFile "/usr/local/include/$incName" "/usr/include/$incName") + header=$(findSystemInclude -name="$incName") prefix=$(sysPrefix "$header") else unset prefix @@ -107,10 +107,9 @@ have_cgal() } # Library - [ -n "$library" ] || library=$(findLibrary \ - "$prefix/lib/$libName" \ - "$prefix/lib$WM_COMPILER_LIB_ARCH/$libName" \ - ) || { + [ -n "$library" ] \ + || library=$(findLibrary -prefix="$prefix" -name="$libName") \ + || { [ -n "$warn" ] && echo "$warn (no library)" return 2 } @@ -127,7 +126,7 @@ have_cgal() } -# Force reset of old variables +# Reset variables no_cgal # Test/query diff --git a/wmake/scripts/have_fftw b/wmake/scripts/have_fftw index 75f0ce623bd5bedefbc8905e2ddee37dbd5991b0..17004910acb904fce5e6155c7389eaaed3a7888e 100644 --- a/wmake/scripts/have_fftw +++ b/wmake/scripts/have_fftw @@ -90,10 +90,10 @@ have_fftw() elif hasAbsdir "$prefix" then header=$(findFirstFile "$prefix/include/$incName") - library="$(findExtLib $libName)" + library=$(findExtLib "$libName") elif isSystem "$prefix" then - header=$(findFirstFile "/usr/local/include/$incName" "/usr/include/$incName") + header=$(findSystemInclude -name="$incName") prefix=$(sysPrefix "$header") else unset prefix @@ -107,10 +107,9 @@ have_fftw() } # Library - [ -n "$library" ] || library=$(findLibrary \ - "$prefix/lib/$libName" \ - "$prefix/lib$WM_COMPILER_LIB_ARCH/$libName" \ - ) || { + [ -n "$library" ] \ + || library=$(findLibrary -prefix="$prefix" -name="$libName") \ + || { [ -n "$warn" ] && echo "$warn (no library)" return 2 } @@ -125,7 +124,7 @@ have_fftw() } -# Force reset of old variables +# Reset variables no_fftw # Test/query diff --git a/wmake/scripts/have_hypre b/wmake/scripts/have_hypre index 6ab53a8fbb7d1fce2e3888d642a30e9e2976042c..d09239ed149959291a4159069ba8ba7d2674ca62 100644 --- a/wmake/scripts/have_hypre +++ b/wmake/scripts/have_hypre @@ -101,10 +101,10 @@ have_hypre() elif hasAbsdir "$prefix" then header=$(findFirstFile "$prefix/include/$incName") - library="$(findExtLib $libName)" + library=$(findExtLib "$libName") elif isSystem "$prefix" then - header=$(findFirstFile "/usr/local/include/$incName" "/usr/include/$incName") + header=$(findSystemInclude -name="$incName") prefix=$(sysPrefix "$header") else unset prefix @@ -118,10 +118,9 @@ have_hypre() } # Library - [ -n "$library" ] || library=$(findLibrary \ - "$prefix/lib/$libName" \ - "$prefix/lib$WM_COMPILER_LIB_ARCH/$libName" \ - ) || { + [ -n "$library" ] \ + || library=$(findLibrary -prefix="$prefix" -name="$libName") \ + || { [ -n "$warn" ] && echo "$warn (no library)" return 2 } @@ -136,7 +135,7 @@ have_hypre() } -# Force reset of old variables +# Reset variables no_hypre # Test/query diff --git a/wmake/scripts/have_kahip b/wmake/scripts/have_kahip index 78b0da6d54609fc26b9cf28a15eb87274c41404b..336a3d69c7df4539043254b3553722d2ad5d353d 100644 --- a/wmake/scripts/have_kahip +++ b/wmake/scripts/have_kahip @@ -98,10 +98,10 @@ have_kahip() elif hasAbsdir "$prefix" then header=$(findFirstFile "$prefix/include/$incName") - library="$(findExtLib $libName)" + library=$(findExtLib "$libName") elif isSystem "$prefix" then - header=$(findFirstFile "/usr/local/include/$incName" "/usr/include/$incName") + header=$(findSystemInclude -name="$incName") prefix=$(sysPrefix "$header") else unset prefix @@ -115,10 +115,9 @@ have_kahip() } # Library - [ -n "$library" ] || library=$(findLibrary \ - "$prefix/lib/$libName" \ - "$prefix/lib$WM_COMPILER_LIB_ARCH/$libName" \ - ) || { + [ -n "$library" ] \ + || library=$(findLibrary -prefix="$prefix" -name="$libName") \ + || { [ -n "$warn" ] && echo "$warn (no library)" return 2 } @@ -136,7 +135,7 @@ have_kahip() } -# Force reset of old variables +# Reset variables no_kahip # Test/query diff --git a/wmake/scripts/have_metis b/wmake/scripts/have_metis index 7f98a420dfa7a0b3d215a5a62c920c6101250ac0..8fe54d3ad94553fb66b592658b2e7d32b22d2c66 100644 --- a/wmake/scripts/have_metis +++ b/wmake/scripts/have_metis @@ -98,10 +98,10 @@ have_metis() elif hasAbsdir "$prefix" then header=$(findFirstFile "$prefix/include/$incName") - library="$(findExtLib $libName)" + library=$(findExtLib "$libName") elif isSystem "$prefix" then - header=$(findFirstFile "/usr/local/include/$incName" "/usr/include/$incName") + header=$(findSystemInclude -name="$incName") prefix=$(sysPrefix "$header") else unset prefix @@ -115,10 +115,9 @@ have_metis() } # Library - [ -n "$library" ] || library=$(findLibrary \ - "$prefix/lib/$libName" \ - "$prefix/lib$WM_COMPILER_LIB_ARCH/$libName" \ - ) || { + [ -n "$library" ] \ + || library=$(findLibrary -prefix="$prefix" -name="$libName") \ + || { [ -n "$warn" ] && echo "$warn (no library)" return 2 } @@ -143,7 +142,7 @@ have_metis() } -# Force reset of old variables +# Reset variables no_metis # Test/query diff --git a/wmake/scripts/have_mgridgen b/wmake/scripts/have_mgridgen index f87bd36bde10b6349da7356c9f01c2897a1e8671..50e71f3851666b0a718240b4ab423b0f58292b48 100644 --- a/wmake/scripts/have_mgridgen +++ b/wmake/scripts/have_mgridgen @@ -99,10 +99,10 @@ have_mgridgen() elif hasAbsdir "$prefix" then header=$(findFirstFile "$prefix/include/$incName") - library="$(findExtLib $libName $libName2)" + library=$(findExtLib "$libName" "$libName2") elif isSystem "$prefix" then - header=$(findFirstFile "/usr/local/include/$incName" "/usr/include/$incName") + header=$(findSystemInclude -name="$incName") prefix=$(sysPrefix "$header") else unset prefix @@ -116,12 +116,10 @@ have_mgridgen() } # Library - [ -n "$library" ] || library=$(findLibrary \ - "$prefix/lib/$libName" \ - "$prefix/lib/$libName2" \ - "$prefix/lib$WM_COMPILER_LIB_ARCH/$libName" \ - "$prefix/lib$WM_COMPILER_LIB_ARCH/$libName2" \ - ) || { + [ -n "$library" ] \ + || library=$(findLibrary -prefix="$prefix" -name="$libName") \ + || library=$(findLibrary -prefix="$prefix" -name="$libName2") \ + || { #silent# [ -n "$warn" ] && echo "$warn (no library)" return 2 } @@ -181,7 +179,7 @@ have_mgridgen() } -# Force reset of old variables +# Reset variables no_mgridgen # Test/query diff --git a/wmake/scripts/have_petsc b/wmake/scripts/have_petsc index 1a6a1d8edcf79285bb637d3b96465c4888d3ee22..7726a4ded4033155848a9ed2b534d0579c3ccbd5 100644 --- a/wmake/scripts/have_petsc +++ b/wmake/scripts/have_petsc @@ -41,7 +41,7 @@ no_petsc() } -# Reset variables +# Report echo_petsc() { echo "petsc=${HAVE_PETSC:-false}" @@ -51,7 +51,7 @@ echo_petsc() } -# Provide hint for enabling +# Hint for enabling hint_petsc() { /bin/cat<<INFORMATION 1>&2 @@ -118,10 +118,10 @@ have_petsc() elif hasAbsdir "$prefix" then header=$(findFirstFile "$prefix/include/$incName") - library="$(findExtLib $libName)" + library=$(findExtLib "$libName") elif isSystem "$prefix" then - header=$(findFirstFile "/usr/local/include/$incName" "/usr/include/$incName") + header=$(findSystemInclude -name="$incName") prefix=$(sysPrefix "$header") # No system header, attempt discovery with pkg-config @@ -148,10 +148,9 @@ have_petsc() } # Library - [ -n "$library" ] || library=$(findLibrary \ - "$prefix/lib/$libName" \ - "$prefix/lib$WM_COMPILER_LIB_ARCH/$libName" \ - ) || { + [ -n "$library" ] \ + || library=$(findLibrary -prefix="$prefix" -name="$libName") \ + || { [ -n "$warn" ] && echo "$warn (no library)" return 2 } @@ -168,7 +167,7 @@ have_petsc() } -# Force reset of old variables +# Reset variables no_petsc # Test/query diff --git a/wmake/scripts/have_readline b/wmake/scripts/have_readline index 2e6aec3ae8f1e3105555b1e4dc9c3f6d7beef944..5f32a08cedba2a28a5e83b8e3316aaad1fdf386d 100644 --- a/wmake/scripts/have_readline +++ b/wmake/scripts/have_readline @@ -69,10 +69,10 @@ have_readline() elif hasAbsdir "$prefix" then header=$(findFirstFile "$prefix/include/$incName") - library="$(findExtLib $libName)" + library=$(findExtLib "$libName") elif isSystem "$prefix" then - header=$(findFirstFile "/usr/local/include/$incName" "/usr/include/$incName") + header=$(findSystemInclude -name="$incName") prefix=$(sysPrefix "$header") else unset prefix @@ -86,10 +86,9 @@ have_readline() } # Library - [ -n "$library" ] || library=$(findLibrary \ - "$prefix/lib/$libName" \ - "$prefix/lib$WM_COMPILER_LIB_ARCH/$libName" \ - ) || { + [ -n "$library" ] \ + || library=$(findLibrary -prefix="$prefix" -name="$libName") \ + || { [ -n "$warn" ] && echo "$warn (no library)" return 2 } @@ -105,7 +104,7 @@ have_readline() } -# Force reset of old variables +# Reset variables no_readline # Test/query diff --git a/wmake/scripts/have_scotch b/wmake/scripts/have_scotch index bb830fd9043b1774e616e533524f7c0932e286cd..87466b382d08edab4917b435ddf324dc13eefe9d 100644 --- a/wmake/scripts/have_scotch +++ b/wmake/scripts/have_scotch @@ -104,7 +104,7 @@ have_scotch() elif hasAbsdir "$prefix" then header=$(findFirstFile "$prefix/include/$incName") - library="$(findExtLib $libName)" + library=$(findExtLib "$libName") elif isSystem "$prefix" then header=$(findFirstFile \ @@ -126,10 +126,9 @@ have_scotch() } # Library - [ -n "$library" ] || library=$(findLibrary \ - "$prefix/lib/$libName" \ - "$prefix/lib$WM_COMPILER_LIB_ARCH/$libName" \ - ) || { + [ -n "$library" ] \ + || library=$(findLibrary -prefix="$prefix" -name="$libName") \ + || { [ -n "$warn" ] && echo "$warn (no library)" return 2 } @@ -246,10 +245,9 @@ have_ptscotch() } # Library - [ -n "$library" ] || library=$(findLibrary \ - "$prefix/lib/$libName" \ - "$prefix/lib$WM_COMPILER_LIB_ARCH/$libName" \ - ) || { + [ -n "$library" ] \ + || library=$(findLibrary -prefix="$prefix" -name="$libName") \ + || { [ -n "$warn" ] && echo "$warn (no library)" return 2 } @@ -265,7 +263,7 @@ have_ptscotch() } -# Force reset of old variables +# Reset variables no_scotch # Test/query diff --git a/wmake/scripts/have_zoltan b/wmake/scripts/have_zoltan index 2ae42024c32bce57c1b92b5d7f75b6ef5f97276c..5ef4073797777de06036ee015dd4bdfc07584676 100644 --- a/wmake/scripts/have_zoltan +++ b/wmake/scripts/have_zoltan @@ -97,10 +97,10 @@ have_zoltan() elif hasAbsdir "$prefix" then header=$(findFirstFile "$prefix/include/$incName") - library="$(findExtLib $libName)" + library=$(findExtLib "$libName") elif isSystem "$prefix" then - header=$(findFirstFile "/usr/local/include/$incName" "/usr/include/$incName") + header=$(findSystemInclude -name="$incName") prefix=$(sysPrefix "$header") else unset prefix @@ -114,10 +114,9 @@ have_zoltan() } # Library - [ -n "$library" ] || library=$(findLibrary \ - "$prefix/lib/$libName" \ - "$prefix/lib$WM_COMPILER_LIB_ARCH/$libName" \ - ) || { + [ -n "$library" ] \ + || library=$(findLibrary -prefix="$prefix" -name="$libName") \ + || { [ -n "$warn" ] && echo "$warn (no library)" return 2 } @@ -132,7 +131,7 @@ have_zoltan() } -# Force reset of old variables +# Reset variables no_zoltan # Test/query diff --git a/wmake/scripts/sysFunctions b/wmake/scripts/sysFunctions index a0c3daecb6a778421a2561c5cd6aa11c3a895f60..c5ce94cd227165e8bebc2663e128ebcda7edf368 100644 --- a/wmake/scripts/sysFunctions +++ b/wmake/scripts/sysFunctions @@ -5,7 +5,7 @@ # \\ / A nd | www.openfoam.com # \\/ M anipulation | #------------------------------------------------------------------------------ -# Copyright (C) 2018-2019 OpenCFD Ltd. +# Copyright (C) 2018-2020 OpenCFD Ltd. #------------------------------------------------------------------------------ # License # This file is part of OpenFOAM, distributed under GPL-3.0-or-later. @@ -20,12 +20,18 @@ # isNone, isSystem, isAbsdir, hasAbsdir # isDarwin, isWindows # findFirstFile +# findSystemInclude # findLibrary # findExtLib # # Internal variables used # extLibraries # +# External variables used +# WM_OSTYPE (is set for Windows) +# WM_COMPILER_LIB_ARCH +# DEB_TARGET_MULTIARCH +# #------------------------------------------------------------------------------ if [ -z "$WMAKE_SCRIPTS_SYSFUNCTIONS" ] @@ -33,14 +39,19 @@ then # Load once, but do not rely on this variable elsewhere WMAKE_SCRIPTS_SYSFUNCTIONS=loaded + # Handle Debian multi-arch, ignore missing/bad dpkg-architecture. + if [ -z "$DEB_TARGET_MULTIARCH" ] + then + DEB_TARGET_MULTIARCH=$(dpkg-architecture -qDEB_TARGET_MULTIARCH 2>/dev/null || true) + fi + # True if OS is Darwin. isDarwin() { - test Darwin = "$(uname -s 2>/dev/null)" + test Darwin = "$(uname -s 2>/dev/null || true)" } # True if target OS is Windows - # Uses cached value from libso extension isWindows() { test MSwindows = "$WM_OSTYPE" @@ -57,7 +68,6 @@ then extLibraries=".a .dll .dll.a" # including cross-compiling fi - # True if '$1' begins with '/' isAbsdir() { @@ -145,26 +155,113 @@ then return 2 } + # Check system /usr/local/include /usr/include paths + # + # On success, echoes the resolved file and returns 0, otherwise returns 2 + # + # Specify -name=incName to search for + # + findSystemInclude() + { + local searchName + + case "$1" in + -name=*) + searchName="${1#*=}" + ;; + esac + + if [ -z "$searchName" ] + then + return 1 + fi + + findFirstFile \ + "/usr/local/include/$searchName" \ + "/usr/include/$searchName" \ + ; + } # Check existence of library with ending '.a', '.so' ... # # On success, echoes the resolved file and returns 0, otherwise returns 2 + # + # This function has two modes of operation. + # + # 1) Automated search. + # Specify -prefix=dirName -name=libName and search for + # (lib, lib64, lib/x86_64..) etc. + # + # 2) Directed search. + # specify the fully qualified names to search on the parameter list + # findLibrary() { + local prefixDir searchDir searchName local file ext - for file + searchDir=true + + while [ "$searchDir" = true ] && [ "$#" -gt 0 ] do - [ -n "$file" ] || continue - for ext in '' $extLibraries + case "$1" in + -prefix=*) + prefixDir="${1#*=}" + shift + ;; + + -name=*) + searchName="${1#*=}" + shift + ;; + + (*) + unset searchDir + ;; + esac + done + + if [ -n "$searchName" ] + then + # Automated search + # Eg, lib/ lib64/, lib/x86_64-linux-gnu + + : "${prefixDir:=/usr}" # A reasonable default + [ -d "$prefixDir" ] || return 2 + + for searchDir in \ + lib \ + "${WM_COMPILER_LIB_ARCH:+lib}$WM_COMPILER_LIB_ARCH" \ + "${DEB_TARGET_MULTIARCH:+lib/}${DEB_TARGET_MULTIARCH}" \ + ; do - if [ -f "$file$ext" ] && [ -r "$file$ext" ] - then - echo "$file$ext" # Found - return 0 - fi + for ext in '' $extLibraries + do + file="$prefixDir/$searchDir/$searchName$ext" + if [ -f "$file" ] && [ -r "$file" ] + then + echo "$file" # Found + return 0 + fi + done done - done + + else + # Directed search + + for file + do + [ -n "$file" ] || continue + for ext in '' $extLibraries + do + if [ -f "$file$ext" ] && [ -r "$file$ext" ] + then + echo "$file$ext" # Found + return 0 + fi + done + done + fi return 2 }