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 ] ++ lib.optionals (withGui) optional-dependencies.gui;
50
51 optional-dependencies.gui = [
52 pyqt5
53 pyqtwebengine
54 ];
55
56 postFixup = ''
57 wrapQtApp $out/bin/vivbin
58 '';
59
60 # Tests requires another repo for test files
61 doCheck = false;
62
63 pythonImportsCheck = [ "vivisect" ];
64
65 meta = with lib; {
66 description = "Python disassembler, debugger, emulator, and static analysis framework";
67 homepage = "https://github.com/vivisect/vivisect";
68 changelog = "https://github.com/vivisect/vivisect/blob/v${version}/CHANGELOG.rst";
69 license = licenses.asl20;
70 maintainers = [ ];
71 };
72}