depot/third_party/nixpkgs/pkgs/development/python-modules/onnx/default.nix
Default email fa5436e0a7 Project import generated by Copybara.
GitOrigin-RevId: e8057b67ebf307f01bdcc8fba94d94f75039d1f6
2024-06-05 17:53:02 +02:00

167 lines
3.7 KiB
Nix

{
lib,
stdenv,
buildPythonPackage,
cmake,
fetchFromGitHub,
fetchpatch,
gtest,
nbval,
numpy,
parameterized,
protobuf_21,
pybind11,
pytestCheckHook,
pythonOlder,
tabulate,
typing-extensions,
abseil-cpp,
google-re2,
pillow,
protobuf,
}:
let
gtestStatic = gtest.override { static = true; };
in
buildPythonPackage rec {
pname = "onnx";
version = "1.15.0";
format = "setuptools";
disabled = pythonOlder "3.8";
src = fetchFromGitHub {
owner = pname;
repo = pname;
rev = "refs/tags/v${version}";
hash = "sha256-Jzga1IiUO5LN5imSUmnbsjYtapRatTihx38EOUjm9Os=";
};
patches = [
./1.15.0-CVE-2024-27318.patch
(fetchpatch {
name = "CVE-2024-27319.patch";
url = "https://github.com/onnx/onnx/commit/08a399ba75a805b7813ab8936b91d0e274b08287.patch";
hash = "sha256-9X92N9i/hpQjDGe4I/C+FwUcTUTtP2Nf7+pcTA2sXoA=";
})
];
nativeBuildInputs = [
cmake
pybind11
];
buildInputs = [
abseil-cpp
protobuf
google-re2
pillow
];
propagatedBuildInputs = [
protobuf_21
protobuf
numpy
typing-extensions
];
nativeCheckInputs = [
nbval
parameterized
pytestCheckHook
tabulate
];
postPatch = ''
chmod +x tools/protoc-gen-mypy.sh.in
patchShebangs tools/protoc-gen-mypy.sh.in
substituteInPlace setup.py \
--replace 'setup_requires.append("pytest-runner")' ""
# prevent from fetching & building own gtest
substituteInPlace CMakeLists.txt \
--replace 'include(googletest)' ""
substituteInPlace cmake/unittest.cmake \
--replace 'googletest)' ')'
'';
preConfigure = ''
# Set CMAKE_INSTALL_LIBDIR to lib explicitly, because otherwise it gets set
# to lib64 and cmake incorrectly looks for the protobuf library in lib64
export CMAKE_ARGS="-DCMAKE_INSTALL_LIBDIR=lib -DONNX_USE_PROTOBUF_SHARED_LIBS=ON"
export CMAKE_ARGS+=" -Dgoogletest_STATIC_LIBRARIES=${gtestStatic}/lib/libgtest.a -Dgoogletest_INCLUDE_DIRS=${lib.getDev gtestStatic}/include"
export ONNX_BUILD_TESTS=1
'';
preBuild = ''
export MAX_JOBS=$NIX_BUILD_CORES
'';
# The executables are just utility scripts that aren't too important
postInstall = ''
rm -r $out/bin
'';
# The setup.py does all the configuration
dontUseCmakeConfigure = true;
preCheck = ''
export HOME=$(mktemp -d)
# detecting source dir as a python package confuses pytest
mv onnx/__init__.py onnx/__init__.py.hidden
'';
pytestFlagsArray = [
"onnx/test"
"onnx/examples"
];
disabledTests =
[
# attempts to fetch data from web
"test_bvlc_alexnet_cpu"
"test_densenet121_cpu"
"test_inception_v1_cpu"
"test_inception_v2_cpu"
"test_resnet50_cpu"
"test_shufflenet_cpu"
"test_squeezenet_cpu"
"test_vgg19_cpu"
"test_zfnet512_cpu"
]
++ lib.optionals stdenv.isAarch64 [
# AssertionError: Output 0 of test 0 in folder
"test__pytorch_converted_Conv2d_depthwise_padded"
"test__pytorch_converted_Conv2d_dilated"
"test_dft"
"test_dft_axis"
# AssertionError: Mismatch in test 'test_Conv2d_depthwise_padded'
"test_xor_bcast4v4d"
# AssertionError: assert 1 == 0
"test_ops_tested"
];
disabledTestPaths = [
# Unexpected output fields from running code: {'stderr'}
"onnx/examples/np_array_tensorproto.ipynb"
];
__darwinAllowLocalNetworking = true;
postCheck = ''
# run "cpp" tests
.setuptools-cmake-build/onnx_gtests
'';
pythonImportsCheck = [ "onnx" ];
meta = with lib; {
description = "Open Neural Network Exchange";
homepage = "https://onnx.ai";
license = licenses.asl20;
maintainers = with maintainers; [ acairncross ];
};
}