2021-03-12 01:59:01 +00:00
|
|
|
{ lib
|
2024-02-01 12:32:42 +00:00
|
|
|
, gcc12Stdenv
|
2021-03-12 01:59:01 +00:00
|
|
|
, fetchFromGitHub
|
2024-02-01 12:32:42 +00:00
|
|
|
, fetchpatch2
|
2023-02-03 21:10:27 +00:00
|
|
|
, fetchurl
|
2023-11-28 09:46:47 +00:00
|
|
|
, cudaSupport ? opencv.cudaSupport or false
|
2023-02-03 21:10:27 +00:00
|
|
|
|
|
|
|
# build
|
|
|
|
, addOpenGLRunpath
|
|
|
|
, autoPatchelfHook
|
2021-03-12 01:59:01 +00:00
|
|
|
, cmake
|
|
|
|
, git
|
2023-02-03 21:10:27 +00:00
|
|
|
, libarchive
|
|
|
|
, pkg-config
|
|
|
|
, python
|
|
|
|
, shellcheck
|
2024-02-01 12:32:42 +00:00
|
|
|
, sphinx
|
2023-02-03 21:10:27 +00:00
|
|
|
|
|
|
|
# runtime
|
2024-02-01 12:32:42 +00:00
|
|
|
, flatbuffers
|
2023-02-03 21:10:27 +00:00
|
|
|
, libusb1
|
|
|
|
, libxml2
|
2023-12-08 02:23:22 +00:00
|
|
|
, ocl-icd
|
2023-02-03 21:10:27 +00:00
|
|
|
, opencv
|
2021-03-12 01:59:01 +00:00
|
|
|
, protobuf
|
2023-02-03 21:10:27 +00:00
|
|
|
, pugixml
|
2024-02-01 12:32:42 +00:00
|
|
|
, snappy
|
2021-03-12 01:59:01 +00:00
|
|
|
, tbb
|
2023-11-28 09:46:47 +00:00
|
|
|
, cudaPackages
|
2021-03-12 01:59:01 +00:00
|
|
|
}:
|
|
|
|
|
|
|
|
let
|
2024-02-01 12:32:42 +00:00
|
|
|
inherit (lib)
|
|
|
|
cmakeBool
|
|
|
|
;
|
|
|
|
|
|
|
|
stdenv = gcc12Stdenv;
|
|
|
|
|
2023-02-03 21:10:27 +00:00
|
|
|
# See GNA_VERSION in cmake/dependencies.cmake
|
2024-02-01 12:32:42 +00:00
|
|
|
gna_version = "03.05.00.2116";
|
2023-02-03 21:10:27 +00:00
|
|
|
gna = fetchurl {
|
|
|
|
url = "https://storage.openvinotoolkit.org/dependencies/gna/gna_${gna_version}.zip";
|
2024-02-01 12:32:42 +00:00
|
|
|
hash = "sha256-lgNQVncCvaFydqxMBg11JPt8587XhQBL2GHIH/K/4sU=";
|
2021-03-12 01:59:01 +00:00
|
|
|
};
|
|
|
|
|
2023-02-03 21:10:27 +00:00
|
|
|
tbbbind_version = "2_5";
|
|
|
|
tbbbind = fetchurl {
|
2024-02-01 12:32:42 +00:00
|
|
|
url = "https://storage.openvinotoolkit.org/dependencies/thirdparty/linux/tbbbind_${tbbbind_version}_static_lin_v4.tgz";
|
|
|
|
hash = "sha256-Tr8wJGUweV8Gb7lhbmcHxrF756ZdKdNRi1eKdp3VTuo=";
|
2023-02-03 21:10:27 +00:00
|
|
|
};
|
2021-03-12 01:59:01 +00:00
|
|
|
in
|
2023-02-03 21:10:27 +00:00
|
|
|
|
2021-03-12 01:59:01 +00:00
|
|
|
stdenv.mkDerivation rec {
|
|
|
|
pname = "openvino";
|
2024-02-01 12:32:42 +00:00
|
|
|
version = "2023.3.0";
|
2021-03-12 01:59:01 +00:00
|
|
|
|
|
|
|
src = fetchFromGitHub {
|
|
|
|
owner = "openvinotoolkit";
|
|
|
|
repo = "openvino";
|
2023-02-03 21:10:27 +00:00
|
|
|
rev = "refs/tags/${version}";
|
2021-03-12 01:59:01 +00:00
|
|
|
fetchSubmodules = true;
|
2024-02-01 12:32:42 +00:00
|
|
|
hash = "sha256-dXlQhar5gz+1iLmDYXUY0jZKh4rJ+khRpoZQphJXfcU=";
|
2021-03-12 01:59:01 +00:00
|
|
|
};
|
|
|
|
|
2024-02-01 12:32:42 +00:00
|
|
|
patches = [
|
|
|
|
(fetchpatch2 {
|
|
|
|
name = "enable-js-toggle.patch";
|
|
|
|
url = "https://github.com/openvinotoolkit/openvino/commit/0a8f1383826d949c497fe3d05fef9ad2b662fa7e.patch";
|
|
|
|
hash = "sha256-mQYunouPo3tRlD5Yp4EUth324ccNnVX8zmjPHvJBYKw=";
|
|
|
|
})
|
|
|
|
];
|
|
|
|
|
2023-02-03 21:10:27 +00:00
|
|
|
outputs = [
|
|
|
|
"out"
|
|
|
|
"python"
|
|
|
|
];
|
|
|
|
|
|
|
|
nativeBuildInputs = [
|
|
|
|
addOpenGLRunpath
|
|
|
|
autoPatchelfHook
|
|
|
|
cmake
|
|
|
|
git
|
|
|
|
libarchive
|
|
|
|
pkg-config
|
|
|
|
(python.withPackages (ps: with ps; [
|
|
|
|
cython
|
|
|
|
pybind11
|
|
|
|
setuptools
|
|
|
|
]))
|
|
|
|
shellcheck
|
2024-02-01 12:32:42 +00:00
|
|
|
sphinx
|
2023-11-28 09:46:47 +00:00
|
|
|
] ++ lib.optionals cudaSupport [
|
|
|
|
cudaPackages.cuda_nvcc
|
2023-02-03 21:10:27 +00:00
|
|
|
];
|
|
|
|
|
|
|
|
postPatch = ''
|
|
|
|
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
|
|
|
|
'';
|
|
|
|
|
2021-03-12 01:59:01 +00:00
|
|
|
dontUseCmakeBuildDir = true;
|
|
|
|
|
|
|
|
cmakeFlags = [
|
2024-02-01 12:32:42 +00:00
|
|
|
"-Wno-dev"
|
2023-02-03 21:10:27 +00:00
|
|
|
"-DCMAKE_MODULE_PATH:PATH=${placeholder "out"}/lib/cmake"
|
2024-02-01 12:32:42 +00:00
|
|
|
"-DCMAKE_PREFIX_PATH:PATH=${placeholder "out"}"
|
2023-02-03 21:10:27 +00:00
|
|
|
"-DOpenCV_DIR=${opencv}/lib/cmake/opencv4/"
|
2024-02-01 12:32:42 +00:00
|
|
|
"-DProtobuf_LIBRARIES=${protobuf}/lib/libprotobuf${stdenv.hostPlatform.extensions.sharedLibrary}"
|
|
|
|
|
|
|
|
(cmakeBool "CMAKE_VERBOSE_MAKEFILE" true)
|
|
|
|
(cmakeBool "NCC_SYLE" false)
|
|
|
|
(cmakeBool "BUILD_TESTING" false)
|
|
|
|
(cmakeBool "ENABLE_CPPLINT" false)
|
|
|
|
(cmakeBool "ENABLE_TESTING" false)
|
|
|
|
(cmakeBool "ENABLE_SAMPLES" false)
|
|
|
|
|
|
|
|
# features
|
|
|
|
(cmakeBool "ENABLE_INTEL_CPU" true)
|
|
|
|
(cmakeBool "ENABLE_INTEL_GNA" true)
|
|
|
|
(cmakeBool "ENABLE_JS" false)
|
|
|
|
(cmakeBool "ENABLE_LTO" true)
|
|
|
|
(cmakeBool "ENABLE_ONEDNN_FOR_GPU" false)
|
|
|
|
(cmakeBool "ENABLE_OPENCV" true)
|
|
|
|
(cmakeBool "ENABLE_PYTHON" true)
|
|
|
|
|
|
|
|
# system libs
|
|
|
|
(cmakeBool "ENABLE_SYSTEM_FLATBUFFERS" true)
|
|
|
|
(cmakeBool "ENABLE_SYSTEM_OPENCL" true)
|
|
|
|
(cmakeBool "ENABLE_SYSTEM_PROTOBUF" false)
|
|
|
|
(cmakeBool "ENABLE_SYSTEM_PUGIXML" true)
|
|
|
|
(cmakeBool "ENABLE_SYSTEM_SNAPPY" true)
|
|
|
|
(cmakeBool "ENABLE_SYSTEM_TBB" true)
|
2021-03-12 01:59:01 +00:00
|
|
|
];
|
|
|
|
|
2023-05-11 07:24:48 +00:00
|
|
|
env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.isAarch64 "-Wno-narrowing";
|
|
|
|
|
2023-02-03 21:10:27 +00:00
|
|
|
autoPatchelfIgnoreMissingDeps = [
|
|
|
|
"libngraph_backend.so"
|
2021-03-12 01:59:01 +00:00
|
|
|
];
|
|
|
|
|
|
|
|
buildInputs = [
|
2024-02-01 12:32:42 +00:00
|
|
|
flatbuffers
|
2023-02-03 21:10:27 +00:00
|
|
|
libusb1
|
|
|
|
libxml2
|
2023-12-08 02:23:22 +00:00
|
|
|
ocl-icd
|
2023-11-30 00:45:37 +00:00
|
|
|
opencv.cxxdev
|
2023-02-03 21:10:27 +00:00
|
|
|
pugixml
|
2024-02-01 12:32:42 +00:00
|
|
|
snappy
|
2021-03-12 01:59:01 +00:00
|
|
|
tbb
|
2023-11-28 09:46:47 +00:00
|
|
|
] ++ lib.optionals cudaSupport [
|
|
|
|
cudaPackages.cuda_cudart
|
2023-02-03 21:10:27 +00:00
|
|
|
];
|
|
|
|
|
|
|
|
enableParallelBuilding = true;
|
|
|
|
|
|
|
|
postInstall = ''
|
|
|
|
mkdir -p $python
|
2024-02-01 12:32:42 +00:00
|
|
|
mv $out/python/* $python/
|
|
|
|
rmdir $out/python
|
2023-02-03 21:10:27 +00:00
|
|
|
'';
|
2021-03-12 01:59:01 +00:00
|
|
|
|
|
|
|
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 ];
|
2022-03-22 17:59:05 +00:00
|
|
|
platforms = platforms.all;
|
2023-06-29 21:40:59 +00:00
|
|
|
broken = (stdenv.isLinux && stdenv.isAarch64) # requires scons, then fails with *** Source directory cannot be under variant directory.
|
|
|
|
|| stdenv.isDarwin; # Cannot find macos sdk
|
2021-03-12 01:59:01 +00:00
|
|
|
maintainers = with maintainers; [ tfmoraes ];
|
|
|
|
};
|
|
|
|
}
|