anchor.diff:  , lib
   , fetchFromGitHub
   , fetchpatch
  -, runCommand
  -, patchutils
  +, fetchurl
   , pkg-config
  -, glibcLocales
   , cmake
   , python3
   , libpng
   , zlib
   , eigen
   , protobuf
  -, nsync
  -, flatbuffers
   , howard-hinnant-date
  -, re2
   , nlohmann_json
   , boost
   , oneDNN
  +, gtest
   }:
   
   let
  -  externals = {
  -    pytorch_cpuinfo = fetchFromGitHub {
  -      owner = "pytorch";
  -      repo = "cpuinfo";
  -      rev = "5916273f79a21551890fd3d56fc5375a78d1598d";
  -      sha256 = "sha256-nXBnloVTuB+AVX59VDU/Wc+Dsx94o92YQuHp3jowx2A=";
  -    };
  -    onnx = fetchFromGitHub {
  -      owner = "onnx";
  -      repo = "onnx";
  -      rev = "be76ca7148396176784ba8733133b9fb1186ea0d";
  -      sha256 = "sha256-WwbfUijV67LL69RPgz+4m6EcwSyBNFweGUe0jkYRpbg=";
  -    };
  -    "SafeInt/safeint" = fetchFromGitHub {
  -      owner = "dcleblanc";
  -      repo = "SafeInt";
  -      rev = "a104e0cf23be4fe848f7ef1f3e8996fe429b06bb";
  -      sha256 = "sha256-LmQNIoHPqvl8asn86P33SDn+lCg8LpLfxUmoG9CGEdc=";
  -    };
  +  # prefetch abseil
  +  # Note: keep URL in sync with `cmake/external/abseil-cpp.cmake`
  +  abseil = fetchurl {
  +    url = "https://github.com/abseil/abseil-cpp/archive/refs/tags/20211102.0.zip";
  +    sha256 = "sha256-pFZ/8C+spnG5XjHTFbqxi0K2xvGmDpHG6oTlohQhEsI=";
     };
   in
   stdenv.mkDerivation rec {
     pname = "onnxruntime";
  -  version = "1.10.0";
  +  version = "1.12.1";
   
     src = fetchFromGitHub {
       owner = "microsoft";
       repo = "onnxruntime";
       rev = "v${version}";
  -    sha256 = "sha256-kWl0xrbTQL2FBSvpiqTcaj8uZV+ZV8gJJvj4/I0jopw=";
  +    sha256 = "sha256-wwllEemiHTp9aJcCd1gsTS4WUVMp5wW+4i/+6DzmAeM=";
  +    fetchSubmodules = true;
     };
   
  -  preConfigure = lib.concatStringsSep "\n" (lib.mapAttrsToList (name: path: ''
  -    rmdir cmake/external/${name}
  -    ln -s ${path} cmake/external/${name}
  -  '') externals);
  -
     patches = [
  -    # Exclude the flatbuffers change which breaks things
  -    (runCommand "filtered" {
  -      AUR_PATCH = fetchpatch {
  -        name = "aur-build-fixes.patch";
  -        url = "https://aur.archlinux.org/cgit/aur.git/plain/build-fixes.patch?h=python-onnxruntime&id=0185531906bda3a9aba93bbb0f3dcfeb0ae671ad";
  -        sha256 = "sha256-bAJWThTbECQaoqDdkjHLneg6I1BshGMyCWaj7nfACvA=";
  -      };
  -    } ''
  -      ${patchutils}/bin/filterdiff --hunks 1,2 $AUR_PATCH > $out
  -    '')
  +    # Use dnnl from nixpkgs instead of submodules
       (fetchpatch {
         name = "system-dnnl.patch";
         url = "https://aur.archlinux.org/cgit/aur.git/plain/system-dnnl.diff?h=python-onnxruntime&id=0185531906bda3a9aba93bbb0f3dcfeb0ae671ad";
  
positive.code:     })
    ];
  
    # TODO: build server, and move .so's to lib output
    outputs = [ "out" "dev" ];
  
    nativeBuildInputs = [
      cmake
      pkg-config
      python3
    ];
  
    buildInputs = [
      libpng
      zlib
      protobuf
      nsync
      flatbuffers
      howard-hinnant-date
      re2
      nlohmann_json
      boost
      oneDNN
    ];
  
    cmakeDir = "../cmake";
  
  
negative.code:       compatibility.
      '';
      homepage = "https://github.com/microsoft/onnxruntime";
      changelog = "https://github.com/microsoft/onnxruntime/releases/tag/v${version}";
      # https://github.com/microsoft/onnxruntime/blob/master/BUILD.md#architectures
      platforms = platforms.unix;
      license = licenses.mit;
      maintainers = with maintainers; [ jonringer puffnfresh ck3d ];
    };
  }
  