1{ lib
2, ailment
3, archinfo
4, buildPythonPackage
5, cachetools
6, capstone
7, cffi
8, claripy
9, cle
10, cppheaderparser
11, dpkt
12, fetchFromGitHub
13, GitPython
14, itanium_demangler
15, mulpyplexer
16, networkx
17, progressbar2
18, protobuf
19, psutil
20, pycparser
21, pythonOlder
22, pyvex
23, sqlalchemy
24, rpyc
25, sortedcontainers
26, unicorn
27}:
28
29let
30 # Only the pinned release in setup.py works properly
31 unicorn' = unicorn.overridePythonAttrs (old: rec {
32 pname = "unicorn";
33 version = "1.0.2-rc4";
34 src = fetchFromGitHub {
35 owner = "unicorn-engine";
36 repo = pname;
37 rev = version;
38 sha256 = "17nyccgk7hpc4hab24yn57f1xnmr7kq4px98zbp2bkwcrxny8gwy";
39 };
40 });
41in
42
43buildPythonPackage rec {
44 pname = "angr";
45 version = "9.0.6885";
46 disabled = pythonOlder "3.6";
47
48 src = fetchFromGitHub {
49 owner = pname;
50 repo = pname;
51 rev = "v${version}";
52 sha256 = "sha256-+d1CtouaGv2GussG3QlQMzX0qcmJht9V3QW8RwH6da8=";
53 };
54
55 propagatedBuildInputs = [
56 ailment
57 archinfo
58 cachetools
59 capstone
60 cffi
61 claripy
62 cle
63 cppheaderparser
64 dpkt
65 GitPython
66 itanium_demangler
67 mulpyplexer
68 networkx
69 progressbar2
70 protobuf
71 psutil
72 sqlalchemy
73 pycparser
74 pyvex
75 sqlalchemy
76 rpyc
77 sortedcontainers
78 unicorn'
79 ];
80
81 # Tests have additional requirements, e.g., pypcode and angr binaries
82 # cle is executing the tests with the angr binaries
83 doCheck = false;
84
85 # See http://angr.io/api-doc/
86 pythonImportsCheck = [ "angr" "claripy" "cle" "pyvex" "archinfo" ];
87
88 meta = with lib; {
89 description = "Powerful and user-friendly binary analysis platform";
90 homepage = "https://angr.io/";
91 license = with licenses; [ bsd2 ];
92 maintainers = with maintainers; [ fab ];
93 };
94}