1{
2 lib,
3 buildPythonPackage,
4 cxxfilt,
5 fetchPypi,
6 msgpack,
7 pyasn1,
8 pyasn1-modules,
9 pycparser,
10 pyqt5,
11 pyqtwebengine,
12 pythonOlder,
13 withGui ? false,
14 wrapQtAppsHook,
15 setuptools,
16}:
17
18buildPythonPackage rec {
19 pname = "vivisect";
20 version = "1.2.1";
21 pyproject = true;
22
23 disabled = pythonOlder "3.8";
24
25 src = fetchPypi {
26 inherit pname version;
27 hash = "sha256-zBWrVBub48rYBg7k9CDmgCWPpPz3R38/mtUCM1P3Mpk=";
28 };
29
30 pythonRelaxDeps = [
31 "cxxfilt"
32 "msgpack"
33 "pyasn1"
34 "pyasn1-modules"
35 ];
36
37 build-system = [ setuptools ];
38
39 nativeBuildInputs = [
40 wrapQtAppsHook
41 ];
42
43 dependencies = [
44 pyasn1
45 pyasn1-modules
46 cxxfilt
47 msgpack
48 pycparser
49 ]
50 ++ lib.optionals (withGui) optional-dependencies.gui;
51
52 optional-dependencies.gui = [
53 pyqt5
54 pyqtwebengine
55 ];
56
57 postFixup = ''
58 wrapQtApp $out/bin/vivbin
59 '';
60
61 # Tests requires another repo for test files
62 doCheck = false;
63
64 pythonImportsCheck = [ "vivisect" ];
65
66 meta = with lib; {
67 description = "Python disassembler, debugger, emulator, and static analysis framework";
68 homepage = "https://github.com/vivisect/vivisect";
69 changelog = "https://github.com/vivisect/vivisect/blob/v${version}/CHANGELOG.rst";
70 license = licenses.asl20;
71 maintainers = [ ];
72 };
73}