#!/usr/bin/env bash
set -e
SYSTEM="${1:-}"
PLATFORM="${2:-}"
RUN_TEST="${3:-}"
CONFIG_FILE="../ci/config/config.ini"
VERSION=$(grep -m 1 "^version:" "${CONFIG_FILE}" | cut -d ':' -f 2 | tr -d '[:space:]')
export CC=/opt/rh/devtoolset-7/root/usr/bin/gcc
export CXX=/opt/rh/devtoolset-7/root/usr/bin/g++
export GCC_HOME=/opt/rh/devtoolset-7/root/usr
export PATH=/opt/rh/devtoolset-7/root/usr/bin:$PATH
export MSLITE_TOOL_HOME=/opt/buildtools/mindspore-lite-2.1.0
. /usr/local/Ascend/ascend-toolkit/set_env.sh
export LD_LIBRARY_PATH=/usr/local/Ascend/driver/lib64:/usr/local/Ascend/driver/lib64/common:/usr/local/Ascend/driver/lib64/driver:$LD_LIBRARY_PATH
if [[ -z "${SYSTEM}" || -z "${PLATFORM}" || -z "${VERSION}" || -z "${RUN_TEST}" ]]; then
echo "build_all receive invalid input"
echo "usage: $0 <system> <platform> <version> <test|notest>"
exit 1
fi
ROOT_DIR="$(cd "$(dirname "$0")" && pwd)"
echo "========================================"
echo " Vision SDK Build All"
echo " ROOT_DIR : ${ROOT_DIR}"
echo " SYSTEM : ${SYSTEM}"
echo " PLATFORM : ${PLATFORM}"
echo " VERSION : ${VERSION}"
echo " TEST : ${RUN_TEST}"
echo "========================================"
SETUP_PY="${ROOT_DIR}/mxBase/build/setup.py"
if [[ -f "${SETUP_PY}" ]]; then
echo "Updating VERSION in ${SETUP_PY} to ${VERSION}"
sed -i "s/^VERSION = .*$/VERSION = '${VERSION}'/g" "${SETUP_PY}"
fi
run_script() {
local script_path="$1"
shift
if [[ ! -f "${script_path}" ]]; then
echo "script not foud: ${script_path}"
exit 1
fi
echo "Executing: ${script_path} $*"
(cd "$(dirname "${script_path}")" && bash "$(basename "${script_path}")" "$@")
}
TAR_NAME="opensource-${SYSTEM}.tar.gz"
TAR_DEVICE_NAME="opensource-device-${SYSTEM}.tar.gz"
mkdir -p "${ROOT_DIR}/opensource/output/${SYSTEM}/opensource"
mkdir -p "${ROOT_DIR}/opensource/output/${SYSTEM}/opensource-device"
cp "${ROOT_DIR}/${TAR_NAME}" "${ROOT_DIR}/opensource/output/"
cp "${ROOT_DIR}/${TAR_DEVICE_NAME}" "${ROOT_DIR}/opensource/output/"
tar -xzf "${ROOT_DIR}/opensource/output/${TAR_NAME}" \
-C "${ROOT_DIR}/opensource/output/${SYSTEM}/opensource"
tar -xzf "${ROOT_DIR}/opensource/output/${TAR_DEVICE_NAME}" \
-C "${ROOT_DIR}/opensource/output/${SYSTEM}/opensource-device"
if [[ x"$RUN_TEST" == x"test" ]]; then
echo "Preparing Test Dependencies"
cp "/usr/include/boost" "${ROOT_DIR}/opensource/opensource/mockcpp/include" -rf
cd ${ROOT_DIR}/opensource/opensource/mockcpp
rm -rf build
mkdir build && cd build && cmake .. \
-DCMAKE_INSTALL_PREFIX=/usr/local/mockcpp
make -j$(nproc)
make install
cd ${ROOT_DIR}/opensource/opensource/googletest
rm -rf build
mkdir build && cd build && cmake .. \
-DBUILD_SHARED_LIBS=ON \
-DCMAKE_INSTALL_PREFIX=/usr/local
make -j$(nproc)
make install
fi
export LD_LIBRARY_PATH=${ROOT_DIR}/opensource/output/${SYSTEM}/opensource/lib:$LD_LIBRARY_PATH
run_script "${ROOT_DIR}/mxBase/build/build.sh" "${SYSTEM}" "${RUN_TEST}"
run_script "${ROOT_DIR}/mxTools/build/build.sh" "${SYSTEM}"
run_script "${ROOT_DIR}/mxStream/build/build.sh" "${SYSTEM}" "${RUN_TEST}"
run_script "${ROOT_DIR}/mxPlugins/build/build.sh" "${SYSTEM}" "${RUN_TEST}"
run_script "${ROOT_DIR}/mxBase/build/package.sh" "${SYSTEM}" "${PLATFORM}" "${VERSION}"
echo "==============Building VisionSDK successfully=============="
if [[ x"$RUN_TEST" == x"test" ]]; then
echo "==============Installing VisionSDK=============="
RUN_PACKAGE_PATH="${ROOT_DIR}/output/Software/mxVision/Ascend-mindxsdk-mxvision_${VERSION}_linux-${PLATFORM}.run"
if [[ ! -f "${RUN_PACKAGE_PATH}" ]]; then
echo "Run Package not foud: ${RUN_PACKAGE_PATH}"
exit 1
fi
chmod +x "${RUN_PACKAGE_PATH}"
"${RUN_PACKAGE_PATH}" --install --install-path=${ROOT_DIR}/output/Software/mxVision --quiet
sdk_path=${ROOT_DIR}/output/Software/mxVision/mxVision
export MX_SDK_HOME="$sdk_path"
export GST_PLUGIN_SCANNER="${MX_SDK_HOME}/opensource/libexec/gstreamer-1.0/gst-plugin-scanner"
export GST_PLUGIN_PATH="${MX_SDK_HOME}/opensource/lib/gstreamer-1.0":"${ROOT_DIR}/mxPlugins/output/arm-gcc4/mxPlugins/lib/"
export LD_LIBRARY_PATH="${MX_SDK_HOME}/operators/ascendc/vendors/customize/op_api/lib":"${MX_SDK_HOME}/opensource/lib":"${MX_SDK_HOME}/opensource/lib64":${LD_LIBRARY_PATH}
export PYTHONPATH=${MX_SDK_HOME}/python:$PYTHONPATH
export ASCEND_CUSTOM_OPP_PATH=${MX_SDK_HOME}/operators/ascendc/vendors/customize:$ASCEND_CUSTOM_OPP_PATH
export PATH=/usr1/local/bin:$PATH
export LD_LIBRARY_PATH=/opt/buildtools/mindspore-lite-2.1.0/mindspore-lite-2.1.0-linux-aarch64/runtime/lib/:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/home/buildtools/mindspore-lite-2.4.0-linux-aarch64/runtime/lib/:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/home/buildtools/mindspore-lite-2.4.0-linux-aarch64/tools/converter/lib/:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=${ROOT_DIR}/mxBase/output/arm-gcc4/mxBase/lib/modelpostprocessors:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=${ROOT_DIR}/mxBase/output/arm-gcc4/mxBase/lib/:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=${ROOT_DIR}/mxTools/output/arm-gcc4/mxTools/lib/:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=${ROOT_DIR}/mxStream/output/arm-gcc4/mxStream/lib/:$LD_LIBRARY_PATH
export PATH=/home/buildtools/lcov_2.0/bin:$PATH
echo "==============Installing VisionSDK Successfully=============="
run_script "${ROOT_DIR}/mxTools/build/build.sh" "${SYSTEM}" test
export LD_LIBRARY_PATH=${ROOT_DIR}/mxTools/output/arm-gcc4/mxTools/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=${ROOT_DIR}/mxStream/build_result/arm-gcc4/src/module/:$LD_LIBRARY_PATH
rm -rf ~/.cache/gstreamer-1.0
echo "==============Tesing mxBase=============="
ln -s /home/simon/models ${ROOT_DIR}/mxBase/test/models
chmod 640 ${ROOT_DIR}/mxBase/test/gtest/E2eInfer/GlobalInit/TestInit/*
chmod 640 ${ROOT_DIR}/mxBase/test/gtest/dist/E2eInfer/GlobalInit/TestInit/*
ls -l ${ROOT_DIR}/mxBase/test/gtest/dist/E2eInfer/GlobalInit/TestInit/
cp ${ROOT_DIR}/mxBase/test/sift_model.om ${ROOT_DIR}/output/Software/mxVision/mxVision/bin
TEST_DIR="${ROOT_DIR}/mxBase/build_result/${SYSTEM}"
cd ${TEST_DIR}
CTEST_PARALLEL_LEVEL=2 make test ARGS="-E ^DvppEncodeTest$" || TEST_RC=$?
cat ${ROOT_DIR}/mxBase/build_result/arm-gcc4/Testing/Temporary/LastTest.log
if [ -n "${TEST_RC:-}" ]; then
exit $TEST_RC
fi
make mxbase-lcov
ln -s ${ROOT_DIR}/mxBase/build_result/arm-gcc4/coverage-html ${ROOT_DIR}/mxBase/build/coverage
python3 ${ROOT_DIR}/mxBase/build/testcases_xml_report.py ${ROOT_DIR}/mxBase/test ${ROOT_DIR}/mxBase/build/coverage
echo "==============Tesing mxBase Successfully=============="
echo "==============Tesing mxPlugins=============="
bash ${ROOT_DIR}/output/Software/mxVision/mxVision/operators/opencvosd/generate_osd_om.sh
chmod 440 ${ROOT_DIR}/mxPlugins/output/arm-gcc4/mxPlugins/lib/*
chmod 440 ${ROOT_DIR}/mxPlugins/output/arm-gcc4/mxPlugins/lib/plugins/*
chmod 440 ${ROOT_DIR}/mxBase/output/arm-gcc4/mxBase/lib/modelpostprocessors/*
ln -s /home/simon/models ${ROOT_DIR}/mxPlugins/test/gtest/hlt/dist/
ln -s /home/simon/models ${ROOT_DIR}/mxPlugins/test/gtest/llt/dist/
ln -s ${ROOT_DIR}/mxPlugins/output/arm-gcc4/mxPlugins/lib/ ${ROOT_DIR}/mxPlugins/dist/
mkdir ${ROOT_DIR}/mxBase/dist
ln -s ${ROOT_DIR}/mxBase/output/arm-gcc4/mxBase/lib/ ${ROOT_DIR}/mxBase/dist/
cd ${ROOT_DIR}/mxPlugins/build_result/arm-gcc4/
CTEST_PARALLEL_LEVEL=4 make test ARGS="-E \"MxpiTextObjectPostProcessor_PSEnet_py|MxpiKeyPointPostProcessor_py|MxpiSemanticSegPostProcessor_py\"" || TEST_RC=$?
cat ${ROOT_DIR}/mxPlugins/build_result/arm-gcc4/Testing/Temporary/LastTest.log
if [ -n "${TEST_RC:-}" ]; then
exit $TEST_RC
fi
make mxplugins-lcov
ln -s ${ROOT_DIR}/mxPlugins/build_result/arm-gcc4/coverage-html ${ROOT_DIR}/mxPlugins/build/coverage
python3 ${ROOT_DIR}/mxPlugins/build/testcases_xml_report.py ${ROOT_DIR}/mxPlugins/test ${ROOT_DIR}/mxPlugins/build/coverage
echo "==============Tesing mxPlugins Successfully=============="
echo "==============Tesing mxStream=============="
unset TEST_RC
export GST_PLUGIN_SCANNER=${ROOT_DIR}/opensource/output/arm-gcc4/opensource/libexec/gstreamer-1.0/gst-plugin-scanner && export GST_PLUGIN_PATH=${ROOT_DIR}/opensource/output/arm-gcc4/opensource/lib/gstreamer-1.0:${GST_PLUGIN_PATH}
chmod 550 ${GST_PLUGIN_SCANNER}
chmod 440 ${ROOT_DIR}/opensource/output/arm-gcc4/opensource/lib/gstreamer-1.0/*
chmod 440 ${ROOT_DIR}/mxStream/test/dist/PerformanceStatisticsTest/*.pipeline
chmod 440 ${ROOT_DIR}/mxStream/test/dist/PerformanceStatisticsTest/config/*.conf
chmod 440 ${ROOT_DIR}/mxStream/test/dist/MxStreamManagerTest/*.pipeline
chmod 440 ${ROOT_DIR}/mxStream/test/dist/StreamTest/*.pipeline
cd ${ROOT_DIR}/mxStream/build_result/arm-gcc4/
make test || TEST_RC=$?
cat ${ROOT_DIR}/mxStream/build_result/arm-gcc4/Testing/Temporary/LastTest.log
if [ -n "${TEST_RC:-}" ]; then
exit $TEST_RC
fi
make mxstream-lcov
ln -s ${ROOT_DIR}/mxStream/build_result/arm-gcc4/coverage-html ${ROOT_DIR}/mxStream/build/coverage
python3 ${ROOT_DIR}/mxStream/build/testcases_xml_report.py ${ROOT_DIR}/mxStream/test ${ROOT_DIR}/mxStream/build/coverage
echo "==============Tesing mxStream Successfully=============="
echo "==============Tesing mxTools=============="
unset TEST_RC
cd ${ROOT_DIR}/mxTools/build_result/arm-gcc4/
make test || TEST_RC=$?
cat ${ROOT_DIR}/mxTools/build_result/arm-gcc4/Testing/Temporary/LastTest.log
if [ -n "${TEST_RC:-}" ]; then
exit $TEST_RC
fi
make mxtools-lcov
ln -s ${ROOT_DIR}/mxTools/build_result/arm-gcc4/coverage-html ${ROOT_DIR}/mxTools/build/coverage
python3 ${ROOT_DIR}/mxTools/build/testcases_xml_report.py ${ROOT_DIR}/mxTools/test ${ROOT_DIR}/mxTools/build/coverage
cat ${ROOT_DIR}/mxTools/build_result/arm-gcc4/Testing/Temporary/LastTest.log
echo "==============Tesing mxTools Successfully=============="
echo "======Testing Done!========"
fi
exit 0