You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

build.sh 4.0 kB

5 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. #!/bin/bash
  2. set -e
  3. PROJECTPATH=$(cd "$(dirname $0)"; pwd)
  4. export BUILD_PATH="${PROJECTPATH}/build/"
  5. # print usage message
  6. usage()
  7. {
  8. echo "Usage:"
  9. echo "bash build.sh [-d] [-v] [-c on|off] [-a on|off] [-j[n]] [-p]"
  10. echo ""
  11. echo "Options:"
  12. echo " -d Debug model"
  13. echo " -j[n] Set the threads when building (Default: -j8)"
  14. echo " -v Display build command. Run cpack with verbose output."
  15. echo " -c Enable code coverage, default off"
  16. echo " -a Enable ASAN, default off. Memory error detection tool."
  17. echo " -p MindSpore lib [mindspore_shared_lib] path."
  18. echo " -t Run testcases, default off."
  19. }
  20. # check value of input is 'on' or 'off'
  21. # usage: check_on_off arg_value arg_name
  22. check_on_off()
  23. {
  24. if [[ "X$1" != "Xon" && "X$1" != "Xoff" ]]; then
  25. echo "Invalid value $1 for option -$2"
  26. usage
  27. exit 1
  28. fi
  29. }
  30. # check and set options
  31. checkopts()
  32. {
  33. # Init default values of build options
  34. THREAD_NUM=8
  35. VERBOSE=""
  36. DEBUG_MODE="off"
  37. ENABLE_COVERAGE="off"
  38. ENABLE_ASAN="off"
  39. ENABLE_PYTHON="on"
  40. MS_WHL_LIB_PATH=""
  41. MS_BACKEND=""
  42. MS_VERSION=""
  43. RUN_TESTCASES="off"
  44. # Process the options
  45. while getopts 'dvc:j:a:p:e:V:t:' opt
  46. do
  47. LOW_OPTARG=$(echo ${OPTARG} | tr '[A-Z]' '[a-z]')
  48. case "${opt}" in
  49. e)
  50. echo "user opt: -e"${LOW_OPTARG}
  51. if [[ "$OPTARG" != "" ]]; then
  52. MS_BACKEND=$OPTARG
  53. fi
  54. ;;
  55. V)
  56. echo "user opt: -V"${LOW_OPTARG}
  57. if [[ "$OPTARG" != "" ]]; then
  58. MS_VERSION=$OPTARG
  59. fi
  60. ;;
  61. p)
  62. if [[ "$OPTARG" != "" ]]; then
  63. MS_WHL_LIB_PATH=$OPTARG
  64. else
  65. echo "Invalid value ${LOW_OPTARG} for option -e"
  66. usage
  67. exit 1
  68. fi
  69. ;;
  70. d)
  71. echo "user opt: -d"${LOW_OPTARG}
  72. DEBUG_MODE="on"
  73. ;;
  74. j)
  75. echo "user opt: -j"${LOW_OPTARG}
  76. THREAD_NUM=$OPTARG
  77. ;;
  78. v)
  79. echo "user opt: -v"${LOW_OPTARG}
  80. VERBOSE="VERBOSE=1"
  81. ;;
  82. c)
  83. check_on_off $OPTARG c
  84. ENABLE_COVERAGE="$OPTARG"
  85. ;;
  86. a)
  87. check_on_off $OPTARG a
  88. ENABLE_ASAN="$OPTARG"
  89. ;;
  90. t)
  91. echo "user opt: -t"${LOW_OPTARG}
  92. RUN_TESTCASES="$OPTARG"
  93. ;;
  94. *)
  95. echo "Unknown option ${opt}!"
  96. usage
  97. exit 1
  98. esac
  99. done
  100. }
  101. checkopts "$@"
  102. echo "---------------- MindSpore Serving: build start ----------------"
  103. mkdir -pv "${BUILD_PATH}/package/mindspore_serving/lib"
  104. if [[ "$MS_BACKEND" != "" ]]; then
  105. git submodule update --init third_party/mindspore
  106. fi
  107. # Create building path
  108. build_mindspore_serving()
  109. {
  110. echo "start build mindspore_serving project."
  111. mkdir -pv "${BUILD_PATH}/mindspore_serving"
  112. cd "${BUILD_PATH}/mindspore_serving"
  113. CMAKE_ARGS="-DDEBUG_MODE=$DEBUG_MODE -DBUILD_PATH=$BUILD_PATH"
  114. CMAKE_ARGS="${CMAKE_ARGS} -DENABLE_PYTHON=${ENABLE_PYTHON}"
  115. CMAKE_ARGS="${CMAKE_ARGS} -DTHREAD_NUM=${THREAD_NUM}"
  116. if [[ "X$ENABLE_COVERAGE" = "Xon" ]]; then
  117. CMAKE_ARGS="${CMAKE_ARGS} -DENABLE_COVERAGE=ON"
  118. fi
  119. if [[ "X$ENABLE_ASAN" = "Xon" ]]; then
  120. CMAKE_ARGS="${CMAKE_ARGS} -DENABLE_ASAN=ON"
  121. fi
  122. if [[ "$MS_BACKEND" != "" ]]; then
  123. CMAKE_ARGS="${CMAKE_ARGS} -DMS_BACKEND=${MS_BACKEND}"
  124. fi
  125. if [[ "$MS_WHL_LIB_PATH" != "" ]]; then
  126. CMAKE_ARGS="${CMAKE_ARGS} -DMS_WHL_LIB_PATH=${MS_WHL_LIB_PATH}"
  127. fi
  128. if [[ "$MS_VERSION" != "" ]]; then
  129. CMAKE_ARGS="${CMAKE_ARGS} -DMS_VERSION=${MS_VERSION}"
  130. fi
  131. if [[ "X$RUN_TESTCASES" = "Xon" ]]; then
  132. CMAKE_ARGS="${CMAKE_ARGS} -DENABLE_TESTCASES=ON"
  133. fi
  134. echo "${CMAKE_ARGS}"
  135. cmake ${CMAKE_ARGS} ../..
  136. if [[ -n "$VERBOSE" ]]; then
  137. CMAKE_VERBOSE="--verbose"
  138. fi
  139. if [[ "X$RUN_TESTCASES" = "Xon" ]]; then
  140. cmake --build . ${CMAKE_VERBOSE} -j$THREAD_NUM
  141. else
  142. cmake --build . --target package ${CMAKE_VERBOSE} -j$THREAD_NUM
  143. fi
  144. echo "success building mindspore_serving project!"
  145. }
  146. build_mindspore_serving
  147. echo "---------------- mindspore_serving: build end ----------------"

A lightweight and high-performance service module that helps MindSpore developers efficiently deploy online inference services in the production environment.