#!/bin/bash
install_path=${1}
package_arch=${2}
install_for_all_flag=${3}
pylocal=y
function install_whl_package() {
local _pylocal=$1
local _package=$2
local _pythonlocalpath=$3
print "INFO" "Start to install ${_package}."
if [ ! -f "${_package}" ]; then
print "ERROR" "Install whl The ${_package} does not exist."
return 1
fi
if [ "-${_pylocal}" = "-y" ]; then
pip3 install --upgrade --no-deps --force-reinstall --disable-pip-version-check "${_package}" -t "${_pythonlocalpath}" > /dev/null 2>&1
else
if [ "$(id -u)" -ne 0 ]; then
pip3 install --upgrade --no-deps --force-reinstall --disable-pip-version-check "${_package}" --user > /dev/null 2>&1
else
pip3 install --upgrade --no-deps --force-reinstall --disable-pip-version-check "${_package}" > /dev/null 2>&1
fi
fi
if [ $? -ne 0 ]; then
print "ERROR" "Install ${_package} failed."
return 1
fi
chmod -R u+rwx,go+rx,go-w "${_pythonlocalpath}"
print "INFO" "Install ${_package} success."
return 0
}
function implement_install() {
copy_file ${MSPROF} ${install_path}/${MSPROF_PATH}/${MSPROF}
copy_file ${LIB_MS_PROFILER} ${install_path}/${arch_name}/lib64/${LIB_MS_PROFILER}
copy_file ${LIB_PROF_API} ${install_path}/${arch_name}/lib64/${LIB_PROF_API}
copy_file ${LIB_PROF_IMPL} ${install_path}/${arch_name}/lib64/${LIB_PROF_IMPL}
copy_file ${ACL_PROF_H} ${install_path}/${arch_name}/include/acl/${ACL_PROF_H}
copy_file ${GE_PROF_H} ${install_path}/${arch_name}/include/ge/${GE_PROF_H}
copy_file ${ANALYSIS} ${install_path}/${ANALYSIS_PATH}/${ANALYSIS}
msprof_analyse_whl=${install_path}/${ANALYSIS_PATH}/${MSPROF_ANALYSIS_WHL}
copy_file ${MSPROF_ANALYSIS_WHL} $msprof_analyse_whl
if [ -f "${MSPROF_ANALYSIS_WHL}" ]; then
install_whl_package $pylocal ${msprof_analyse_whl} ${install_path}/${ANALYSIS_PATH}
fi
if [ $? -ne 0 ]; then
print "ERROR" "Install msprof analysis whl failed."
return 1
fi
}
function copy_file() {
local filename=${1}
local target_file=$(readlink -f ${2})
if [ ! -f "$filename" ] && [ ! -d "$filename" ]; then
return
fi
if [ -f "$target_file" ] || [ -d "$target_file" ]; then
local parent_dir=$(dirname ${target_file})
local parent_right=$(stat -c '%a' ${parent_dir})
chmod u+w ${parent_dir}
chmod -R u+w ${target_file}
rm -r ${target_file}
cp -r ${filename} ${target_file}
chmod -R ${parent_right} ${target_file}
chmod ${parent_right} ${parent_dir}
print "INFO" "$filename is replaced."
return
fi
print "WARNING" "target $filename is non-existent."
}
function chmod_ini_file() {
local ini_config_dir=${install_path}${ANALYSIS_PATH}${ANALYSIS}"/config"
if [ -d "$ini_config_dir" ]; then
if [ "$install_for_all_flag" = "1" ] || [ "$UID" = "0" ]; then
find "${ini_config_dir}" -type f -exec chmod ${root_ini_right} {} \;
else
find "${ini_config_dir}" -type f -exec chmod ${user_ini_right} {} \;
fi
fi
}
function set_libmsprofiler_right() {
libmsprofiler_right=${user_libmsprofiler_right}
if [ "$install_for_all_flag" = "1" ] || [ "$UID" = "0" ]; then
libmsprofiler_right=${root_libmsprofiler_right}
fi
}
function chmod_libmsprofiler() {
if [ -f "${install_path}/${arch_name}/lib64/${LIB_MS_PROFILER}" ]; then
chmod ${libmsprofiler_right} "${install_path}/${arch_name}/lib64/${LIB_MS_PROFILER}"
fi
if [ -f "${install_path}/${arch_name}/lib64/${LIB_PROF_API}" ]; then
chmod ${libmsprofiler_right} "${install_path}/${arch_name}/lib64/${LIB_PROF_API}"
fi
if [ -f "${install_path}/${arch_name}/lib64/${LIB_PROF_IMPL}" ]; then
chmod ${libmsprofiler_right} "${install_path}/${arch_name}/lib64/${LIB_PROF_IMPL}"
fi
}
source utils.sh
right=${user_right}
arch_name="${package_arch}-linux"
implement_install
chmod_ini_file
set_libmsprofiler_right
chmod_libmsprofiler