pycapnp: adopt, cleanup

This commit is contained in:
Liam Murphy 2025-06-22 20:17:49 +10:00
parent 75e31ca6b2
commit e12a71c717
No known key found for this signature in database
GPG Key ID: 0A01FCF4B19F9B8D
2 changed files with 54 additions and 15 deletions

View File

@ -1,29 +1,41 @@
{
lib,
buildPythonPackage,
capnproto,
cython,
replaceVars,
fetchFromGitHub,
fetchpatch2,
isPy27,
isPyPy,
setuptools,
wheel,
capnproto,
cython,
pkgconfig,
pytest-asyncio,
pytestCheckHook,
}:
buildPythonPackage rec {
pname = "pycapnp";
version = "2.0.0";
format = "setuptools";
disabled = isPyPy || isPy27;
format = "pyproject";
src = fetchFromGitHub {
owner = "capnproto";
repo = "pycapnp";
tag = "v${version}";
sha256 = "sha256-SVeBRJMMR1Z8+S+QoiUKGRFGUPS/MlmWLi1qRcGcPoE=";
hash = "sha256-SVeBRJMMR1Z8+S+QoiUKGRFGUPS/MlmWLi1qRcGcPoE=";
};
patches = [
# pycapnp hardcodes /usr/include and /usr/local/include as the paths to search
# for capnproto's built-in schemas in; replace them with the path to our copy of
# capnproto.
#
# Theoretically, this mechanism could also be used to load capnproto schemas
# exposed by other packages (e.g. capnproto-java), which we could support using
# a setup hook; but in practice nobody seems to use this mechanism for anything
# other than the builtin schemas (based on quick GitHub code search), so I don't
# think it's worthwhile.
(replaceVars ./include-paths.patch { inherit capnproto; })
(fetchpatch2 {
name = "cython-3.patch";
url = "https://github.com/capnproto/pycapnp/pull/334.diff?full_index=1";
@ -31,21 +43,34 @@ buildPythonPackage rec {
})
];
nativeBuildInputs = [
build-system = [
setuptools
wheel
cython
pkgconfig
];
buildInputs = [ capnproto ];
# Tests depend on schema_capnp which fails to generate
doCheck = false;
nativeCheckInputs = [
pytest-asyncio
pytestCheckHook
];
__darwinAllowLocalNetworking = true;
# https://github.com/NixOS/nixpkgs/issues/255262
preCheck = ''
enabledTestPaths=$PWD/test
pushd "$out"
'';
postCheck = ''
popd
'';
pythonImportsCheck = [ "capnp" ];
meta = with lib; {
meta = {
description = "Cython wrapping of the C++ Cap'n Proto library";
homepage = "https://capnproto.github.io/pycapnp/";
maintainers = [ ];
license = licenses.bsd2;
changelog = "https://github.com/capnproto/pycapnp/blob/${src.rev}/CHANGELOG.md";
license = lib.licenses.bsd2;
maintainers = with lib.maintainers; [ Liamolucko ];
};
}

View File

@ -0,0 +1,14 @@
--- a/capnp/lib/capnp.pyx
+++ b/capnp/lib/capnp.pyx
@@ -4410,10 +4410,7 @@ def load(file_name, display_name=None, imports=[]):
# Automatically include the system and built-in capnp paths
# Highest priority at position 0
_capnp_paths = [
- # Common macOS brew location
- '/usr/local/include',
- # Common posix location
- '/usr/include',
+ '@capnproto@/include',
]
class _Loader: