From c35e6853fd436c8cda42405851972eecd5bccf26 Mon Sep 17 00:00:00 2001 From: Dominique Martinet Date: Wed, 31 Aug 2022 15:35:09 +0900 Subject: [PATCH 1/6] bcc: 0.24.0 -> 0.25.0 --- pkgs/os-specific/linux/bcc/default.nix | 4 ++-- pkgs/top-level/all-packages.nix | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/pkgs/os-specific/linux/bcc/default.nix b/pkgs/os-specific/linux/bcc/default.nix index bb042e31c0e8..d8026fa0d696 100644 --- a/pkgs/os-specific/linux/bcc/default.nix +++ b/pkgs/os-specific/linux/bcc/default.nix @@ -7,7 +7,7 @@ python.pkgs.buildPythonApplication rec { pname = "bcc"; - version = "0.24.0"; + version = "0.25.0"; disabled = !stdenv.isLinux; @@ -15,7 +15,7 @@ python.pkgs.buildPythonApplication rec { owner = "iovisor"; repo = "bcc"; rev = "v${version}"; - sha256 = "sha256-5Nq6LmphiyiiIyru/P2rCCmA25cwJIWn08oK1+eM3cQ="; + sha256 = "sha256-05FQWBxFI8bxjm6vDCoEqqpAd4Agn84M28P3G6F3tag="; }; format = "other"; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index be3c2791aafb..047ffd80b808 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -16752,6 +16752,7 @@ with pkgs; bcc = callPackage ../os-specific/linux/bcc { python = pkgs.python3; + libbpf = libbpf_1; }; bpftrace = callPackage ../os-specific/linux/bpftrace { }; From c09962fb2c52e09c1afc27a429c05a9aca4604cb Mon Sep 17 00:00:00 2001 From: Dominique Martinet Date: Wed, 31 Aug 2022 15:42:40 +0900 Subject: [PATCH 2/6] bpftrace: 0.15.0 -> 0.16.0 note bcc 0.25.0 breaks bpftrace 0.15.0, so this needs to be together with bcc upgrade --- pkgs/os-specific/linux/bpftrace/default.nix | 46 ++------------------- pkgs/top-level/all-packages.nix | 4 +- 2 files changed, 7 insertions(+), 43 deletions(-) diff --git a/pkgs/os-specific/linux/bpftrace/default.nix b/pkgs/os-specific/linux/bpftrace/default.nix index 2772c587ca89..0c6a6f648672 100644 --- a/pkgs/os-specific/linux/bpftrace/default.nix +++ b/pkgs/os-specific/linux/bpftrace/default.nix @@ -1,4 +1,4 @@ -{ lib, stdenv, fetchFromGitHub, fetchpatch +{ lib, stdenv, fetchFromGitHub , cmake, pkg-config, flex, bison , llvmPackages, elfutils , libbfd, libbpf, libopcodes, bcc @@ -9,44 +9,15 @@ stdenv.mkDerivation rec { pname = "bpftrace"; - version = "0.15.0"; - - # Cherry-picked from merged PR, remove this hook on next update - # https://github.com/iovisor/bpftrace/pull/2242 - # Cannot `fetchpatch` such pure renaming diff since - # https://github.com/iovisor/bpftrace/commit/2df807dbae4037aa8bf0afc03f52fb3f6321c62a.patch - # does not contain any diff in unified format but just this instead: - # ... - # man/man8/{bashreadline.8 => bashreadline.bt.8} | 0 - # ... - # 35 files changed, 0 insertions(+), 0 deletions(-) - # rename man/man8/{bashreadline.8 => bashreadline.bt.8} (100%) - # ... - # on witch `fetchpatch` fails with - # error: Normalized patch '/build/patch' is empty (while the fetched file was not)! - # Did you maybe fetch a HTML representation of a patch instead of a raw patch? - postUnpack = '' - rename .8 .bt.8 "$sourceRoot"/man/man8/*.8 - ''; + version = "0.16.0"; src = fetchFromGitHub { owner = "iovisor"; repo = "bpftrace"; rev = "v${version}"; - sha256 = "sha256-9adZAKSn00W2yNwVDbVB1/O5Y+10c4EkVJGCHyd4Tgg="; + sha256 = "sha256-S43KS/qpzxU+Sgkcud4Cyx4yRjaT6SZzLv6R6bg5I2w="; }; - patches = [ - # Pull upstream fix for binutils-2.39: - # https://github.com/iovisor/bpftrace/pull/2328 - (fetchpatch { - name = "binutils-2.39.patch"; - url = "https://github.com/iovisor/bpftrace/commit/3be6e708d514d3378a4fe985ab907643ecbc77ee.patch"; - sha256 = "sha256-WWEh8ViGw8053nEG/29KeKEHV5ossWPtL/AAV/l+pnY="; - excludes = [ "CHANGELOG.md" ]; - }) - ]; - buildInputs = with llvmPackages; [ llvm libclang elfutils bcc @@ -64,22 +35,13 @@ stdenv.mkDerivation rec { cmakeFlags = [ "-DBUILD_TESTING=FALSE" "-DLIBBCC_INCLUDE_DIRS=${bcc}/include" + "-DINSTALL_TOOL_DOCS=off" ]; - # nuke the example/reference output .txt files, for the included tools, - # stuffed inside $out. we don't need them at all. - # (see "Allow skipping examples" for a potential option - # https://github.com/iovisor/bpftrace/pull/2256) - # # Pull BPF scripts into $PATH (next to their bcc program equivalents), but do # not move them to keep `${pkgs.bpftrace}/share/bpftrace/tools/...` working. - # (remove `chmod` once a new release "Add executable permission to tools" - # https://github.com/iovisor/bpftrace/commit/77e524e6d276216ed6a6e1984cf204418db07c78) postInstall = '' - rm -rf $out/share/bpftrace/tools/doc - ln -s $out/share/bpftrace/tools/*.bt $out/bin/ - chmod +x $out/bin/*.bt ''; outputs = [ "out" "man" ]; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 047ffd80b808..953aa3f1c4b6 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -16755,7 +16755,9 @@ with pkgs; libbpf = libbpf_1; }; - bpftrace = callPackage ../os-specific/linux/bpftrace { }; + bpftrace = callPackage ../os-specific/linux/bpftrace { + libbpf = libbpf_1 + }; bpm-tools = callPackage ../tools/audio/bpm-tools { }; From e1fc929879068b704472b9d66e3b6e73edf06837 Mon Sep 17 00:00:00 2001 From: Dominique Martinet Date: Wed, 31 Aug 2022 15:44:35 +0900 Subject: [PATCH 3/6] bcc/bpftrace: use llvm14 the default llvm on linux is llvm11, which works but is old and has some deprecation warnings when building bcc (and possibly some features disabled for bpftrace). Just use the latest current version --- pkgs/top-level/all-packages.nix | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 953aa3f1c4b6..5c290e863bca 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -16751,12 +16751,14 @@ with pkgs; bpftools = callPackage ../os-specific/linux/bpftools { }; bcc = callPackage ../os-specific/linux/bcc { - python = pkgs.python3; + python = python3; libbpf = libbpf_1; + llvmPackages = llvmPackages_14; }; bpftrace = callPackage ../os-specific/linux/bpftrace { - libbpf = libbpf_1 + libbpf = libbpf_1; + llvmPackages = llvmPackages_14; }; bpm-tools = callPackage ../tools/audio/bpm-tools { }; From 126dd81c7bfd4587461122f9721127e4c89c548a Mon Sep 17 00:00:00 2001 From: Dominique Martinet Date: Sat, 5 Nov 2022 10:30:53 +0900 Subject: [PATCH 4/6] oci-seccomp-bpf-hook: 1.2.6 -> 1.2.8 fixes compatibility with bcc 0.25 --- pkgs/os-specific/linux/oci-seccomp-bpf-hook/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/os-specific/linux/oci-seccomp-bpf-hook/default.nix b/pkgs/os-specific/linux/oci-seccomp-bpf-hook/default.nix index 75f210f4c228..d6f8b4c9533f 100644 --- a/pkgs/os-specific/linux/oci-seccomp-bpf-hook/default.nix +++ b/pkgs/os-specific/linux/oci-seccomp-bpf-hook/default.nix @@ -10,12 +10,12 @@ buildGoModule rec { pname = "oci-seccomp-bpf-hook"; - version = "1.2.6"; + version = "1.2.8"; src = fetchFromGitHub { owner = "containers"; repo = "oci-seccomp-bpf-hook"; rev = "v${version}"; - sha256 = "sha256-+HGVxPBCPIdFwzZf3lFE0MWA2xMKsHQkfDo4zyNgzpg="; + sha256 = "sha256-0SSiVnCWs3NLefnmZn1oCc7nwTrSzDsyjPszVBRQVH0="; }; vendorSha256 = null; From d54760e57f2a259069b4cec399f37a0ed34acd5d Mon Sep 17 00:00:00 2001 From: Dominique Martinet Date: Sat, 5 Nov 2022 10:32:08 +0900 Subject: [PATCH 5/6] oci-seccomp-bpf-hook: move out of linuxPackages oci-seccomp-bpf-hook does not depend on kernel and does not need to be a linuxPackage attribute. keep inherited attribute for backwards compability --- pkgs/top-level/all-packages.nix | 2 ++ pkgs/top-level/linux-kernels.nix | 3 +-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 5c290e863bca..88821c430ec0 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5092,6 +5092,8 @@ with pkgs; oci-cli = callPackage ../tools/admin/oci-cli { }; + oci-seccomp-bpf-hook = callPackage ../os-specific/linux/oci-seccomp-bpf-hook { }; + ocrmypdf = with python3.pkgs; toPythonApplication ocrmypdf; ocrfeeder = callPackage ../applications/graphics/ocrfeeder { }; diff --git a/pkgs/top-level/linux-kernels.nix b/pkgs/top-level/linux-kernels.nix index 760e3b1f20bf..166f09f6e49a 100644 --- a/pkgs/top-level/linux-kernels.nix +++ b/pkgs/top-level/linux-kernels.nix @@ -254,6 +254,7 @@ in { # Obsolete aliases (these packages do not depend on the kernel). inherit (pkgs) odp-dpdk pktgen; # added 2018-05 inherit (pkgs) bcc bpftrace; # added 2021-12 + inherit (pkgs) oci-seccomp-bpf-hook; # added 2022-11 acpi_call = callPackage ../os-specific/linux/acpi-call {}; @@ -421,8 +422,6 @@ in { netatop = callPackage ../os-specific/linux/netatop { }; - oci-seccomp-bpf-hook = if lib.versionAtLeast kernel.version "5.4" then callPackage ../os-specific/linux/oci-seccomp-bpf-hook { } else null; - perf = callPackage ../os-specific/linux/kernel/perf { }; phc-intel = if lib.versionAtLeast kernel.version "4.10" then callPackage ../os-specific/linux/phc-intel { } else null; From 3e5b243639786781dbdfcf5a9faba41b1364406a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Sun, 4 Dec 2022 16:07:09 +0100 Subject: [PATCH 6/6] grafana-agent: disable ebpf at the moment the used go-epbf version not compatible with our bcc version. --- pkgs/servers/monitoring/grafana-agent/default.nix | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/pkgs/servers/monitoring/grafana-agent/default.nix b/pkgs/servers/monitoring/grafana-agent/default.nix index 28cfbaa94cbf..d777e9d2b5a3 100644 --- a/pkgs/servers/monitoring/grafana-agent/default.nix +++ b/pkgs/servers/monitoring/grafana-agent/default.nix @@ -1,4 +1,4 @@ -{ lib, buildGoModule, fetchFromGitHub, systemd, nixosTests, bcc }: +{ lib, buildGoModule, fetchFromGitHub, systemd, nixosTests }: buildGoModule rec { pname = "grafana-agent"; @@ -27,6 +27,7 @@ buildGoModule rec { tags = [ "nonetwork" + "noebpf" "nodocker" ]; @@ -39,8 +40,6 @@ buildGoModule rec { # https://github.com/coreos/go-systemd/issues/351 NIX_CFLAGS_COMPILE = [ "-I${lib.getDev systemd}/include" ]; - buildInputs = [ bcc ]; - # tries to access /sys: https://github.com/grafana/agent/issues/333 preBuild = '' rm pkg/integrations/node_exporter/node_exporter_test.go