1{ stdenv
2, lib
3, python
4, buildPythonPackage
5, fetchPypi
6, radare2
7, coreutils
8}:
9
10buildPythonPackage rec {
11 pname = "r2pipe";
12 version = "1.7.3";
13
14 postPatch = let
15 r2lib = "${lib.getOutput "lib" radare2}/lib";
16 libr_core = "${r2lib}/libr_core${stdenv.hostPlatform.extensions.sharedLibrary}";
17 in
18 ''
19 # Fix find_library, can be removed after
20 # https://github.com/NixOS/nixpkgs/issues/7307 is resolved.
21 substituteInPlace r2pipe/native.py --replace 'find_library("r_core")' "'${libr_core}'"
22
23 # Fix the default r2 executable
24 substituteInPlace r2pipe/open_sync.py --replace 'r2e = "radare2"' "r2e = '${radare2}/bin/radare2'"
25 substituteInPlace r2pipe/open_base.py --replace 'which("radare2")' "'${radare2}/bin/radare2'"
26 '';
27
28 src = fetchPypi {
29 inherit pname version;
30 sha256 = "sha256-zhKV0+467xFpzmSDswIWPEGpks0X/F+ecBWPWpvakik=";
31 };
32
33 # Tiny sanity check to make sure r2pipe finds radare2 (since r2pipe doesn't
34 # provide its own tests):
35 # Analyze ls with the fastest analysis and do nothing with the result.
36 postCheck = ''
37 ${python.interpreter} <<EOF
38 import r2pipe
39 r2 = r2pipe.open('${coreutils}/bin/ls')
40 r2.cmd('a')
41 EOF
42 '';
43
44 meta = with lib; {
45 description = "Interact with radare2";
46 homepage = "https://github.com/radare/radare2-r2pipe";
47 license = licenses.mit;
48 maintainers = with maintainers; [ timokau ];
49 };
50}