diff options
author | Dominique Martinet <asmadeus@codewreck.org> | 2024-05-10 21:30:53 +0900 |
---|---|---|
committer | Dominique Martinet <asmadeus@codewreck.org> | 2024-05-12 19:05:44 +0900 |
commit | e9531dec25324e179b04f5e763e64566e529a2e2 (patch) | |
tree | 4c0e78a7cfdf79fb3bfd878f15e705ef15dbf074 /pkgs/by-name/bc | |
parent | 6cc30987ce014d0b0902e0a52f6b1ee51d96ed7c (diff) |
bcc: migrate to by-name
The package is left in all-packages to allow setting llvmPackages more easily
Diffstat (limited to 'pkgs/by-name/bc')
-rw-r--r-- | pkgs/by-name/bc/bcc/absolute-ausyscall.patch | 43 | ||||
-rw-r--r-- | pkgs/by-name/bc/bcc/fix-deadlock-detector-import.patch | 14 | ||||
-rw-r--r-- | pkgs/by-name/bc/bcc/libbcc-path.patch | 11 | ||||
-rw-r--r-- | pkgs/by-name/bc/bcc/package.nix | 122 |
4 files changed, 190 insertions, 0 deletions
diff --git a/pkgs/by-name/bc/bcc/absolute-ausyscall.patch b/pkgs/by-name/bc/bcc/absolute-ausyscall.patch new file mode 100644 index 0000000000000..7480e9c5d97b3 --- /dev/null +++ b/pkgs/by-name/bc/bcc/absolute-ausyscall.patch @@ -0,0 +1,43 @@ +From 01e793163231c5085afced37471df32b94a313f5 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= <joerg@thalheim.io> +Date: Thu, 30 Dec 2021 06:34:41 +0100 +Subject: [PATCH] absolute ausyscall +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Jörg Thalheim <joerg@thalheim.io> +--- + libbpf-tools/syscall_helpers.c | 2 +- + src/python/bcc/syscall.py | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/libbpf-tools/syscall_helpers.c b/libbpf-tools/syscall_helpers.c +index e114a08f..62adea78 100644 +--- a/libbpf-tools/syscall_helpers.c ++++ b/libbpf-tools/syscall_helpers.c +@@ -47,7 +47,7 @@ void init_syscall_names(void) + int err; + FILE *f; + +- f = popen("ausyscall --dump 2>/dev/null", "r"); ++ f = popen("@ausyscall@ --dump 2>/dev/null", "r"); + if (!f) { + warn("popen: ausyscall --dump: %s\n", strerror(errno)); + return; +diff --git a/src/python/bcc/syscall.py b/src/python/bcc/syscall.py +index 1346b4e8..e7e29a11 100644 +--- a/src/python/bcc/syscall.py ++++ b/src/python/bcc/syscall.py +@@ -376,7 +376,7 @@ def _parse_syscall(line): + try: + # Skip the first line, which is a header. The rest of the lines are simply + # SYSCALL_NUM\tSYSCALL_NAME pairs. +- out = subprocess.check_output(['ausyscall', '--dump'], stderr=subprocess.STDOUT) ++ out = subprocess.check_output(['@ausyscall@', '--dump'], stderr=subprocess.STDOUT) + # remove the first line of expected output + out = out.split(b'\n',1)[1] + syscalls = dict(map(_parse_syscall, out.strip().split(b'\n'))) +-- +2.34.0 + diff --git a/pkgs/by-name/bc/bcc/fix-deadlock-detector-import.patch b/pkgs/by-name/bc/bcc/fix-deadlock-detector-import.patch new file mode 100644 index 0000000000000..1c422635f4fef --- /dev/null +++ b/pkgs/by-name/bc/bcc/fix-deadlock-detector-import.patch @@ -0,0 +1,14 @@ +--- source.org/tools/deadlock.py 1980-01-02 00:00:00.000000000 +0000 ++++ source/tools/deadlock.py 2018-05-29 13:57:11.807126673 +0100 +@@ -44,9 +44,8 @@ + # + # 01-Feb-2017 Kenny Yu Created this. + +-from __future__ import ( +- absolute_import, division, unicode_literals, print_function +-) ++from __future__ import absolute_import, division, unicode_literals, print_function ++ + from bcc import BPF + from collections import defaultdict + import argparse diff --git a/pkgs/by-name/bc/bcc/libbcc-path.patch b/pkgs/by-name/bc/bcc/libbcc-path.patch new file mode 100644 index 0000000000000..187bb3aadd00d --- /dev/null +++ b/pkgs/by-name/bc/bcc/libbcc-path.patch @@ -0,0 +1,11 @@ +--- source.org/src/python/bcc/libbcc.py 2018-05-13 08:35:06.850522883 +0100 ++++ source/src/python/bcc/libbcc.py 2018-05-13 08:36:24.602733151 +0100 +@@ -14,7 +14,7 @@ + + import ctypes as ct + +-lib = ct.CDLL("libbcc.so.0", use_errno=True) ++lib = ct.CDLL("@out@/lib/libbcc.so.0", use_errno=True) + + # keep in sync with bpf_common.h + lib.bpf_module_create_b.restype = ct.c_void_p diff --git a/pkgs/by-name/bc/bcc/package.nix b/pkgs/by-name/bc/bcc/package.nix new file mode 100644 index 0000000000000..3cf9b26f4fdda --- /dev/null +++ b/pkgs/by-name/bc/bcc/package.nix @@ -0,0 +1,122 @@ +{ audit +, bash +, bison +, cmake +, elfutils +, fetchFromGitHub +, flex +, iperf +, lib +, libbpf +, llvmPackages +, luajit +, makeWrapper +, netperf +, nixosTests +, python3 +, stdenv +, zip +}: + +python3.pkgs.buildPythonApplication rec { + pname = "bcc"; + version = "0.30.0"; + + disabled = !stdenv.isLinux; + + src = fetchFromGitHub { + owner = "iovisor"; + repo = "bcc"; + rev = "v${version}"; + hash = "sha256-ngGLGfLv2prnjhgaRPf8ea3oyy4129zGodR0Yz1QtCw="; + }; + format = "other"; + + buildInputs = with llvmPackages; [ + llvm llvm.dev libclang + elfutils luajit netperf iperf + flex bash libbpf + ]; + + patches = [ + # This is needed until we fix + # https://github.com/NixOS/nixpkgs/issues/40427 + ./fix-deadlock-detector-import.patch + ]; + + propagatedBuildInputs = [ python3.pkgs.netaddr ]; + nativeBuildInputs = [ + bison + cmake + flex + llvmPackages.llvm.dev + makeWrapper + python3.pkgs.setuptools + zip + ]; + + cmakeFlags = [ + "-DBCC_KERNEL_MODULES_DIR=/run/booted-system/kernel-modules/lib/modules" + "-DREVISION=${version}" + "-DENABLE_USDT=ON" + "-DENABLE_CPP_API=ON" + "-DCMAKE_USE_LIBBPF_PACKAGE=ON" + "-DENABLE_LIBDEBUGINFOD=OFF" + ]; + + # to replace this executable path: + # https://github.com/iovisor/bcc/blob/master/src/python/bcc/syscall.py#L384 + ausyscall = "${audit}/bin/ausyscall"; + + postPatch = '' + substituteAll ${./libbcc-path.patch} ./libbcc-path.patch + patch -p1 < libbcc-path.patch + + substituteAll ${./absolute-ausyscall.patch} ./absolute-ausyscall.patch + patch -p1 < absolute-ausyscall.patch + + # https://github.com/iovisor/bcc/issues/3996 + substituteInPlace src/cc/libbcc.pc.in \ + --replace '$'{exec_prefix}/@CMAKE_INSTALL_LIBDIR@ @CMAKE_INSTALL_FULL_LIBDIR@ + ''; + + preInstall = '' + # required for setuptool during install + export PYTHONPATH=$out/${python3.sitePackages}:$PYTHONPATH + ''; + 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 + substituteInPlace "$f" \ + --replace '$(dirname $0)/lib' "$out/share/bcc/tools/lib" + done + + sed -i -e "s!lib=.*!lib=$out/bin!" $out/bin/{java,ruby,node,python}gc + ''; + + postFixup = '' + wrapPythonProgramsIn "$out/share/bcc/tools" "$out $pythonPath" + ''; + + outputs = [ "out" "man" ]; + + passthru.tests = { + bpf = nixosTests.bpf; + }; + + meta = with lib; { + description = "Dynamic Tracing Tools for Linux"; + homepage = "https://iovisor.github.io/bcc/"; + license = licenses.asl20; + maintainers = with maintainers; [ ragge mic92 thoughtpolice martinetd ]; + }; +} |