From 06cbcd0501fbaf28a60dd00d15a66abbcbd5de05 Mon Sep 17 00:00:00 2001 From: Sam Schweigel Date: Wed, 10 Jul 2024 12:54:07 -0700 Subject: [PATCH] uftrace: add optional dependencies Build uftrace with all optional dependencies, save for libunwind (for debugging uftrace only). Link with Python and LuaJIT only in the "uftraceFull" version to keep the closure size down. --- pkgs/development/tools/uftrace/default.nix | 34 ++++++++++++++++++++-- pkgs/top-level/all-packages.nix | 5 ++++ 2 files changed, 36 insertions(+), 3 deletions(-) diff --git a/pkgs/development/tools/uftrace/default.nix b/pkgs/development/tools/uftrace/default.nix index beb0a511aacf..8b8f9d80feb1 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 ]; }; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 6cfa6a4f74f3..7291546d0def 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -13786,6 +13786,11 @@ with pkgs; uftrace = callPackage ../development/tools/uftrace { }; + uftraceFull = uftrace.override { + withLuaJIT = true; + withPython = true; + }; + uftpd = callPackage ../servers/ftp/uftpd {}; uget = callPackage ../tools/networking/uget { };