|
|
#!/usr/bin/env bash |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DIST_DIR="dist" |
|
|
BUILD_DIR="build" |
|
|
EGG_DIR="paddledet.egg-info" |
|
|
|
|
|
CFG_DIR="configs" |
|
|
TEST_DIR=".tests" |
|
|
DATA_DIR="dataset" |
|
|
|
|
|
|
|
|
RED='\033[0;31m' |
|
|
BLUE='\033[0;34m' |
|
|
GREEN='\033[1;32m' |
|
|
BOLD='\033[1m' |
|
|
NONE='\033[0m' |
|
|
|
|
|
function python_version_check() { |
|
|
PY_MAIN_VERSION=`python -V 2>&1 | awk '{print $2}' | awk -F '.' '{print $1}'` |
|
|
PY_SUB_VERSION=`python -V 2>&1 | awk '{print $2}' | awk -F '.' '{print $2}'` |
|
|
echo -e "find python version ${PY_MAIN_VERSION}.${PY_SUB_VERSION}" |
|
|
if [ $PY_MAIN_VERSION -ne "3" -o $PY_SUB_VERSION -lt "5" ]; then |
|
|
echo -e "${RED}FAIL:${NONE} please use Python >= 3.5 !" |
|
|
exit 1 |
|
|
fi |
|
|
} |
|
|
|
|
|
function init() { |
|
|
echo -e "${BLUE}[init]${NONE} removing building directory..." |
|
|
rm -rf $DIST_DIR $BUILD_DIR $EGG_DIR $TEST_DIR |
|
|
if [ `pip list | grep paddledet | wc -l` -gt 0 ]; then |
|
|
echo -e "${BLUE}[init]${NONE} uninstalling paddledet..." |
|
|
pip uninstall -y paddledet |
|
|
fi |
|
|
echo -e "${BLUE}[init]${NONE} ${GREEN}init success\n" |
|
|
} |
|
|
|
|
|
function build_and_install() { |
|
|
echo -e "${BLUE}[build]${NONE} building paddledet wheel..." |
|
|
python setup.py sdist bdist_wheel |
|
|
if [ $? -ne 0 ]; then |
|
|
echo -e "${RED}[FAIL]${NONE} build paddledet wheel failed !" |
|
|
exit 1 |
|
|
fi |
|
|
echo -e "${BLUE}[build]${NONE} ${GREEN}build paddldet wheel success\n" |
|
|
|
|
|
echo -e "${BLUE}[install]${NONE} installing paddledet..." |
|
|
cd $DIST_DIR |
|
|
find . -name "paddledet*.whl" | xargs pip install |
|
|
if [ $? -ne 0 ]; then |
|
|
cd .. |
|
|
echo -e "${RED}[FAIL]${NONE} install paddledet wheel failed !" |
|
|
exit 1 |
|
|
fi |
|
|
echo -e "${BLUE}[install]${NONE} ${GREEN}paddledet install success\n" |
|
|
cd .. |
|
|
} |
|
|
|
|
|
function unittest() { |
|
|
if [ -d $TEST_DIR ]; then |
|
|
rm -rf $TEST_DIR |
|
|
fi; |
|
|
|
|
|
echo -e "${BLUE}[unittest]${NONE} run unittests..." |
|
|
|
|
|
|
|
|
|
|
|
mkdir $TEST_DIR |
|
|
cp -r $CFG_DIR $TEST_DIR |
|
|
cp -r $DATA_DIR $TEST_DIR |
|
|
cd $TEST_DIR |
|
|
|
|
|
if [ $? != 0 ]; then |
|
|
exit 1 |
|
|
fi |
|
|
find "../ppdet" -wholename '*tests/test_*' -type f -print0 | \ |
|
|
xargs -0 -I{} -n1 -t bash -c 'python -u -s {}' |
|
|
|
|
|
|
|
|
cd .. |
|
|
rm -rf $TEST_DIR |
|
|
echo -e "${BLUE}[unittest]${NONE} ${GREEN}unittests success\n${NONE}" |
|
|
} |
|
|
|
|
|
function cleanup() { |
|
|
if [ -d $TEST_DIR ]; then |
|
|
rm -rf $TEST_DIR |
|
|
fi |
|
|
|
|
|
rm -rf $BUILD_DIR $EGG_DIR |
|
|
pip uninstall -y paddledet |
|
|
} |
|
|
|
|
|
function abort() { |
|
|
echo -e "${RED}[FAIL]${NONE} build wheel and unittest failed ! |
|
|
please check your code" 1>&2 |
|
|
|
|
|
cur_dir=`basename "$pwd"` |
|
|
if [ cur_dir==$TEST_DIR -o cur_dir==$DIST_DIR ]; then |
|
|
cd .. |
|
|
fi |
|
|
|
|
|
rm -rf $BUILD_DIR $EGG_DIR $DIST_DIR $TEST_DIR |
|
|
pip uninstall -y paddledet |
|
|
} |
|
|
|
|
|
python_version_check |
|
|
|
|
|
trap 'abort' 0 |
|
|
set -e |
|
|
|
|
|
init |
|
|
build_and_install |
|
|
unittest |
|
|
cleanup |
|
|
|
|
|
|
|
|
PADDLE_VERSION=`python -c "import paddle; print(paddle.version.full_version)"` |
|
|
PADDLE_COMMIT=`python -c "import paddle; print(paddle.version.commit)"` |
|
|
PADDLE_COMMIT=`git rev-parse --short $PADDLE_COMMIT` |
|
|
|
|
|
|
|
|
PPDET_BRANCH=`git rev-parse --abbrev-ref HEAD` |
|
|
PPDET_COMMIT=`git rev-parse --short HEAD` |
|
|
|
|
|
|
|
|
PYTHON_VERSION=`python -c "import platform; print(platform.python_version())"` |
|
|
|
|
|
echo -e "\n${GREEN}paddledet wheel compiled and checked success !${NONE} |
|
|
${BLUE}Python version:${NONE} $PYTHON_VERSION |
|
|
${BLUE}Paddle version:${NONE} $PADDLE_VERSION ($PADDLE_COMMIT) |
|
|
${BLUE}PaddleDetection branch:${NONE} $PPDET_BRANCH ($PPDET_COMMIT)\n" |
|
|
|
|
|
echo -e "${GREEN}wheel saved under${NONE} ${RED}${BOLD}./dist" |
|
|
|
|
|
trap : 0 |
|
|
|