summary refs log tree commit diff
path: root/pkgs/os-specific/linux/kernel/perf.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/os-specific/linux/kernel/perf.nix')
-rw-r--r--pkgs/os-specific/linux/kernel/perf.nix37
1 files changed, 37 insertions, 0 deletions
diff --git a/pkgs/os-specific/linux/kernel/perf.nix b/pkgs/os-specific/linux/kernel/perf.nix
new file mode 100644
index 000000000000..ba32362b6e8b
--- /dev/null
+++ b/pkgs/os-specific/linux/kernel/perf.nix
@@ -0,0 +1,37 @@
+{ stdenv, kernel, elfutils, python, perl, newt, slang, asciidoc, xmlto
+, docbook_xsl, docbook_xml_dtd_45, libxslt }:
+
+stdenv.mkDerivation {
+  name = "perf-linux-${kernel.version}";
+
+  inherit (kernel) src;
+
+  preConfigure = ''
+    cd tools/perf
+    sed -i s,/usr/include/elfutils,$elfutils/include/elfutils, Makefile
+    export makeFlags="DESTDIR=$out $makeFlags"
+  '';
+
+  # perf refers both to newt and slang
+  buildNativeInputs = [ asciidoc xmlto docbook_xsl docbook_xml_dtd_45 libxslt ];
+  buildInputs = [ elfutils python perl newt slang ];
+
+  installFlags = "install install-man ASCIIDOC8=1";
+
+  inherit elfutils;
+
+  crossAttrs = {
+    /* I don't want cross-python or cross-perl -
+       I don't know if cross-python even works */
+    propagatedBuildInputs = [ elfutils.hostDrv newt.hostDrv ];
+    makeFlags = "CROSS_COMPILE=${stdenv.cross.config}-";
+    elfutils = elfutils.hostDrv;
+  };
+
+  meta = {
+    homepage = https://perf.wiki.kernel.org/;
+    description = "Linux tools to profile with performance counters";
+    maintainers = with stdenv.lib.maintainers; [viric];
+    platforms = with stdenv.lib.platforms; linux;
+  };
+}