diff options
Diffstat (limited to 'nixpkgs/pkgs/os-specific/linux/bcc/default.nix')
-rw-r--r-- | nixpkgs/pkgs/os-specific/linux/bcc/default.nix | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/os-specific/linux/bcc/default.nix b/nixpkgs/pkgs/os-specific/linux/bcc/default.nix new file mode 100644 index 000000000000..5a40368f3ceb --- /dev/null +++ b/nixpkgs/pkgs/os-specific/linux/bcc/default.nix @@ -0,0 +1,78 @@ +{ stdenv, fetchFromGitHub, makeWrapper, cmake, llvmPackages, kernel +, flex, bison, elfutils, python, luajit, netperf, iperf, libelf +, systemtap +}: + +python.pkgs.buildPythonApplication rec { + version = "0.7.0"; + name = "bcc-${version}"; + + src = fetchFromGitHub { + owner = "iovisor"; + repo = "bcc"; + rev = "v${version}"; + sha256 = "1ww7l0chx2ivw9d2ahxjyhxmh6hz3w5z69r4lz02f0361rnrvk7f"; + }; + + format = "other"; + + buildInputs = [ + llvmPackages.llvm llvmPackages.clang-unwrapped kernel + elfutils luajit netperf iperf + systemtap.stapBuild + ]; + + patches = [ + # This is needed until we fix + # https://github.com/NixOS/nixpkgs/issues/40427 + ./fix-deadlock-detector-import.patch + ]; + + nativeBuildInputs = [ makeWrapper cmake flex bison ] + # libelf is incompatible with elfutils-libelf + ++ stdenv.lib.filter (x: x != libelf) kernel.moduleBuildDependencies; + + cmakeFlags = [ + "-DBCC_KERNEL_MODULES_DIR=${kernel.dev}/lib/modules" + "-DREVISION=${version}" + "-DENABLE_USDT=ON" + "-DENABLE_CPP_API=ON" + ]; + + postPatch = '' + substituteAll ${./libbcc-path.patch} ./libbcc-path.patch + patch -p1 < libbcc-path.patch + ''; + + propagatedBuildInputs = [ + python.pkgs.netaddr + ]; + + postInstall = '' + mkdir -p $out/bin $out/share + rm -r $out/share/bcc/tools/old + mv $out/share/bcc/tools/doc $out/share + mv $out/share/bcc/man $out/share/ + + find $out/share/bcc/tools -type f -executable -print0 | \ + while IFS= read -r -d ''$'\0' f; do + bin=$out/bin/$(basename $f) + if [ ! -e $bin ]; then + ln -s $f $bin + fi + done + + sed -i -e "s!lib=.*!lib=$out/bin!" $out/bin/{java,ruby,node,python}gc + ''; + + postFixup = '' + wrapPythonProgramsIn "$out/share/bcc/tools" "$out $pythonPath" + ''; + + meta = with stdenv.lib; { + description = "Dynamic Tracing Tools for Linux"; + homepage = https://iovisor.github.io/bcc/; + license = licenses.asl20; + maintainers = with maintainers; [ ragge mic92 ]; + }; +} |