diff --git a/LifeSciences/FSL-6.0.5.2/build.sh b/LifeSciences/FSL-6.0.5.2/build.sh new file mode 100644 index 0000000000000000000000000000000000000000..1ca7bb91661fba50d6e1ea3105deca8f3bf33422 --- /dev/null +++ b/LifeSciences/FSL-6.0.5.2/build.sh @@ -0,0 +1,101 @@ +#!/bin/bash +# 此脚本用来编译安装fsl-6.0.5.2软件 +# fsl-6.0.5.2软件介绍 +# FSL 是一个全面的分析工具库,用于 FMRI、MRI 和 DTI 脑成像数据。 +# Usage: +# bash /path/to/build.sh /path/to/build /path/to/install +# 使用build.sh 脚本样例 bash /path/to/build.sh /path/to/build /path/to/install +# 使用build.sh 需要root权限或者sudo权限,否则无法安装依赖 +# +############################################################## + +source "$( + cd "$(dirname "$0")" || exit 1 + pwd +)/common.sh" + +function install_development() { + sudo yum install -y m4 bc zlib-devel zlib environment-modules systemd-devel + source /etc/profile + module purge +} + +function install_bisheng() { + bash "$1"/bisheng-compiler-2.1.0.sh "$2" "$3" + module use "$3"/bisheng-compiler-2.1.0 + module load "$3"/bisheng-compiler-2.1.0/bisheng_modulefiles +} + +function install_fsl() { + bash "$4"/fsl-6.0.5.2.sh "$1" "$2" + mkdir -p "$3"/fsl-6.0.5.2-hpc && cp -r "$2"/* "$3"/fsl-6.0.5.2-hpc/ +} + + +function write_fsl_run() { + cat >"$1/fsl-6.0.5.2-hpc/run.sh" </dev/null + +export FSLDIR=`pwd`/fsl-6.0.5.2 +. ${FSLDIR}/etc/fslconf/fsl.sh +$FSLDIR/etc/fslconf/post_install.sh -f $FSLDIR + +current_dir="\$(cd "\$(dirname "\${BASH_SOURCE[0]}")" && pwd -P)" +for f in "\${current_dir}"/*; do + if [[ -d "\${f}" && -f "\$(ls "\${f}"/*modulefiles 2>&1)" ]]; then + module use "\${f}" && module load "\${f}"/*modulefiles + fi +done + +echo -e "\033[1;32;1mfsl environment initialization completed.\033[0m" + +EOF + + chmod +x "$1"/fsl-6.0.5.2-hpc/run.sh +} + +function tar_pkg() { + echo "# 正在打包 fsl 文件 路径为$1" + cd "$1" && tar -zcf fsl-6.0.5.2-hpc.tar.gz fsl-6.0.5.2-hpc + echo -e "\033[1;32;1m# fsl 已经打包成功 文件路径为$1/fsl-6.0.5.2-hpc.tar.gz\033[0m" +} + +function main() { + set_script_dir + + # $1(构建路径)、$2(安装路径)检测 + is_check_build_install_directory "$1" "$2" "build.sh" + + # 构建路径 + buildpath=$(create_dir "$1") + + # 安装路径 + installpath=$(create_dir "$2") + + # 依赖路径 + dep_dir="${SCRIPT_DIR}"/dependency + + # 打包路径 + pkg_dir="${SCRIPT_DIR}"/pkg + + install_development + install_bisheng "$dep_dir" "$buildpath" "$installpath" + install_fsl "$buildpath" "$installpath" "$pkg_dir" "${SCRIPT_DIR}" + set -e + write_fsl_run "$pkg_dir" + tar_pkg "$pkg_dir" + echo " # ------------------------------------------------------------------------" + echo "# 运行软件前请执行以下命令" + echo -e "\033[1;32;1m# source ""${pkg_dir}""/fsl-6.0.5.2-hpc/run.sh\033[0m" + echo "# 来加载 fsl 运行时环境变量" + echo "# ------------------------------------------------------------------------" + rm -rf "$buildpath" "$installpath" +} + +main "$@" diff --git a/LifeSciences/FSL-6.0.5.2/common.sh b/LifeSciences/FSL-6.0.5.2/common.sh new file mode 100644 index 0000000000000000000000000000000000000000..6b0cf21cd82bdc77dd5b797c70a4a532bcd1c4ae --- /dev/null +++ b/LifeSciences/FSL-6.0.5.2/common.sh @@ -0,0 +1,46 @@ +#!/bin/bash + +function is_check_build_install_directory() { + if [[ $# -ne 3 ]]; then + echo "The format is as follows:" + echo "bash $3 buildpath installpath" + echo ":param buildpath: 应用构建绝对路径" + echo ":param installpath: 应用安装绝对路径" + exit 1 + fi + + [[ ! "$1" =~ ^/.* || "$1" = "/" ]] && echo "请输入正确的构建路径" && exit 1 + [[ ! "$2" =~ ^/.* || "$2" = "/" ]] && echo "请输入正确的安装路径" && exit 1 + echo "# ------------------------------------------------------------------------" + echo "# $3 正在运行" +} + +function is_check_build_equal() { + local buildpath + local installpath + buildpath="$1" + installpath="$2" + [[ "${buildpath}" =~ .*/$ ]] && buildpath=${buildpath%/*} + [[ "${installpath}" =~ .*/$ ]] && installpath=${installpath%/*} + [[ "${buildpath}" == "${installpath}" ]] && echo "构建路径与安装路径需为不同路径" && exit 1 + echo "# 构建路径为$1" + echo "# 安装路径为$2" +} + +function create_dir() { + local path + path="$1" + [[ "$path" =~ .*/$ ]] && path=${path%/*} + if [[ ! -d "${path}" && ! -f "${path}" ]]; then + mkdir -p "${path}" + elif [[ -n "$(ls -A "$1")" ]]; then + path=$path$(date "+%y%m%d%H%M%S") && mkdir -p "${path}" + fi + echo "${path}" +} + +function set_script_dir() { + local REL_SCRIPT_DIR + REL_SCRIPT_DIR="$(dirname "${BASH_SOURCE[0]}")" || return 1 + SCRIPT_DIR="$(cd "${REL_SCRIPT_DIR}" && pwd)" || return 1 +} diff --git a/LifeSciences/FSL-6.0.5.2/dependency/bisheng-compiler-2.1.0.sh b/LifeSciences/FSL-6.0.5.2/dependency/bisheng-compiler-2.1.0.sh new file mode 100644 index 0000000000000000000000000000000000000000..aefbd26ac03f193764381177a86870bfb9c26ace --- /dev/null +++ b/LifeSciences/FSL-6.0.5.2/dependency/bisheng-compiler-2.1.0.sh @@ -0,0 +1,62 @@ +#!/bin/bash + +source "$( + cd "$(dirname "$0")" || exit 1 + pwd +)/../common.sh" + +function install_development() { + sudo yum install -y wget tar libatomic environment-modules + source /etc/profile +} + +function download_bisheng() { + echo "# 毕昇编译器正在下载" + wget -t 40 -c -P "$1" \ + https://mirrors.huaweicloud.com/kunpeng/archive/compiler/bisheng_compiler/bisheng-compiler-2.1.0-aarch64-linux.tar.gz + + if [[ $? -eq 0 ]]; then + echo -e "\033[1;32;1m# 毕昇编译器已经下载成功\033[0m" + else + echo -e "\033[31m# 毕昇编译器下载失败,请重新执行脚本\033[0m" + exit 1 + fi +} + +function install_bisheng() { + echo "# 毕昇编译器正在安装" + tar -xzf "$1"/bisheng-compiler-2.1.0-aarch64-linux.tar.gz -C "$1" && rm -rf "$1"/bisheng-compiler-2.1.0-aarch64-linux.tar.gz + mkdir -p "$2"/bisheng-compiler-2.1.0 && cp -r "$1"/bisheng-compiler-2.1.0-aarch64-linux/* "$2"/bisheng-compiler-2.1.0/ + echo -e "\033[1;32;1m# 毕昇编译器已经安装完毕\033[0m" +} + +function write_bisheng_module() { + cat >"$1/bisheng-compiler-2.1.0/bisheng_modulefiles" <"$1/fsl-6.0.5.2/fsl_modulefiles" <