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."
|
echo "This script is not the top-level bash file being run."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
## INSTALL GCC FROM SOURCE
|
./scripts/install_gcc.sh
|
||||||
GCC_BUILD_DIR=${BUILD_LOCATION}/gcc
|
|
||||||
GCC_INSTALL_DIR=${INSTALL_LOCATION}/gcc
|
|
||||||
mkdir -p ${GCC_INSTALL_DIR}
|
|
||||||
mkdir gcc-${GCC_VERSION}-build
|
|
||||||
|
|
||||||
GCC_VERSION=7.5.0
|
./scripts/install_env-modules.sh
|
||||||
cd ${GCC_BUILD_DIR}
|
|
||||||
|
|
||||||
wget ftp://ftp.gnu.org/gnu/gcc/gcc-${GCC_VERSION}/gcc-${GCC_VERSION}.tar.gz
|
./scripts/install_openssl.sh
|
||||||
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
|
|
||||||
|
|
||||||
## INSTALL ENVIRONMENT MODULES FROM SOURCE
|
./scripts/stage0/install_qt.sh
|
||||||
MODULES_BUILD_DIR=${BUILD_LOCATION}
|
|
||||||
MODULES_INSTALL_DIR=${INSTALL_LOCATION}/modules
|
|
||||||
mkdir -p ${MODULES_BUILD_DIR}
|
|
||||||
mkdir -p ${MODULES_INSTALL_DIR}
|
|
||||||
|
|
||||||
MODULES_VERSION=5.3.1
|
./scripts/stage0/install_cmake.sh
|
||||||
|
|
||||||
cd ${MODULES_BUILD_DIR}
|
./scripts/stage0/install_git.sh
|
||||||
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
|
|
||||||
|
|
||||||
## INSTALL OPENSSL FOR CMAKE
|
./scripts/stage0/install_llvm.sh
|
||||||
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
|
|
||||||
|
|
||||||
## INSTALL OPENMPI FROM SOURCE
|
## INSTALL OPENMPI FROM SOURCE
|
||||||
module load gcc/${GCC_VERSION} cmake/${CMAKE_VERSION}
|
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
|
INSTALL_LOCATION=/avfs/people/parl703
|
||||||
LOG_LINES=200
|
LOG_LINES=200
|
||||||
else
|
else
|
||||||
|
source ${BUILD_LOCATION}/build.env
|
||||||
ROOT=${PWD}
|
ROOT=${PWD}
|
||||||
fi
|
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