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.

package_script.cmake 5.8 kB

6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
5 years ago
6 years ago
6 years ago
6 years ago
6 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. # find exec
  2. find_package(Git)
  3. if(NOT GIT_FOUND)
  4. message("No git found.")
  5. return()
  6. endif()
  7. set(GIT ${GIT_EXECUTABLE})
  8. # set path
  9. set(MS_ROOT_DIR ${CPACK_CMAKE_SOURCE_DIR})
  10. set(MS_PACK_ROOT_DIR ${CPACK_PACK_ROOT_DIR})
  11. set(PYTHON ${CPACK_PYTHON_EXE})
  12. set(PYTHON_VERSION ${CPACK_PYTHON_VERSION})
  13. if(NOT (PYTHON_VERSION MATCHES "3.9" OR PYTHON_VERSION MATCHES "3.8" OR PYTHON_VERSION MATCHES "3.7"))
  14. message(FATAL_ERROR "FIND PYTHON VERSION ${PYTHON_VERSION} BUT CAN NOT MATCH PYTHON VERSION 3.9 OR 3.8 OR 3.7")
  15. endif()
  16. # set package file name
  17. if(CMAKE_SYSTEM_NAME MATCHES "Linux")
  18. if(PYTHON_VERSION MATCHES "3.9")
  19. set(PY_TAGS "cp39-cp39")
  20. elseif(PYTHON_VERSION MATCHES "3.8")
  21. set(PY_TAGS "cp38-cp38")
  22. elseif(PYTHON_VERSION MATCHES "3.7")
  23. set(PY_TAGS "cp37-cp37m")
  24. else()
  25. message("Could not find 'Python 3.9' OR 'Python 3.8' or 'Python 3.7'")
  26. return()
  27. endif()
  28. string(TOLOWER linux_${CMAKE_HOST_SYSTEM_PROCESSOR} PLATFORM_TAG)
  29. elseif(CMAKE_SYSTEM_NAME MATCHES "Darwin")
  30. if(PYTHON_VERSION MATCHES "3.9")
  31. set(PY_TAGS "cp39-cp39")
  32. elseif(PYTHON_VERSION MATCHES "3.8")
  33. set(PY_TAGS "cp38-cp38")
  34. elseif(PYTHON_VERSION MATCHES "3.7")
  35. set(PY_TAGS "cp37-cp37m")
  36. else()
  37. message("Could not find 'Python 3.9' OR 'Python 3.8' or 'Python 3.7'")
  38. return()
  39. endif()
  40. string(REGEX MATCH "[0-9]+.[0-9]+" MACOSX_SDK_VERSION "${CPACK_OSX_DEPLOYMENT_TARGET}")
  41. string(REPLACE "." "_" MACOSX_PACKAGE_VERSION "${MACOSX_SDK_VERSION}")
  42. string(TOLOWER macosx_${MACOSX_PACKAGE_VERSION}_${CMAKE_HOST_SYSTEM_PROCESSOR} PLATFORM_TAG)
  43. elseif(CMAKE_SYSTEM_NAME MATCHES "Windows")
  44. if(PYTHON_VERSION MATCHES "3.9")
  45. set(PY_TAGS "cp39-cp39")
  46. elseif(PYTHON_VERSION MATCHES "3.8")
  47. set(PY_TAGS "cp38-cp38")
  48. elseif(PYTHON_VERSION MATCHES "3.7")
  49. set(PY_TAGS "cp37-cp37m")
  50. else()
  51. message("Could not find 'Python 3.9' OR 'Python 3.8' or 'Python 3.7'")
  52. return()
  53. endif()
  54. set(PLATFORM_TAG "win_amd64")
  55. else()
  56. message(FATAL_ERROR "other platform: ${CMAKE_SYSTEM_NAME}")
  57. endif()
  58. # get git commit id
  59. set(GIT_COMMIT_ID "")
  60. execute_process(
  61. COMMAND ${GIT} log --format='[sha1]:%h,[branch]:%d' --abbrev=8 -1
  62. OUTPUT_VARIABLE GIT_COMMIT_ID
  63. WORKING_DIRECTORY ${MS_ROOT_DIR}
  64. ERROR_QUIET)
  65. string(REPLACE " " "" GIT_COMMIT_ID ${GIT_COMMIT_ID})
  66. set(ENV{BACKEND_POLICY} ${CPACK_MS_BACKEND})
  67. set(ENV{BACKEND_TARGET} ${CPACK_MS_TARGET})
  68. set(ENV{MS_PACKAGE_NAME} ${CPACK_MS_PACKAGE_NAME})
  69. set(ENV{COMMIT_ID} ${GIT_COMMIT_ID})
  70. file(GLOB DEBUG_SYM
  71. ${MS_PACK_ROOT_DIR}/mindspore/*.so
  72. ${MS_PACK_ROOT_DIR}/mindspore/lib/*.so
  73. )
  74. file(GLOB DEBUG_STRIP_SYM
  75. ${MS_PACK_ROOT_DIR}/mindspore/*.so
  76. ${MS_PACK_ROOT_DIR}/mindspore/lib/*.so*
  77. )
  78. list(REMOVE_ITEM DEBUG_STRIP_SYM ${MS_PACK_ROOT_DIR}/mindspore/lib/libmindspore_aicpu_kernels.so)
  79. set(CMAKE_OBJCOPY $ENV{CROSS_COMPILE}objcopy)
  80. set(CMAKE_STRIP $ENV{CROSS_COMPILE}strip)
  81. if(CPACK_ENABLE_SYM_FILE)
  82. foreach(schema ${DEBUG_SYM})
  83. execute_process(
  84. COMMAND ${CMAKE_OBJCOPY} "--only-keep-debug" ${schema} ${schema}.sym
  85. WORKING_DIRECTORY ${MS_PACK_ROOT_DIR}
  86. )
  87. endforeach()
  88. endif()
  89. if("${CPACK_CMAKE_BUILD_TYPE}" STREQUAL "Release")
  90. if(CMAKE_SYSTEM_NAME MATCHES "Darwin")
  91. set(CMAKE_STRIP_ARGS "-x")
  92. else()
  93. set(CMAKE_STRIP_ARGS "")
  94. endif()
  95. foreach(schema ${DEBUG_STRIP_SYM})
  96. execute_process(
  97. COMMAND ${CMAKE_STRIP} ${CMAKE_STRIP_ARGS} ${schema}
  98. WORKING_DIRECTORY ${MS_PACK_ROOT_DIR}
  99. )
  100. endforeach()
  101. endif()
  102. file(GLOB DEBUG_SYM_FILE
  103. ${MS_PACK_ROOT_DIR}/mindspore/*.sym
  104. ${MS_PACK_ROOT_DIR}/mindspore/lib/*.sym
  105. )
  106. if(CPACK_ENABLE_SYM_FILE)
  107. file(MAKE_DIRECTORY ${MS_ROOT_DIR}/debug_info)
  108. file(COPY ${DEBUG_SYM_FILE} DESTINATION ${MS_ROOT_DIR}/debug_info/)
  109. file(REMOVE_RECURSE ${DEBUG_SYM_FILE})
  110. endif()
  111. execute_process(
  112. COMMAND ${PYTHON} ${MS_ROOT_DIR}/setup.py "bdist_wheel"
  113. WORKING_DIRECTORY ${MS_PACK_ROOT_DIR}
  114. )
  115. # finally
  116. set(PACKAGE_NAME ${CPACK_MS_PACKAGE_NAME})
  117. if(NOT CMAKE_SYSTEM_NAME MATCHES "Windows")
  118. string(REPLACE "-" "_" PACKAGE_NAME ${PACKAGE_NAME})
  119. execute_process(
  120. COMMAND chmod -R 700 ${MS_PACK_ROOT_DIR}/mindspore/
  121. COMMAND chmod -R 700 ${MS_PACK_ROOT_DIR}/${PACKAGE_NAME}.egg-info/
  122. )
  123. endif()
  124. file(GLOB WHL_FILE ${MS_PACK_ROOT_DIR}/dist/*.whl)
  125. get_filename_component(ORIGIN_FILE_NAME ${WHL_FILE} NAME)
  126. string(REPLACE "-" ";" ORIGIN_FILE_NAME ${ORIGIN_FILE_NAME})
  127. list(GET ORIGIN_FILE_NAME 1 VERSION)
  128. set(NEW_FILE_NAME ${PACKAGE_NAME}-${VERSION}-${PY_TAGS}-${PLATFORM_TAG}.whl)
  129. file(RENAME ${WHL_FILE} ${MS_PACK_ROOT_DIR}/${NEW_FILE_NAME})
  130. file(REMOVE_RECURSE ${MS_ROOT_DIR}/output)
  131. file(MAKE_DIRECTORY ${MS_ROOT_DIR}/output)
  132. file(COPY ${MS_PACK_ROOT_DIR}/${NEW_FILE_NAME} DESTINATION ${MS_ROOT_DIR}/output/)
  133. file(SHA256 ${MS_ROOT_DIR}/output/${NEW_FILE_NAME} SHA256_VAR)
  134. file(WRITE ${MS_ROOT_DIR}/output/${NEW_FILE_NAME}.sha256 ${SHA256_VAR} " " ${NEW_FILE_NAME})
  135. set(CMAKE_TAR $ENV{CROSS_COMPILE}tar)
  136. if(CPACK_ENABLE_SYM_FILE)
  137. file(MAKE_DIRECTORY ${MS_ROOT_DIR}/output/${PACKAGE_NAME}-${VERSION}-${PY_TAGS}-${PLATFORM_TAG})
  138. file(COPY ${MS_ROOT_DIR}/debug_info/ DESTINATION
  139. ${MS_ROOT_DIR}/output/${PACKAGE_NAME}-${VERSION}-${PY_TAGS}-${PLATFORM_TAG}/)
  140. execute_process(COMMAND
  141. ${CMAKE_COMMAND} -E ${CMAKE_TAR} cfv
  142. ${MS_ROOT_DIR}/output/${PACKAGE_NAME}-${VERSION}-${PY_TAGS}-${PLATFORM_TAG}.zip
  143. ${MS_ROOT_DIR}/output/${PACKAGE_NAME}-${VERSION}-${PY_TAGS}-${PLATFORM_TAG}/ --format=zip
  144. WORKING_DIRECTORY ${MS_ROOT_DIR})
  145. file(REMOVE_RECURSE ${MS_ROOT_DIR}/debug_info)
  146. file(REMOVE_RECURSE ${MS_ROOT_DIR}/output/${PACKAGE_NAME}-${VERSION}-${PY_TAGS}-${PLATFORM_TAG})
  147. endif()