nixpkgs/pkgs/by-name/op/openvino/package.nix
aleksana 571c71e6f7 treewide: migrate packages to pkgs/by-name, take 1
We are migrating packages that meet below requirements:

1. using `callPackage`
2. called path is a directory
3. overriding set is empty (`{ }`)
4. not containing path expressions other than relative path (to
makenixpkgs-vet happy)
5. not referenced by nix files outside of the directory, other
than`pkgs/top-level/all-packages.nix`
6. not referencing nix files outside of the directory
7. not referencing `default.nix` (since it's changed to `package.nix`)
8. `outPath` doesn't change after migration

The tool is here: https://github.com/Aleksanaa/by-name-migrate.
2024-11-09 20:04:51 +08:00

188 lines
4.5 KiB
Nix

{ lib
, gcc12Stdenv
, fetchFromGitHub
, fetchurl
, cudaSupport ? opencv.cudaSupport or false
# build
, scons
, addDriverRunpath
, autoPatchelfHook
, cmake
, git
, libarchive
, patchelf
, pkg-config
, python3Packages
, shellcheck
# runtime
, flatbuffers
, gflags
, level-zero
, libusb1
, libxml2
, ocl-icd
, opencv
, protobuf
, pugixml
, snappy
, tbb_2021_5
, cudaPackages
}:
let
inherit (lib)
cmakeBool
;
stdenv = gcc12Stdenv;
# prevent scons from leaking in the default python version
scons' = scons.override { inherit python3Packages; };
tbbbind_version = "2_5";
tbbbind = fetchurl {
url = "https://storage.openvinotoolkit.org/dependencies/thirdparty/linux/tbbbind_${tbbbind_version}_static_lin_v4.tgz";
hash = "sha256-Tr8wJGUweV8Gb7lhbmcHxrF756ZdKdNRi1eKdp3VTuo=";
};
python = python3Packages.python.withPackages (ps: with ps; [
cython
distutils
pybind11
setuptools
sphinx
wheel
]);
in
stdenv.mkDerivation rec {
pname = "openvino";
version = "2024.4.1";
src = fetchFromGitHub {
owner = "openvinotoolkit";
repo = "openvino";
rev = "refs/tags/${version}";
fetchSubmodules = true;
hash = "sha256-v0PPGFUHCGNWdlTff40Ol2NvaYglb/+L/zZAQujk6lk=";
};
outputs = [
"out"
"python"
];
nativeBuildInputs = [
addDriverRunpath
autoPatchelfHook
cmake
git
libarchive
patchelf
pkg-config
python
scons'
shellcheck
] ++ lib.optionals cudaSupport [
cudaPackages.cuda_nvcc
];
postPatch = ''
mkdir -p temp/tbbbind_${tbbbind_version}
pushd temp/tbbbind_${tbbbind_version}
bsdtar -xf ${tbbbind}
echo "${tbbbind.url}" > ie_dependency.info
popd
'';
dontUseSconsCheck = true;
dontUseSconsBuild = true;
dontUseSconsInstall = true;
cmakeFlags = [
"-Wno-dev"
"-DCMAKE_MODULE_PATH:PATH=${placeholder "out"}/lib/cmake"
"-DCMAKE_PREFIX_PATH:PATH=${placeholder "out"}"
"-DOpenCV_DIR=${opencv}/lib/cmake/opencv4/"
"-DProtobuf_LIBRARIES=${protobuf}/lib/libprotobuf${stdenv.hostPlatform.extensions.sharedLibrary}"
"-DPython_EXECUTABLE=${python.interpreter}"
(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" stdenv.hostPlatform.isx86_64)
(cmakeBool "ENABLE_INTEL_NPU" false) # undefined reference to `std::ios_base_library_init()@GLIBCXX_3.4.32'
(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)
];
autoPatchelfIgnoreMissingDeps = [
"libngraph_backend.so"
];
buildInputs = [
flatbuffers
gflags
level-zero
libusb1
libxml2
ocl-icd
opencv.cxxdev
pugixml
snappy
tbb_2021_5
] ++ lib.optionals cudaSupport [
cudaPackages.cuda_cudart
];
enableParallelBuilding = true;
postInstall = ''
mkdir -p $python
mv $out/python/* $python/
rmdir $out/python
'';
postFixup = ''
# Link to OpenCL
find $out -type f \( -name '*.so' -or -name '*.so.*' \) | while read lib; do
addDriverRunpath "$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.hostPlatform.isDarwin; # Cannot find macos sdk
maintainers = with maintainers; [ tfmoraes ];
};
}