1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
{
lib,
buildPythonPackage,
fetchFromGitHub,
filelock,
ghidra-bridge,
jfx-bridge,
networkx,
platformdirs,
ply,
prompt-toolkit,
psutil,
pycparser,
pyhidra,
pytestCheckHook,
setuptools,
toml,
tqdm,
writableTmpDirAsHomeHook,
}:
let
# Binary files from https://github.com/binsync/bs-artifacts (only used for testing and only here)
binaries = fetchFromGitHub {
owner = "binsync";
repo = "bs-artifacts";
rev = "514c2d6ef1875435c9d137bb5d99b6fc74063817";
hash = "sha256-P7+BTJgdC9W8cC/7xQduFYllF+0ds1dSlm59/BFvZ2g=";
};
in
buildPythonPackage rec {
pname = "libbs";
version = "2.16.5";
pyproject = true;
src = fetchFromGitHub {
owner = "binsync";
repo = "libbs";
tag = "v${version}";
hash = "sha256-JE/eDs9vOiislIrsgBUx36XFenxgcoLtHA/veOMj2IY=";
};
build-system = [ setuptools ];
dependencies = [
filelock
ghidra-bridge
jfx-bridge
networkx
platformdirs
ply
prompt-toolkit
psutil
pycparser
pyhidra
toml
tqdm
];
nativeCheckInputs = [
pytestCheckHook
writableTmpDirAsHomeHook
];
# Place test binaries in place
preCheck = ''
export HOME=$TMPDIR
mkdir -p $HOME/bs-artifacts/binaries
cp -r ${binaries} $HOME/bs-artifacts/binaries
export TEST_BINARIES_DIR=$HOME/bs-artifacts/binaries
'';
pythonImportsCheck = [ "libbs" ];
disabledTests = [
"test_change_watcher_plugin_cli"
"test_ghidra_artifact_watchers"
"TestHeadlessInterfaces"
];
meta = {
description = "Library for writing plugins in any decompiler: includes API lifting, common data formatting, and GUI abstraction";
homepage = "https://github.com/binsync/libbs";
changelog = "https://github.com/binsync/libbs/releases/tag/${src.tag}";
license = lib.licenses.bsd2;
maintainers = with lib.maintainers; [ scoder12 ];
};
}
|