|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- #!/bin/bash
- # Copyright 2020 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
-
- SCRIPT_BASEDIR=$(realpath "$(dirname "$0")")
-
- PROJECT_BASEDIR=$(dirname "$SCRIPT_BASEDIR")
-
- rename_wheel() {
- cd "$PROJECT_BASEDIR/output" || exit
- VERSION="$("$PYTHON" -c 'import platform; print(platform.python_version())')"
- PACKAGE_LIST=$(ls mindinsight-*-any.whl) || exit
- for PACKAGE_ORIG in $PACKAGE_LIST; do
- MINDINSIGHT_VERSION=$(echo "$PACKAGE_ORIG" | awk -F"-" '{print $2}')
- PYTHON_VERSION_NUM=$(echo "$VERSION" | awk -F"." '{print $1$2}')
- PYTHON_VERSION_TAG="cp$PYTHON_VERSION_NUM"
- PYTHON_ABI_TAG="cp${PYTHON_VERSION_NUM}"
- if ! "$PYTHON" -c 'import sys; assert sys.version_info >= (3, 8)' &>/dev/null; then
- PYTHON_ABI_TAG="${PYTHON_ABI_TAG}m"
- fi
- MACHINE_TAG="$(uname -s | tr '[:upper:]' '[:lower:]')_$(uname -m)"
- PACKAGE_NEW="mindinsight-$MINDINSIGHT_VERSION-$PYTHON_VERSION_TAG-$PYTHON_ABI_TAG-$MACHINE_TAG.whl"
- mv "$PACKAGE_ORIG" "$PACKAGE_NEW"
- done
- }
-
- write_checksum() {
- cd "$PROJECT_BASEDIR/output" || exit
- PACKAGE_LIST=$(ls mindinsight-*.whl) || exit
- for PACKAGE_NAME in $PACKAGE_LIST; do
- sha256sum -b "$PACKAGE_NAME" >"$PACKAGE_NAME.sha256"
- done
- }
-
- build_wheel() {
-
- cd "$PROJECT_BASEDIR" || exit
-
- if [ $# -gt 0 ]; then
- if [ "$1" = "clean" ]; then
- echo "start cleaning mindinsight"
- clean_files
- echo "clean mindinsight done"
- else
- echo "unknown command: $1"
- fi
- exit
- fi
-
- echo "start building mindinsight"
- clean_files
-
- if command -v python3; then
- PYTHON=python3
- elif command -v python; then
- PYTHON=python
- else
- command python3
- fi
-
- if ! "$PYTHON" -c 'import sys; assert sys.version_info >= (3, 7)' &>/dev/null; then
- echo "Python 3.7 or higher is required. You are running $("$PYTHON" -V)"
- exit 1
- fi
-
- rm -rf output
-
- "$PYTHON" setup.py bdist_wheel
- if [ ! -x "dist" ]; then
- echo "Build failed"
- exit 1
- fi
-
- mv dist output
-
- rename_wheel
- write_checksum
- clean_files
-
- echo "Build success, output directory is: $PROJECT_BASEDIR/output"
- }
-
- clean_files() {
- cd "$PROJECT_BASEDIR" || exit
- rm -rf build/lib
- rm -rf build/bdist.*
- rm -rf mindinsight.egg-info
- }
-
- show_usage() {
- echo "Build mindinsight"
- echo ""
- echo "usage: build.sh [-h] [clean]"
- echo ""
- echo "options:"
- echo " -h show this help message and exit"
- echo " clean clean build files"
- }
-
- check_opts() {
- while getopts ':h' OPT; do
- case "$OPT" in
- h)
- show_usage
- exit 0
- ;;
- \?)
- show_usage
- exit 1
- ;;
- esac
- done
- }
-
- check_opts "$@"
-
- build_wheel "$@"
|