about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/libraries/openvino
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2023-06-16 06:56:35 +0000
committerAlyssa Ross <hi@alyssa.is>2023-06-16 06:56:35 +0000
commit99fcaeccb89621dd492203ce1f2d551c06f228ed (patch)
tree41cb730ae07383004789779b0f6e11cb3f4642a3 /nixpkgs/pkgs/development/libraries/openvino
parent59c5f5ac8682acc13bb22bc29c7cf02f7d75f01f (diff)
parent75a5ebf473cd60148ba9aec0d219f72e5cf52519 (diff)
downloadnixlib-99fcaeccb89621dd492203ce1f2d551c06f228ed.tar
nixlib-99fcaeccb89621dd492203ce1f2d551c06f228ed.tar.gz
nixlib-99fcaeccb89621dd492203ce1f2d551c06f228ed.tar.bz2
nixlib-99fcaeccb89621dd492203ce1f2d551c06f228ed.tar.lz
nixlib-99fcaeccb89621dd492203ce1f2d551c06f228ed.tar.xz
nixlib-99fcaeccb89621dd492203ce1f2d551c06f228ed.tar.zst
nixlib-99fcaeccb89621dd492203ce1f2d551c06f228ed.zip
Merge branch 'nixos-unstable' of https://github.com/NixOS/nixpkgs
Conflicts:
	nixpkgs/nixos/modules/config/console.nix
	nixpkgs/nixos/modules/services/mail/mailman.nix
	nixpkgs/nixos/modules/services/mail/public-inbox.nix
	nixpkgs/nixos/modules/services/mail/rss2email.nix
	nixpkgs/nixos/modules/services/networking/ssh/sshd.nix
	nixpkgs/pkgs/applications/networking/instant-messengers/dino/default.nix
	nixpkgs/pkgs/applications/networking/irc/weechat/default.nix
	nixpkgs/pkgs/applications/window-managers/sway/default.nix
	nixpkgs/pkgs/build-support/go/module.nix
	nixpkgs/pkgs/build-support/rust/build-rust-package/default.nix
	nixpkgs/pkgs/development/interpreters/python/default.nix
	nixpkgs/pkgs/development/node-packages/overrides.nix
	nixpkgs/pkgs/development/tools/b4/default.nix
	nixpkgs/pkgs/servers/dict/dictd-db.nix
	nixpkgs/pkgs/servers/mail/public-inbox/default.nix
	nixpkgs/pkgs/tools/security/pinentry/default.nix
	nixpkgs/pkgs/tools/text/unoconv/default.nix
	nixpkgs/pkgs/top-level/all-packages.nix
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/openvino')
-rw-r--r--nixpkgs/pkgs/development/libraries/openvino/cmake.patch31
-rw-r--r--nixpkgs/pkgs/development/libraries/openvino/default.nix202
2 files changed, 159 insertions, 74 deletions
diff --git a/nixpkgs/pkgs/development/libraries/openvino/cmake.patch b/nixpkgs/pkgs/development/libraries/openvino/cmake.patch
new file mode 100644
index 000000000000..0918baba918f
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/openvino/cmake.patch
@@ -0,0 +1,31 @@
+diff --git a/cmake/developer_package/linux_name.cmake b/cmake/developer_package/linux_name.cmake
+index 3e8c775770..2d5e00fb8b 100644
+--- a/cmake/developer_package/linux_name.cmake
++++ b/cmake/developer_package/linux_name.cmake
+@@ -6,25 +6,7 @@ include(target_flags)
+ 
+ if(LINUX)
+     function(get_linux_name res_var)
+-        if(EXISTS "/etc/lsb-release")
+-            # linux version detection using cat /etc/lsb-release
+-            file(READ "/etc/lsb-release" release_data)
+-            set(name_regex "DISTRIB_ID=([^ \n]*)\n")
+-            set(version_regex "DISTRIB_RELEASE=([0-9]+(\\.[0-9]+)?)")
+-        else()
+-            execute_process(COMMAND find -L /etc/ -maxdepth 1 -type f -name *-release -exec cat {} \;
+-                            OUTPUT_VARIABLE release_data
+-                            RESULT_VARIABLE result)
+-            string(REPLACE "Red Hat" "CentOS" release_data "${release_data}")
+-            set(name_regex "NAME=\"([^ \"\n]*).*\"\n")
+-            set(version_regex "VERSION=\"([0-9]+(\\.[0-9]+)?)[^\n]*\"")
+-        endif()
+-
+-        string(REGEX MATCH ${name_regex} name ${release_data})
+-        set(os_name ${CMAKE_MATCH_1})
+-
+-        string(REGEX MATCH ${version_regex} version ${release_data})
+-        set(os_name "${os_name} ${CMAKE_MATCH_1}")
++        set(os_name "NixOS @version@")
+ 
+         if(os_name)
+             set(${res_var} ${os_name} PARENT_SCOPE)
diff --git a/nixpkgs/pkgs/development/libraries/openvino/default.nix b/nixpkgs/pkgs/development/libraries/openvino/default.nix
index 0b870bf9e403..68e3de522769 100644
--- a/nixpkgs/pkgs/development/libraries/openvino/default.nix
+++ b/nixpkgs/pkgs/development/libraries/openvino/default.nix
@@ -1,115 +1,169 @@
 { lib
-, addOpenGLRunpath
-, autoPatchelfHook
 , stdenv
 , fetchFromGitHub
 , fetchpatch
+, fetchurl
+, substituteAll
+
+# build
+, addOpenGLRunpath
+, autoPatchelfHook
 , cmake
 , git
+, libarchive
+, pkg-config
+, python
+, shellcheck
+
+# runtime
+, libusb1
+, libxml2
+, opencv
 , protobuf
+, pugixml
 , tbb
-, opencv
-, unzip
-, shellcheck
-, srcOnly
-, python
-, enablePython ? false
 }:
 
 let
+  # See FIRMWARE_PACKAGE_VERSION in src/plugins/intel_myriad/myriad_dependencies.cmake
+  myriad_firmware_version = "20221129_35";
+  myriad_usb_firmware = fetchurl {
+    url = "https://storage.openvinotoolkit.org/dependencies/myriad/firmware_usb-ma2x8x_${myriad_firmware_version}.zip";
+    hash = "sha256-HKNWbSlMjSafOgrS9WmenbsmeaJKRVssw0NhIwPYZ70=";
+  };
+  myriad_pcie_firmware = fetchurl {
+    url = "https://storage.openvinotoolkit.org/dependencies/myriad/firmware_pcie-ma2x8x_${myriad_firmware_version}.zip";
+    hash = "sha256-VmfrAoKQ++ySIgAxWQul+Hd0p7Y4sTF44Nz4RHpO6Mo=";
+  };
 
-  onnx_src = srcOnly {
-    name = "onnx-patched";
-    src = fetchFromGitHub {
-      owner = "onnx";
-      repo = "onnx";
-      rev = "v1.8.1";
-      sha256 = "+1zNnZ4lAyVYRptfk0PV7koIX9FqcfD1Ah33qj/G2rA=";
-    };
-    patches = [
-      # Fix build with protobuf 3.18+
-      # Remove with onnx 1.9 release
-      (fetchpatch {
-        url = "https://github.com/onnx/onnx/commit/d3bc82770474761571f950347560d62a35d519d7.patch";
-        sha256 = "0vdsrklkzhdjaj8wdsl4icn93q3961g8dx35zvff0nhpr08wjb7y";
-      })
-    ];
+  # See GNA_VERSION in cmake/dependencies.cmake
+  gna_version = "03.00.00.1910";
+  gna = fetchurl {
+    url = "https://storage.openvinotoolkit.org/dependencies/gna/gna_${gna_version}.zip";
+    hash = "sha256-iU3bwK40WfBFE7hTsMq8MokN1Oo3IooCK2oyEBvbt/g=";
   };
 
+  tbbbind_version = "2_5";
+  tbbbind = fetchurl {
+    url = "https://download.01.org/opencv/master/openvinotoolkit/thirdparty/linux/tbbbind_${tbbbind_version}_static_lin_v2.tgz";
+    hash = "sha256-hl54lMWEAiM8rw0bKIBW4OarK/fJ0AydxgVhxIS8kPQ=";
+  };
 in
+
 stdenv.mkDerivation rec {
   pname = "openvino";
-  version = "2021.2";
+  version = "2022.3.0";
 
   src = fetchFromGitHub {
     owner = "openvinotoolkit";
     repo = "openvino";
-    rev = version;
-    sha256 = "pv4WTfY1U5GbA9Yj07UOLQifvVH3oDfWptxxYW5IwVQ=";
+    rev = "refs/tags/${version}";
     fetchSubmodules = true;
+    hash = "sha256-Ie58zTNatiYZZQJ8kJh/+HlSetQjhAtf2Us83z1jGv4=";
   };
 
+  outputs = [
+    "out"
+    "python"
+  ];
+
+  nativeBuildInputs = [
+    addOpenGLRunpath
+    autoPatchelfHook
+    cmake
+    git
+    libarchive
+    pkg-config
+    (python.withPackages (ps: with ps; [
+      cython
+      pybind11
+      setuptools
+    ]))
+    shellcheck
+  ];
+
+  patches = [
+    (substituteAll {
+      src = ./cmake.patch;
+      inherit (lib) version;
+    })
+  ];
+
+  postPatch = ''
+    mkdir -p temp/vpu/firmware/{pcie,usb}-ma2x8x
+    pushd temp/vpu/firmware
+    bsdtar -xf ${myriad_pcie_firmware} -C pcie-ma2x8x
+    echo "${myriad_pcie_firmware.url}" > pcie-ma2x8x/ie_dependency.info
+    bsdtar -xf ${myriad_usb_firmware} -C usb-ma2x8x
+    echo "${myriad_usb_firmware.url}" > usb-ma2x8x/ie_dependency.info
+    popd
+
+    mkdir -p temp/gna_${gna_version}
+    pushd temp/
+    bsdtar -xf ${gna}
+    autoPatchelf gna_${gna_version}
+    echo "${gna.url}" > gna_${gna_version}/ie_dependency.info
+    popd
+
+    mkdir -p temp/tbbbind_${tbbbind_version}
+    pushd temp/tbbbind_${tbbbind_version}
+    bsdtar -xf ${tbbbind}
+    echo "${tbbbind.url}" > ie_dependency.info
+    popd
+  '';
+
   dontUseCmakeBuildDir = true;
 
   cmakeFlags = [
-    "-DNGRAPH_USE_SYSTEM_PROTOBUF:BOOL=ON"
-    "-DFETCHCONTENT_FULLY_DISCONNECTED:BOOL=ON"
-    "-DFETCHCONTENT_SOURCE_DIR_EXT_ONNX:STRING=${onnx_src}"
-    "-DENABLE_VPU:BOOL=OFF"
-    "-DTBB_DIR:STRING=${tbb}"
+    "-DCMAKE_PREFIX_PATH:PATH=${placeholder "out"}"
+    "-DCMAKE_MODULE_PATH:PATH=${placeholder "out"}/lib/cmake"
+    "-DENABLE_LTO:BOOL=ON"
+    # protobuf
+    "-DENABLE_SYSTEM_PROTOBUF:BOOL=OFF"
+    "-DProtobuf_LIBRARIES=${protobuf}/lib/libprotobuf${stdenv.hostPlatform.extensions.sharedLibrary}"
+    # tbb
+    "-DENABLE_SYSTEM_TBB:BOOL=ON"
+    # opencv
     "-DENABLE_OPENCV:BOOL=ON"
-    "-DOPENCV:STRING=${opencv}"
-    "-DENABLE_GNA:BOOL=OFF"
-    "-DENABLE_SPEECH_DEMO:BOOL=OFF"
+    "-DOpenCV_DIR=${opencv}/lib/cmake/opencv4/"
+    # pugixml
+    "-DENABLE_SYSTEM_PUGIXML:BOOL=ON"
+    # onednn
+    "-DENABLE_ONEDNN_FOR_GPU:BOOL=OFF"
+    # intel gna
+    "-DENABLE_INTEL_GNA:BOOL=ON"
+    # python
+    "-DENABLE_PYTHON:BOOL=ON"
+    # tests
+    "-DENABLE_CPPLINT:BOOL=OFF"
     "-DBUILD_TESTING:BOOL=OFF"
-    "-DENABLE_CLDNN_TESTS:BOOL=OFF"
-    "-DNGRAPH_INTERPRETER_ENABLE:BOOL=ON"
-    "-DNGRAPH_TEST_UTIL_ENABLE:BOOL=OFF"
-    "-DNGRAPH_UNIT_TEST_ENABLE:BOOL=OFF"
     "-DENABLE_SAMPLES:BOOL=OFF"
-    "-DENABLE_CPPLINT:BOOL=OFF"
-  ] ++ lib.optional enablePython [
-    "-DENABLE_PYTHON:BOOL=ON"
   ];
 
-  preConfigure = ''
-    # To make install openvino inside /lib instead of /python
-    substituteInPlace inference-engine/ie_bridges/python/CMakeLists.txt \
-      --replace 'DESTINATION python/''${PYTHON_VERSION}/openvino' 'DESTINATION lib/''${PYTHON_VERSION}/site-packages/openvino' \
-      --replace 'DESTINATION python/''${PYTHON_VERSION}' 'DESTINATION lib/''${PYTHON_VERSION}/site-packages/openvino'
-    substituteInPlace inference-engine/ie_bridges/python/src/openvino/inference_engine/CMakeLists.txt \
-      --replace 'python/''${PYTHON_VERSION}/openvino/inference_engine' 'lib/''${PYTHON_VERSION}/site-packages/openvino/inference_engine'
-
-    # Used to download OpenCV based on Linux Distro and make it use system OpenCV
-    substituteInPlace inference-engine/cmake/dependencies.cmake \
-        --replace 'include(linux_name)' ' ' \
-        --replace 'if (ENABLE_OPENCV)' 'if (ENABLE_OPENCV AND NOT DEFINED OPENCV)'
-
-    cmakeDir=$PWD
-    mkdir ../build
-    cd ../build
-  '';
-
-  autoPatchelfIgnoreMissingDeps = [ "libngraph_backend.so" ];
+  env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.isAarch64 "-Wno-narrowing";
 
-  nativeBuildInputs = [
-    cmake
-    autoPatchelfHook
-    addOpenGLRunpath
-    unzip
+  autoPatchelfIgnoreMissingDeps = [
+    "libngraph_backend.so"
   ];
 
   buildInputs = [
-    git
-    protobuf
+    libusb1
+    libxml2
     opencv
-    python
+    protobuf
+    pugixml
     tbb
-    shellcheck
-  ] ++ lib.optional enablePython (with python.pkgs; [
-    cython
-    pybind11
-  ]);
+  ];
+
+  enableParallelBuilding = true;
+
+  postInstall = ''
+    pushd $out/python/python${lib.versions.majorMinor python.version}
+    mkdir -p $python
+    mv ./* $python/
+    popd
+    rm -r $out/python
+  '';
 
   postFixup = ''
     # Link to OpenCL