diff --git a/pkgs/development/python-modules/libpcap/default.nix b/pkgs/development/python-modules/libpcap/default.nix new file mode 100644 index 000000000000..1dbc2de90dfb --- /dev/null +++ b/pkgs/development/python-modules/libpcap/default.nix @@ -0,0 +1,66 @@ +{ lib +, stdenv +, buildPythonPackage +, fetchPypi +, pythonOlder +, dbus +, pkgsLibpcap +, pkg-about +, setuptools +, tox +}: + +buildPythonPackage rec { + pname = "libpcap"; + version = "1.11.0b7"; + format = "pyproject"; + + disabled = pythonOlder "3.7"; + + src = fetchPypi { + inherit pname version; + extension = "zip"; + hash = "sha256-gEWFqmeOJTVHdjcSOxfVLZtrNSO3CTY1L2VcXOu7q7k="; + }; + + nativeBuildInputs = [ + setuptools + tox + ]; + + postPatch = '' + cat <src/libpcap/libpcap.cfg + [libpcap] + LIBPCAP = ${pkgsLibpcap}/lib/libpcap${stdenv.hostPlatform.extensions.sharedLibrary} + EOF + ''; + + propagatedBuildInputs = [ + dbus.lib + pkgsLibpcap + pkg-about + ]; + + # Project has tests, but I can't get them to run even outside of nix + doCheck = false; + + pythonImportsCheck = [ + "libpcap" + ]; + + meta = with lib; { + description = "Python binding for the libpcap C library"; + longDescription = '' + Python libpcap module is a low-level binding for libpcap C library. + + It is an effort to allow python programs full access to the API provided by the well known libpcap Unix C library and by its implementations provided under Win32 systems by such packet capture systems as: Npcap, WinPcap + + libpcap is a lightweight Python package, based on the ctypes library. + + It is fully compliant implementation of the original C libpcap from 1.0.0 up to 1.9.0 API and the WinPcap’s 4.1.3 libpcap (1.0.0rel0b) API by implementing whole its functionality in a clean Python instead of C. + ''; + homepage = "https://github.com/karpierz/libpcap/"; + license = licenses.bsd3; + maintainers = [ teams.ororatech ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index cd10caec3cd3..52f58a04875c 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -6053,6 +6053,10 @@ self: super: with self; { inherit (pkgs) libsodium; }; + libpcap = callPackage ../development/python-modules/libpcap { + pkgsLibpcap = pkgs.libpcap; # Needs the C library + }; + libpurecool = callPackage ../development/python-modules/libpurecool { }; libpyfoscam = callPackage ../development/python-modules/libpyfoscam { }; @@ -7943,7 +7947,9 @@ self: super: with self; { pc-ble-driver-py = toPythonModule (callPackage ../development/python-modules/pc-ble-driver-py { }); - pcapy-ng = callPackage ../development/python-modules/pcapy-ng { }; + pcapy-ng = callPackage ../development/python-modules/pcapy-ng { + inherit (pkgs) libpcap; # Avoid confusion with python package of the same name + }; pcodedmp = callPackage ../development/python-modules/pcodedmp { }; @@ -9055,7 +9061,9 @@ self: super: with self; { pydes = callPackage ../development/python-modules/pydes { }; - py-desmume = callPackage ../development/python-modules/py-desmume { }; + py-desmume = callPackage ../development/python-modules/py-desmume { + inherit (pkgs) libpcap; # Avoid confusion with python package of the same name + }; pydevccu = callPackage ../development/python-modules/pydevccu { }; @@ -9714,7 +9722,9 @@ self: super: with self; { pypca = callPackage ../development/python-modules/pypca { }; - pypcap = callPackage ../development/python-modules/pypcap { }; + pypcap = callPackage ../development/python-modules/pypcap { + inherit (pkgs) libpcap; # Avoid confusion with python package of the same name + }; pypck = callPackage ../development/python-modules/pypck { }; @@ -11585,7 +11595,9 @@ self: super: with self; { scancode-toolkit = callPackage ../development/python-modules/scancode-toolkit { }; - scapy = callPackage ../development/python-modules/scapy { }; + scapy = callPackage ../development/python-modules/scapy { + inherit (pkgs) libpcap; # Avoid confusion with python package of the same name + }; schedule = callPackage ../development/python-modules/schedule { };