diff --git a/bin/foamEtcFile b/bin/foamEtcFile index 544ca7b543..fc8cc57bf5 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</dev/null)" -fi +# The places to be searched. +# Like foamEtcFile, but "etc/caseDicts/" for the projectDir - -# Define the various places to be searched. -# Similar to foamEtcFile, but with etc/caseDicts/ for the projectDir -# Filter out nonexistent directories later - -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 fa35d383bc..25908fee22 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:-}/site}" -userDir="$HOME/.OpenFOAM" usage() { exec 1>&2 @@ -91,13 +90,9 @@ cat <&2 - while [ "$#" -ge 1 ]; do echo "$1"; shift; done +printHelp() { cat<&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 dd616ae30d..7a95574057 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 . +# 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 5cc178019d..12651b22b6 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 -# . +# 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 c242f6cd43..228d709edc 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 24fc867895..b7434eb2be 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 f71dd99015..685b6462b0 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 -# . +# 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 -if ($?FOAM_VERBOSE && $?prompt) then - alias _foamEcho 'echo \!*' -else - alias _foamEcho 'true' -endif - # Source an etc file, possibly with some verbosity if ($?FOAM_VERBOSE && $?prompt) then - if ($?FOAM_CONFIG_NOUSER) then - alias _foamEtc 'eval `$WM_PROJECT_DIR/bin/foamEtcFile -csh-verbose -mode=o \!*`' - else - alias _foamEtc 'eval `$WM_PROJECT_DIR/bin/foamEtcFile -csh-verbose \!*`' - endif + alias _foamEcho 'echo \!*' + alias _foamEtc 'eval `$WM_PROJECT_DIR/bin/foamEtcFile -csh-verbose \!*`' 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 _foamEcho 'true' + alias _foamEtc 'eval `$WM_PROJECT_DIR/bin/foamEtcFile -csh \!*`' endif diff --git a/etc/config.csh/settings b/etc/config.csh/settings index 206846e18f..196f66ebb0 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 -# . +# 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 ecdea3b40f..497fdd795d 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 -# 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 94dc6f8490..580fb8c856 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 6bd5ac74f0..30ca825534 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 -# . +# 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 ab2f12e604..d850ccf307 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 -# . +# 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 8b3ba1248f..fefba566bc 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 -# . +# 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 afead38f9f..407aa4cce6 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 -# . +# 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 -# 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 4b9bcbf15f..6f05533f1b 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 db231b57de..380f9d3d49 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 e6d67dcb57..7bbe622fe3 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 e82f1320ee..0ff3c261e7 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 with the name of region in the trisurface; replace 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 in 0/T + The user can replace 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 4ae1f70db0..935084e476 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 e5503993d6..821eea7e1b 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<&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 9e9d168ef5..d901e7a277 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 c9962fcf06..c3dc3f3595 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 e4bce0da18..ae6b9362cd 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 75f0ce623b..17004910ac 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 6ab53a8fbb..d09239ed14 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 78b0da6d54..336a3d69c7 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 7f98a420df..8fe54d3ad9 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 f87bd36bde..50e71f3851 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 1a6a1d8edc..7726a4ded4 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<&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 2e6aec3ae8..5f32a08ced 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 bb830fd904..87466b382d 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 2ae42024c3..5ef4073797 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 a0c3daecb6..c5ce94cd22 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,27 +155,114 @@ 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 - do - if [ -f "$file$ext" ] && [ -r "$file$ext" ] - then - echo "$file$ext" # Found - return 0 - fi - done + 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 + for ext in '' $extLibraries + do + file="$prefixDir/$searchDir/$searchName$ext" + if [ -f "$file" ] && [ -r "$file" ] + then + echo "$file" # Found + return 0 + fi + 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 }