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