about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/libraries/onnxruntime/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/onnxruntime/default.nix')
-rw-r--r--nixpkgs/pkgs/development/libraries/onnxruntime/default.nix67
1 files changed, 67 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/onnxruntime/default.nix b/nixpkgs/pkgs/development/libraries/onnxruntime/default.nix
new file mode 100644
index 000000000000..33bc4c6e82c2
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/onnxruntime/default.nix
@@ -0,0 +1,67 @@
+{ stdenv, fetchFromGitHub, glibcLocales
+, cmake, python3
+}:
+
+stdenv.mkDerivation rec {
+  pname = "onnxruntime";
+  version = "1.0.0";
+
+  src = fetchFromGitHub {
+    owner = "microsoft";
+    repo = "onnxruntime";
+    rev = "v${version}";
+    sha256 = "1d28lzrjnq69yl8j9ncxlsxl0bniacn3hnsr9van10zgp527436v";
+    # TODO: use nix-versions of grpc, onnx, eigen, googletest, etc.
+    # submodules increase src size and compile times significantly
+    # not currently feasible due to how integrated cmake build is with git
+    fetchSubmodules = true;
+  };
+
+  # TODO: build server, and move .so's to lib output
+  outputs = [ "out" "dev" ];
+
+  nativeBuildInputs = [
+    cmake
+    python3 # for shared-lib or server
+  ];
+
+  cmakeDir = "../cmake";
+
+  cmakeFlags = [
+    "-Donnxruntime_USE_OPENMP=ON"
+    "-Donnxruntime_BUILD_SHARED_LIB=ON"
+    "-Donnxruntime_ENABLE_LTO=ON"
+  ];
+
+  # ContribOpTest.StringNormalizerTest sets locale to en_US.UTF-8"
+  preCheck = stdenv.lib.optionalString stdenv.isLinux ''
+    export LOCALE_ARCHIVE="${glibcLocales}/lib/locale/locale-archive"
+  '';
+  doCheck = true;
+
+  postInstall = ''
+    rm -r $out/bin   # ctest runner
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "Cross-platform, high performance scoring engine for ML models";
+    longDescription = ''
+      ONNX Runtime is a performance-focused complete scoring engine
+      for Open Neural Network Exchange (ONNX) models, with an open
+      extensible architecture to continually address the latest developments
+      in AI and Deep Learning. ONNX Runtime stays up to date with the ONNX
+      standard with complete implementation of all ONNX operators, and
+      supports all ONNX releases (1.2+) with both future and backwards
+      compatibility.
+    '';
+    homepage = "https://github.com/microsoft/onnxruntime";
+    changelog = "https://github.com/microsoft/onnxruntime/releases";
+    # https://github.com/microsoft/onnxruntime/blob/master/BUILD.md#architectures
+    platforms = platforms.unix;
+    license = licenses.mit;
+    maintainers = with maintainers; [ jonringer ];
+  };
+
+}