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