- add clang test, don't complaint about dash, zsh - don't bother with checking gzip and tar
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
|
|
|
|
#------------------------------------------------------------------------------
|