Intermediate commit. Transforming single script into individual steps.
This commit is contained in:
parent
557025fe7a
commit
ab909fe236
17 changed files with 493 additions and 134 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -0,0 +1 @@
|
|||
.DS_Store
|
||||
38
install_script.sh
Normal file
38
install_script.sh
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
#!/bin/bash
|
||||
|
||||
# ------------------------------------------------------------------------
|
||||
# PACKAGE LIST: register all new dependent tools and libs here. Order
|
||||
# is important, the first in the list gets installed first
|
||||
# ------------------------------------------------------------------------
|
||||
tool_list="gcc intel cmake"
|
||||
mpi_list="mpich openmpi intelmpi"
|
||||
math_list="mkl acml openblas"
|
||||
lib_list="fftw libint libxc libgrpp libxsmm cosma scalapack elpa cusolvermp plumed \
|
||||
spfft spla ptscotch superlu pexsi quip gsl spglib hdf5 libvdwxc sirius
|
||||
libvori libtorch deepmd"
|
||||
package_list="${tool_list} ${mpi_list} ${math_list} ${lib_list}"
|
||||
# ------------------------------------------------------------------------
|
||||
|
||||
# first set everything to __DONTUSE__
|
||||
for ii in ${package_list}; do
|
||||
eval with_${ii}="__DONTUSE__"
|
||||
done
|
||||
|
||||
# ------------------------------------------------------------------------
|
||||
# Work out default settings
|
||||
# ------------------------------------------------------------------------
|
||||
|
||||
# tools to turn on by default:
|
||||
with_gcc="__SYSTEM__"
|
||||
|
||||
if [ "COMPILER" = intel ]; then
|
||||
./install_intel.sh
|
||||
elif [ "COMPILER" = llvm ]; then
|
||||
./install_llvm.sh
|
||||
elif [ "COMPILER" = clang]; then
|
||||
./install_llvm.sh
|
||||
else
|
||||
./install_gcc.sh
|
||||
fi
|
||||
|
||||
|
||||
141
make_cluster.sh
141
make_cluster.sh
|
|
@ -13,146 +13,19 @@ else
|
|||
echo "This script is not the top-level bash file being run."
|
||||
fi
|
||||
|
||||
## INSTALL GCC FROM SOURCE
|
||||
GCC_BUILD_DIR=${BUILD_LOCATION}/gcc
|
||||
GCC_INSTALL_DIR=${INSTALL_LOCATION}/gcc
|
||||
mkdir -p ${GCC_INSTALL_DIR}
|
||||
mkdir gcc-${GCC_VERSION}-build
|
||||
./scripts/install_gcc.sh
|
||||
|
||||
GCC_VERSION=7.5.0
|
||||
cd ${GCC_BUILD_DIR}
|
||||
./scripts/install_env-modules.sh
|
||||
|
||||
wget ftp://ftp.gnu.org/gnu/gcc/gcc-${GCC_VERSION}/gcc-${GCC_VERSION}.tar.gz
|
||||
tar -xf gcc-${GCC_VERSION}.tar.gz
|
||||
mv gcc-${GCC_VERSION} gcc-${GCC_VERSION}-source
|
||||
cd gcc-${GCC_VERSION}-source
|
||||
./contrib/download_prerequisites
|
||||
cd ../gcc-${GCC_VERSION}-build
|
||||
${GCC_BUILD_DIR}/gcc-${GCC_VERSION}-source/configure --prefix=${GCC_INSTALL_DIR}/${GCC_VERSION} --enable-languages=c,c++,fortran,go --enable-lto --disable-multilib --enable-checking=release --enable-threads=posix --enable-libstdcxx-debug --enable-__cxa_atexit --enable-plugins --enable-bootstrap
|
||||
make -j$(nproc)
|
||||
make -j$(nproc) check
|
||||
make install
|
||||
./scripts/install_openssl.sh
|
||||
|
||||
## INSTALL ENVIRONMENT MODULES FROM SOURCE
|
||||
MODULES_BUILD_DIR=${BUILD_LOCATION}
|
||||
MODULES_INSTALL_DIR=${INSTALL_LOCATION}/modules
|
||||
mkdir -p ${MODULES_BUILD_DIR}
|
||||
mkdir -p ${MODULES_INSTALL_DIR}
|
||||
./scripts/stage0/install_qt.sh
|
||||
|
||||
MODULES_VERSION=5.3.1
|
||||
./scripts/stage0/install_cmake.sh
|
||||
|
||||
cd ${MODULES_BUILD_DIR}
|
||||
curl -LJO https://github.com/cea-hpc/modules/releases/download/v${MODULES_VERSION}/modules-${MODULES_VERSION}.tar.gz
|
||||
tar -xf modules-${MODULES_VERSION}.tar.gz
|
||||
cd modules-${MODULES_VERSION}
|
||||
mkdir build && cd build
|
||||
./configure --prefix=${MODULES_INSTALL_DIR}/Modules/${MODULES_VERSION} --modulefilesdir=${MODULES_INSTALL_DIR}/Modules/${MODULES_VERSION}/modulefiles
|
||||
make -j$(nproc)
|
||||
make install
|
||||
ln -s ${MODULES_INSTALL_DIR}/Modules/${MODULES_VERSION}/init/profile.sh /etc/profile.d/modules.sh
|
||||
ln -s ${MODULES_INSTALL_DIR}/Modules/${MODULES_VERSION}/init/profile.csh /etc/profile.d/modules.csh
|
||||
./scripts/stage0/install_git.sh
|
||||
|
||||
## INSTALL OPENSSL FOR CMAKE
|
||||
SSL_BUILD_DIR=${BUILD_LOCATION}/openssl
|
||||
SSL_INSTALL_DIR=${INSTALL_LOCATION}/openssl
|
||||
mkdir -p ${SSL_BUILD_DIR}
|
||||
mkdir -p ${SSL_INSTALL_DIR}
|
||||
|
||||
SSL_VERSION=1.1.1w
|
||||
|
||||
cd ${SSL_BUILD_DIR}
|
||||
wget -c https://www.openssl.org/source/openssl-${SSL_VERSION}.tar.gz
|
||||
tar -xf openssl-${SSL_VERSION}.tar.gz
|
||||
cd openssl-${SSL_VERSION}
|
||||
mkdir build && cd build
|
||||
../config --prefix=${SSL_INSTALL_DIR}/${SSL_VERSION} --openssldir=${SSL_INSTALL_DIR}/${SSL_VERSION}
|
||||
make -j$(nproc)
|
||||
make -j$(nproc) test
|
||||
make install
|
||||
|
||||
## INSTALL Qt FOR CMAKE-GUI
|
||||
QT_BUILD_DIR=${BUILD_LOCATION}/qt
|
||||
QT_INSTALL_DIR=${INSTALL_LOCATION}/qt
|
||||
mkdir -p ${QT_BUILD_DIR}
|
||||
mkdir -p ${QT_INSTALL_DIR}
|
||||
|
||||
## SOME COMBINATION WILL INSTALL GL
|
||||
install build-essential libgl1-mesa-dev libglu1-mesa-dev libglut-dev libgl2-mesa-dev libdrm-dev
|
||||
|
||||
QT_VERSION=5.15.12
|
||||
QT_MAJOR_VERSION=$(echo ${QT_VERSION} | cut -d. -f1-2)
|
||||
|
||||
cd ${QT_BUILD_DIR}
|
||||
wget -c https://download.qt.io/official_releases/qt/${QT_MAJOR_VERSION}/${QT_VERSION}/single/qt-everywhere-opensource-src-${QT_VERSION}.tar.xz
|
||||
tar -xf qt-everywhere-opensource-src-${QT_VERSION}.tar.xz
|
||||
cd qt-everywhere-opensource-src-${QT_VERSION}
|
||||
mkdir build && cd build
|
||||
../configure -prefix ${QT_INSTALL_DIR}/${QT_VERSION} -make tests -release -opensource -confirm-license
|
||||
##### THIS COMMAND NEEDS TO BE FINISHED#####
|
||||
|
||||
## INSTALL CMAKE FROM SOURCE
|
||||
CMAKE_BUILD_DIR=${BUILD_LOCATION}/cmake
|
||||
CMAKE_INSTALL_DIR=${INSTALL_LOCATION}/cmake
|
||||
mkdir -p ${CMAKE_BUILD_DIR}
|
||||
mkdir -p ${CMAKE_INSTALL_DIR}
|
||||
|
||||
VERSIONS=(3.5.2
|
||||
3.12.4
|
||||
3.17.5
|
||||
3.21.3
|
||||
3.24.4
|
||||
3.28.1)
|
||||
|
||||
OPENSSL_ROOT_DIR=${SSL_INSTALL_DIR}/${SSL_VERSION}
|
||||
for CMAKE_VERSION in "${strings[@]}"; do
|
||||
# CMAKE_VERSION=3.21.3
|
||||
CMAKE_MAJOR_VERSION=$(echo ${CMAKE_VERSION} | cut -d. -f1-2)
|
||||
cd ${CMAKE_BUILD_DIR}
|
||||
wget -c http://www.cmake.org/files/v${CMAKE_MAJOR_VERSION}/cmake-${CMAKE_VERSION}.tar.gz
|
||||
tar -xf cmake-${CMAKE_VERSION}.tar.gz
|
||||
mkdir -p cmake-${CMAKE_VERSION}/build && cd cmake-${CMAKE_VERSION}/build
|
||||
|
||||
../configure --prefix=${CMAKE_INSTALL_DIR}/${CMAKE_VERSION} --parallel=$(nproc)
|
||||
make -j$(nproc)
|
||||
make install
|
||||
done
|
||||
|
||||
## INSTALL GIT FROM SOURCE
|
||||
GIT_BUILD_DIR=${BUILD_LOCATION}/git
|
||||
GIT_INSTALL_DIR=${INSTALL_LOCATION}/git
|
||||
mkdir -p ${GIT_BUILD_DIR}
|
||||
mkdir -p ${GIT_INSTALL_DIR}
|
||||
|
||||
GIT_VERSION=2.11.3
|
||||
|
||||
cd ${GIT_BUILD_DIR}
|
||||
wget -c https://mirrors.edge.kernel.org/pub/software/scm/git/git-${GIT_VERSION}.tar.gz
|
||||
tar -xzf git-${GIT_VERSION}.tar.gz
|
||||
cd git-${GIT_VERSION}
|
||||
make configure
|
||||
./configure --prefix=${GIT_INSTALL_DIR}/${GIT_VERSION}
|
||||
make -j$(nproc)
|
||||
make -j$(nproc) test
|
||||
make install
|
||||
|
||||
## INSTALL LLVM FROM SOURCE
|
||||
LLVM_BUILD_DIR=${BUILD_LOCATION}/llvm
|
||||
LLVM_INSTALL_DIR=${INSTALL_LOCATION}/llvm
|
||||
mkdir -p ${LLVM_BUILD_DIR}
|
||||
mkdir -p ${LLVM_INSTALL_DIR}
|
||||
|
||||
LLVM_VERSION=13.0.0
|
||||
|
||||
git clone https://github.com/llvm/llvm-project.git ${LLVM_BUILD_DIR}/llvm-${LLVM_VERSION}
|
||||
cd ${LLVM_BUILD_DIR}/llvm-${LLVM_VERSION}
|
||||
git checkout llvmorg-${LLVM_VERSION}
|
||||
mkdir build && cd build
|
||||
cmake -S llvm -B build -G "Unix Makefiles" \
|
||||
-DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;compiler-rt;libcxx;libcxxabi;libunwind;lld;lldb;openmp;parallel-libs;polly" \
|
||||
-DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=${LLVM_INSTALL_DIR}/${LLVM_VERSION} \
|
||||
-DLLVM_INSTALL_UTILS=ON llvm
|
||||
make -j$(nproc)
|
||||
make install
|
||||
./scripts/stage0/install_llvm.sh
|
||||
|
||||
## INSTALL OPENMPI FROM SOURCE
|
||||
module load gcc/${GCC_VERSION} cmake/${CMAKE_VERSION}
|
||||
|
|
|
|||
5
scripts/stage0/install_binutils.sh
Normal file
5
scripts/stage0/install_binutils.sh
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
|
||||
BINUTILS_VERSION=2.35
|
||||
|
||||
wget -c https://ftp.gnu.org/gnu/binutils/binutils-${BINUTILS_VERSION}.tar.gz
|
||||
tar -xf binutils-${BINUTILS_VERSION}.tar.gz
|
||||
26
scripts/stage0/install_cmake.sh
Normal file
26
scripts/stage0/install_cmake.sh
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
## INSTALL CMAKE FROM SOURCE
|
||||
CMAKE_BUILD_DIR=${BUILD_LOCATION}/cmake
|
||||
CMAKE_INSTALL_DIR=${INSTALL_LOCATION}/cmake
|
||||
mkdir -p ${CMAKE_BUILD_DIR}
|
||||
mkdir -p ${CMAKE_INSTALL_DIR}
|
||||
|
||||
VERSIONS=(3.5.2
|
||||
3.12.4
|
||||
3.17.5
|
||||
3.21.3
|
||||
3.24.4
|
||||
3.28.1)
|
||||
|
||||
OPENSSL_ROOT_DIR=${SSL_INSTALL_DIR}/${SSL_VERSION}
|
||||
for CMAKE_VERSION in "${strings[@]}"; do
|
||||
# CMAKE_VERSION=3.21.3
|
||||
CMAKE_MAJOR_VERSION=$(echo ${CMAKE_VERSION} | cut -d. -f1-2)
|
||||
cd ${CMAKE_BUILD_DIR}
|
||||
wget -c http://www.cmake.org/files/v${CMAKE_MAJOR_VERSION}/cmake-${CMAKE_VERSION}.tar.gz
|
||||
tar -xf cmake-${CMAKE_VERSION}.tar.gz
|
||||
mkdir -p cmake-${CMAKE_VERSION}/build && cd cmake-${CMAKE_VERSION}/build
|
||||
|
||||
../configure --prefix=${CMAKE_INSTALL_DIR}/${CMAKE_VERSION} --parallel=$(nproc)
|
||||
make -j$(nproc)
|
||||
make install
|
||||
done
|
||||
17
scripts/stage0/install_env-modules.sh
Normal file
17
scripts/stage0/install_env-modules.sh
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
MODULES_VERSION=5.3.1
|
||||
|
||||
MODULES_BUILD_DIR=${BUILD_LOCATION}
|
||||
MODULES_INSTALL_DIR=${INSTALL_LOCATION}/modules
|
||||
mkdir -p ${MODULES_BUILD_DIR}
|
||||
mkdir -p ${MODULES_INSTALL_DIR}
|
||||
|
||||
cd ${MODULES_BUILD_DIR}
|
||||
curl -LJO https://github.com/cea-hpc/modules/releases/download/v${MODULES_VERSION}/modules-${MODULES_VERSION}.tar.gz
|
||||
tar -xf modules-${MODULES_VERSION}.tar.gz
|
||||
cd modules-${MODULES_VERSION}
|
||||
mkdir build && cd build
|
||||
./configure --prefix=${MODULES_INSTALL_DIR}/Modules/${MODULES_VERSION} --modulefilesdir=${MODULES_INSTALL_DIR}/Modules/${MODULES_VERSION}/modulefiles
|
||||
make -j$(nproc)
|
||||
make install
|
||||
ln -s ${MODULES_INSTALL_DIR}/Modules/${MODULES_VERSION}/init/profile.sh /etc/profile.d/modules.sh
|
||||
ln -s ${MODULES_INSTALL_DIR}/Modules/${MODULES_VERSION}/init/profile.csh /etc/profile.d/modules.csh
|
||||
45
scripts/stage0/install_gcc.sh
Normal file
45
scripts/stage0/install_gcc.sh
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
#!/bin/bash -e
|
||||
|
||||
[ "${BASH_SOURCE[0]}" ] && SCRIPT_NAME="${BASH_SOURCE[0]}" || SCRIPT_NAME=$0
|
||||
SCRIPT_DIR="$(cd "$(dirname "$SCRIPT_NAME")/.." && pwd -P)"
|
||||
|
||||
VERSIONS=(4.4.7
|
||||
4.6.2
|
||||
4.8.5
|
||||
4.9.3
|
||||
5.1.0
|
||||
5.2.0
|
||||
5.4.0
|
||||
6.1.0
|
||||
6.3.0
|
||||
7.1.0
|
||||
7.5.0
|
||||
8.4.0
|
||||
9.1.0
|
||||
10.2.0
|
||||
10.3.0
|
||||
11.2.0
|
||||
12.3.0
|
||||
13.1.0)
|
||||
|
||||
source "${SCRIPT_DIR}"/common_vars.sh
|
||||
|
||||
GCC_VERSION=7.5.0
|
||||
|
||||
GCC_BUILD_DIR=${BUILD_LOCATION}/gcc
|
||||
GCC_INSTALL_DIR=${INSTALL_LOCATION}/gcc
|
||||
mkdir -p ${GCC_INSTALL_DIR}
|
||||
mkdir gcc-${GCC_VERSION}-build
|
||||
|
||||
cd ${GCC_BUILD_DIR}
|
||||
|
||||
wget ftp://ftp.gnu.org/gnu/gcc/gcc-${GCC_VERSION}/gcc-${GCC_VERSION}.tar.gz
|
||||
tar -xf gcc-${GCC_VERSION}.tar.gz
|
||||
mv gcc-${GCC_VERSION} gcc-${GCC_VERSION}-source
|
||||
cd gcc-${GCC_VERSION}-source
|
||||
./contrib/download_prerequisites
|
||||
cd ../gcc-${GCC_VERSION}-build
|
||||
${GCC_BUILD_DIR}/gcc-${GCC_VERSION}-source/configure --prefix=${GCC_INSTALL_DIR}/${GCC_VERSION} --enable-languages=c,c++,fortran,go --enable-lto --disable-multilib --enable-checking=release --enable-threads=posix --enable-libstdcxx-debug --enable-__cxa_atexit --enable-plugins --enable-bootstrap
|
||||
make -j$(nproc)
|
||||
make -j$(nproc) check
|
||||
make install
|
||||
17
scripts/stage0/install_git.sh
Normal file
17
scripts/stage0/install_git.sh
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
## INSTALL GIT FROM SOURCE
|
||||
GIT_BUILD_DIR=${BUILD_LOCATION}/git
|
||||
GIT_INSTALL_DIR=${INSTALL_LOCATION}/git
|
||||
mkdir -p ${GIT_BUILD_DIR}
|
||||
mkdir -p ${GIT_INSTALL_DIR}
|
||||
|
||||
GIT_VERSION=2.11.3
|
||||
|
||||
cd ${GIT_BUILD_DIR}
|
||||
wget -c https://mirrors.edge.kernel.org/pub/software/scm/git/git-${GIT_VERSION}.tar.gz
|
||||
tar -xzf git-${GIT_VERSION}.tar.gz
|
||||
cd git-${GIT_VERSION}
|
||||
make configure
|
||||
./configure --prefix=${GIT_INSTALL_DIR}/${GIT_VERSION}
|
||||
make -j$(nproc)
|
||||
make -j$(nproc) test
|
||||
make install
|
||||
44
scripts/stage0/install_intel.sh
Normal file
44
scripts/stage0/install_intel.sh
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
#!/bin/bash -e
|
||||
|
||||
# TODO: Review and if possible fix shellcheck errors.
|
||||
# shellcheck disable=all
|
||||
|
||||
[ "${BASH_SOURCE[0]}" ] && SCRIPT_NAME="${BASH_SOURCE[0]}" || SCRIPT_NAME=${0}
|
||||
SCRIPT_DIR="$(cd "$(dirname "${SCRIPT_NAME}")/.." && pwd -P)"
|
||||
|
||||
INTEL_CFLAGS=""
|
||||
INTEL_LDFLAGS=""
|
||||
INTEL_LIBS=""
|
||||
|
||||
echo "==================== Finding Intel compiler from system paths ===================="
|
||||
if [ "${intel_classic}" = "yes" ]; then
|
||||
check_command icc "intel" && CC="$(realpath $(command -v icc))" || exit 1
|
||||
check_command icpc "intel" && CXX="$(realpath $(command -v icpc))" || exit 1
|
||||
check_command ifort "intel" && FC="$(realpath $(command -v ifort))" || exit 1
|
||||
else
|
||||
check_command icx "intel" && CC="$(realpath $(command -v icx))" || exit 1
|
||||
check_command icpx "intel" && CXX="$(realpath $(command -v icpx))" || exit 1
|
||||
check_command ifort "intel" && FC="$(realpath $(command -v ifort))" || exit 1
|
||||
fi
|
||||
F90="${FC}"
|
||||
F77="${FC}"
|
||||
|
||||
echo "CC is ${CC}"
|
||||
echo "CXX is ${CXX}"
|
||||
echo "FC is ${FC}"
|
||||
|
||||
export CC="${CC}"
|
||||
export CXX="${CXX}"
|
||||
export FC="${FC}"
|
||||
export F90="${F90}"
|
||||
export F77="${F77}"
|
||||
|
||||
export PATH=${pkg_install_dir}/bin:${PATH}
|
||||
export LD_LIBRARY_PATH=${pkg_install_dir}/lib:${LD_LIBRARY_PATH}
|
||||
export LD_RUN_PATH=${pkg_install_dir}/lib:${LD_RUN_PATH}
|
||||
export LIBRARY_PATH=${pkg_install_dir}/lib:${LIBRARY_PATH}
|
||||
export CPATH=${pkg_install_dir}/include:${CPATH}
|
||||
|
||||
export INTEL_CFLAGS="${INTEL_CFLAGS}"
|
||||
export INTEL_LDFLAGS="${INTEL_LDFLAGS}"
|
||||
export INTEL_LIBS="${INTEL_LIBS}"
|
||||
18
scripts/stage0/install_llvm.sh
Normal file
18
scripts/stage0/install_llvm.sh
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
## INSTALL LLVM FROM SOURCE
|
||||
LLVM_BUILD_DIR=${BUILD_LOCATION}/llvm
|
||||
LLVM_INSTALL_DIR=${INSTALL_LOCATION}/llvm
|
||||
mkdir -p ${LLVM_BUILD_DIR}
|
||||
mkdir -p ${LLVM_INSTALL_DIR}
|
||||
|
||||
LLVM_VERSION=13.0.0
|
||||
|
||||
git clone https://github.com/llvm/llvm-project.git ${LLVM_BUILD_DIR}/llvm-${LLVM_VERSION}
|
||||
cd ${LLVM_BUILD_DIR}/llvm-${LLVM_VERSION}
|
||||
git checkout llvmorg-${LLVM_VERSION}
|
||||
mkdir build && cd build
|
||||
cmake -S llvm -B build -G "Unix Makefiles" \
|
||||
-DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;compiler-rt;libcxx;libcxxabi;libunwind;lld;lldb;openmp;parallel-libs;polly" \
|
||||
-DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=${LLVM_INSTALL_DIR}/${LLVM_VERSION} \
|
||||
-DLLVM_INSTALL_UTILS=ON llvm
|
||||
make -j$(nproc)
|
||||
make install
|
||||
16
scripts/stage0/install_openssl.sh
Normal file
16
scripts/stage0/install_openssl.sh
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
SSL_VERSION=1.1.1w
|
||||
|
||||
SSL_BUILD_DIR=${BUILD_LOCATION}/openssl
|
||||
SSL_INSTALL_DIR=${INSTALL_LOCATION}/openssl
|
||||
mkdir -p ${SSL_BUILD_DIR}
|
||||
mkdir -p ${SSL_INSTALL_DIR}
|
||||
|
||||
cd ${SSL_BUILD_DIR}
|
||||
wget -c https://www.openssl.org/source/openssl-${SSL_VERSION}.tar.gz
|
||||
tar -xf openssl-${SSL_VERSION}.tar.gz
|
||||
cd openssl-${SSL_VERSION}
|
||||
mkdir build && cd build
|
||||
../config --prefix=${SSL_INSTALL_DIR}/${SSL_VERSION} --openssldir=${SSL_INSTALL_DIR}/${SSL_VERSION}
|
||||
make -j$(nproc)
|
||||
make -j$(nproc) test
|
||||
make install
|
||||
21
scripts/stage0/install_qt.sh
Normal file
21
scripts/stage0/install_qt.sh
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
## INSTALL Qt FOR CMAKE-GUI
|
||||
QT_BUILD_DIR=${BUILD_LOCATION}/qt
|
||||
QT_INSTALL_DIR=${INSTALL_LOCATION}/qt
|
||||
mkdir -p ${QT_BUILD_DIR}
|
||||
mkdir -p ${QT_INSTALL_DIR}
|
||||
|
||||
## SOME COMBINATION WILL INSTALL GL
|
||||
# install build-essential libgl1-mesa-dev libglu1-mesa-dev libglut-dev libgl2-mesa-dev libdrm-dev
|
||||
|
||||
# wget -c https://qt.mirror.constant.com/archive/online_installers/4.6/qt-unified-linux-x64-4.6.1-online.run
|
||||
|
||||
QT_VERSION=5.15.12
|
||||
QT_MAJOR_VERSION=$(echo ${QT_VERSION} | cut -d. -f1-2)
|
||||
|
||||
cd ${QT_BUILD_DIR}
|
||||
wget -c https://download.qt.io/official_releases/qt/${QT_MAJOR_VERSION}/${QT_VERSION}/single/qt-everywhere-opensource-src-${QT_VERSION}.tar.xz
|
||||
tar -xf qt-everywhere-opensource-src-${QT_VERSION}.tar.xz
|
||||
cd qt-everywhere-opensource-src-${QT_VERSION}
|
||||
mkdir build && cd build
|
||||
../configure -prefix ${QT_INSTALL_DIR}/${QT_VERSION} -make tests -release -opensource -confirm-license
|
||||
##### THIS COMMAND NEEDS TO BE FINISHED#####
|
||||
17
scripts/stage0/install_stage0.sh
Normal file
17
scripts/stage0/install_stage0.sh
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
#!/bin/bash -e
|
||||
|
||||
# TODO: Review and if possible fix shellcheck errors.
|
||||
# shellcheck disable=all
|
||||
|
||||
./scripts/stage0/install_env-modules.sh
|
||||
./scripts/stage0/install_gcc.sh
|
||||
./scripts/stage0/install_binutils.sh
|
||||
./scripts/stage0/install_llvm.sh
|
||||
./scripts/stage0/install_intel.sh
|
||||
./scripts/stage0/setup_buildtools.sh
|
||||
./scripts/stage0/install_openssl.sh
|
||||
./scripts/stage0/install_git.sh
|
||||
./scripts/stage0/install_qt.sh
|
||||
./scripts/stage0/install_cmake.sh
|
||||
|
||||
#EOF
|
||||
72
scripts/stage0/setup_buildtools.sh
Normal file
72
scripts/stage0/setup_buildtools.sh
Normal file
|
|
@ -0,0 +1,72 @@
|
|||
#!/bin/bash -e
|
||||
|
||||
# TODO: Review and if possible fix shellcheck errors.
|
||||
# shellcheck disable=all
|
||||
|
||||
[ "${BASH_SOURCE[0]}" ] && SCRIPT_NAME="${BASH_SOURCE[0]}" || SCRIPT_NAME=$0
|
||||
SCRIPT_DIR="$(cd "$(dirname "${SCRIPT_NAME}")/.." && pwd -P)"
|
||||
|
||||
source ${SCRIPT_DIR}/common_vars.sh
|
||||
source ${SCRIPT_DIR}/tool_kit.sh
|
||||
source ${SCRIPT_DIR}/signal_trap.sh
|
||||
source ${INSTALLDIR}/toolchain.conf
|
||||
source ${INSTALLDIR}/toolchain.env
|
||||
|
||||
for ii in $tool_list; do
|
||||
load "${BUILDDIR}/setup_${ii}"
|
||||
done
|
||||
|
||||
# ------------------------------------------------------------------------
|
||||
# Install or compile packages using newly installed tools
|
||||
# ------------------------------------------------------------------------
|
||||
|
||||
# Setup compiler flags, leading to nice stack traces on crashes but still optimised
|
||||
if [ "${with_intel}" != "__DONTUSE__" ]; then
|
||||
CFLAGS="-O2 -fPIC -fp-model=precise -funroll-loops -g -qopenmp -qopenmp-simd -traceback"
|
||||
if [ "${TARGET_CPU}" = "native" ]; then
|
||||
CFLAGS="${CFLAGS} -xHost"
|
||||
elif [ "${TARGET_CPU}" = "generic" ]; then
|
||||
CFLAGS="${CFLAGS} -mtune=${TARGET_CPU}"
|
||||
else
|
||||
CFLAGS="${CFLAGS} -march=${TARGET_CPU} -mtune=${TARGET_CPU}"
|
||||
fi
|
||||
FFLAGS="${CFLAGS}"
|
||||
else
|
||||
CFLAGS="-O2 -fPIC -fno-omit-frame-pointer -fopenmp -g"
|
||||
if [ "${TARGET_CPU}" = "generic" ]; then
|
||||
CFLAGS="${CFLAGS} -mtune=generic ${TSANFLAGS}"
|
||||
else
|
||||
CFLAGS="${CFLAGS} -march=${TARGET_CPU} -mtune=${TARGET_CPU} ${TSANFLAGS}"
|
||||
fi
|
||||
FFLAGS="${CFLAGS} -fbacktrace"
|
||||
fi
|
||||
CXXFLAGS="${CFLAGS}"
|
||||
F77FLAGS="${FFLAGS}"
|
||||
F90FLAGS="${FFLAGS}"
|
||||
FCFLAGS="${FFLAGS}"
|
||||
|
||||
if [ "${with_intel}" == "__DONTUSE__" ]; then
|
||||
export CFLAGS="$(allowed_gcc_flags ${CFLAGS})"
|
||||
export FFLAGS="$(allowed_gfortran_flags ${FFLAGS})"
|
||||
export F77FLAGS="$(allowed_gfortran_flags ${F77FLAGS})"
|
||||
export F90FLAGS="$(allowed_gfortran_flags ${F90FLAGS})"
|
||||
export FCFLAGS="$(allowed_gfortran_flags ${FCFLAGS})"
|
||||
export CXXFLAGS="$(allowed_gxx_flags ${CXXFLAGS})"
|
||||
else
|
||||
# TODO Check functions for allowed Intel compiler flags
|
||||
export CFLAGS
|
||||
export FFLAGS
|
||||
export F77FLAGS
|
||||
export F90FLAGS
|
||||
export FCFLAGS
|
||||
export CXXFLAGS
|
||||
fi
|
||||
export LDFLAGS="${TSANFLAGS}"
|
||||
|
||||
# get system arch information using OpenBLAS prebuild
|
||||
${SCRIPTDIR}/get_openblas_arch.sh
|
||||
load "${BUILDDIR}/openblas_arch"
|
||||
|
||||
write_toolchain_env "${INSTALLDIR}"
|
||||
|
||||
#EOF
|
||||
46
scripts/stage1/install_openmpi.sh
Normal file
46
scripts/stage1/install_openmpi.sh
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
#!/bin/bash
|
||||
|
||||
if [[ "$BASH_SOURCE" == "$0" ]]; then
|
||||
BUILD_LOCATION=${PWD}
|
||||
INSTALL_LOCATION=/people/parl703
|
||||
TARGET_CPU="native"
|
||||
CFLAGS="-O2 -fPIC -fno-omit-frame-pointer -fopenmp -g -march=${TARGET_CPU} -mtune=${TARGET_CPU}"
|
||||
FFLAGS="${CFLAGS} -fbacktrace"
|
||||
CXXFLAGS="${CFLAGS}"
|
||||
F77FLAGS="${FFLAGS}"
|
||||
F90FLAGS="${FFLAGS}"
|
||||
FCFLAGS="${FFLAGS}"
|
||||
LOG_LINES=200
|
||||
else
|
||||
source ${BUILD_LOCATION}/build.env
|
||||
ROOT=${PWD}
|
||||
fi
|
||||
|
||||
MPI_VERSION=4.1.5
|
||||
|
||||
OPENMPI_BUILD_DIR=${BUILD_LOCATION}/openmpi
|
||||
OPENMPI_INSTALL_DIR=${INSTALL_LOCATION}/openmpi/${MPI_VERSION}
|
||||
mkdir -p ${OPENMPI_BUILD_DIR}
|
||||
mkdir -p ${OPENMPI_INSTALL_DIR}
|
||||
|
||||
cd ${OPENMPI_BUILD_DIR}
|
||||
wget -c https://www.openmpi.org/openmpi-${MPI_VERSION}.tar.gz
|
||||
tar -xf openmpi-${MPI_VERSION}.tar.gz
|
||||
cd openmpi-${MPI_VERSION}
|
||||
mkdir build && cd build
|
||||
|
||||
if [ "MPI_ENABLED" = false ]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo ${FFTW_INSTALL_DIR}
|
||||
./configure --prefix=${FFTW_INSTALL_DIR} ${FFTW_FLAGS}
|
||||
make -j$(nproc)
|
||||
make -j$(nproc) check > check.log 2>&1 || tail -n ${LOG_LINES} check.log
|
||||
make -j$(nproc) install > install.log 2>&1 || tail -n ${LOG_LINES} install.log
|
||||
|
||||
if [[ "$BASH_SOURCE" != "$0" ]]; then
|
||||
cd ${ROOT}
|
||||
else
|
||||
echo "Exiting ..."
|
||||
fi
|
||||
|
|
@ -5,6 +5,7 @@ if [[ "$BASH_SOURCE" == "$0" ]]; then
|
|||
INSTALL_LOCATION=/avfs/people/parl703
|
||||
LOG_LINES=200
|
||||
else
|
||||
source ${BUILD_LOCATION}/build.env
|
||||
ROOT=${PWD}
|
||||
fi
|
||||
|
||||
102
scripts/tool_kit.sh
Normal file
102
scripts/tool_kit.sh
Normal file
|
|
@ -0,0 +1,102 @@
|
|||
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"
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue