etc/bashrc, etc/config.sh: Updates provided by Bruno Santos:

1. "foamCompiler" was changed to a more permanent "WM_COMPILER_TYPE"
    environment variable, so that it can be used by 3rd party
    installation scripts, such as "makeGcc", "makeLLVM" and so on. More
    on this will be provided in issue #1215.

 2. The script functions such as "_foamSource()" and "_foamAddPath()"
    were moved to a new file "etc/config.sh/functions". It has the
    ability to set or unset, depending on whether "WM_BASH_FUNCTIONS" is
    defined or not. This allows for these functions to be reused by
    other scripts, such as "makeGcc".

 3. The script "etc/config.sh/CGAL" relies on whether a local
    environment variable "SOURCE_CGAL_VERSIONS_ONLY" is defined or not,
    so that it will load only the version settings if it's defined. This
    is to make it easier to call this script from "makeCGAL". Although
    it still feels a bit of a clunky hack, but I didn't manage to deduce
    any other way we could do this :( I didn't add indentation within
    the if-block, to make it easier to read the changes. In addition,
    the local variable "common_path" is used to shorten the length of
    the lines and use slightly less repeated code.

 4. Added another new script "etc/config.sh/compiler", which has only
    the version numbers for the compilers taken out from the "settings"
    file. It currently depends on "WM_COMPILER_TYPE" for setting the
    variables, the same way it did with "foamCompiler". This script is
    now always sourced from the "settings" file, for the following
    reasons:

   - "makeGCC" and "makeLLVM" can now take advantage of this script file.

   - The example "compiler" script (detailed next) can rely on this
     script file and then override parameters on-demand, as well as
     allowing for system compilers to have dedicated settings, such as
     setting "WM_CC". This is similar to how the example environment
     script for "paraview" works.

 5. To the script "etc/config.sh/example/compiler" were added a few more examples:

   - It now starts with a block where it first loads the default "compiler" script.

   - Has a "WM_COMPILER=Gcc48u" case example for when we try to use GCC
     4.8 in Ubuntu 15.10. This is just to give the idea that in a
     particular system, we might have several system-wide compiler
     versions. For example, in Ubuntu 15.10, there is GCC 4.7, 4.8 and
     5.2, which could be used for testing performances or compatibility
     with some other 3rd party library.

   - Has the "WM_COMPILER=Icc" case example, related to the original bug
     report, where "WM_CC=icc" and "WM_CXX=icpc", so that the user then
     simply copies this file to their own local preferences folder.

 6. Small bug fix in "etc/config.sh/mpi", where unsetting "minBufferSize" was missing at the end of the script.

 7. Small change in "etc/config.sh/paraview", where "CMAKE_ROOT" is set
    along with "CMAKE_HOME". This is due to a rare issue that occurs on
    people's systems where they have a custom system-wide CMake version
    installed and which is used by having "CMAKE_ROOT" set on that
    environment. This can mess up OpenFOAM's custom ParaView builds,
    given that conflicting CMake versions can lead to not building
    ParaView at all.

   - For more details about "CMAKE_ROOT":
     https://cmake.org/Wiki/CMake_Useful_Variables [^]

 8. The scripts "_foamAddPath _foamAddLib _foamAddMan" were not being
    unset at the end of "settings". They are now unset at the end of
    "bashrc", through a call to the new double-use "functions" script.

Additionally all references to "foamCompiler" have been changed to
"WM_COMPILER_TYPE".

See also http://www.openfoam.org/mantisbt/view.php?id=1232
This commit is contained in:
Henry Weller
2016-03-09 09:01:09 +00:00
parent 6cc3b057ec
commit 711ec0e39d
9 changed files with 264 additions and 147 deletions

View File

@ -58,8 +58,8 @@ foamInstall=$HOME/$WM_PROJECT
: ${FOAM_INST_DIR:=$foamInstall}; export FOAM_INST_DIR : ${FOAM_INST_DIR:=$foamInstall}; export FOAM_INST_DIR
#- Compiler location: #- Compiler location:
# foamCompiler= system | ThirdParty (OpenFOAM) # WM_COMPILER_TYPE= system | ThirdParty (OpenFOAM)
foamCompiler=system export WM_COMPILER_TYPE=system
#- Compiler: #- Compiler:
# WM_COMPILER = Gcc | Gcc45 | Gcc46 | Gcc47 | Gcc48 | Gcc49| Clang | Icc # WM_COMPILER = Gcc | Gcc45 | Gcc46 | Gcc47 | Gcc48 | Gcc49| Clang | Icc
@ -137,52 +137,9 @@ fi
# ~~~~~~~~~~~~~~~~~~~~~~ # ~~~~~~~~~~~~~~~~~~~~~~
export WM_PROJECT_USER_DIR=$HOME/$WM_PROJECT/$USER-$WM_PROJECT_VERSION export WM_PROJECT_USER_DIR=$HOME/$WM_PROJECT/$USER-$WM_PROJECT_VERSION
# Source initialization functions
# Source files, possibly with some verbosity # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
_foamSource() . $WM_PROJECT_DIR/etc/config.sh/functions
{
while [ $# -ge 1 ]
do
[ "$FOAM_VERBOSE" -a "$PS1" ] && echo "Sourcing: $1" 1>&2
. $1
shift
done
}
# Evaluate command-line parameters
_foamEval()
{
while [ $# -gt 0 ]
do
case "$1" in
-*)
# stray option (not meant for us here) -> get out
break
;;
*=)
# name= -> unset name
[ "$FOAM_VERBOSE" -a "$PS1" ] && echo "unset ${1%=}" 1>&2
eval "unset ${1%=}"
;;
*=*)
# name=value -> export name=value
[ "$FOAM_VERBOSE" -a "$PS1" ] && echo "export $1" 1>&2
eval "export $1"
;;
*)
# filename: source it
if [ -f "$1" ]
then
_foamSource "$1"
else
_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile -silent "$1"`
fi
;;
esac
shift
done
}
# Add in preset user or site preferences: # Add in preset user or site preferences:
_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile prefs.sh` _foamSource `$WM_PROJECT_DIR/bin/foamEtcFile prefs.sh`
@ -245,9 +202,13 @@ then
fi fi
# cleanup environment: # Cleanup environment:
# ~~~~~~~~~~~~~~~~~~~~ # ~~~~~~~~~~~~~~~~~~~~
unset cleaned foamClean foamInstall foamOldDirs unset cleaned foamClean foamInstall foamOldDirs
unset _foamSource _foamEval
# Unload initialization functions:
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
. $WM_PROJECT_DIR/etc/config.sh/functions
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------

View File

@ -32,8 +32,13 @@
boost_version=boost-system boost_version=boost-system
cgal_version=CGAL-4.7 cgal_version=CGAL-4.7
export BOOST_ARCH_PATH=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/$boost_version if [ -z "$SOURCE_CGAL_VERSIONS_ONLY" ]
export CGAL_ARCH_PATH=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/$cgal_version then
common_path=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER
export BOOST_ARCH_PATH=$common_path/$boost_version
export CGAL_ARCH_PATH=$common_path/$cgal_version
if [ "$FOAM_VERBOSE" -a "$PS1" ] if [ "$FOAM_VERBOSE" -a "$PS1" ]
then then
@ -52,6 +57,8 @@ then
_foamAddLib $BOOST_ARCH_PATH/lib _foamAddLib $BOOST_ARCH_PATH/lib
fi fi
unset boost_version cgal_version unset boost_version cgal_version common_path
fi
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------

82
etc/config.sh/compiler Normal file
View File

@ -0,0 +1,82 @@
#----------------------------------*-sh-*--------------------------------------
# ========= |
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
# \\ / O peration |
# \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
# \\/ M anipulation |
#------------------------------------------------------------------------------
# License
# This file is part of OpenFOAM.
#
# OpenFOAM is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
# for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
#
# File
# etc/config.sh/compiler
#
# Description
# Startup file for custom compiler versions for OpenFOAM
# Sourced from OpenFOAM-<VERSION>/etc/config.sh/settings
#
#------------------------------------------------------------------------------
case "$WM_COMPILER_TYPE" in
OpenFOAM | ThirdParty)
# Default versions of GMP, MPFR and MPC, override as necessary
gmp_version=gmp-5.1.2
mpfr_version=mpfr-3.1.2
mpc_version=mpc-1.0.1
case "$WM_COMPILER" in
Gcc | Gcc48)
gcc_version=gcc-4.8.5
;;
Gcc45)
gcc_version=gcc-4.5.4
;;
Gcc46)
gcc_version=gcc-4.6.4
;;
Gcc47)
gcc_version=gcc-4.7.4
;;
Gcc49)
gcc_version=gcc-4.9.3
;;
Gcc51)
gcc_version=gcc-5.1.0
;;
Gcc52)
gcc_version=gcc-5.2.0
;;
Gcc53)
gcc_version=gcc-5.3.0
;;
Clang)
# Using clang - not gcc
export WM_CC='clang'
export WM_CXX='clang++'
clang_version=llvm-3.7.0
;;
*)
echo 1>&2
echo "Warning in $WM_PROJECT_DIR/etc/config.sh/compiler:" 1>&2
echo " Unknown OpenFOAM compiler type '$WM_COMPILER'" 1>&2
echo " Please check your settings" 1>&2
echo 1>&2
;;
esac
;;
esac

View File

@ -25,12 +25,19 @@
# config.sh/example/compiler # config.sh/example/compiler
# #
# Description # Description
# Example of fine tuning ThirdParty compiler settings for OpenFOAM # Example of fine tuning compiler versions and settings for OpenFOAM
# Sourced from OpenFOAM-<VERSION>/etc/config.sh/settings # Sourced from OpenFOAM-<VERSION>/etc/config.sh/settings
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# Modified compiler settings # First load the standard versions, if necessary
foamFile=$($WM_PROJECT_DIR/bin/foamEtcFile -mode o config.sh/compiler \
2>/dev/null)
[ $? -eq 0 ] && _foamSource $foamFile
unset foamFile
# Override compiler settings
case "$WM_COMPILER" in case "$WM_COMPILER" in
Gcc46 | Gcc46++0x) Gcc46 | Gcc46++0x)
gcc_version=gcc-4.6.0 gcc_version=gcc-4.6.0
@ -44,6 +51,17 @@ Gcc45 | Gcc45++0x)
mpfr_version=mpfr-2.4.2 mpfr_version=mpfr-2.4.2
mpc_version=mpc-0.8.1 mpc_version=mpc-0.8.1
;; ;;
Gcc48u)
# Example of using the system GCC 4.8 in Ubuntu 15.10. Keep in mind you
# will also need to create respective directory in "wmake/rules"
export WM_CC='gcc-4.8'
export WM_CXX='g++-4.8'
;;
Icc)
# Example for ensuring that 3rd software uses the Icc compilers
export WM_CC='icc'
export WM_CXX='icpc'
;;
esac esac
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------

View File

@ -38,7 +38,7 @@
## Specify OpenFOAM ThirdParty compiler ## Specify OpenFOAM ThirdParty compiler
## ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ## ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# foamCompiler=ThirdParty #WM_COMPILER_TYPE=ThirdParty
## Specify compiler type ## Specify compiler type
## ~~~~~~~~~~~~~~~~~~~~~ ## ~~~~~~~~~~~~~~~~~~~~~
@ -46,7 +46,7 @@
## Specify system openmpi ## Specify system openmpi
## ~~~~~~~~~~~~~~~~~~~~~~ ## ~~~~~~~~~~~~~~~~~~~~~~
# export WM_MPLIB=SYSTEMOPENMPI #export WM_MPLIB=SYSTEMOPENMPI
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------

122
etc/config.sh/functions Normal file
View File

@ -0,0 +1,122 @@
#----------------------------------*-sh-*--------------------------------------
# ========= |
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
# \\ / O peration |
# \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
# \\/ M anipulation |
#------------------------------------------------------------------------------
# License
# This file is part of OpenFOAM.
#
# OpenFOAM is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
# for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
#
# File
# etc/config.sh/functions
#
# Description
# Initialization script functions for the bashrc environment
# Sourced from OpenFOAM-<VERSION>/etc/config.sh/bashrc
#
#------------------------------------------------------------------------------
if [ -z "$WM_BASH_FUNCTIONS" ]
then
# Temporary environment variable for automatically (un)loading functions
WM_BASH_FUNCTIONS=loaded
# Source files, possibly with some verbosity
_foamSource()
{
while [ $# -ge 1 ]
do
[ "$FOAM_VERBOSE" -a "$PS1" ] && echo "Sourcing: $1" 1>&2
. $1
shift
done
}
# Evaluate command-line parameters
_foamEval()
{
while [ $# -gt 0 ]
do
case "$1" in
-*)
# stray option (not meant for us here) -> get out
break
;;
*=)
# name= -> unset name
[ "$FOAM_VERBOSE" -a "$PS1" ] && echo "unset ${1%=}" 1>&2
eval "unset ${1%=}"
;;
*=*)
# name=value -> export name=value
[ "$FOAM_VERBOSE" -a "$PS1" ] && echo "export $1" 1>&2
eval "export $1"
;;
*)
# filename: source it
if [ -f "$1" ]
then
_foamSource "$1"
else
_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile -silent "$1"`
fi
;;
esac
shift
done
}
# Prefix to PATH
_foamAddPath()
{
while [ $# -ge 1 ]
do
export PATH=$1:$PATH
shift
done
}
# Prefix to LD_LIBRARY_PATH
_foamAddLib()
{
while [ $# -ge 1 ]
do
export LD_LIBRARY_PATH=$1:$LD_LIBRARY_PATH
shift
done
}
# Prefix to MANPATH
_foamAddMan()
{
while [ $# -ge 1 ]
do
export MANPATH=$1:$MANPATH
shift
done
}
else
# Cleanup environment:
# ~~~~~~~~~~~~~~~~~~~~
unset WM_BASH_FUNCTIONS
unset _foamAddPath _foamAddLib _foamAddMan
unset _foamSource _foamEval
fi

View File

@ -267,4 +267,9 @@ then
fi fi
export MPI_BUFFER_SIZE export MPI_BUFFER_SIZE
# Cleanup environment:
# ~~~~~~~~~~~~~~~~~~~~
unset minBufferSize
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------

View File

@ -49,6 +49,7 @@ do
if [ -r $cmake ] if [ -r $cmake ]
then then
export CMAKE_HOME=$cmake export CMAKE_HOME=$cmake
export CMAKE_ROOT=$cmake
export PATH=$CMAKE_HOME/bin:$PATH export PATH=$CMAKE_HOME/bin:$PATH
break break
fi fi

View File

@ -30,37 +30,6 @@
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# Prefix to PATH
_foamAddPath()
{
while [ $# -ge 1 ]
do
export PATH=$1:$PATH
shift
done
}
# Prefix to LD_LIBRARY_PATH
_foamAddLib()
{
while [ $# -ge 1 ]
do
export LD_LIBRARY_PATH=$1:$LD_LIBRARY_PATH
shift
done
}
# Prefix to MANPATH
_foamAddMan()
{
while [ $# -ge 1 ]
do
export MANPATH=$1:$MANPATH
shift
done
}
#------------------------------------------------------------------------------
# Set environment variables according to system type # Set environment variables according to system type
export WM_ARCH=`uname -s` export WM_ARCH=`uname -s`
@ -233,61 +202,19 @@ unset MPFR_ARCH_PATH GMP_ARCH_PATH
# Location of compiler installation # Location of compiler installation
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
if [ -z "$foamCompiler" ] if [ -z "$WM_COMPILER_TYPE" ]
then then
foamCompiler=system WM_COMPILER_TYPE=system
echo "Warning in $WM_PROJECT_DIR/etc/config.sh/settings:" 1>&2 echo "Warning in $WM_PROJECT_DIR/etc/config.sh/settings:" 1>&2
echo " foamCompiler not set, using '$foamCompiler'" 1>&2 echo " WM_COMPILER_TYPE not set, using '$WM_COMPILER_TYPE'" 1>&2
fi fi
case "${foamCompiler}" in # Load configured compiler versions, regardless of the compiler type
OpenFOAM | ThirdParty) # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Default versions of GMP, MPFR and MPC, overide as necessary _foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.sh/compiler`
gmp_version=gmp-5.1.2
mpfr_version=mpfr-3.1.2
mpc_version=mpc-1.0.1
case "$WM_COMPILER" in
Gcc | Gcc48)
gcc_version=gcc-4.8.5
;;
Gcc45)
gcc_version=gcc-4.5.4
;;
Gcc46)
gcc_version=gcc-4.6.4
;;
Gcc47)
gcc_version=gcc-4.7.4
;;
Gcc49)
gcc_version=gcc-4.9.3
;;
Gcc51)
gcc_version=gcc-5.1.0
;;
Gcc52)
gcc_version=gcc-5.2.0
;;
Gcc53)
gcc_version=gcc-5.3.0
;;
Clang)
# Using clang - not gcc
export WM_CC='clang'
export WM_CXX='clang++'
clang_version=llvm-3.7.0
;;
*)
echo 1>&2
echo "Warning in $WM_PROJECT_DIR/etc/config.sh/settings:" 1>&2
echo " Unknown OpenFOAM compiler type '$WM_COMPILER'" 1>&2
echo " Please check your settings" 1>&2
echo 1>&2
;;
esac
# Optional configuration tweaks: case "$WM_COMPILER_TYPE" in
_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.sh/compiler` OpenFOAM | ThirdParty)
if [ -n "$gcc_version" ] if [ -n "$gcc_version" ]
then then
@ -303,7 +230,7 @@ OpenFOAM | ThirdParty)
echo " Cannot find $gccDir installation." 1>&2 echo " Cannot find $gccDir installation." 1>&2
echo " Please install this compiler version or if you wish to" \ echo " Please install this compiler version or if you wish to" \
" use the system compiler," 1>&2 " use the system compiler," 1>&2
echo " change the 'foamCompiler' setting to 'system'" 1>&2 echo " change the 'WM_COMPILER_TYPE' setting to 'system'" 1>&2
echo echo
} }
@ -341,7 +268,7 @@ OpenFOAM | ThirdParty)
echo " Cannot find $clangDir installation." 1>&2 echo " Cannot find $clangDir installation." 1>&2
echo " Please install this compiler version or if you wish to" \ echo " Please install this compiler version or if you wish to" \
" use the system compiler," 1>&2 " use the system compiler," 1>&2
echo " change the 'foamCompiler' setting to 'system'" 1>&2 echo " change the 'WM_COMPILER_TYPE' setting to 'system'" 1>&2
echo 1>&2 echo 1>&2
} }
@ -354,15 +281,9 @@ system)
# Use system compiler # Use system compiler
;; ;;
*) *)
echo "Warn: foamCompiler='$foamCompiler' is unsupported" 1>&2 echo "Warn: WM_COMPILER_TYPE='$WM_COMPILER_TYPE' is unsupported" 1>&2
echo " treating as 'system' instead" 1>&2 echo " treating as 'system' instead" 1>&2
;; ;;
esac esac
# Cleanup environment:
# ~~~~~~~~~~~~~~~~~~~~
#keep _foamAddPath _foamAddLib _foamAddMan
unset foamCompiler minBufferSize
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------