nixpkgs/pkgs/development/python-modules/retworkx/default.nix

70 lines
1.8 KiB
Nix
Raw Normal View History

{ lib
, rustPlatform
, python
, fetchpatch
, fetchFromGitHub
, pipInstallHook
, maturin
, pip
# Check inputs
, pytestCheckHook
, numpy
}:
rustPlatform.buildRustPackage rec {
pname = "retworkx";
version = "0.4.0";
src = fetchFromGitHub {
owner = "Qiskit";
repo = "retworkx";
rev = version;
sha256 = "1xqp6d39apkjvd0ad9vw81cp2iqzhpagfa4p171xqm3bwfn2imdc";
};
cargoSha256 = "0bma0l14jv5qhcsxck7vw3ak1w3c8v84cq4hii86i4iqk523zns5";
cargoPatches = [
( fetchpatch {
name = "retworkx-cargo-lock.patch";
url = "https://github.com/Qiskit/retworkx/commit/a02fd33d357a92dbe9530696a6d85aa59fe8a5b9.patch";
sha256 = "0gvxr1nqp9ll4skfks4p4d964pshal25kb1nbfzhpyipnzddizr5";
} )
];
propagatedBuildInputs = [ python ];
nativeBuildInputs = [ pipInstallHook maturin pip ];
# Need to check AFTER python wheel is installed (b/c using Rust Build, not buildPythonPackage)
doCheck = false;
doInstallCheck = true;
buildPhase = ''
runHook preBuild
maturin build --release --manylinux off --strip --interpreter ${python.interpreter}
runHook postBuild
'';
installPhase = ''
install -Dm644 -t dist target/wheels/*.whl
pipInstallPhase
'';
installCheckInputs = [ pytestCheckHook numpy ];
preCheck = ''
export TESTDIR=$(mktemp -d)
cp -r $TMP/$sourceRoot/tests $TESTDIR
pushd $TESTDIR
'';
postCheck = "popd";
meta = with lib; {
description = "A python graph library implemented in Rust.";
homepage = "https://retworkx.readthedocs.io/en/latest/index.html";
downloadPage = "https://github.com/Qiskit/retworkx/releases";
changelog = "https://github.com/Qiskit/retworkx/releases/tag/${version}";
license = licenses.asl20;
maintainers = with maintainers; [ drewrisinger ];
};
}