diff options
Diffstat (limited to 'nixpkgs/pkgs/development/python-modules/mitmproxy/default.nix')
-rw-r--r-- | nixpkgs/pkgs/development/python-modules/mitmproxy/default.nix | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/python-modules/mitmproxy/default.nix b/nixpkgs/pkgs/development/python-modules/mitmproxy/default.nix new file mode 100644 index 00000000000..cb5b5cc80f5 --- /dev/null +++ b/nixpkgs/pkgs/development/python-modules/mitmproxy/default.nix @@ -0,0 +1,121 @@ +{ stdenv +, fetchFromGitHub +, buildPythonPackage +, isPy27 +, fetchpatch +# Mitmproxy requirements +, blinker +, brotli +, certifi +, click +, cryptography +, flask +, h2 +, hyperframe +, kaitaistruct +, ldap3 +, passlib +, protobuf +, pyasn1 +, pyopenssl +, pyparsing +, pyperclip +, ruamel_yaml +, setuptools +, sortedcontainers +, tornado +, urwid +, wsproto +, publicsuffix2 +, zstandard +# Additional check requirements +, beautifulsoup4 +, glibcLocales +, pytest +, requests +, asynctest +, parver +, pytest-asyncio +, hypothesis +}: + +buildPythonPackage rec { + pname = "mitmproxy"; + version = "5.2"; + disabled = isPy27; + + src = fetchFromGitHub { + owner = pname; + repo = pname; + rev = "v${version}"; + sha256 = "0ja0aqnfmkvns5qmd51hmrvbw8dnccaks30gxgzgcjgy30rj4brq"; + }; + + patches = [ + # Apply patch from upstream to make mitmproxy v5.2 compatible with urwid >v2.1.0 + (fetchpatch { + name = "urwid-lt-2.1.0.patch"; + url = "https://github.com/mitmproxy/mitmproxy/commit/ea9177217208fdf642ffc54f6b1f6507a199350c.patch"; + sha256 = "1z5r8izg5nvay01ywl3xc6in1vjfi9f144j057p3k5rzfliv49gg"; + }) + ]; + + postPatch = '' + # remove dependency constraints + sed 's/>=\([0-9]\.\?\)\+\( \?, \?<\([0-9]\.\?\)\+\)\?//' -i setup.py + ''; + + doCheck = (!stdenv.isDarwin); + + checkPhase = '' + export HOME=$(mktemp -d) + pytest -k 'not test_get_version' # expects a Git repository + ''; + + propagatedBuildInputs = [ + setuptools + # setup.py + blinker + brotli + certifi + click + cryptography + flask + h2 + hyperframe + kaitaistruct + ldap3 + passlib + protobuf + publicsuffix2 + pyasn1 + pyopenssl + pyparsing + pyperclip + ruamel_yaml + sortedcontainers + tornado + urwid + wsproto + zstandard + ]; + + checkInputs = [ + asynctest + beautifulsoup4 + flask + glibcLocales + hypothesis + parver + pytest + pytest-asyncio + requests + ]; + + meta = with stdenv.lib; { + description = "Man-in-the-middle proxy"; + homepage = "https://mitmproxy.org/"; + license = licenses.mit; + maintainers = with maintainers; [ fpletz kamilchm ]; + }; +} |