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