Automatically detect ENABLE_PYTHON, ENABLE_WHEEL default values (#12551)
* Add ENABLE_WHEEL=ON by default
* Adjust CMake options for GitHub checks
* Add ov_check_pip_package and ov_check_pip_packages CMake functions
* revert options
* skip empty lines
* formatting
* fix condition
* check for patchelf
* Add numpy dependency to condition
* Fix error:
raise VersionConflict(dist, req).with_context(dependent_req)
pkg_resources.ContextualVersionConflict: (gast 0.4.0 (c:\hostedtoolcache\windows\python\3.7.6\x64\lib\site-packages), Requirement.parse('gast==0.3.3; platform_system == "Windows"'), {'paddlepaddle'})
* set DENABLE_WHEEL=OFF for openvino-onnx docker
* Supported newer versions of shellcheck
* Don't use excluded sources
* Improved NCC process of clang search
* Fixes
* A lot of updates
* Fixes after 2 PRs merge
* Fixed build
* Fixes
* Relaxed cython version a bit
* Try non-pip cython as well
* Fixed MacOsX
* Disable pybind usage for MO tests as well
* Added descriptive warning messages
* Fixed compilation on Windows
* Support for cmake < 3.15
* FIxed Windows linkage
* Fixed review comments
Co-authored-by: Sergey Lyubimtsev <sergey.lyubimtsev@intel.com>
This commit is contained in:
@@ -129,6 +129,7 @@ jobs:
|
||||
python3 -m pip install --upgrade pip
|
||||
python3 -m pip install -r $(REPO_DIR)/src/bindings/python/src/compatibility/openvino/requirements.txt
|
||||
python3 -m pip install -r $(REPO_DIR)/src/bindings/python/wheel/requirements-dev.txt
|
||||
python3 -m pip install -r $(REPO_DIR)/src/bindings/python/requirements.txt
|
||||
# For running Python API tests
|
||||
python3 -m pip install -r $(REPO_DIR)/src/bindings/python/src/compatibility/openvino/requirements-dev.txt
|
||||
# For running Paddle frontend unit tests
|
||||
@@ -164,7 +165,6 @@ jobs:
|
||||
-DBUILD_SHARED_LIBS=$(CMAKE_BUILD_SHARED_LIBS)
|
||||
-DENABLE_ONEDNN_FOR_GPU=$(CMAKE_BUILD_SHARED_LIBS)
|
||||
-DPYTHON_EXECUTABLE=/usr/bin/python3.8
|
||||
-DENABLE_WHEEL=ON
|
||||
-DENABLE_TESTS=ON
|
||||
-DENABLE_OV_ONNX_FRONTEND=ON
|
||||
-DENABLE_FASTER_BUILD=ON
|
||||
|
||||
@@ -108,6 +108,7 @@ jobs:
|
||||
python3 -m pip install --upgrade pip
|
||||
python3 -m pip install -r $(REPO_DIR)/src/bindings/python/src/compatibility/openvino/requirements.txt
|
||||
python3 -m pip install -r $(REPO_DIR)/src/bindings/python/wheel/requirements-dev.txt
|
||||
python3 -m pip install -r $(REPO_DIR)/src/bindings/python/requirements.txt
|
||||
# For running Python API tests
|
||||
python3 -m pip install -r $(REPO_DIR)/src/bindings/python/src/compatibility/openvino/requirements-dev.txt
|
||||
# For running Paddle frontend unit tests
|
||||
@@ -142,7 +143,6 @@ jobs:
|
||||
-DENABLE_PYTHON=ON
|
||||
-DENABLE_OPENCV=OFF
|
||||
-DPYTHON_EXECUTABLE=/usr/bin/python3.8
|
||||
-DENABLE_WHEEL=ON
|
||||
-DENABLE_TESTS=ON
|
||||
-DENABLE_FASTER_BUILD=ON
|
||||
-DENABLE_STRICT_DEPENDENCIES=OFF
|
||||
|
||||
@@ -57,7 +57,6 @@ jobs:
|
||||
# -DCMAKE_BUILD_TYPE=$(BUILD_TYPE)
|
||||
# -DENABLE_PYTHON=ON
|
||||
# -DPYTHON_EXECUTABLE=/usr/bin/python3.8
|
||||
# -DENABLE_WHEEL=ON
|
||||
# -DENABLE_TESTS=ON
|
||||
# -DENABLE_OV_ONNX_FRONTEND=ON
|
||||
# -DENABLE_FASTER_BUILD=ON
|
||||
|
||||
@@ -112,6 +112,7 @@ jobs:
|
||||
rem For running Python API tests
|
||||
python -m pip install -r $(REPO_DIR)\src\bindings\python\src\compatibility\openvino\requirements-dev.txt
|
||||
python -m pip install -r $(REPO_DIR)\src\bindings\python\wheel\requirements-dev.txt
|
||||
python -m pip install -r $(REPO_DIR)\src\bindings\python\requirements.txt
|
||||
rem For running Paddle frontend unit tests
|
||||
python -m pip install -r $(REPO_DIR)\src\core\tests\frontend\paddle\requirements_dev.txt
|
||||
rem For running ONNX frontend unit tests
|
||||
@@ -136,7 +137,6 @@ jobs:
|
||||
- script: |
|
||||
set PATH=$(WORK_DIR)\ninja-win;%PATH%
|
||||
call "$(MSVS_VARS_PATH)" && $(CMAKE_CMD) -G "Ninja Multi-Config" ^
|
||||
-DENABLE_WHEEL=ON ^
|
||||
-DENABLE_ONEDNN_FOR_GPU=$(CMAKE_BUILD_SHARED_LIBS) ^
|
||||
-DBUILD_SHARED_LIBS=$(CMAKE_BUILD_SHARED_LIBS) ^
|
||||
-DENABLE_REQUIREMENTS_INSTALL=OFF ^
|
||||
@@ -180,7 +180,7 @@ jobs:
|
||||
-DCMAKE_CXX_COMPILER:PATH="$(MSVC_COMPILER_PATH)" ^
|
||||
-S $(REPO_DIR)\tests\samples_tests ^
|
||||
-B $(BUILD_SAMPLES_TESTS_DIR)
|
||||
displayName: 'CMake'
|
||||
displayName: 'CMake Samples Tests'
|
||||
|
||||
- script: $(CMAKE_CMD) -DCOMPONENT=tests -DCMAKE_INSTALL_PREFIX=$(INSTALL_DIR) -P $(BUILD_SAMPLES_TESTS_DIR)\cmake_install.cmake
|
||||
displayName: 'Install Samples Tests'
|
||||
|
||||
@@ -68,9 +68,6 @@ RUN cmake .. \
|
||||
-DENABLE_INTEL_GPU=OFF \
|
||||
-DENABLE_PROFILING_ITT=OFF \
|
||||
-DENABLE_SAMPLES=OFF \
|
||||
-DENABLE_PYTHON=ON \
|
||||
-DPYTHON_EXECUTABLE=/usr/bin/python3 \
|
||||
-DENABLE_OV_ONNX_FRONTEND=ON \
|
||||
-DENABLE_OV_PADDLE_FRONTEND=OFF \
|
||||
-DENABLE_OV_TF_FRONTEND=OFF \
|
||||
-DENABLE_OPENVINO_DEBUG=OFF \
|
||||
|
||||
4
.github/workflows/py_checks.yml
vendored
4
.github/workflows/py_checks.yml
vendored
@@ -12,7 +12,7 @@ on:
|
||||
- 'samples/python/**'
|
||||
jobs:
|
||||
linters:
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-18.04
|
||||
steps:
|
||||
- name: Code checkout
|
||||
uses: actions/checkout@v2
|
||||
@@ -21,7 +21,7 @@ jobs:
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v2
|
||||
with:
|
||||
python-version: '3.10'
|
||||
python-version: '3.6'
|
||||
- name: Install dependencies
|
||||
run: python -m pip install -r src/bindings/python/requirements_test.txt
|
||||
# samples code-style
|
||||
|
||||
@@ -275,46 +275,7 @@ function(ov_mark_target_as_cc)
|
||||
ie_mark_target_as_cc(${ARGN})
|
||||
endfunction()
|
||||
|
||||
# check python package
|
||||
|
||||
function(ie_check_pip_package full_name message_type)
|
||||
find_package(PythonInterp 3 REQUIRED)
|
||||
|
||||
get_filename_component(PYTHON_EXEC_DIR ${PYTHON_EXECUTABLE} DIRECTORY)
|
||||
|
||||
# extract version if any
|
||||
if(full_name MATCHES "^([a-z_]+)[~=<>!]*(.*)$")
|
||||
set(name ${CMAKE_MATCH_1})
|
||||
set(req_version ${CMAKE_MATCH_2})
|
||||
else()
|
||||
set(name ${full_name})
|
||||
endif()
|
||||
|
||||
execute_process(
|
||||
COMMAND ${PYTHON_EXECUTABLE} -m pip show ${name}
|
||||
WORKING_DIRECTORY ${PYTHON_EXEC_DIR}
|
||||
RESULT_VARIABLE PIP_EXIT_CODE
|
||||
OUTPUT_VARIABLE output)
|
||||
|
||||
if(NOT PIP_EXIT_CODE EQUAL 0)
|
||||
set(${name}_FOUND OFF PARENT_SCOPE)
|
||||
message(${message_type} "${name} package is not installed. Please use \"${PYTHON_EXECUTABLE} -m pip install ${full_name}\".")
|
||||
else()
|
||||
if(req_version)
|
||||
string(REGEX MATCH "Version: ([0-9]+\.?[0-9]*\.?[0-9]*)\n" installed_version "${output}")
|
||||
if(installed_version)
|
||||
set(installed_version "${CMAKE_MATCH_1}")
|
||||
endif()
|
||||
|
||||
if(NOT req_version STREQUAL installed_version)
|
||||
message(${message_type} "${name} package is installed, but may have different version (${installed_version}). "
|
||||
"Please use \"${PYTHON_EXECUTABLE} -m pip install ${full_name}\".")
|
||||
endif()
|
||||
else()
|
||||
set(${name}_FOUND ON PARENT_SCOPE)
|
||||
endif()
|
||||
endif()
|
||||
endfunction()
|
||||
include(python_requirements)
|
||||
|
||||
# Code style utils
|
||||
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
#
|
||||
|
||||
if(NOT COMMAND ie_check_pip_package)
|
||||
message(FATAL_ERROR "ncc_naming_style.cmake must be included after ie_check_pip_package")
|
||||
if(NOT COMMAND ov_check_pip_packages)
|
||||
message(FATAL_ERROR "Internal error: ncc_naming_style.cmake must be included after ov_check_pip_packages")
|
||||
endif()
|
||||
|
||||
set(ncc_style_dir "${IEDevScripts_DIR}/ncc_naming_style")
|
||||
@@ -72,12 +72,14 @@ if(NOT EXISTS ${ncc_script_py})
|
||||
endif()
|
||||
|
||||
if(ENABLE_NCC_STYLE)
|
||||
set(req_file "${ncc_style_dir}/requirements_dev.txt")
|
||||
file(STRINGS ${req_file} req_lines)
|
||||
|
||||
foreach(req IN LISTS req_lines)
|
||||
ie_check_pip_package(${req} STATUS)
|
||||
endforeach()
|
||||
ov_check_pip_packages(REQUIREMENTS_FILE "${ncc_style_dir}/requirements_dev.txt"
|
||||
RESULT_VAR python_clang_FOUND
|
||||
WARNING_MESSAGE "NCC style check will be unavailable"
|
||||
MESSAGE_MODE WARNING)
|
||||
if(NOT python_clang_FOUND)
|
||||
# Note: warnings is already thrown by `ov_check_pip_packages`
|
||||
set(ENABLE_NCC_STYLE OFF)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# create high-level target
|
||||
|
||||
112
cmake/developer_package/python_requirements.cmake
Normal file
112
cmake/developer_package/python_requirements.cmake
Normal file
@@ -0,0 +1,112 @@
|
||||
# Copyright (C) 2018-2022 Intel Corporation
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
#
|
||||
|
||||
#
|
||||
# ov_check_pip_package(REQUIREMENT <single requirement>
|
||||
# RESULT_VAR <result var name>
|
||||
# [WARNING_MESSAGE <message>]
|
||||
# [MESSAGE_MODE <WARNING | FATAL_ERROR | TRACE>])
|
||||
#
|
||||
function(ov_check_pip_package)
|
||||
find_package(PythonInterp 3 QUIET)
|
||||
|
||||
set(oneValueOptionalArgs
|
||||
MESSAGE_MODE # Set the type of message: { FATAL_ERROR | WARNING | ... }
|
||||
WARNING_MESSAGE # callback message
|
||||
)
|
||||
set(oneValueRequiredArgs
|
||||
REQUIREMENT # Requirement-specifier to check
|
||||
RESULT_VAR # Result varibale to set return code {ON | OFF}
|
||||
)
|
||||
set(multiValueArgs)
|
||||
|
||||
cmake_parse_arguments(ARG "" "${oneValueRequiredArgs};${oneValueOptionalArgs}" "${multiValueArgs}" ${ARGN})
|
||||
|
||||
foreach(argName ${oneValueRequiredArgs})
|
||||
if (NOT ARG_${argName})
|
||||
message(SEND_ERROR "Argument '${argName}' is required.")
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
if(NOT ARG_MESSAGE_MODE)
|
||||
set(ARG_MESSAGE_MODE WARNING)
|
||||
elseif(CMAKE_VERSION VERSION_LESS 3.15 AND ARG_MESSAGE_MODE STREQUAL "TRACE")
|
||||
set(ARG_MESSAGE_MODE WARNING)
|
||||
endif()
|
||||
|
||||
if(ARG_UNPARSED_ARGUMENTS)
|
||||
message(SEND_ERROR "Unexpected parameters have passed to the function: ${ARG_UNPARSED_ARGUMENTS}")
|
||||
endif()
|
||||
|
||||
# quote '3.x' with \'3.x\'
|
||||
string(REPLACE "'" "\\'" REQ "${ARG_REQUIREMENT}")
|
||||
|
||||
if(PYTHONINTERP_FOUND)
|
||||
execute_process(
|
||||
COMMAND ${PYTHON_EXECUTABLE} -c "import pkg_resources ; pkg_resources.require('${REQ}')"
|
||||
RESULT_VARIABLE EXIT_CODE
|
||||
OUTPUT_VARIABLE OUTPUT_TEXT
|
||||
ERROR_VARIABLE ERROR_TEXT)
|
||||
endif()
|
||||
|
||||
if(NOT EXIT_CODE EQUAL 0)
|
||||
set(${ARG_RESULT_VAR} OFF PARENT_SCOPE)
|
||||
message(${ARG_MESSAGE_MODE} "Python module '${REQ}' is missed, ${ARG_WARNING_MESSAGE}")
|
||||
else()
|
||||
set(${ARG_RESULT_VAR} ON PARENT_SCOPE)
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
#
|
||||
# ov_check_pip_packages(REQUIREMENTS_FILE <requirements.txt file>
|
||||
# RESULT_VAR <result var name>
|
||||
# [WARNING_MESSAGE <message>]
|
||||
# [MESSAGE_MODE <WARNING | FATAL_ERROR | TRACE>])
|
||||
#
|
||||
function(ov_check_pip_packages)
|
||||
find_package(PythonInterp 3 QUIET)
|
||||
|
||||
set(oneValueOptionalArgs
|
||||
MESSAGE_MODE # Set the type of message: { FATAL_ERROR | WARNING | ... }
|
||||
WARNING_MESSAGE # callback message
|
||||
)
|
||||
set(oneValueRequiredArgs
|
||||
REQUIREMENTS_FILE # File with requirement-specifiers to check
|
||||
RESULT_VAR # Result varibale to set return code {ON | OFF}
|
||||
)
|
||||
set(multiValueArgs)
|
||||
|
||||
cmake_parse_arguments(ARG "" "${oneValueOptionalArgs};${oneValueRequiredArgs}" "${multiValueArgs}" ${ARGN})
|
||||
|
||||
foreach(argName ${oneValueRequiredArgs})
|
||||
if (NOT ARG_${argName})
|
||||
message(SEND_ERROR "Argument '${argName}' is required.")
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
if(NOT ARG_MESSAGE_MODE)
|
||||
set(ARG_MESSAGE_MODE WARNING)
|
||||
elseif(CMAKE_VERSION VERSION_LESS 3.15 AND ARG_MESSAGE_MODE STREQUAL "TRACE")
|
||||
set(ARG_MESSAGE_MODE WARNING)
|
||||
endif()
|
||||
|
||||
if(ARG_UNPARSED_ARGUMENTS)
|
||||
message(SEND_ERROR "Unexpected parameters have passed to the function: ${ARG_UNPARSED_ARGUMENTS}")
|
||||
endif()
|
||||
|
||||
if(PYTHONINTERP_FOUND)
|
||||
execute_process(
|
||||
COMMAND ${PYTHON_EXECUTABLE} -c "import pkg_resources ; pkg_resources.require(open('${ARG_REQUIREMENTS_FILE}', mode='r'))"
|
||||
RESULT_VARIABLE EXIT_CODE
|
||||
OUTPUT_VARIABLE OUTPUT_TEXT
|
||||
ERROR_VARIABLE ERROR_TEXT)
|
||||
endif()
|
||||
|
||||
if(NOT EXIT_CODE EQUAL 0)
|
||||
set(${ARG_RESULT_VAR} OFF PARENT_SCOPE)
|
||||
message(${ARG_MESSAGE_MODE} "Python requirement file ${ARG_REQUIREMENTS_FILE} is not installed, ${ARG_WARNING_MESSAGE}")
|
||||
else()
|
||||
set(${ARG_RESULT_VAR} ON PARENT_SCOPE)
|
||||
endif()
|
||||
endfunction()
|
||||
@@ -43,18 +43,9 @@ Usage: -DSELECTIVE_BUILD=ON -DSELECTIVE_BUILD_STAT=/path/*.csv" OFF
|
||||
|
||||
ie_option(ENABLE_ERROR_HIGHLIGHT "Highlight errors and warnings during compile time" OFF)
|
||||
|
||||
# Try to find python3
|
||||
find_package(PythonLibs 3 QUIET)
|
||||
ie_dependent_option (ENABLE_PYTHON "enables ie python bridge build" OFF "PYTHONLIBS_FOUND" OFF)
|
||||
|
||||
find_package(PythonInterp 3 QUIET)
|
||||
ie_dependent_option (ENABLE_DOCS "Build docs using Doxygen" OFF "PYTHONINTERP_FOUND" OFF)
|
||||
|
||||
# this option should not be a part of InferenceEngineDeveloperPackage
|
||||
# since wheels can be built only together with main OV build
|
||||
cmake_dependent_option (ENABLE_WHEEL "Build wheel packages for PyPi" OFF
|
||||
"PYTHONINTERP_FOUND;CMAKE_SOURCE_DIR STREQUAL OpenVINO_SOURCE_DIR" OFF)
|
||||
|
||||
#
|
||||
# Inference Engine specific options
|
||||
#
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
# Copyright (C) 2018-2022 Intel Corporation
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
#
|
||||
|
||||
add_subdirectory(c)
|
||||
|
||||
if(ENABLE_PYTHON)
|
||||
add_subdirectory(python)
|
||||
endif()
|
||||
|
||||
add_subdirectory(python)
|
||||
|
||||
@@ -6,6 +6,10 @@ cmake_minimum_required (VERSION 3.13)
|
||||
|
||||
project(OpenVINOPython DESCRIPTION "OpenVINO Runtime Python bindings")
|
||||
|
||||
#
|
||||
# Packages & settings
|
||||
#
|
||||
|
||||
if(NOT DEFINED OpenVINO_SOURCE_DIR)
|
||||
find_package(InferenceEngineDeveloperPackage REQUIRED)
|
||||
endif()
|
||||
@@ -20,17 +24,102 @@ set(PYTHON_BINDINGS_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
|
||||
# TODO: Remove this condition as 76672 will be fixed
|
||||
if(CMAKE_CROSSCOMPILING AND DEFINED ENV{OE_CMAKE_TOOLCHAIN_FILE})
|
||||
set(DISABLE_PYOPENVINO ON)
|
||||
set(DISABLE_PYBIND11 ON CACHE BOOL "Whether pybind11 can be used in python bindings")
|
||||
endif()
|
||||
|
||||
if(DISABLE_PYOPENVINO)
|
||||
#
|
||||
# Options
|
||||
#
|
||||
|
||||
set(ov_python_req "${OpenVINOPython_SOURCE_DIR}/requirements.txt")
|
||||
set(ie_python_req "cython>=0.29.22")
|
||||
|
||||
function(ov_check_python_build_conditions)
|
||||
# Try to find python3
|
||||
find_package(PythonInterp 3 QUIET)
|
||||
if(PythonInterp_FOUND)
|
||||
# use libraries with the same version as python itself
|
||||
find_package(PythonLibs ${PYTHON_VERSION_STRING} EXACT QUIET)
|
||||
endif()
|
||||
|
||||
# pyopenvino requirements
|
||||
ov_check_pip_packages(REQUIREMENTS_FILE ${ov_python_req}
|
||||
RESULT_VAR ov_python_reqs_FOUND
|
||||
MESSAGE_MODE TRACE)
|
||||
# Check for Cython to build IE_API
|
||||
ov_check_pip_package(REQUIREMENT ${ie_python_req}
|
||||
RESULT_VAR ie_python_req_FOUND
|
||||
MESSAGE_MODE TRACE)
|
||||
|
||||
# ov_python_req are not mandatory for build
|
||||
set(ov_python_reqs_FOUND ON)
|
||||
|
||||
# cython can be installed as a debian package, so pip requirements can be unsatisfied
|
||||
# so, let's check to find cython anyway
|
||||
if(NOT ie_python_req_FOUND)
|
||||
find_package(Cython QUIET
|
||||
PATHS "${OpenVINOPython_SOURCE_DIR}/src/compatibility/openvino/cmake"
|
||||
NO_CMAKE_FIND_ROOT_PATH
|
||||
NO_DEFAULT_PATH)
|
||||
if(CYTHON_VERSION VERSION_GREATER_EQUAL 0.29)
|
||||
set(ie_python_req_FOUND ON)
|
||||
else()
|
||||
message(WARNING "Python module '${ie_python_req}' is missed, IE Python API 1.0 will not be built")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
set(PYTHONLIBS_FOUND ${PYTHONLIBS_FOUND} PARENT_SCOPE)
|
||||
set(ov_python_reqs_FOUND ${ov_python_reqs_FOUND} PARENT_SCOPE)
|
||||
set(ie_python_req_FOUND ${ie_python_req_FOUND} PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
ov_check_python_build_conditions()
|
||||
|
||||
ie_dependent_option(ENABLE_PYTHON "enables ie python bridge build" ON "PYTHONLIBS_FOUND;ov_python_reqs_FOUND" OFF)
|
||||
|
||||
if(NOT ENABLE_PYTHON)
|
||||
if(CMAKE_SOURCE_DIR STREQUAL OpenVINOPython_SOURCE_DIR)
|
||||
message(FATAL_ERROR "Python OpenVINO API requirements are not satisfied. Please, install ${ie_python_req} and ${ov_python_req}")
|
||||
else()
|
||||
return()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Check for wheel package
|
||||
ov_check_pip_packages(REQUIREMENTS_FILE "${OpenVINOPython_SOURCE_DIR}/wheel/requirements-dev.txt"
|
||||
RESULT_VAR wheel_req_FOUND
|
||||
MESSAGE_MODE WARNING)
|
||||
|
||||
set(WHEEL_CONDITION "PYTHONINTERP_FOUND;ENABLE_PYTHON;wheel_req_FOUND;CMAKE_SOURCE_DIR STREQUAL OpenVINO_SOURCE_DIR")
|
||||
|
||||
if(LINUX)
|
||||
find_host_program(patchelf_program
|
||||
NAMES patchelf
|
||||
DOC "Path to patchelf tool")
|
||||
if(NOT patchelf_program)
|
||||
message(WARNING "patchelf is not found. It is required to build OpenVINO Runtime wheel. Install via apt-get install patchelf")
|
||||
list(APPEND WHEEL_CONDITION patchelf_program)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# this option should not be a part of InferenceEngineDeveloperPackage
|
||||
# since wheels can be built only together with main OV build
|
||||
ie_dependent_option(ENABLE_WHEEL "Build wheel packages for PyPI" ON "${WHEEL_CONDITION}" OFF)
|
||||
|
||||
#
|
||||
# Build the code
|
||||
#
|
||||
|
||||
if(ie_python_req_FOUND)
|
||||
add_subdirectory(src/compatibility/openvino)
|
||||
else()
|
||||
message(WARNING "NOTE: Python API for OpenVINO 1.0 is disabled")
|
||||
endif()
|
||||
|
||||
if(DISABLE_PYBIND11)
|
||||
message(WARNING "NOTE: Python API for OpenVINO 2.0 is disabled")
|
||||
else()
|
||||
add_subdirectory(src/compatibility/openvino)
|
||||
|
||||
add_subdirectory(thirdparty/pybind11 EXCLUDE_FROM_ALL)
|
||||
|
||||
add_subdirectory(src/compatibility/pyngraph)
|
||||
add_subdirectory(src/pyopenvino)
|
||||
endif()
|
||||
@@ -39,7 +128,7 @@ if(ENABLE_WHEEL)
|
||||
add_subdirectory(wheel)
|
||||
endif()
|
||||
|
||||
if(ENABLE_OV_CORE_UNIT_TESTS AND NOT DISABLE_PYOPENVINO)
|
||||
if(ENABLE_OV_CORE_UNIT_TESTS AND NOT DISABLE_PYBIND11)
|
||||
add_subdirectory(tests/mock/mock_py_frontend)
|
||||
add_dependencies(pyopenvino openvino_mock_py_frontend)
|
||||
set_target_properties(openvino_mock_py_frontend PROPERTIES
|
||||
|
||||
@@ -175,8 +175,7 @@ class BuildCMakeExt(build_ext):
|
||||
self.spawn(["cmake", "-S" + root_dir, "-B" + self.build_temp,
|
||||
f"-DCMAKE_BUILD_TYPE={self.config}",
|
||||
f"-DInferenceEngineDeveloperPackage_DIR={ov_build_dir}",
|
||||
"-DENABLE_PYTHON=ON",
|
||||
"-DENABLE_OV_ONNX_FRONTEND=ON"] + ext_args)
|
||||
"-DENABLE_PYTHON=ON"] + ext_args)
|
||||
|
||||
self.announce("Building binaries", level=3)
|
||||
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
# Copyright (C) 2018-2022 Intel Corporation
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
#
|
||||
|
||||
|
||||
add_subdirectory(compatibility)
|
||||
add_subdirectory(pyopenvino)
|
||||
@@ -1,6 +0,0 @@
|
||||
# Copyright (C) 2018-2022 Intel Corporation
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
#
|
||||
|
||||
add_subdirectory(pyngraph)
|
||||
add_subdirectory(openvino)
|
||||
@@ -16,8 +16,8 @@ target_include_directories(${TARGET_FE_NAME}
|
||||
PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include
|
||||
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src)
|
||||
|
||||
set(DEPENDENCIES frontend_common::static)
|
||||
set(DEFINITIONS)
|
||||
set(DEPENDENCIES openvino::runtime)
|
||||
set(DEFINITIONS IMPLEMENT_OPENVINO_API)
|
||||
|
||||
if (ENABLE_OV_ONNX_FRONTEND)
|
||||
list(APPEND DEPENDENCIES openvino::frontend::onnx)
|
||||
|
||||
@@ -11,7 +11,7 @@ source_group("src" FILES ${PYBIND_FE_SRC})
|
||||
pybind11_add_module(${PYBIND_FE_NAME} MODULE ${PYBIND_FE_SRC})
|
||||
|
||||
set(DEPENDENCIES openvino_mock_py_frontend openvino::runtime)
|
||||
set(DEFINITIONS)
|
||||
set(DEFINITIONS IMPLEMENT_OPENVINO_API)
|
||||
|
||||
if (ENABLE_OV_ONNX_FRONTEND)
|
||||
list(APPEND DEPENDENCIES openvino::frontend::onnx)
|
||||
|
||||
@@ -2,7 +2,10 @@
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
#
|
||||
|
||||
find_package(PythonInterp 3 REQUIRED)
|
||||
#
|
||||
# Common vars used by setup.py
|
||||
#
|
||||
|
||||
set(PYTHON_VERSION python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR})
|
||||
set(WHEEL_VERSION "${OpenVINO_VERSION}" CACHE STRING "Version of this release" FORCE)
|
||||
set(WHEEL_BUILD "${OpenVINO_VERSION_BUILD}" CACHE STRING "Build number of this release" FORCE)
|
||||
@@ -14,16 +17,9 @@ if(WIN32)
|
||||
endif()
|
||||
set(PUGIXML_LIBS_DIR runtime/3rdparty/pugixml/lib)
|
||||
|
||||
if(LINUX)
|
||||
find_host_program(patchelf_program
|
||||
NAMES patchelf
|
||||
DOC "Path to patchelf tool")
|
||||
if(NOT patchelf_program)
|
||||
message(FATAL_ERROR "patchelf is not found, which is needed to build ie_wheel")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# create target for openvino.wheel
|
||||
#
|
||||
# Dependencies
|
||||
#
|
||||
|
||||
set(openvino_wheel_deps ie_api)
|
||||
foreach(_target ie_api constants _pyngraph pyopenvino ov_plugins py_ov_frontends)
|
||||
@@ -32,17 +28,21 @@ foreach(_target ie_api constants _pyngraph pyopenvino ov_plugins py_ov_frontends
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "import wheel.bdist_wheel ; print(f'{wheel.bdist_wheel.get_abi_tag()}')" OUTPUT_VARIABLE PYTHON_ABI)
|
||||
execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "import wheel.vendored.packaging.tags as tags ; print(f'{tags.interpreter_name()}{tags.interpreter_version()}')" OUTPUT_VARIABLE INTERPRETER)
|
||||
execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "import wheel.vendored.packaging.tags as tags ; print(f'{next(tags._platform_tags())}')" OUTPUT_VARIABLE WHEEL_PLATFORM)
|
||||
string(STRIP ${PYTHON_ABI} PYTHON_ABI)
|
||||
string(STRIP ${INTERPRETER} INTERPRETER)
|
||||
string(STRIP ${WHEEL_PLATFORM} WHEEL_PLATFORM)
|
||||
execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "import wheel.bdist_wheel ; print(f'{wheel.bdist_wheel.get_abi_tag()}')"
|
||||
OUTPUT_VARIABLE PYTHON_ABI OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "import wheel.vendored.packaging.tags as tags ; print(f'{tags.interpreter_name()}{tags.interpreter_version()}')"
|
||||
OUTPUT_VARIABLE INTERPRETER OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "import wheel.vendored.packaging.tags as tags ; print(f'{next(tags._platform_tags())}')"
|
||||
OUTPUT_VARIABLE WHEEL_PLATFORM OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
|
||||
set(openvino_wheel_name "openvino-${WHEEL_VERSION}-${WHEEL_BUILD}-${INTERPRETER}-${PYTHON_ABI}-${WHEEL_PLATFORM}.whl")
|
||||
set(openvino_wheels_output_dir "${CMAKE_BINARY_DIR}/wheels")
|
||||
set(openvino_wheel_path "${openvino_wheels_output_dir}/${openvino_wheel_name}")
|
||||
|
||||
#
|
||||
# create target for openvino.wheel
|
||||
#
|
||||
|
||||
add_custom_command(OUTPUT ${openvino_wheel_path}
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_BINARY_DIR}"
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory "${CMAKE_SOURCE_DIR}/licensing" "${CMAKE_BINARY_DIR}/licensing"
|
||||
|
||||
@@ -1,3 +1,2 @@
|
||||
setuptools>=53.0.0
|
||||
wheel>=0.36.2
|
||||
|
||||
|
||||
@@ -137,7 +137,7 @@ protected:
|
||||
descriptor::Output& get_output_descriptor(size_t position);
|
||||
|
||||
/// \brief Construct an uninitialized Node
|
||||
Node() = default;
|
||||
Node();
|
||||
/// \brief Copying a node
|
||||
Node(const Node&);
|
||||
/// \brief Assignment operator
|
||||
|
||||
@@ -25,6 +25,8 @@ using namespace std;
|
||||
|
||||
atomic<size_t> ov::Node::m_next_instance_id(0);
|
||||
|
||||
ov::Node::Node() = default;
|
||||
|
||||
ov::Node::Node(const Node& node)
|
||||
: m_control_dependents(node.m_control_dependents),
|
||||
m_control_dependencies(node.m_control_dependencies),
|
||||
|
||||
@@ -19,7 +19,10 @@ install(TARGETS ${TARGET_NAME}
|
||||
EXCLUDE_FROM_ALL)
|
||||
|
||||
# Test model generating
|
||||
ie_check_pip_package(paddlepaddle WARNING paddle)
|
||||
ov_check_pip_package(REQUIREMENT paddlepaddle
|
||||
MESSAGE_MODE WARNING
|
||||
WARNING_MESSAGE "PaddlePaddle frontend unit tests will be skipped"
|
||||
RESULT_VAR paddlepaddle_FOUND)
|
||||
|
||||
set(TEST_PADDLE_MODELS_DIRNAME test_model_zoo/paddle_test_models)
|
||||
target_compile_definitions(${TARGET_NAME} PRIVATE -D TEST_PADDLE_MODELS_DIRNAME=\"${TEST_PADDLE_MODELS_DIRNAME}/\")
|
||||
@@ -34,7 +37,7 @@ DownloadAndCheck(${PADDLEDET_OPS_URL} ${PADDLEDET_DIRNAME}/ops.py PADDLEDET_FATA
|
||||
# but models will not be generated and tests will fail
|
||||
# This is done this way for 'code style' and check cases - cmake shall pass, but CI machine doesn't need to have
|
||||
# 'paddlepaddle' installed to check code style
|
||||
if(paddlepaddle_FOUND AND ${PADDLEDET_RESULT} STREQUAL "ON")
|
||||
if(paddlepaddle_FOUND AND PADDLEDET_RESULT)
|
||||
set(TEST_PADDLE_MODELS ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${TEST_PADDLE_MODELS_DIRNAME}/)
|
||||
|
||||
if(WIN32)
|
||||
|
||||
@@ -19,7 +19,10 @@ install(TARGETS ${TARGET_NAME}
|
||||
EXCLUDE_FROM_ALL)
|
||||
|
||||
# Test model generating
|
||||
ie_check_pip_package(tensorflow WARNING)
|
||||
ov_check_pip_package(REQUIREMENT tensorflow
|
||||
MESSAGE_MODE WARNING
|
||||
WARNING_MESSAGE "TensorFlow frontend unit tests will be skipped"
|
||||
RESULT_VAR tensorflow_FOUND)
|
||||
|
||||
set(TEST_TENSORFLOW_MODELS_DIRNAME test_model_zoo/tensorflow_test_models)
|
||||
target_compile_definitions(${TARGET_NAME} PRIVATE -D TEST_TENSORFLOW_MODELS_DIRNAME=\"${TEST_TENSORFLOW_MODELS_DIRNAME}/\")
|
||||
|
||||
@@ -5,7 +5,7 @@ if(NOT ENABLE_PYTHON)
|
||||
message(WARNING "Please enable IE & nGraph Python API (pyopenvino) targets to enable Model Optimizer target")
|
||||
else()
|
||||
add_custom_target(model_optimizer DEPENDS ie_api openvino_ir_frontend pyopenvino)
|
||||
if(ENABLE_TESTS)
|
||||
if(ENABLE_TESTS AND NOT DISABLE_PYBIND11)
|
||||
add_subdirectory(unit_tests/mock_mo_frontend/mock_mo_frontend)
|
||||
add_dependencies(model_optimizer openvino_mock_mo_frontend)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user