Something went wrong. Try again.
What happens if I push all of nixpkgs
Something went wrong. Try again.
3.2 kB · 153 lines
Nix
at master
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154{ lib, stdenv, buildPythonPackage, fetchFromGitHub,
# nativeBuildInputs ninja, which,
# buildInputs pybind11, torch,
# dependencies addict, mmengine, numpy, packaging, pillow, pyyaml, yapf,
# tests lmdb, onnx, onnxruntime, pytestCheckHook, pyturbojpeg, scipy, tifffile, torchvision,}:
let inherit (torch) cudaCapabilities cudaPackages cudaSupport; inherit (cudaPackages) backendStdenv;inbuildPythonPackage rec { pname = "mmcv"; version = "2.2.0"; pyproject = true;
src = fetchFromGitHub { owner = "open-mmlab"; repo = "mmcv"; tag = "v${version}"; hash = "sha256-NNF9sLJWV1q6uBE73LUW4UWwYm4TBMTBJjJkFArBmsc="; };
postPatch = # Fails in python >= 3.13 # exec(compile(f.read(), version_file, "exec")) does not populate the locals() namesp # In python 3.13, the locals() dictionary in a function does not automatically update with # changes made by exec(). # https://peps.python.org/pep-0558/ '' substituteInPlace setup.py \ --replace-fail "cpu_use = 4" "cpu_use = $NIX_BUILD_CORES" \ --replace-fail "return locals()['__version__']" "return '${version}'" '';
nativeBuildInputs = [ ninja which ];
buildInputs = [ pybind11 torch ] ++ lib.optionals cudaSupport ( with cudaPackages; [ cuda_cudart # cuda_runtime.h cuda_cccl # <thrust/*> libcublas # cublas_v2.h libcusolver # cusolverDn.h libcusparse # cusparse.h ] );
dependencies = [ addict mmengine numpy packaging pillow pyyaml yapf
# opencv4 # torch ];
env.CUDA_HOME = lib.optionalString cudaSupport (lib.getDev cudaPackages.cuda_nvcc);
preConfigure = '' export MMCV_WITH_OPS=1 '' + lib.optionalString cudaSupport '' export CC=${lib.getExe' backendStdenv.cc "cc"} export CXX=${lib.getExe' backendStdenv.cc "c++"} export TORCH_CUDA_ARCH_LIST="${lib.concatStringsSep ";" cudaCapabilities}" export FORCE_CUDA=1 '';
pythonImportsCheck = [ "mmcv" ];
nativeCheckInputs = [ lmdb onnx onnxruntime pytestCheckHook pyturbojpeg scipy tifffile torchvision ];
# remove the conflicting source directory preCheck = '' rm -rf mmcv '';
# test_cnn test_ops really requires gpus to be useful. # some of the tests take exceedingly long time. # the rest of the tests are disabled due to sandbox env. disabledTests = [ "test_cnn" "test_ops" "test_fileclient" "test_load_model_zoo" "test_processing" "test_checkpoint" "test_hub" "test_reader" ] ++ lib.optionals (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64) [ # flaky numerical tests (AssertionError) "test_ycbcr2rgb" "test_ycbcr2bgr" "test_tensor2imgs" ];
meta = { description = "Foundational Library for Computer Vision Research"; homepage = "https://github.com/open-mmlab/mmcv"; changelog = "https://github.com/open-mmlab/mmcv/releases/tag/v${version}"; license = with lib.licenses; [ asl20 ]; maintainers = with lib.maintainers; [ rxiao ]; };}