anki-bin: 24.06.3 -> 24.11 (#360722)
[NixPkgs.git] / pkgs / development / python-modules / pwntools / default.nix
blob228b89890f9643b12fc064dc700f5d2c0d250e59
2   lib,
3   stdenv,
4   buildPythonPackage,
5   debugger,
6   fetchPypi,
7   capstone,
8   colored-traceback,
9   intervaltree,
10   mako,
11   packaging,
12   paramiko,
13   psutil,
14   pyelftools,
15   pygments,
16   pyserial,
17   pysocks,
18   python-dateutil,
19   requests,
20   ropgadget,
21   rpyc,
22   setuptools,
23   six,
24   sortedcontainers,
25   unicorn,
26   unix-ar,
27   zstandard,
28   installShellFiles,
31 let
32   debuggerName = lib.strings.getName debugger;
34 buildPythonPackage rec {
35   pname = "pwntools";
36   version = "4.13.1";
37   pyproject = true;
39   src = fetchPypi {
40     inherit pname version;
41     hash = "sha256-szInJftQMdwwll44VQc2CNmr900qv5enLGfUSq3843w=";
42   };
44   postPatch = ''
45     # Upstream hardcoded the check for the command `gdb-multiarch`;
46     # Forcefully use the provided debugger, as `gdb` (hence `pwndbg`) is built with multiarch in `nixpkgs`.
47     sed -i 's/gdb-multiarch/${debuggerName}/' pwnlib/gdb.py
48   '';
50   nativeBuildInputs = [ installShellFiles ];
52   build-system = [ setuptools ];
54   pythonRemoveDeps = [ "pip" ];
56   propagatedBuildInputs = [
57     capstone
58     colored-traceback
59     intervaltree
60     mako
61     packaging
62     paramiko
63     psutil
64     pyelftools
65     pygments
66     pyserial
67     pysocks
68     python-dateutil
69     requests
70     ropgadget
71     rpyc
72     six
73     sortedcontainers
74     unicorn
75     unix-ar
76     zstandard
77   ];
79   doCheck = false; # no setuptools tests for the package
81   postInstall = ''
82     installShellCompletion --bash extra/bash_completion.d/shellcraft
83   '';
85   postFixup = lib.optionalString (!stdenv.hostPlatform.isDarwin) ''
86     mkdir -p "$out/bin"
87     makeWrapper "${debugger}/bin/${debuggerName}" "$out/bin/pwntools-gdb"
88   '';
90   pythonImportsCheck = [ "pwn" ];
92   meta = with lib; {
93     description = "CTF framework and exploit development library";
94     homepage = "https://pwntools.com";
95     changelog = "https://github.com/Gallopsled/pwntools/releases/tag/${version}";
96     license = licenses.mit;
97     maintainers = with maintainers; [
98       bennofs
99       kristoff3r
100       pamplemousse
101     ];
102   };