about summary refs log tree commit diff
path: root/pkgs/development/tools/uftrace/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/tools/uftrace/default.nix')
-rw-r--r--pkgs/development/tools/uftrace/default.nix34
1 files changed, 31 insertions, 3 deletions
diff --git a/pkgs/development/tools/uftrace/default.nix b/pkgs/development/tools/uftrace/default.nix
index beb0a511aacf6..8b8f9d80feb18 100644
--- a/pkgs/development/tools/uftrace/default.nix
+++ b/pkgs/development/tools/uftrace/default.nix
@@ -1,4 +1,17 @@
-{lib, stdenv, fetchFromGitHub}:
+{ lib
+, stdenv
+, fetchFromGitHub
+, pkg-config
+, pandoc
+, capstone
+, elfutils
+, libtraceevent
+, ncurses
+, withLuaJIT ? false
+, luajit
+, withPython ? false
+, python3
+}:
 
 stdenv.mkDerivation rec {
   pname = "uftrace";
@@ -11,8 +24,23 @@ stdenv.mkDerivation rec {
     sha256 = "sha256-JuBwyE6JH3CpJH863LbnWELUIIEKVaAcz8h8beeABGQ=";
   };
 
+  nativeBuildInputs = [ pkg-config pandoc ];
+  buildInputs =
+    [ capstone elfutils libtraceevent ncurses ]
+    ++ lib.optional withLuaJIT luajit
+    ++ lib.optional withPython python3;
+
+  # libmcount.so dlopens python and luajit, make sure they're in the RUNPATH
+  preBuild =
+    let
+      libs = lib.optional withLuaJIT "luajit" ++ lib.optional withPython "python3-embed";
+    in
+    lib.optionalString (withLuaJIT || withPython) ''
+      makeFlagsArray+=(LDFLAGS_lib="$(pkg-config --libs ${lib.concatStringsSep " " libs})")
+    '';
+
   postUnpack = ''
-        patchShebangs .
+    patchShebangs .
   '';
 
   meta = {
@@ -21,6 +49,6 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/namhyung/uftrace";
     license = lib.licenses.gpl2;
     platforms = lib.platforms.linux;
-    maintainers = [lib.maintainers.nthorne];
+    maintainers = [ lib.maintainers.nthorne ];
   };
 }