mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-12-23 14:13:35 +00:00
75 lines
1.8 KiB
Nix
75 lines
1.8 KiB
Nix
{
|
|
stdenv,
|
|
lib,
|
|
fetchFromGitHub,
|
|
cmake,
|
|
python3,
|
|
llvmPackages,
|
|
enablePython ? false,
|
|
python ? python3,
|
|
}:
|
|
|
|
let
|
|
pyEnv = python.withPackages (
|
|
p: with p; [
|
|
numpy
|
|
scipy
|
|
distutils
|
|
]
|
|
);
|
|
|
|
in
|
|
stdenv.mkDerivation (finalAttrs: {
|
|
pname = "taco";
|
|
version = "unstable-2022-08-02";
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "tensor-compiler";
|
|
repo = "taco";
|
|
rev = "2b8ece4c230a5f0f0a74bc6f48e28edfb6c1c95e";
|
|
fetchSubmodules = true;
|
|
hash = "sha256-PnBocyRLiLALuVS3Gkt/yJeslCMKyK4zdsBI8BFaTSg=";
|
|
};
|
|
|
|
src-new-pybind11 = python.pkgs.pybind11.src;
|
|
|
|
postPatch = ''
|
|
rm -rf python_bindings/pybind11/*
|
|
cp -r ${finalAttrs.src-new-pybind11}/* python_bindings/pybind11
|
|
find python_bindings/pybind11 -exec chmod +w {} \;
|
|
'';
|
|
|
|
# Remove test cases from cmake build as they violate modern C++ expectations
|
|
patches = [ ./taco.patch ];
|
|
|
|
nativeBuildInputs = [ cmake ];
|
|
|
|
buildInputs = lib.optional stdenv.hostPlatform.isDarwin llvmPackages.openmp;
|
|
|
|
propagatedBuildInputs = lib.optional enablePython pyEnv;
|
|
|
|
cmakeFlags = [
|
|
"-DOPENMP=ON"
|
|
] ++ lib.optional enablePython "-DPYTHON=ON";
|
|
|
|
postInstall = lib.strings.optionalString enablePython ''
|
|
mkdir -p $out/${python.sitePackages}
|
|
cp -r lib/pytaco $out/${python.sitePackages}/.
|
|
'';
|
|
|
|
# The standard CMake test suite fails a single test of the CLI interface.
|
|
doCheck = false;
|
|
|
|
# Cython somehow gets built with references to /build/.
|
|
# However, the python module works flawlessly.
|
|
dontFixup = enablePython;
|
|
|
|
meta = {
|
|
description = "Computes sparse tensor expressions on CPUs and GPUs";
|
|
mainProgram = "taco";
|
|
license = lib.licenses.mit;
|
|
homepage = "https://github.com/tensor-compiler/taco";
|
|
maintainers = [ lib.maintainers.sheepforce ];
|
|
};
|
|
})
|