• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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