From 079f1d521319e0d2443a185754902e47b77c5e8c Mon Sep 17 00:00:00 2001 From: Ilya Lavrenov Date: Thu, 28 Nov 2024 21:15:38 +0400 Subject: [PATCH] Fixed pyi file build when OpenVINO_DIR is externally defined (#1271) --- src/python/CMakeLists.txt | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/python/CMakeLists.txt b/src/python/CMakeLists.txt index 25d81277d6..75a2fd59a7 100644 --- a/src/python/CMakeLists.txt +++ b/src/python/CMakeLists.txt @@ -114,6 +114,21 @@ elseif(DEFINED PY_BUILD_CMAKE_PACKAGE_NAME AND NOT WIN32) # in case of wheel build, pybind11-stubgen is always available via pyproject.toml's build-system # except Win32 where we have issues with pybind11_stubgen executable which cannot import its own module set(pybind11_stubgen_AVAILABLE ON) + + # by default, wheel build is performed with build-isolation, which means that some variables like PYTHONPATH + # are not available. But if user called setupvars.sh, then OpenVINO dir is available, while PYTHONPATH - no. + # In this case, we will have mismatch on Linux when OpenVINO can point on build dir / install dir, while + # PYTHONPATH points out to locally installed tmp OpenVINO wheel (build against wheel). + # Ways to handle it: + # - setting PYTHONPATH to $ENV{INTEL_OPENVINO_DIR}/python if INTEL_OPENVINO_DIR is defined. It means we are building against + # OpenVINO archive or installation tree + # - if it's not defined, we cannot do any guesses and hence, disable pybind11-stubgen usage + if(DEFINED ENV{INTEL_OPENVINO_DIR}) + set(openvino_pythonpath "$ENV{INTEL_OPENVINO_DIR}/python") + elseif(LINUX AND NOT OpenVINO_DIR STREQUAL OpenVINO_DIR_PY) + # here we imply that OpenVINO_DIR_PY points to manylinux, while OpenVINO_DIR point to Ubuntu binaries + set(pybind11_stubgen_AVAILABLE OFF) + endif() endif() # but we also need to check whether OpenVINO is installed