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