openfoam/bin/foamSystemCheck
Mark Olesen c2697f466d CONFIG: update c++ standard, some compiler rules (partially addresses #2209)
- 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.
2021-10-21 15:31:05 +02:00

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
#------------------------------------------------------------------------------