1{ lib
2, buildPythonPackage
3, cxxfilt
4, fetchPypi
5, msgpack
6, pyasn1
7, pyasn1-modules
8, pycparser
9, pyqt5
10, pythonRelaxDepsHook
11, pyqtwebengine
12, pythonOlder
13, withGui ? false
14, wrapQtAppsHook
15}:
16
17buildPythonPackage rec {
18 pname = "vivisect";
19 version = "1.1.1";
20 format = "setuptools";
21
22 disabled = pythonOlder "3.6";
23
24 src = fetchPypi {
25 inherit pname version;
26 hash = "sha256-URRBEZelw4s43zqtb/GrLxIksvrqHbqQWntT9jVonhU=";
27 };
28
29 pythonRelaxDeps = [
30 "cxxfilt"
31 "pyasn1"
32 "pyasn1-modules"
33 ];
34
35 nativeBuildInputs = [
36 pythonRelaxDepsHook
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 = "Python disassembler, debugger, emulator, and static analysis framework";
66 homepage = "https://github.com/vivisect/vivisect";
67 changelog = "https://github.com/vivisect/vivisect/blob/v${version}/CHANGELOG.rst";
68 license = licenses.asl20;
69 maintainers = [ ];
70 };
71}