1{
2 lib,
3 stdenv,
4 ailment,
5 archinfo,
6 buildPythonPackage,
7 cachetools,
8 capstone,
9 cffi,
10 claripy,
11 cle,
12 cppheaderparser,
13 cxxheaderparser,
14 dpkt,
15 fetchFromGitHub,
16 gitpython,
17 itanium-demangler,
18 mulpyplexer,
19 nampa,
20 networkx,
21 progressbar2,
22 protobuf,
23 psutil,
24 pycparser,
25 pyformlang,
26 pydemumble,
27 pythonOlder,
28 pyvex,
29 rich,
30 rpyc,
31 setuptools,
32 sortedcontainers,
33 sqlalchemy,
34 sympy,
35 unicorn-angr,
36 unique-log-filter,
37}:
38
39buildPythonPackage rec {
40 pname = "angr";
41 version = "9.2.154";
42 pyproject = true;
43
44 disabled = pythonOlder "3.11";
45
46 src = fetchFromGitHub {
47 owner = "angr";
48 repo = "angr";
49 tag = "v${version}";
50 hash = "sha256-aOgZXHk6GTWZAEraZQahEXUYs8LWAWv1n9GfX+2XTPU=";
51 };
52
53 pythonRelaxDeps = [ "capstone" ];
54
55 build-system = [ setuptools ];
56
57 dependencies = [
58 ailment
59 archinfo
60 cachetools
61 capstone
62 cffi
63 claripy
64 cle
65 cppheaderparser
66 cxxheaderparser
67 dpkt
68 gitpython
69 itanium-demangler
70 mulpyplexer
71 nampa
72 networkx
73 progressbar2
74 protobuf
75 psutil
76 pycparser
77 pyformlang
78 pydemumble
79 pyvex
80 rich
81 rpyc
82 sortedcontainers
83 sympy
84 unique-log-filter
85 ];
86
87 optional-dependencies = {
88 angrdb = [ sqlalchemy ];
89 unicorn = [ unicorn-angr ];
90 };
91
92 setupPyBuildFlags = lib.optionals stdenv.hostPlatform.isLinux [
93 "--plat-name"
94 "linux"
95 ];
96
97 # Tests have additional requirements, e.g., pypcode and angr binaries
98 # cle is executing the tests with the angr binaries
99 doCheck = false;
100
101 pythonImportsCheck = [
102 "angr"
103 "claripy"
104 "cle"
105 "pyvex"
106 "archinfo"
107 ];
108
109 meta = with lib; {
110 description = "Powerful and user-friendly binary analysis platform";
111 homepage = "https://angr.io/";
112 license = licenses.bsd2;
113 maintainers = with maintainers; [ fab ];
114 };
115}