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.
This commit is contained in:
Sam Schweigel 2024-07-10 12:54:07 -07:00
parent 447ca95585
commit 06cbcd0501
2 changed files with 36 additions and 3 deletions

View File

@ -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 ];
};
}

View File

@ -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 { };