- migrate to c++14 for most compilers *except* gcc. There are still many systems in use with gcc-4.8.5, which does not support c++14. - initial rules for nvidia compilers (pgi is will soon be defunct). Not fully tested... CONFIG: provide fallback value for the user directory name - in containers may have an unset USER env variable. Default to 'user' to prevent ugly looking directory names.
207 lines
5.1 KiB
Bash
Executable File
207 lines
5.1 KiB
Bash
Executable File
#!/bin/sh
|
|
#------------------------------------------------------------------------------
|
|
# ========= |
|
|
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
|
# \\ / O peration |
|
|
# \\ / A nd | www.openfoam.com
|
|
# \\/ M anipulation |
|
|
#-------------------------------------------------------------------------------
|
|
# Copyright (C) 2011 OpenFOAM Foundation
|
|
# Copyright (C) 2020 OpenCFD Ltd.
|
|
#------------------------------------------------------------------------------
|
|
# License
|
|
# This file is part of OpenFOAM, distributed under GPL-3.0-or-later.
|
|
#
|
|
# Script
|
|
# bin/foamSystemCheck
|
|
#
|
|
# Description
|
|
# Check the machine, software components, and the environment
|
|
# for installing OpenFOAM.
|
|
#
|
|
#------------------------------------------------------------------------------
|
|
|
|
# General
|
|
WIDTH=12
|
|
|
|
# System variables
|
|
HOST="$(uname -n)"
|
|
OSTYPE="$(uname -s)"
|
|
|
|
# Global variables
|
|
unset fatalError criticalError
|
|
|
|
#==============================================================================
|
|
# HELPER FUNCTIONS
|
|
#==============================================================================
|
|
|
|
hline()
|
|
{
|
|
echo "-------------------------------------------------------------------------------"
|
|
}
|
|
|
|
|
|
heading()
|
|
{
|
|
echo
|
|
echo "$1"
|
|
}
|
|
|
|
length()
|
|
{
|
|
## echo "length <$1>" 1>&2
|
|
nChars="$(echo "$1" | tr -d ' ' | wc -c)"
|
|
nChars="$((nChars - 1))" # Remove newline from the count
|
|
[ "$nChars" -ge 0 ] || nChars=0
|
|
echo "$nChars"
|
|
}
|
|
|
|
fixlen()
|
|
{
|
|
WORD=$1
|
|
ONELEN=$(length "$1")
|
|
LDIFF=$(expr $ONELEN - $2)
|
|
if [ $LDIFF -le 1 ]
|
|
then
|
|
while [ $LDIFF -lt 0 ]
|
|
do
|
|
WORD="$WORD "
|
|
LDIFF=$(expr $LDIFF + 1)
|
|
done
|
|
echo "$WORD"
|
|
else
|
|
LDIFF=$(expr $LDIFF + 4)
|
|
WORD=$(echo "$WORD" | cut -c${LDIFF}-)
|
|
echo "...${WORD}"
|
|
fi
|
|
}
|
|
|
|
|
|
# -----------------------------------------------------------------------------
|
|
|
|
checkEnvironment()
|
|
{
|
|
if [ -d "$WM_PROJECT_DIR" ]
|
|
then
|
|
echo "$(fixlen OpenFOAM: $WIDTH) ${WM_PROJECT_DIR##*/}"
|
|
else
|
|
echo
|
|
echo "ERROR: OpenFOAM environment not configured."
|
|
echo
|
|
echo " Please see the information in the README.md"
|
|
echo " <OpenFOAM installation dir>/OpenFOAM-${WM_PROJECT_VERSION}/README.md"
|
|
echo " for information on setting-up the OpenFOAM environment."
|
|
echo
|
|
fatalError="x${fatalError}"
|
|
exit 1
|
|
fi
|
|
|
|
if [ -d "$WM_THIRD_PARTY_DIR" ]
|
|
then
|
|
echo "$(fixlen ThirdParty: $WIDTH) ${WM_THIRD_PARTY_DIR##*/}"
|
|
else
|
|
echo "$(fixlen ThirdParty: $WIDTH) [missing]"
|
|
echo "This can be intentional, or indicate a faulty installation"
|
|
fi
|
|
}
|
|
|
|
|
|
checkUserShell()
|
|
{
|
|
echo "$(fixlen Shell: $WIDTH) ${SHELL##*/}"
|
|
case "$SHELL" in
|
|
*/csh | */tcsh | */bash | */ksh)
|
|
;;
|
|
*/dash | */zsh)
|
|
echo "[The ${SHELL##*/} shell is generally okay to use]"
|
|
;;
|
|
*)
|
|
echo "ERROR: Cannot identify the shell you are running."
|
|
echo " OpenFOAM ${WM_PROJECT_VERSION} is compatible with "
|
|
echo " csh, tcsh, bash, ksh (and possibly dash, zsh)"
|
|
echo
|
|
fatalError="x${fatalError}"
|
|
;;
|
|
esac
|
|
}
|
|
|
|
|
|
checkHostName()
|
|
{
|
|
echo "$(fixlen Host: $WIDTH) $HOST"
|
|
if [ -z "$HOST" ]
|
|
then
|
|
echo "ERROR: Cannot stat hostname."
|
|
echo " OpenFOAM ${WM_PROJECT_VERSION} needs a valid hostname."
|
|
echo " Contact your system administrator."
|
|
echo
|
|
fatalError="x${fatalError}"
|
|
fi
|
|
}
|
|
|
|
|
|
checkOS()
|
|
{
|
|
case "$OSTYPE" in
|
|
Linux* | Darwin* | SunOS )
|
|
echo "$(fixlen OS: $WIDTH) $OSTYPE version $(uname -r)"
|
|
;;
|
|
*)
|
|
echo "ERROR: Incompatible operating system \"$OSTYPE\"."
|
|
echo " OpenFOAM ${WM_PROJECT_VERSION} is currently available for"
|
|
echo " Linux, Darwin and SunOS only."
|
|
echo
|
|
fatalError="x${fatalError}"
|
|
;;
|
|
esac
|
|
}
|
|
|
|
#==============================================================================
|
|
# MAIN SCRIPT
|
|
#==============================================================================
|
|
|
|
heading "Checking basic system..."
|
|
hline
|
|
|
|
checkUserShell
|
|
checkHostName
|
|
checkOS
|
|
|
|
## # check user name
|
|
## USER_NAME="$LOGNAME"
|
|
## if [ $(length $USER_NAME) -eq 0 ]
|
|
## then
|
|
## USER_NAME="$USER"
|
|
## fi
|
|
##
|
|
## echo "$(fixlen User: $WIDTH) ${USER_NAME}"
|
|
## if [ $(length $USER_NAME) -eq 0 ]
|
|
## then
|
|
## echo "ERROR: Cannot stat user name $USER_NAME."
|
|
## echo " OpenFOAM $WM_PROJECT_VERSION needs a valid user name."
|
|
## echo " Contact your system administrator. "
|
|
## echo
|
|
## fatalError="x${fatalError}"
|
|
## fi
|
|
|
|
echo
|
|
if [ -n "$fatalError" ]
|
|
then
|
|
cat << FAILED
|
|
System check: FAIL
|
|
==================
|
|
Your system may not compatible with the current OpenFOAM requirements.
|
|
Review the error messages and consult the documentation for further information
|
|
FAILED
|
|
else
|
|
cat << PASSED
|
|
System check: PASS
|
|
==================
|
|
Can continue to OpenFOAM installation.
|
|
PASSED
|
|
fi
|
|
|
|
echo
|
|
|
|
#------------------------------------------------------------------------------
|