1{ lib
2, buildPythonPackage
3, isPy3k
4, fetchPypi
5, wrapQtAppsHook
6
7# propagates
8, pyasn1
9, pyasn1-modules
10, cxxfilt
11, msgpack
12, pycparser
13
14# extras: gui
15, pyqt5
16, pyqtwebengine
17
18# knobs
19, withGui ? false
20}:
21
22buildPythonPackage rec {
23 pname = "vivisect";
24 version = "1.0.8";
25
26 src = fetchPypi {
27 inherit pname version;
28 sha256 = "sha256-Y8y6sAQJa9baPPdhtuR9Jv1tJkNWJsS1hJ1lknkHWU4=";
29 };
30
31 postPatch = ''
32 substituteInPlace setup.py \
33 --replace 'cxxfilt>=0.2.1,<0.3.0' 'cxxfilt'
34 '';
35
36 nativeBuildInputs = [
37 wrapQtAppsHook
38 ];
39
40 propagatedBuildInputs = [
41 pyasn1
42 pyasn1-modules
43 cxxfilt
44 msgpack
45 pycparser
46 ] ++ lib.optionals (withGui) passthru.optional-dependencies.gui;
47
48 passthru.optional-dependencies.gui = [
49 pyqt5
50 pyqtwebengine
51 ];
52
53 postFixup = ''
54 wrapQtApp $out/bin/vivbin
55 '';
56
57 # requires another repo for test files
58 doCheck = false;
59
60 pythonImportsCheck = [
61 "vivisect"
62 ];
63
64 meta = with lib; {
65 description = "Pure python disassembler, debugger, emulator, and static analysis framework";
66 homepage = "https://github.com/vivisect/vivisect";
67 license = licenses.asl20;
68 maintainers = teams.determinatesystems.members;
69 };
70}