#!/bin/bash
set +x
CURRENT_PATH=$(dirname $(readlink -f $0))
SCRIPT_TOP_DIR=$(cd ${CURRENT_PATH}; pwd)
CI_TOP_DIR=$(cd ${SCRIPT_TOP_DIR}/..; pwd)
CT_OM_ROOT=$(cd ${CURRENT_PATH}/../ct_om; pwd)
CT_REQUIREMENTS_PATH=${CT_OM_ROOT}/requirements.txt
SERVICE_NAME=cantian
MODULE_NAME=ct_om
TEMP_PATH="${CI_TOP_DIR}/temp/cantian/package/temp"
CT_OM_COMPONENT_PATH="/opt/cantian/ct_om"
CT_OM_SITE_PACKAGES_PATH="${TEMP_PATH}/venv/lib64/python*/site-packages"
function init_temp_dir()
{
echo "Begin to initialize temporary dir. [Line:${LINENO}, File:${SCRIPT_NAME}]"
if [ -d ${TEMP_PATH} ]; then
rm -rf ${TEMP_PATH}
fi
mkdir -p "${TEMP_PATH}" && mkdir -p "${CT_OM_COMPONENT_PATH}"
return 0
}
function create_virtual_env()
{
echo "Begin to create virtualenv. [Line:${LINENO}, File:${SCRIPT_NAME}]"
if [ -d ${TEMP_PATH} ]; then
cd ${TEMP_PATH}
python3 -m venv --copies venv
cd venv
rm -rf lib64
ln -s lib lib64
source bin/activate
else
echo "${CT_OM_COMPONENT_PATH} is not exist. [Line:${LINENO}, File:${SCRIPT_NAME}]"
return 1
fi
return 0
}
function setup_python_3rd()
{
export LDFLAGS="-Wl,-z,relro,-z,now,-z,noexecstack -s"
export CFLAGS="-fstack-protector-all -fPIC -D_FORTIFY_SOURCE=2 -O2 -ftrapv -fstack-check"
TRUSTED_HOST_THU=pypi.tuna.tsinghua.edu.cn
TRUSTED_PYPI="https://${TRUSTED_HOST_HW}/simple"
pip install --trusted-host "${TRUSTED_HOST_THU}" -i "${TRUSTED_PYPI}" -r "${CT_REQUIREMENTS_PATH}"
if [ $? -ne 0 ]; then
echo "Failed to setup_python_3rd. [Line:${LINENO}, File:${SCRIPT_NAME}]"
return 1
fi
python -m pip uninstall -y pip
echo "Succeed in setting up python 3rd package. [Line:${LINENO}, File:${SCRIPT_NAME}]"
return 0
}
function remove_useless_packages_file()
{
if [ -d ${CT_OM_SITE_PACKAGES_PATH} ]; then
cd ${CT_OM_SITE_PACKAGES_PATH}
rm -rf pip/_vendor/certifi/cacert.pem
rm -rf werkzeug/debug
else
echo "${CT_OM_SITE_PACKAGES_PATH} is not exist. [Line:${LINENO}, File:${SCRIPT_NAME}]"
fi
return 0
}
function copy_ct_om_src()
{
if [ -d ${CT_OM_ROOT} ]; then
cp -rf ${CT_OM_ROOT}/. ${CT_OM_COMPONENT_PATH}
if [ $? -ne 0 ]; then
echo "Failed to copy ct_om source code. [Line:${LINENO}, File:${SCRIPT_NAME}]"
return 1
fi
return 0
else
echo "${CT_OM_ROOT} is not exist. [Line:${LINENO}, File:${SCRIPT_NAME}]"
return 1
fi
}
function copy_site_package()
{
if [ -d ${TEMP_PATH}/venv ]; then
cp -rf ${TEMP_PATH}/venv/lib64/python*/site-packages ${CT_OM_COMPONENT_PATH}/
if [ $? -ne 0 ]; then
echo "Failed to copy ct_om source code. [Line:${LINENO}, File:${SCRIPT_NAME}]"
return 1
fi
return 0
else
echo "${TEMP_PATH}/venv is not exist. [Line:${LINENO}, File:${SCRIPT_NAME}]"
return 1
fi
}
function exit_virtual_env()
{
echo "Begin to deactivate virtualenv. [Line:${LINENO}, File:${SCRIPT_NAME}]"
if [ -d ${CT_OM_COMPONENT_PATH} ]; then
deactivate
cd ${CT_OM_COMPONENT_PATH}
cd venv/bin
rm -f python
rm -f python3
rm -rf ${CT_OM_COMPONENT_PATH}/venv/lib/python3.7/site-packages/distutils/tests
rm -rf ${CT_OM_COMPONENT_PATH}/venv/lib/python3.7/site-packages/werkzeug/debug
> ${CT_OM_COMPONENT_PATH}/venv/lib/python3.7/site-packages/certifi/cacert.pem
find ${CT_OM_COMPONENT_PATH}/venv -name '*.pyc' -delete
else
echo "${CT_OM_COMPONENT_PATH} is not exist. [Line:${LINENO}, File:${SCRIPT_NAME}]"
return 1
fi
return 0
}
function main()
{
echo "Begin to build ct_om. [Line:${LINENO}, File:${SCRIPT_NAME}]"
init_temp_dir
copy_ct_om_src
if [ $? -ne 0 ]; then
echo "Failed to copy ct_om src. [Line:${LINENO}, File:${SCRIPT_NAME}]"
return 1
fi
echo "Succeed in building ct_om. [Line:${LINENO}, File:${SCRIPT_NAME}]"
return 0
}
main
exit $?