90 lines
1.9 KiB
Nix
90 lines
1.9 KiB
Nix
{
|
|
lib,
|
|
stdenv,
|
|
buildPythonPackage,
|
|
fetchFromGitHub,
|
|
pythonAtLeast,
|
|
|
|
# build-system
|
|
pkg-config,
|
|
rustc,
|
|
rustPlatform,
|
|
|
|
# tests
|
|
numpy,
|
|
pytestCheckHook,
|
|
pytest-benchmark,
|
|
pytest-rerunfailures,
|
|
}:
|
|
|
|
buildPythonPackage rec {
|
|
pname = "gilknocker";
|
|
version = "0.4.2-post3";
|
|
pyproject = true;
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "milesgranger";
|
|
repo = "gilknocker";
|
|
tag = "v${version}";
|
|
hash = "sha256-GSybOILOP0lwxUPB9a8whQvEPS7OdeHcm0pxky7gwkg=";
|
|
};
|
|
|
|
cargoDeps = rustPlatform.fetchCargoVendor {
|
|
inherit pname version src;
|
|
hash = "sha256-C3rxqmZMSc6SC8bU5VB61x8Xk/crD3o7Nr1xvzv7uqI=";
|
|
};
|
|
|
|
nativeBuildInputs =
|
|
with rustPlatform;
|
|
[
|
|
cargoSetupHook
|
|
maturinBuildHook
|
|
]
|
|
++ [
|
|
pkg-config
|
|
rustc
|
|
];
|
|
|
|
pythonImportsCheck = [
|
|
"gilknocker"
|
|
];
|
|
|
|
nativeCheckInputs = [
|
|
numpy
|
|
pytestCheckHook
|
|
pytest-benchmark
|
|
pytest-rerunfailures
|
|
];
|
|
|
|
enabledTestPaths = [
|
|
# skip the benchmarks as they can segfault
|
|
# https://github.com/milesgranger/gilknocker/issues/35
|
|
"tests"
|
|
];
|
|
|
|
disabledTestPaths = lib.optionals (pythonAtLeast "3.14") [
|
|
# segfaults
|
|
# https://github.com/milesgranger/gilknocker/issues/35
|
|
"benchmarks"
|
|
];
|
|
|
|
disabledTests = lib.optionals stdenv.hostPlatform.isDarwin [
|
|
# depends on an empirically-derived threshold that fails on fast and slow machines.
|
|
# https://github.com/milesgranger/gilknocker/issues/36
|
|
"test_knockknock_some_gil"
|
|
];
|
|
|
|
pytestFlags = [ "--benchmark-disable" ];
|
|
|
|
meta = {
|
|
description = "Knock on the Python GIL, determine how busy it is";
|
|
homepage = "https://github.com/milesgranger/gilknocker";
|
|
changelog = "https://github.com/milesgranger/gilknocker/releases/tag/v${version}";
|
|
license = with lib.licenses; [
|
|
mit
|
|
unlicense
|
|
];
|
|
maintainers = with lib.maintainers; [ daspk04 ];
|
|
};
|
|
}
|