1{
2 lib,
3 stdenv,
4 qmake,
5 qtbase,
6 perl,
7 php,
8 kcachegrind,
9 wrapQtAppsHook,
10}:
11
12stdenv.mkDerivation {
13 pname = "qcachegrind";
14 version = kcachegrind.version;
15
16 src = kcachegrind.src;
17
18 buildInputs = [
19 qtbase
20 perl
21 php
22 ];
23
24 nativeBuildInputs = [
25 qmake
26 wrapQtAppsHook
27 ];
28
29 dontWrapQtApps = true;
30
31 postInstall =
32 ''
33 mkdir -p $out/bin
34 cp -p converters/dprof2calltree $out/bin/dprof2calltree
35 cp -p converters/memprof2calltree $out/bin/memprof2calltree
36 cp -p converters/op2calltree $out/bin/op2calltree
37 cp -p converters/pprof2calltree $out/bin/pprof2calltree
38 chmod -R +x $out/bin/
39 ''
40 + (
41 if stdenv.hostPlatform.isDarwin then
42 ''
43 mkdir -p $out/Applications
44 cp cgview/cgview.app/Contents/MacOS/cgview $out/bin
45 cp -a qcachegrind/qcachegrind.app $out/Applications
46 ''
47 else
48 ''
49 install qcachegrind/qcachegrind cgview/cgview -t "$out/bin"
50 install -Dm644 qcachegrind/qcachegrind.desktop -t "$out/share/applications"
51 install -Dm644 kcachegrind/32-apps-kcachegrind.png "$out/share/icons/hicolor/32x32/apps/kcachegrind.png"
52 install -Dm644 kcachegrind/48-apps-kcachegrind.png "$out/share/icons/hicolor/48x48/apps/kcachegrind.png"
53 ''
54 );
55
56 preFixup = ''
57 wrapQtApp "$out/bin/qcachegrind"
58 '';
59
60 meta = with lib; {
61 broken = stdenv.hostPlatform.isDarwin;
62 description = "Qt GUI to visualize profiling data";
63 license = licenses.gpl2Plus;
64 platforms = platforms.unix;
65 maintainers = with maintainers; [ periklis ];
66 };
67}