1{
2 lib,
3 stdenv,
4 bitstring,
5 buildPythonPackage,
6 cffi,
7 fetchPypi,
8 pycparser,
9 pythonOlder,
10 setuptools,
11}:
12
13buildPythonPackage rec {
14 pname = "pyvex";
15 version = "9.2.112";
16 pyproject = true;
17
18 disabled = pythonOlder "3.11";
19
20 src = fetchPypi {
21 inherit pname version;
22 hash = "sha256-IxrH8Ej1PmyQXtS7CROvxopf9tmjKiOYqwfAc6mLMnw=";
23 };
24
25 build-system = [ setuptools ];
26
27 dependencies = [
28 bitstring
29 cffi
30 pycparser
31 ];
32
33 postPatch = lib.optionalString stdenv.isDarwin ''
34 substituteInPlace vex/Makefile-gcc \
35 --replace-fail '/usr/bin/ar' 'ar'
36 '';
37
38 setupPyBuildFlags = lib.optionals stdenv.isLinux [
39 "--plat-name"
40 "linux"
41 ];
42
43 preBuild = ''
44 export CC=${stdenv.cc.targetPrefix}cc
45 substituteInPlace pyvex_c/Makefile \
46 --replace-fail 'AR=ar' 'AR=${stdenv.cc.targetPrefix}ar'
47 '';
48
49 # No tests are available on PyPI, GitHub release has tests
50 # Switch to GitHub release after all angr parts are present
51 doCheck = false;
52
53 pythonImportsCheck = [ "pyvex" ];
54
55 meta = with lib; {
56 description = "Python interface to libVEX and VEX IR";
57 homepage = "https://github.com/angr/pyvex";
58 license = with licenses; [
59 bsd2
60 gpl3Plus
61 lgpl3Plus
62 ];
63 maintainers = with maintainers; [ fab ];
64 };
65}