102 lines
No EOL
4.1 KiB
Bash
102 lines
No EOL
4.1 KiB
Bash
find_mpi() {
|
|
# for MPI, we try to detect system MPI variant
|
|
if (command -v mpiexec > /dev/null 2>&1); then
|
|
export MPI_ENABLED = true
|
|
# check if we are dealing with openmpi, mpich or intelmpi
|
|
if (mpiexec --version 2>&1 | grep -s -q "HYDRA"); then
|
|
echo "MPI is detected and it appears to be MPICH"
|
|
export MPI_MODE="mpich"
|
|
# check openmpi version as reported by mpiexec
|
|
export MPI_VERSION=$(mpiexec --version | grep "Version:" | awk '{print $2}')
|
|
with_mpich="__SYSTEM__"
|
|
elif (mpiexec --version 2>&1 | grep -s -q "OpenRTE"); then
|
|
echo "MPI is detected and it appears to be OpenMPI"
|
|
export MPI_MODE="openmpi"
|
|
# check openmpi version as reported by mpiexec
|
|
export MPI_VERSION=$(mpiexec --version 2>&1 | grep "(Open MPI)" | awk '{print $4}')
|
|
with_openmpi="__SYSTEM__"
|
|
elif (mpiexec --version 2>&1 | grep -s -q "Intel"); then
|
|
echo "MPI is detected and it appears to be Intel MPI"
|
|
export MPI_MODE="intelmpi"
|
|
# check intelmpi version as reported by mpiicc
|
|
export MPI_VERSION=$(mpiexec --version | grep "Version" | awk '{print $8"."$10}')
|
|
with_intelmpi="__SYSTEM__"
|
|
else # default to mpich
|
|
echo "MPI is detected and defaults to MPICH"
|
|
export MPI_MODE="mpich"
|
|
with_mpich="__SYSTEM__"
|
|
fi
|
|
else
|
|
report_warning $LINENO "No MPI installation detected (ignore this message in Cray Linux Environment or when MPI installation was requested)."
|
|
export MPI_MODE=""
|
|
fi
|
|
}
|
|
|
|
# helper routine to check integrity of downloaded files
|
|
checksum() {
|
|
local __filename=$1
|
|
local __sha256=$2
|
|
local __shasum_command='sha256sum'
|
|
# check if we have sha256sum command, Mac OS X does not have
|
|
# sha256sum, but has an equivalent with shasum -a 256
|
|
command -v "$__shasum_command" > /dev/null 2>&1 ||
|
|
__shasum_command="shasum -a 256"
|
|
if echo "$__sha256 $__filename" | ${__shasum_command} --check; then
|
|
echo "Checksum of $__filename Ok"
|
|
else
|
|
rm -v ${__filename}
|
|
report_error "Checksum of $__filename could not be verified, abort."
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
# verify the checksums inside the given checksum file
|
|
verify_checksums() {
|
|
local __checksum_file=$1
|
|
local __shasum_command='sha256sum'
|
|
|
|
# check if we have sha256sum command, Mac OS X does not have
|
|
# sha256sum, but has an equivalent with shasum -a 256
|
|
command -v "$__shasum_command" > /dev/null 2>&1 ||
|
|
__shasum_command="shasum -a 256"
|
|
|
|
${__shasum_command} --check "${__checksum_file}" > /dev/null 2>&1
|
|
}
|
|
|
|
# write a checksum file $1 containing checksums for each given file $2, $3, ... (plus the $VERSION_FILE)
|
|
write_checksums() {
|
|
local __checksum_file=$1
|
|
shift # remove output file from arguments to be able to pass them along properly quoted
|
|
local __shasum_command='sha256sum'
|
|
|
|
# check if we have sha256sum command, Mac OS X does not have
|
|
# sha256sum, but has an equivalent with shasum -a 256
|
|
command -v "$__shasum_command" > /dev/null 2>&1 ||
|
|
__shasum_command="shasum -a 256"
|
|
|
|
${__shasum_command} "${VERSION_FILE}" "$@" > "${__checksum_file}"
|
|
}
|
|
|
|
# generate a filtered toolchain.env
|
|
write_toolchain_env() {
|
|
local __installdir=$1
|
|
|
|
# run the following in a subshell to not affect the currently running shell
|
|
# we do not need to achieve complete filtering, it is sufficient to
|
|
# remove problematic variables (TERM/TERMCAP/COLORTERM) which may trigger
|
|
# 'too many arguments' (since the environment vars are stored in the same memory block as command line arguments)
|
|
# or which may not be valid anymore the next time the user runs the toolchain scripts,
|
|
# like the proxy vars which may affect fetching tarballs
|
|
(
|
|
unset COLORTERM DISPLAY EDITOR LESS LESSOPEN LOGNAME LS_COLORS PAGER
|
|
unset TERM TERMCAP USER
|
|
unset ftp_proxy http_proxy no_proxy
|
|
unset GPG_AGENT_INFO SSH_AGENT_PID SSH_AUTH_SOCK SSH_CLIENT SSH_CONNECTION SSH_TTY
|
|
unset LS_COLORS LS_OPTIONS
|
|
unset STY WINDOW XAUTHORITY
|
|
unset XDG_CURRENT_DESKTOP XDG_RUNTIME_DIR XDG_SEAT XDG_SESSION_CLASS XDG_SESSION_DESKTOP XDG_SESSION_ID XDG_SESSION_TYPE XDG_VTNR XDG_CONFIG_DIRS XDG_DATA_DIRS
|
|
unset DBUS_SESSION_BUS_ADDRESS
|
|
|
|
export -p
|
|
) > "${__installdir}/toolchain.env"
|
|
} |