summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
authorVladimír Čunát <vladimir.cunat@nic.cz>2022-09-04 20:20:33 +0200
committertirex <tirexgta@gmail.com>2022-09-19 01:27:54 +0200
commit797d7c7b9e66698d9f0cd188be92733cda7b4b17 (patch)
treeac4022024488dd253693a6ec2272823dd54921b3 /pkgs
parent67902931f49b3262f3a5de4627779a6b14c2a812 (diff)
xdp-tools: various improvements
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/tools/networking/xdp-tools/default.nix49
-rw-r--r--pkgs/top-level/all-packages.nix4
2 files changed, 34 insertions, 19 deletions
diff --git a/pkgs/tools/networking/xdp-tools/default.nix b/pkgs/tools/networking/xdp-tools/default.nix
index 188b28f63b52d..4861347e38fe7 100644
--- a/pkgs/tools/networking/xdp-tools/default.nix
+++ b/pkgs/tools/networking/xdp-tools/default.nix
@@ -1,19 +1,17 @@
 { lib
 , stdenv
 , fetchFromGitHub
+, fetchpatch
 , libbpf
 , elfutils
-, libelf
 , zlib
 , libpcap
-, clang
-, llvm
-, gnumake
-, gcc
-, pkgconfig
+, llvmPackages
+, pkg-config
 , m4
 , emacs-nox
 , wireshark-cli
+, nukeReferences
 }:
 stdenv.mkDerivation rec {
   pname = "xdp-tools";
@@ -26,42 +24,57 @@ stdenv.mkDerivation rec {
     sha256 = "xKxR20Jz+pGKzazFoZe0i0pv7AuaxdL8Yt3IE4JAje8=";
   };
 
+  outputs = [ "out" "lib" ];
+
+  patches = [
+    (fetchpatch {
+      # Compat with libbpf 1.0: https://github.com/xdp-project/xdp-tools/pull/221
+      url = "https://github.com/xdp-project/xdp-tools/commit/f8592d0609807f5b2b73d27eb3bd623da4bd1997.diff";
+      sha256 = "+NpR0d5YE1TMFeyidBuXCDkcBTa2W0094nqYiEWKpY4=";
+    })
+  ];
+
   buildInputs = [
     libbpf
     elfutils
-    libelf
     libpcap
     zlib
   ];
 
   nativeBuildInputs = [
-    clang
-    llvm
-    gnumake
-    gcc
-    pkgconfig
+    llvmPackages.clang
+    llvmPackages.llvm
+    pkg-config
     m4
-    emacs-nox
-    wireshark-cli
+    emacs-nox # to generate man pages from .org
+    nukeReferences
+  ];
+  checkInputs = [
+    wireshark-cli # for tshark
   ];
 
+  # When building BPF, the default CC wrapper is interfering a bit too much.
   BPF_CFLAGS = "-fno-stack-protector -Wno-error=unused-command-line-argument";
+
   PRODUCTION = 1;
   DYNAMIC_LIBXDP = 1;
   FORCE_SYSTEM_LIBBPF = 1;
   FORCE_EMACS = 1;
 
-  installPhase = ''
-    export PREFIX=$out
+  makeFlags = [ "PREFIX=$(out)" "LIBDIR=$(lib)/lib" ];
 
-    make install
+  postInstall = ''
+    # Note that even the static libxdp would refer to BPF_OBJECT_DIR ?=$(LIBDIR)/bpf
+    rm "$lib"/lib/*.a
+    # Drop unfortunate references to glibc.dev/include at least from $lib
+    nuke-refs "$lib"/lib/bpf/*.o
   '';
 
   meta = with lib; {
     homepage = "https://github.com/xdp-project/xdp-tools";
     description = "Library and utilities for use with XDP";
     license = with licenses; [ gpl2 lgpl21 bsd2 ];
-    maintainers = with maintainers; [ tirex ];
+    maintainers = with maintainers; [ tirex vcunat ];
     platforms = platforms.linux;
   };
 }
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 1e4de5d69fc12..f908f12d105ca 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -11987,7 +11987,9 @@ with pkgs;
 
   xdg-launch = callPackage ../applications/misc/xdg-launch { };
 
-  xdp-tools = callPackage ../tools/networking/xdp-tools { };
+  xdp-tools = callPackage ../tools/networking/xdp-tools {
+    llvmPackages = llvmPackages_14;
+  };
 
   xkbvalidate = callPackage ../tools/X11/xkbvalidate { };