From 90cca972971ff6d52d51d34c5ad3edc406b1d1d9 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sun, 14 Feb 2021 11:22:00 +0100 Subject: [PATCH] python3Packages.pypcap: fix build on Python 3.9 --- .../python-modules/pypcap/default.nix | 56 ++++++++++++------- 1 file changed, 36 insertions(+), 20 deletions(-) diff --git a/pkgs/development/python-modules/pypcap/default.nix b/pkgs/development/python-modules/pypcap/default.nix index 08c90d828986..fbf6769ab4ca 100644 --- a/pkgs/development/python-modules/pypcap/default.nix +++ b/pkgs/development/python-modules/pypcap/default.nix @@ -1,34 +1,50 @@ -{ lib, writeText, buildPythonPackage, fetchPypi, libpcap, dpkt }: +{ lib +, buildPythonPackage +, dpkt +, fetchFromGitHub +, fetchpatch +, libpcap +, pytestCheckHook +}: buildPythonPackage rec { pname = "pypcap"; version = "1.2.3"; - src = fetchPypi { - inherit pname version; - sha256 = "1w5i79gh7cswvznr8rhilcmzhnh2y5c4jwh2qrfnpx05zqigm1xd"; + + src = fetchFromGitHub { + owner = "pynetwork"; + repo = pname; + rev = "v${version}"; + sha256 = "1zscfk10jpqwxgc8d84y8bffiwr92qrg2b24afhjwiyr352l67cf"; }; patches = [ - # The default setup.py searchs for pcap.h in a static list of default - # folders. So we have to add the path to libpcap in the nix-store. - (writeText "libpcap-path.patch" - '' - --- a/setup.py - +++ b/setup.py - @@ -28,6 +28,7 @@ def recursive_search(path, target_files): - - def find_prefix_and_pcap_h(): - prefixes = chain.from_iterable(( - + '${libpcap}', - ('/usr', sys.prefix), - glob.glob('/opt/libpcap*'), - glob.glob('../libpcap*'), - '') + # Support for Python 3.9, https://github.com/pynetwork/pypcap/pull/102 + (fetchpatch { + name = "support-python-3.9.patch"; + url = "https://github.com/pynetwork/pypcap/pull/102/commits/e22f5d25f0d581d19ef337493434e72cd3a6ae71.patch"; + sha256 = "0n1syh1vcplgsf6njincpqphd2w030s3b2jyg86d7kbqv1w5wk0l"; + }) ]; + postPatch = '' + # Add the path to libpcap in the nix-store + substituteInPlace setup.py --replace "('/usr', sys.prefix)" "'${libpcap}'" + # Remove coverage from test run + sed -i "/--cov/d" setup.cfg + ''; + buildInputs = [ libpcap ]; - checkInputs = [ dpkt ]; + + checkInputs = [ + dpkt + pytestCheckHook + ]; + + pytestFlagsArray = [ "tests" ]; + + pythonImportsCheck = [ "pcap" ]; meta = with lib; { homepage = "https://github.com/pynetwork/pypcap";