diff --git a/scripts/lite_release_package.sh b/scripts/lite_release_package.sh new file mode 100644 index 00000000000..0d190175be9 --- /dev/null +++ b/scripts/lite_release_package.sh @@ -0,0 +1,133 @@ +#!/bin/bash +# Copyright 2019 Huawei Technologies Co., Ltd +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================ + +set -e + +function verify_every_file() { + for full_file in "$1"/* + do + if [ -d ${full_file} ] + then + verify_every_file ${full_file} $2 + else + echo "check: ${full_file}" + exist_and_equal="false" + src_sha256=`sha256sum ${full_file} | cut -d" " -f1` + file_name=$(basename ${full_file}) + find_result=`find $2 -name ${file_name} -type f` + for same_name_file in ${find_result} + do + dst_sha256=`sha256sum ${same_name_file} | cut -d" " -f1` + if [ ${src_sha256} == ${dst_sha256} ] + then + echo " dst: ${same_name_file}" + exist_and_equal="true" + fi + done + if [ ${exist_and_equal} == "false" ] + then + echo " check failed!" + exit 1 + fi + fi + done +} + +function android_release_package() +{ + for name in "train" "inference" + do + src_arm64_pkg_name="mindspore-lite-${version}-${name}-android-aarch64" + src_arm32_pkg_name="mindspore-lite-${version}-${name}-android-aarch32" + dst_android_pkg_name="mindspore-lite-${version}-${name}-android" + + tar -xzf ${input_path}/android_aarch64/${src_arm64_pkg_name}.tar.gz + tar -xzf ${input_path}/android_aarch32/${src_arm32_pkg_name}.tar.gz + + # ARM32 and ARM64 have the same header file. + mkdir -p ${dst_android_pkg_name}/third_party + mkdir -p ${dst_android_pkg_name}/minddata/ + cp -r ${src_arm64_pkg_name}/include/ ${dst_android_pkg_name}/ + cp -r ${src_arm64_pkg_name}/third_party/flatbuffers/ ${dst_android_pkg_name}/third_party/ + cp -r ${src_arm64_pkg_name}/minddata/include/ ${dst_android_pkg_name}/minddata/ + + # Executable files and dynamic libraries are different in different architectures. + mkdir -p ${dst_android_pkg_name}/benchmark/aarch64/ + mkdir -p ${dst_android_pkg_name}/benchmark/aarch32/ + mkdir -p ${dst_android_pkg_name}/lib/aarch64/ + mkdir -p ${dst_android_pkg_name}/lib/aarch32/ + mkdir -p ${dst_android_pkg_name}/minddata/lib/aarch64/ + mkdir -p ${dst_android_pkg_name}/minddata/lib/aarch32/ + cp ${src_arm64_pkg_name}/benchmark/* ${dst_android_pkg_name}/benchmark/aarch64/ + cp ${src_arm32_pkg_name}/benchmark/* ${dst_android_pkg_name}/benchmark/aarch32/ + cp ${src_arm64_pkg_name}/lib/* ${dst_android_pkg_name}/lib/aarch64/ + cp ${src_arm32_pkg_name}/lib/* ${dst_android_pkg_name}/lib/aarch32/ + cp ${src_arm64_pkg_name}/minddata/lib/* ${dst_android_pkg_name}/minddata/lib/aarch64/ + cp ${src_arm32_pkg_name}/minddata/lib/* ${dst_android_pkg_name}/minddata/lib/aarch32/ + + if [ ${name} == "train" ] + then + mkdir -p ${dst_android_pkg_name}/net_train/aarch64/ + mkdir -p ${dst_android_pkg_name}/net_train/aarch32/ + mkdir -p ${dst_android_pkg_name}/minddata/third_party/libjpeg-turbo/lib/aarch64/ + mkdir -p ${dst_android_pkg_name}/minddata/third_party/libjpeg-turbo/lib/aarch32/ + cp ${src_arm64_pkg_name}/net_train/* ${dst_android_pkg_name}/net_train/aarch64/ + cp ${src_arm32_pkg_name}/net_train/* ${dst_android_pkg_name}/net_train/aarch32/ + cp ${src_arm64_pkg_name}/minddata/third_party/libjpeg-turbo/lib/* ${dst_android_pkg_name}/minddata/third_party/libjpeg-turbo/lib/aarch64/ + cp ${src_arm32_pkg_name}/minddata/third_party/libjpeg-turbo/lib/* ${dst_android_pkg_name}/minddata/third_party/libjpeg-turbo/lib/aarch32/ + fi + mkdir -p ${dst_android_pkg_name}/third_party/hiai_ddk/lib/aarch64/ + cp -r ${src_arm64_pkg_name}/third_party/hiai_ddk/lib/* ${dst_android_pkg_name}/third_party/hiai_ddk/lib/aarch64/ + + mkdir -p ${output_path}/release/android/ + tar -czf ${output_path}/release/android/${dst_android_pkg_name}.tar.gz ${dst_android_pkg_name} + cd ${output_path}/release/android/ + sha256sum ${dst_android_pkg_name}.tar.gz > ${dst_android_pkg_name}.tar.gz.sha256 + cd - + + verify_every_file ${src_arm64_pkg_name} ${dst_android_pkg_name} + verify_every_file ${src_arm32_pkg_name} ${dst_android_pkg_name} + rm -rf ${src_arm64_pkg_name} + rm -rf ${src_arm32_pkg_name} + rm -rf ${dst_android_pkg_name} + done +} + +function linux_release_package() +{ + mkdir -p ${output_path}/release/linux/ + cp ${input_path}/ubuntu_x86/* ${output_path}/release/linux/ +} + +function windows_release_package() +{ + mkdir -p ${output_path}/release/windows/ + cp ${input_path}/windows_x64/* ${output_path}/release/windows/ +} + +echo "============================== begin ==============================" +echo "Usage: bash lite_release_package.sh input_path output_path" + +input_path=$1 +output_path=$2 +version=`ls ${input_path}/android_aarch64/mindspore-lite-*-inference-*.tar.gz | cut -d"-" -f3` + +android_release_package +linux_release_package +windows_release_package + +echo "Create release package success!" +echo "=============================== end ==============================="