Improved openvino runtime python wheel build (#7604)

* Proper dependencies for ie_wheel

* Used version information when building wheels
This commit is contained in:
Ilya Lavrenov 2021-09-23 10:41:57 +03:00 committed by GitHub
parent bd29f64570
commit 7938c18b7c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 39 additions and 31 deletions

View File

@ -14,7 +14,7 @@ set(CMAKE_MODULE_PATH "${IEDevScripts_DIR}")
function(set_ci_build_number) function(set_ci_build_number)
set(repo_root "${CMAKE_SOURCE_DIR}") set(repo_root "${CMAKE_SOURCE_DIR}")
include(version) include(version)
foreach(var CI_BUILD_NUMBER IE_VERSION foreach(var CI_BUILD_NUMBER IE_VERSION IE_VERSION_BUILD
IE_VERSION_MAJOR IE_VERSION_MINOR IE_VERSION_PATCH) IE_VERSION_MAJOR IE_VERSION_MINOR IE_VERSION_PATCH)
if(NOT DEFINED ${var}) if(NOT DEFINED ${var})
message(FATAL_ERROR "${var} version component is not defined") message(FATAL_ERROR "${var} version component is not defined")

View File

@ -27,10 +27,12 @@ function (commitHash VAR)
endfunction() endfunction()
macro(ie_parse_ci_build_number) macro(ie_parse_ci_build_number)
if(CI_BUILD_NUMBER MATCHES "^([0-9]+)\.([0-9]+)\.([0-9]+)\-.*") set(IE_VERSION_BUILD 000)
if(CI_BUILD_NUMBER MATCHES "^([0-9]+)\.([0-9]+)\.([0-9]+)\-([0-9]+)\-.*")
set(IE_VERSION_MAJOR ${CMAKE_MATCH_1}) set(IE_VERSION_MAJOR ${CMAKE_MATCH_1})
set(IE_VERSION_MINOR ${CMAKE_MATCH_2}) set(IE_VERSION_MINOR ${CMAKE_MATCH_2})
set(IE_VERSION_PATCH ${CMAKE_MATCH_3}) set(IE_VERSION_PATCH ${CMAKE_MATCH_3})
set(IE_VERSION_BUILD ${CMAKE_MATCH_4})
endif() endif()
if(NOT DEFINED repo_root) if(NOT DEFINED repo_root)

View File

@ -34,7 +34,9 @@ else()
endif() endif()
if(PYTHONLIBS_VERSION_STRING MATCHES "^([0-9]+)\.([0-9]+).*") if(PYTHONLIBS_VERSION_STRING MATCHES "^([0-9]+)\.([0-9]+).*")
set(PYTHON_VERSION python${CMAKE_MATCH_1}.${CMAKE_MATCH_2}) set(PYTHON_VERSION_MAJOR ${CMAKE_MATCH_1})
set(PYTHON_VERSION_MINOR ${CMAKE_MATCH_2})
set(PYTHON_VERSION python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR})
else() else()
message(FATAL_ERROR "Failed to extract python major.minor from ${PYTHONLIBS_VERSION_STRING}") message(FATAL_ERROR "Failed to extract python major.minor from ${PYTHONLIBS_VERSION_STRING}")
endif() endif()

View File

@ -1,5 +1,6 @@
WHEEL_PACKAGE_NAME=@WHEEL_PACKAGE_NAME@ WHEEL_PACKAGE_NAME=@WHEEL_PACKAGE_NAME@
WHEEL_VERSION=@WHEEL_VERSION@ WHEEL_VERSION=@WHEEL_VERSION@
WHEEL_BUILD=@WHEEL_BUILD@
WHEEL_LICENCE_TYPE=@WHEEL_LICENCE_TYPE@ WHEEL_LICENCE_TYPE=@WHEEL_LICENCE_TYPE@
WHEEL_AUTHOR=@WHEEL_AUTHOR@ WHEEL_AUTHOR=@WHEEL_AUTHOR@
WHEEL_AUTHOR_EMAIL=@WHEEL_AUTHOR_EMAIL@ WHEEL_AUTHOR_EMAIL=@WHEEL_AUTHOR_EMAIL@

View File

@ -9,14 +9,15 @@ set(WHEEL_AUTHOR_EMAIL "openvino_pushbot@intel.com" CACHE STRING "Email address
set(WHEEL_DESC "Inference Engine Python* API" CACHE STRING "Short, summary description of the package") set(WHEEL_DESC "Inference Engine Python* API" CACHE STRING "Short, summary description of the package")
set(WHEEL_URL "https://docs.openvinotoolkit.org/latest/index.html" CACHE STRING "Home page url") set(WHEEL_URL "https://docs.openvinotoolkit.org/latest/index.html" CACHE STRING "Home page url")
set(WHEEL_DOWNLOAD_URL "https://github.com/openvinotoolkit/openvino/tags" CACHE STRING "Download page url") set(WHEEL_DOWNLOAD_URL "https://github.com/openvinotoolkit/openvino/tags" CACHE STRING "Download page url")
set(WHEEL_VERSION "0.0.0" CACHE STRING "Version of this release") set(WHEEL_VERSION "${IE_VERSION}" CACHE STRING "Version of this release" FORCE)
set(WHEEL_BUILD "000" CACHE STRING "Build number of this release") set(WHEEL_BUILD "${IE_VERSION_BUILD}" CACHE STRING "Build number of this release" FORCE)
set(WHEEL_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE" CACHE STRING "Wheel license file") set(WHEEL_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE" CACHE STRING "Wheel license file")
set(WHEEL_REQUIREMENTS "${CMAKE_CURRENT_SOURCE_DIR}/meta/openvino.requirements.txt" CACHE STRING "Wheel requirements.txt file") set(WHEEL_REQUIREMENTS "${CMAKE_CURRENT_SOURCE_DIR}/meta/openvino.requirements.txt" CACHE STRING "Wheel requirements.txt file")
set(WHEEL_OVERVIEW "${CMAKE_CURRENT_SOURCE_DIR}/meta/pypi_overview.md" CACHE STRING "Detailed description") set(WHEEL_OVERVIEW "${CMAKE_CURRENT_SOURCE_DIR}/meta/pypi_overview.md" CACHE STRING "Detailed description")
set(SETUP_PY "${CMAKE_CURRENT_SOURCE_DIR}/setup.py") set(SETUP_PY "${CMAKE_CURRENT_SOURCE_DIR}/setup.py")
set(SETUP_ENV "${CMAKE_CURRENT_SOURCE_DIR}/.env.in") set(SETUP_ENV "${CMAKE_CURRENT_SOURCE_DIR}/.env.in")
set(SETUP_ENV_OUT "${CMAKE_CURRENT_SOURCE_DIR}/.env")
set(PY_PACKAGES_DIR ${PYTHON_BRIDGE_CPACK_PATH}/${PYTHON_VERSION}) set(PY_PACKAGES_DIR ${PYTHON_BRIDGE_CPACK_PATH}/${PYTHON_VERSION})
set(TBB_LIBS_DIR runtime/3rdparty/tbb/lib) set(TBB_LIBS_DIR runtime/3rdparty/tbb/lib)
@ -32,15 +33,7 @@ else()
message(FATAL_ERROR "This platform is not supported") message(FATAL_ERROR "This platform is not supported")
endif() endif()
configure_file(${SETUP_ENV} "${CMAKE_CURRENT_SOURCE_DIR}/.env" @ONLY) configure_file(${SETUP_ENV} ${SETUP_ENV_OUT} @ONLY)
add_custom_target(ie_wheel ALL DEPENDS ie_api offline_transformations_api)
foreach(_target ie_libraries ie_plugins _pyngraph)
if(TARGET ${_target})
add_dependencies(ie_wheel ${_target})
endif()
endforeach()
if(LINUX) if(LINUX)
find_host_program(patchelf_program find_host_program(patchelf_program
@ -51,21 +44,30 @@ if(LINUX)
endif() endif()
endif() endif()
add_custom_command(TARGET ie_wheel # create target for openvino.wheel
PRE_BUILD
set(openvino_wheel_deps ie_api offline_transformations_api)
foreach(_target ie_libraries ie_plugins _pyngraph)
if(TARGET ${_target})
list(APPEND openvino_wheel_deps ${_target})
endif()
endforeach()
set(cp_python "cp${PYTHON_VERSION_MAJOR}${PYTHON_VERSION_MINOR}")
set(openvino_wheel_name "openvino-${WHEEL_VERSION}-${WHEEL_BUILD}-${cp_python}-${cp_python}-${WHEEL_PLATFORM}.whl")
set(openvino_wheels_output_dir "${CMAKE_BINARY_DIR}/wheels")
set(openvino_wheel_path "${openvino_wheels_output_dir}/${openvino_wheel_name}")
add_custom_command(OUTPUT ${openvino_wheel_path}
COMMAND ${CMAKE_COMMAND} -E remove_directory "${CMAKE_CURRENT_BINARY_DIR}/site-packages" COMMAND ${CMAKE_COMMAND} -E remove_directory "${CMAKE_CURRENT_BINARY_DIR}/site-packages"
COMMAND ${PYTHON_EXECUTABLE} ${SETUP_PY} clean bdist_wheel COMMAND ${PYTHON_EXECUTABLE} ${SETUP_PY} clean bdist_wheel
--dist-dir ${CMAKE_BINARY_DIR}/wheels --dist-dir ${openvino_wheels_output_dir}
--build=${WHEEL_BUILD} --build=${WHEEL_BUILD}
--plat-name=${WHEEL_PLATFORM} --plat-name=${WHEEL_PLATFORM}
POST_BUILD # COMMAND ${CMAKE_COMMAND} -E remove ${SETUP_ENV_OUT}
COMMAND ${CMAKE_COMMAND} -E remove_directory "${CMAKE_CURRENT_SOURCE_DIR}/.env" DEPENDS ${openvino_wheel_deps} ${SETUP_ENV_OUT}
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
COMMENT "Building Python wheel ${WHEEL_PACKAGE_NAME}" COMMENT "Building Python wheel ${openvino_wheel_name}"
VERBATIM VERBATIM)
)
set_property(TARGET ie_wheel add_custom_target(ie_wheel DEPENDS ${openvino_wheel_path})
APPEND
PROPERTY ADDITIONAL_CLEAN_FILES "${CMAKE_BINARY_DIR}/wheels"
)

View File

@ -446,6 +446,7 @@ ext_modules = find_prebuilt_extensions(get_dir_list(PY_INSTALL_CFG)) if pkg_name
setup( setup(
version=config('WHEEL_VERSION', '0.0.0'), version=config('WHEEL_VERSION', '0.0.0'),
build=config('WHEEL_BUILD', '000'),
author_email=config('WHEEL_AUTHOR_EMAIL', 'openvino_pushbot@intel.com'), author_email=config('WHEEL_AUTHOR_EMAIL', 'openvino_pushbot@intel.com'),
name=pkg_name, name=pkg_name,
license=config('WHEEL_LICENCE_TYPE', 'OSI Approved :: Apache Software License'), license=config('WHEEL_LICENCE_TYPE', 'OSI Approved :: Apache Software License'),