154 lines
4.7 KiB
Bash
154 lines
4.7 KiB
Bash
#!/bin/bash
|
|
# -----------------------------------------------------------------------------------------------------------
|
|
# Copyright (c) 2025 Huawei Technologies Co., Ltd.
|
|
# This program is free software, you can redistribute it and/or modify it under the terms and conditions of
|
|
# CANN Open Software License Agreement Version 2.0 (the "License").
|
|
# Please refer to the License for details. You may not use this file except in compliance with the License.
|
|
# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED,
|
|
# INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
|
|
# See LICENSE in the root of the software repository for the full text of the License.
|
|
# -----------------------------------------------------------------------------------------------------------
|
|
|
|
vendor_name=customize
|
|
targetdir=/usr/local/Ascend/opp
|
|
target_custom=0
|
|
|
|
sourcedir=$PWD/packages
|
|
vendordir=vendors/$vendor_name
|
|
|
|
log() {
|
|
cur_date=`date +"%Y-%m-%d %H:%M:%S"`
|
|
echo "[ops_custom] [$cur_date] "$1
|
|
}
|
|
|
|
if [[ "x${ASCEND_OPP_PATH}" == "x" ]];then
|
|
log "[ERROR] env ASCEND_OPP_PATH no exist"
|
|
exit 1
|
|
fi
|
|
|
|
targetdir=${ASCEND_OPP_PATH}
|
|
|
|
if [ ! -d $targetdir ];then
|
|
log "[ERROR] $targetdir no exist"
|
|
exit 1
|
|
fi
|
|
|
|
if [ ! -x $targetdir ] || [ ! -w $targetdir ] || [ ! -r $targetdir ];then
|
|
log "[WARNING] The directory $targetdir does not have sufficient permissions. \
|
|
Please check and modify the folder permissions (e.g., using chmod), \
|
|
or use the --install-path option to specify an installation path and \
|
|
change the environment variable ASCEND_CUSTOM_OPP_PATH to the specified path."
|
|
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
|
|
vendor_installed_dir=$(ls "$targetdir/vendors" 2> /dev/null)
|
|
for i in $vendor_installed_dir;do
|
|
vendor_installed_file=$(ls "$vendor_installed_dir/$vendor_name/$i" 2> /dev/null)
|
|
if [ "$i" = "$vendor_name" ] && [ "$vendor_installed_file" != "" ]; then
|
|
echo "[INFO]: $vendor_name custom opp package has been installed on the path $vendor_installed_dir, \
|
|
you want to Overlay Installation , please enter:[o]; \
|
|
or replace directory installation , please enter: [r]; \
|
|
or not install , please enter:[n]."
|
|
fi
|
|
while true
|
|
do
|
|
read mrn
|
|
if [ "$mrn" = o ]; then
|
|
break
|
|
elif [ "$mrn" = r ]; then
|
|
[ -n "$vendor_installed_file" ] && rm -rf "$vendor_installed_file"
|
|
break
|
|
elif [ "$mrn" = n ]; then
|
|
return 0
|
|
else
|
|
log "[WARNING]: Input error, please input m or r or n to choose!"
|
|
fi
|
|
done
|
|
done
|
|
log "[INFO] replace old ops $1 files ......"
|
|
fi
|
|
|
|
log "copy new ops $1 files ......"
|
|
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_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
|
|
}
|
|
|
|
log "[INFO] copy uninstall sh success"
|
|
|
|
log "[INFO] upgrade framework"
|
|
upgrade framework
|
|
if [ $? -ne 0 ];then
|
|
exit 1
|
|
fi
|
|
|
|
log "[INFO] upgrade op proto"
|
|
upgrade op_proto
|
|
if [ $? -ne 0 ];then
|
|
exit 1
|
|
fi
|
|
|
|
log "[INFO] upgrade op impl"
|
|
upgrade op_impl
|
|
if [ $? -ne 0 ];then
|
|
exit 1
|
|
fi
|
|
|
|
log "[INFO] upgrade op api"
|
|
upgrade op_api
|
|
if [ $? -ne 0 ];then
|
|
exit 1
|
|
fi
|
|
|
|
log "[INFO] upgrade version.info"
|
|
upgrade_file version.info
|
|
if [ $? -ne 0 ];then
|
|
exit 1
|
|
fi
|
|
|
|
config_file=${targetdir}/vendors/config.ini
|
|
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
|
|
|
|
echo "SUCCESS"
|
|
exit 0
|