代码拉取完成,页面将自动刷新
#!/bin/bash
vendor_name=customize
targetdir=/usr/local/Ascend/opp
target_custom=0
sourcedir=$PWD/packages
vendordir=vendors/$vendor_name
QUIET="y"
while true
do
case $1 in
--quiet)
QUIET="y"
shift
;;
--install-path=*)
INSTALL_PATH=$(echo $1 | cut -d"=" -f2-)
INSTALL_PATH=${INSTALL_PATH%*/}
shift
;;
--*)
shift
;;
*)
break
;;
esac
done
log() {
cur_date=`date +"%Y-%m-%d %H:%M:%S"`
echo "[runtime] [$cur_date] "$1
}
if [ -n "${INSTALL_PATH}" ]; then
if [[ ! "${INSTALL_PATH}" = /* ]]; then
log "[ERROR] use absolute path for --install-path argument"
exit 1
fi
if [ ! -d ${INSTALL_PATH} ]; then
mkdir ${INSTALL_PATH} >> /dev/null 2>&1
if [ $? -ne 0 ]; then
log "[ERROR] create ${INSTALL_PATH} failed"
exit 1
fi
fi
targetdir=${INSTALL_PATH}
elif [ -n "${ASCEND_CUSTOM_OPP_PATH}" ]; then
if [ ! -d ${ASCEND_CUSTOM_OPP_PATH} ]; then
mkdir -p ${ASCEND_CUSTOM_OPP_PATH} >> /dev/null 2>&1
if [ $? -ne 0 ]; then
log "[ERROR] create ${ASCEND_CUSTOM_OPP_PATH} failed"
fi
fi
targetdir=${ASCEND_CUSTOM_OPP_PATH}
else
if [ "x${ASCEND_OPP_PATH}" == "x" ]; then
log "[ERROR] env ASCEND_OPP_PATH no exist"
exit 1
fi
targetdir="${ASCEND_OPP_PATH}"
fi
if [ ! -d $targetdir ];then
log "[ERROR] $targetdir no exist"
exit 1
fi
upgrade()
{
if [ ! -d ${sourcedir}/$vendordir/$1 ]; then
log "[INFO] no need to upgrade ops $1 files"
return 0
fi
if [ ! -d ${targetdir}/$vendordir/$1 ];then
log "[INFO] create ${targetdir}/$vendordir/$1."
mkdir -p ${targetdir}/$vendordir/$1
if [ $? -ne 0 ];then
log "[ERROR] create ${targetdir}/$vendordir/$1 failed"
return 1
fi
else
has_same_file=-1
for file_a in ${sourcedir}/$vendordir/$1/*; do
file_b=${file_a##*/};
if [ "ls ${targetdir}/$vendordir/$1" = "" ]; then
log "[INFO] ${targetdir}/$vendordir/$1 is empty !!"
return 1
fi
grep -q $file_b <<<`ls ${targetdir}/$vendordir/$1`;
if [[ $? -eq 0 ]]; then
echo -n "${file_b} "
has_same_file=0
fi
done
if [ 0 -eq $has_same_file ]; then
if test $QUIET = "n"; then
echo "[INFO]: has old version in ${targetdir}/$vendordir/$1, \
you want to Overlay Installation , please enter:[o]; \
or replace directory installation , please enter: [r]; \
or not install , please enter:[n]."
while true
do
read orn
if [ "$orn" = n ]; then
return 0
elif [ "$orn" = m ]; then
break;
elif [ "$0rn" = r ]; then
[ -n "${targetdir}/$vendordir/$1/" ] && rm -rf "${targetdir}/$vendordir/$1"/*
break;
else
echo "[ERROR] input error, please input again!"
fi
done
fi
fi
log "[INFO] replace or merge old ops $1 files .g....."
fi
log "copy new ops $1 files ......"
if [ -d ${targetdir}/$vendordir/$1/ ]; then
chmod -R +w "$targetdir/$vendordir/$1/" >/dev/null 2>&1
fi
cp -rf ${sourcedir}/$vendordir/$1/* $targetdir/$vendordir/$1/
if [ $? -ne 0 ];then
log "[ERROR] copy new $1 files failed"
return 1
fi
return 0
}
upgrade_proto()
{
if [ ! -f ${sourcedir}/$vendordir/custom.proto ]; then
log "[INFO] no need to upgrade custom.proto files"
return 0
fi
if [ ! -d ${targetdir}/$vendordir/framework/caffe ];then
log "[INFO] create ${targetdir}/$vendordir/framework/caffe."
mkdir -p ${targetdir}/$vendordir/framework/caffe
if [ $? -ne 0 ];then
log "[ERROR] create ${targetdir}/$vendordir/framework/caffe failed"
return 1
fi
else
if [ -f ${targetdir}/$vendordir/framework/caffe/custom.proto ]; then
# 有老版本,判断是否要覆盖式安装
if test $QUIET = "n"; then
echo "[INFO] ${targetdir}/$vendordir/framework/caffe has old version"\
"custom.proto file. Do you want to replace? [y/n] "
while true
do
read yn
if [ "$yn" = n ]; then
return 0
elif [ "$yn" = y ]; then
break;
else
echo "[ERROR] input error, please input again!"
fi
done
fi
fi
log "[INFO] replace old caffe.proto files ......"
fi
chmod -R +w "$targetdir/$vendordir/framework/caffe/" >/dev/null 2>&1
cp -rf ${sourcedir}/$vendordir/custom.proto ${targetdir}/$vendordir/framework/caffe/
if [ $? -ne 0 ];then
log "[ERROR] copy new custom.proto failed"
return 1
fi
log "[INFO] copy custom.proto success"
return 0
}
upgrade_file()
{
if [ ! -e ${sourcedir}/$vendordir/$1 ]; then
log "[INFO] no need to upgrade ops $1 file"
return 0
fi
log "copy new $1 files ......"
cp -f ${sourcedir}/$vendordir/$1 $targetdir/$vendordir/$1
if [ $? -ne 0 ];then
log "[ERROR] copy new $1 file failed"
return 1
fi
return 0
}
delete_optiling_file()
{
if [ ! -d ${targetdir}/vendors ];then
log "[INFO] $1 not exist, no need to uninstall"
return 0
fi
sys_info=$(uname -m)
if [ ! -d ${sourcedir}/$vendordir/$1/ai_core/tbe/op_tiling/lib/linux/${sys_info} ];then
rm -rf ${sourcedir}/$vendordir/$1/ai_core/tbe/op_tiling/liboptiling.so
fi
return 0
}
log "[INFO] copy uninstall sh success"
if [ ! -d ${targetdir}/vendors ];then
log "[INFO] create ${targetdir}/vendors."
mkdir -p ${targetdir}/vendors
if [ $? -ne 0 ];then
log "[ERROR] create ${targetdir}/vendors failed"
return 1
fi
fi
chmod u+w ${targetdir}/vendors
echo "[ops_custom]upgrade framework"
upgrade framework
if [ $? -ne 0 ];then
exit 1
fi
echo "[ops_custom]upgrade op proto"
upgrade op_proto
if [ $? -ne 0 ];then
exit 1
fi
echo "[ops_custom]upgrade version.info"
upgrade_file version.info
if [ $? -ne 0 ];then
exit 1
fi
echo "[ops_custom]upgrade op impl"
delete_optiling_file op_impl
upgrade op_impl
if [ $? -ne 0 ];then
exit 1
fi
echo "[ops_custom]upgrade op api"
upgrade op_api
if [ $? -ne 0 ];then
exit 1
fi
upgrade_proto
if [ $? -ne 0 ];then
exit 1
fi
# set the set_env.bash
if [ -n "${INSTALL_PATH}" ] && [ -d ${INSTALL_PATH} ]; then
_ASCEND_CUSTOM_OPP_PATH=${targetdir}/${vendordir}
bin_path="${_ASCEND_CUSTOM_OPP_PATH}/bin"
set_env_variable="#!/bin/bash\nexport ASCEND_CUSTOM_OPP_PATH=${_ASCEND_CUSTOM_OPP_PATH}:\${ASCEND_CUSTOM_OPP_PATH}"
if [ ! -d ${bin_path} ]; then
mkdir -p ${bin_path} >> /dev/null 2>&1
if [ $? -ne 0 ]; then
log "[ERROR] create ${bin_path} failed"
exit 1
fi
fi
echo -e ${set_env_variable} > ${bin_path}/set_env.bash
if [ $? -ne 0 ]; then
log "[ERROR] write ASCEND_CUSTOM_OPP_PATH to set_env.bash failed"
exit 1
else
log "[INFO] using requirements: when custom module install finished or before you run the custom module, \
execute the command [ source ${bin_path}/set_env.bash ] to set the environment path"
fi
else
config_file=${targetdir}/vendors/config.ini
if [ ! -f ${config_file} ]; then
touch ${config_file}
chmod 640 ${config_file}
echo "load_priority=$vendor_name" > ${config_file}
if [ $? -ne 0 ];then
echo "echo load_priority failed"
exit 1
fi
else
found_vendors="$(grep -w "load_priority" "$config_file" | cut --only-delimited -d"=" -f2-)"
found_vendor=$(echo $found_vendors | sed "s/$vendor_name//g" | tr ',' ' ')
vendor=$(echo $found_vendor | tr -s ' ' ',')
if [ "$vendor" != "" ]; then
sed -i "/load_priority=$found_vendors/s@load_priority=$found_vendors@load_priority=$vendor_name,$vendor@g" "$config_file"
fi
fi
fi
chmod u-w ${targetdir}/vendors
if [ -d ${targetdir}/$vendordir/op_impl/cpu/aicpu_kernel/impl/ ]; then
chmod -R 440 ${targetdir}/$vendordir/op_impl/cpu/aicpu_kernel/impl/* >/dev/null 2>&1
fi
if [ -f ${targetdir}/ascend_install.info ]; then
chmod -R 440 ${targetdir}/ascend_install.info
fi
if [ -f ${targetdir}/scene.info ]; then
chmod -R 440 ${targetdir}/scene.info
fi
if [ -f ${targetdir}/version.info ]; then
chmod -R 440 ${targetdir}/version.info
fi
echo "SUCCESS"
exit 0
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。