1{
2 lib,
3 stdenv,
4 fetchFromGitHub,
5 cmake,
6 pkg-config,
7 boost,
8 capstone_4,
9 double-conversion,
10 graphviz,
11 qtxmlpatterns,
12 qttools,
13 qtbase,
14 wrapQtAppsHook,
15 testers,
16 nix-update-script,
17}:
18
19stdenv.mkDerivation (finalAttrs: {
20 pname = "edb";
21 version = "1.5.0";
22
23 src = fetchFromGitHub {
24 owner = "eteran";
25 repo = "edb-debugger";
26 tag = finalAttrs.version;
27 fetchSubmodules = true;
28 hash = "sha256-ALhA/odVwUQHKuOZ1W/i/6L7da/yitdpBsx2kz2ySQE=";
29 };
30
31 nativeBuildInputs = [
32 cmake
33 pkg-config
34 wrapQtAppsHook
35 qttools
36 ];
37
38 buildInputs = [
39 qtbase
40 boost.dev
41 capstone_4
42 double-conversion
43 graphviz
44 qtxmlpatterns
45 ];
46
47 cmakeFlags = [
48 (lib.cmakeFeature "DEFAULT_PLUGIN_DIR" "${placeholder "out"}/lib/edb")
49 ];
50
51 postPatch = ''
52 # The build script checks for the presence of .git to determine whether
53 # submodules were fetched and will throw an error if it's not there.
54 # Avoid using leaveDotGit in the fetchFromGitHub options as it is non-deterministic.
55 mkdir -p src/qhexview/.git lib/gdtoa-desktop/.git
56 '';
57
58 passthru = {
59 tests.version = testers.testVersion {
60 package = finalAttrs.finalPackage;
61 command = "env QT_QPA_PLATFORM=minimal ${lib.getExe finalAttrs.finalPackage} --version";
62 };
63 updateScript = nix-update-script { };
64 };
65
66 meta = {
67 description = "Cross platform AArch32/x86/x86-64 debugger";
68 mainProgram = "edb";
69 homepage = "https://github.com/eteran/edb-debugger";
70 license = lib.licenses.gpl2Plus;
71 maintainers = with lib.maintainers; [
72 lihop
73 maxxk
74 ];
75 platforms = [ "x86_64-linux" ];
76 };
77})