From cea3bc2bff82d8e197833ab0415aa935544fdee5 Mon Sep 17 00:00:00 2001 From: winston Date: Wed, 3 Jun 2026 19:27:27 +0200 Subject: [PATCH] openvino: split off lib and dev into dedicated outputs Co-authored-by: Martin Weinelt --- .../op/openvino/cmake-install-paths.patch | 156 ++++++++++++++++++ pkgs/by-name/op/openvino/package.nix | 16 +- 2 files changed, 169 insertions(+), 3 deletions(-) create mode 100644 pkgs/by-name/op/openvino/cmake-install-paths.patch diff --git a/pkgs/by-name/op/openvino/cmake-install-paths.patch b/pkgs/by-name/op/openvino/cmake-install-paths.patch new file mode 100644 index 000000000000..32eae6ca8def --- /dev/null +++ b/pkgs/by-name/op/openvino/cmake-install-paths.patch @@ -0,0 +1,156 @@ +--- a/cmake/developer_package/packaging/archive.cmake ++++ b/cmake/developer_package/packaging/archive.cmake +@@ -25,14 +25,15 @@ endif() + macro(ov_archive_cpack_set_dirs) + # common "archive" package locations + # TODO: move current variables to OpenVINO specific locations +- set(OV_CPACK_INCLUDEDIR runtime/include) +- set(OV_CPACK_OPENVINO_CMAKEDIR runtime/cmake) +- set(OV_CPACK_DOCDIR docs) +- set(OV_CPACK_LICENSESDIR licenses) +- set(OV_CPACK_SAMPLESDIR samples) ++ set(OV_CPACK_INCLUDEDIR "${CMAKE_INSTALL_INCLUDEDIR}") ++ set(OV_CPACK_OPENVINO_CMAKEDIR "${CMAKE_INSTALL_LIBDIR}/cmake/openvino") ++ set(OV_CPACK_DOCDIR "${CMAKE_INSTALL_DATAROOTDIR}/doc/openvino") ++ set(OV_CPACK_LICENSESDIR "${CMAKE_INSTALL_DATAROOTDIR}/licenses/openvino") ++ set(OV_CPACK_SAMPLESDIR "${CMAKE_INSTALL_DATAROOTDIR}/openvino/samples") + set(OV_CPACK_WHEELSDIR wheels) + set(OV_CPACK_DEVREQDIR tools) +- set(OV_CPACK_PYTHONDIR python) ++ find_package(Python QUIET REQUIRED COMPONENTS Interpreter Development) ++ set(OV_CPACK_PYTHONDIR "${CMAKE_INSTALL_LIBDIR}/python${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}/site-packages") + + if(USE_BUILD_TYPE_SUBFOLDER) + set(build_type ${CMAKE_BUILD_TYPE}) +@@ -49,11 +50,11 @@ macro(ov_archive_cpack_set_dirs) + set(OV_CPACK_RUNTIMEDIR runtime/lib/${ARCH_FOLDER}/${build_type}) + set(OV_CPACK_ARCHIVEDIR runtime/lib/${ARCH_FOLDER}/${build_type}) + else() +- set(OV_CPACK_LIBRARYDIR runtime/lib/${ARCH_FOLDER}) +- set(OV_CPACK_RUNTIMEDIR runtime/lib/${ARCH_FOLDER}) +- set(OV_CPACK_ARCHIVEDIR runtime/lib/${ARCH_FOLDER}) ++ set(OV_CPACK_LIBRARYDIR "${CMAKE_INSTALL_LIBDIR}") ++ set(OV_CPACK_RUNTIMEDIR "${CMAKE_INSTALL_LIBDIR}") ++ set(OV_CPACK_ARCHIVEDIR "${CMAKE_INSTALL_LIBDIR}") + endif() +- set(OV_CPACK_PLUGINSDIR ${OV_CPACK_RUNTIMEDIR}) ++ set(OV_CPACK_PLUGINSDIR "${OV_CPACK_RUNTIMEDIR}/openvino") + endmacro() + + ov_archive_cpack_set_dirs() +@@ -78,9 +79,9 @@ macro(ov_define_component_include_rules) + # licensing + unset(OV_CPACK_COMP_LICENSING_EXCLUDE_ALL) + # samples +- unset(OV_CPACK_COMP_CPP_SAMPLES_EXCLUDE_ALL) +- unset(OV_CPACK_COMP_C_SAMPLES_EXCLUDE_ALL) +- unset(OV_CPACK_COMP_PYTHON_SAMPLES_EXCLUDE_ALL) ++ set(OV_CPACK_COMP_CPP_SAMPLES_EXCLUDE_ALL EXCLUDE_FROM_ALL) ++ set(OV_CPACK_COMP_C_SAMPLES_EXCLUDE_ALL EXCLUDE_FROM_ALL) ++ set(OV_CPACK_COMP_PYTHON_SAMPLES_EXCLUDE_ALL EXCLUDE_FROM_ALL) + # python + unset(OV_CPACK_COMP_PYTHON_OPENVINO_EXCLUDE_ALL) + unset(OV_CPACK_COMP_BENCHMARK_APP_EXCLUDE_ALL) +@@ -92,8 +93,8 @@ macro(ov_define_component_include_rules) + # nodejs + set(OV_CPACK_COMP_NPM_EXCLUDE_ALL EXCLUDE_FROM_ALL) + # scripts +- unset(OV_CPACK_COMP_INSTALL_DEPENDENCIES_EXCLUDE_ALL) +- unset(OV_CPACK_COMP_SETUPVARS_EXCLUDE_ALL) ++ set(OV_CPACK_COMP_INSTALL_DEPENDENCIES_EXCLUDE_ALL EXCLUDE_FROM_ALL) ++ set(OV_CPACK_COMP_SETUPVARS_EXCLUDE_ALL EXCLUDE_FROM_ALL) + # pkgconfig + set(OV_CPACK_COMP_PKG_CONFIG_EXCLUDE_ALL ${OV_CPACK_COMP_CORE_DEV_EXCLUDE_ALL}) + # symbolic links +--- a/src/common/util/src/file_util.cpp ++++ b/src/common/util/src/file_util.cpp +@@ -215,7 +215,7 @@ std::filesystem::path ov::util::get_compiled_plugin_path(const std::filesystem:: + const auto ov_library_path = get_ov_lib_path(); + + // plugin can be found either: +- const std::filesystem::path sub_folder_path{std::string("openvino-") + OpenVINO_VERSION}; ++ const std::filesystem::path sub_folder_path{std::string("openvino")}; + + if (auto plugin_path = ov_library_path / sub_folder_path / plugin; ov::util::file_exists(plugin_path)) { + return plugin_path; +--- a/src/plugins/intel_npu/tools/compile_tool/CMakeLists.txt ++++ b/src/plugins/intel_npu/tools/compile_tool/CMakeLists.txt +@@ -31,7 +31,7 @@ ov_add_target(TYPE EXECUTABLE + npu_tools_utils) + + set_target_properties(${TARGET_NAME} PROPERTIES +- FOLDER intel_npu_tools ++ FOLDER intel_npu_tools OUTPUT_NAME ov-${TARGET_NAME} + CXX_STANDARD 17) + + # TODO: fix warnings and remove this exception +@@ -44,13 +44,13 @@ endif() + # + + install(TARGETS ${TARGET_NAME} +- RUNTIME DESTINATION "tools/${TARGET_NAME}" ++ RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" + COMPONENT ${NPU_INTERNAL_COMPONENT} + ${OV_CPACK_COMP_NPU_INTERNAL_EXCLUDE_ALL}) + + if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/README.md") + install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/README.md" +- DESTINATION "tools/${TARGET_NAME}" ++ DESTINATION "${OV_CPACK_DOCDIR}" RENAME README-${TARGET_NAME}.md + COMPONENT ${NPU_INTERNAL_COMPONENT} + ${OV_CPACK_COMP_NPU_INTERNAL_EXCLUDE_ALL}) + endif() +--- a/src/plugins/intel_npu/tools/protopipe/CMakeLists.txt ++++ b/src/plugins/intel_npu/tools/protopipe/CMakeLists.txt +@@ -67,7 +67,7 @@ ov_add_target(TYPE EXECUTABLE + LINK_LIBRARIES PRIVATE ${DEPENDENCIES}) + + set_target_properties(${TARGET_NAME} PROPERTIES +- FOLDER intel_npu_tools ++ FOLDER intel_npu_tools OUTPUT_NAME ov-${TARGET_NAME} + CXX_STANDARD 17) + + if (WIN32) +@@ -79,13 +79,13 @@ endif() + # + + install(TARGETS ${TARGET_NAME} +- RUNTIME DESTINATION "tools/${TARGET_NAME}" ++ RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" + COMPONENT ${NPU_INTERNAL_COMPONENT} + ${OV_CPACK_COMP_NPU_INTERNAL_EXCLUDE_ALL}) + + if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/README.md") + install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/README.md" +- DESTINATION "tools/${TARGET_NAME}" ++ DESTINATION "${OV_CPACK_DOCDIR}" RENAME README-${TARGET_NAME}.md + COMPONENT ${NPU_INTERNAL_COMPONENT} + ${OV_CPACK_COMP_NPU_INTERNAL_EXCLUDE_ALL}) + endif() +--- a/src/plugins/intel_npu/tools/single-image-test/CMakeLists.txt ++++ b/src/plugins/intel_npu/tools/single-image-test/CMakeLists.txt +@@ -52,7 +52,7 @@ ov_add_target(TYPE EXECUTABLE + ov_set_threading_interface_for(${TARGET_NAME}) + + set_target_properties(${TARGET_NAME} PROPERTIES +- FOLDER intel_npu_tools ++ FOLDER intel_npu_tools OUTPUT_NAME ov-${TARGET_NAME} + CXX_STANDARD 17) + + # TODO: fix warnings and remove this exception +@@ -65,13 +65,13 @@ endif() + # + + install(TARGETS ${TARGET_NAME} +- RUNTIME DESTINATION "tools/${TARGET_NAME}" ++ RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" + COMPONENT ${NPU_INTERNAL_COMPONENT} + ${OV_CPACK_COMP_NPU_INTERNAL_EXCLUDE_ALL}) + + if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/README.md") + install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/README.md" +- DESTINATION "tools/${TARGET_NAME}" ++ DESTINATION "${OV_CPACK_DOCDIR}" RENAME README-${TARGET_NAME}.md + COMPONENT ${NPU_INTERNAL_COMPONENT} + ${OV_CPACK_COMP_NPU_INTERNAL_EXCLUDE_ALL}) + endif() diff --git a/pkgs/by-name/op/openvino/package.nix b/pkgs/by-name/op/openvino/package.nix index 908cb813d653..2430b777786c 100644 --- a/pkgs/by-name/op/openvino/package.nix +++ b/pkgs/by-name/op/openvino/package.nix @@ -68,6 +68,8 @@ stdenv.mkDerivation (finalAttrs: { outputs = [ "out" + "dev" + "lib" "python" ]; @@ -87,6 +89,11 @@ stdenv.mkDerivation (finalAttrs: { cudaPackages.cuda_nvcc ]; + patches = [ + # https://aur.archlinux.org/cgit/aur.git/tree/010-openvino-change-install-paths.patch?h=openvino + ./cmake-install-paths.patch + ]; + dontUseSconsCheck = true; dontUseSconsBuild = true; dontUseSconsInstall = true; @@ -161,9 +168,8 @@ stdenv.mkDerivation (finalAttrs: { enableParallelBuilding = true; postInstall = '' - mkdir -p $python - mv $out/python/* $python/ - rmdir $out/python + mkdir -p $python/lib + mv $lib/lib/python* $python/lib/ ''; postFixup = '' @@ -171,6 +177,10 @@ stdenv.mkDerivation (finalAttrs: { find $out -type f \( -name '*.so' -or -name '*.so.*' \) | while read lib; do addDriverRunpath "$lib" done + + substituteInPlace $dev/lib/pkgconfig/openvino.pc \ + --replace-fail "include_prefix=\''${prefix}/" "include_prefix=" \ + --replace-fail "exec_prefix=\''${prefix}/" "exec_prefix=" ''; meta = {