diff options
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/openvino')
-rw-r--r-- | nixpkgs/pkgs/development/libraries/openvino/default.nix | 136 |
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 ]; + }; +} |