about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/libraries/openvino
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/openvino')
-rw-r--r--nixpkgs/pkgs/development/libraries/openvino/default.nix136
1 files changed, 136 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/openvino/default.nix b/nixpkgs/pkgs/development/libraries/openvino/default.nix
new file mode 100644
index 000000000000..0b870bf9e403
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/openvino/default.nix
@@ -0,0 +1,136 @@
+{ lib
+, addOpenGLRunpath
+, autoPatchelfHook
+, stdenv
+, fetchFromGitHub
+, fetchpatch
+, cmake
+, git
+, protobuf
+, tbb
+, opencv
+, unzip
+, shellcheck
+, srcOnly
+, python
+, enablePython ? false
+}:
+
+let
+
+  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";
+      })
+    ];
+  };
+
+in
+stdenv.mkDerivation rec {
+  pname = "openvino";
+  version = "2021.2";
+
+  src = fetchFromGitHub {
+    owner = "openvinotoolkit";
+    repo = "openvino";
+    rev = version;
+    sha256 = "pv4WTfY1U5GbA9Yj07UOLQifvVH3oDfWptxxYW5IwVQ=";
+    fetchSubmodules = true;
+  };
+
+  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}"
+    "-DENABLE_OPENCV:BOOL=ON"
+    "-DOPENCV:STRING=${opencv}"
+    "-DENABLE_GNA:BOOL=OFF"
+    "-DENABLE_SPEECH_DEMO: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" ];
+
+  nativeBuildInputs = [
+    cmake
+    autoPatchelfHook
+    addOpenGLRunpath
+    unzip
+  ];
+
+  buildInputs = [
+    git
+    protobuf
+    opencv
+    python
+    tbb
+    shellcheck
+  ] ++ lib.optional enablePython (with python.pkgs; [
+    cython
+    pybind11
+  ]);
+
+  postFixup = ''
+    # Link to OpenCL
+    find $out -type f \( -name '*.so' -or -name '*.so.*' \) | while read lib; do
+      addOpenGLRunpath "$lib"
+    done
+  '';
+
+  meta = with lib; {
+    description = "OpenVINO™ Toolkit repository";
+    longDescription = ''
+      This toolkit allows developers to deploy pre-trained deep learning models through a high-level C++ Inference Engine API integrated with application logic.
+
+      This open source version includes several components: namely Model Optimizer, nGraph and Inference Engine, as well as CPU, GPU, MYRIAD,
+      multi device and heterogeneous plugins to accelerate deep learning inferencing on Intel® CPUs and Intel® Processor Graphics.
+      It supports pre-trained models from the Open Model Zoo, along with 100+ open source and public models in popular formats such as Caffe*, TensorFlow*, MXNet* and ONNX*.
+    '';
+    homepage = "https://docs.openvinotoolkit.org/";
+    license = with licenses; [ asl20 ];
+    platforms = platforms.all;
+    broken = stdenv.isDarwin; # Cannot find macos sdk
+    maintainers = with maintainers; [ tfmoraes ];
+  };
+}