From 12d9a09d3c473cb60d8db256c89df6b3e218fa5c Mon Sep 17 00:00:00 2001 From: Pierre Bourdon Date: Thu, 9 Dec 2021 01:49:57 +0100 Subject: [PATCH 1/7] dpdk: 21.04 -> 21.11 --- pkgs/os-specific/linux/dpdk/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/os-specific/linux/dpdk/default.nix b/pkgs/os-specific/linux/dpdk/default.nix index ca8905e62402..81bf17b19993 100644 --- a/pkgs/os-specific/linux/dpdk/default.nix +++ b/pkgs/os-specific/linux/dpdk/default.nix @@ -9,14 +9,14 @@ let mod = kernel != null; - dpdkVersion = "21.05"; + dpdkVersion = "21.11"; in stdenv.mkDerivation rec { pname = "dpdk"; version = "${dpdkVersion}" + lib.optionalString mod "-${kernel.version}"; src = fetchurl { url = "https://fast.dpdk.org/rel/dpdk-${dpdkVersion}.tar.xz"; - sha256 = "sha256-HhJJm0xfzbV8g+X+GE6mvs3ffPCSiTwsXvLvsO7BLws="; + sha256 = "sha256-Mkbj7WjuKzaaXYviwGzxCKZp4Vf01Bxby7sha/Wr06E="; }; nativeBuildInputs = [ From d8ba6ecab95d93e500a2d8fc4b8d4c77928b00bd Mon Sep 17 00:00:00 2001 From: Pierre Bourdon Date: Thu, 9 Dec 2021 01:59:10 +0100 Subject: [PATCH 2/7] dpdk: add Mellanox support via rdma-core dependency rdma-core contains libmlx4/libmlx5 which are required for DPDK to be able to run using Mellanox NIC devices. This has a non-trivial closure size impact (730M -> 941M) but the size increase is almost entirely driven by adding systemd to the transitive closure, which we should expect is present anyway on most NixOS systems. So, in practice, this is expected to be close to no-op in size increase. --- pkgs/os-specific/linux/dpdk/default.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkgs/os-specific/linux/dpdk/default.nix b/pkgs/os-specific/linux/dpdk/default.nix index 81bf17b19993..650c2516ef98 100644 --- a/pkgs/os-specific/linux/dpdk/default.nix +++ b/pkgs/os-specific/linux/dpdk/default.nix @@ -2,7 +2,7 @@ , kernel , fetchurl , pkg-config, meson, ninja -, libbsd, numactl, libbpf, zlib, libelf, jansson, openssl, libpcap +, libbsd, numactl, libbpf, zlib, libelf, jansson, openssl, libpcap, rdma-core , doxygen, python3 , withExamples ? [] , shared ? false }: @@ -36,6 +36,7 @@ in stdenv.mkDerivation rec { libpcap numactl openssl.dev + rdma-core zlib ] ++ lib.optionals mod kernel.moduleBuildDependencies; From 19eb8f294d23432a35e5677d8db9c16fd3889871 Mon Sep 17 00:00:00 2001 From: Pierre Bourdon Date: Thu, 9 Dec 2021 02:17:41 +0100 Subject: [PATCH 3/7] dpdk: clean up installed docs to prevent spurious dependency Closure size 941M -> 825M by getting rid of an unneeded dependency on python3-docutils. This was dragged in by Sphinx cache files being installed in the derivation output. --- pkgs/os-specific/linux/dpdk/default.nix | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pkgs/os-specific/linux/dpdk/default.nix b/pkgs/os-specific/linux/dpdk/default.nix index 650c2516ef98..bb4ba95a544b 100644 --- a/pkgs/os-specific/linux/dpdk/default.nix +++ b/pkgs/os-specific/linux/dpdk/default.nix @@ -68,7 +68,11 @@ in stdenv.mkDerivation rec { rm -f $kmod/lib/modules/${kernel.modDirVersion}/build ''; - postInstall = lib.optionalString (withExamples != []) '' + postInstall = '' + # Remove Sphinx cache files. Not only are they not useful, but they also + # contain store paths causing spurious dependencies. + rm -rf $out/share/doc/dpdk/html/.doctrees + '' + lib.optionalString (withExamples != []) '' find examples -type f -executable -exec install {} $out/bin \; ''; From 5ff289f39e7e3a30298ea7920337480d00988510 Mon Sep 17 00:00:00 2001 From: Pierre Bourdon Date: Thu, 9 Dec 2021 02:23:00 +0100 Subject: [PATCH 4/7] dpdk: add ARMv8 sandboxed build support DPDK defaults to reading machine info from /sys unless specific platform info is provided at configure time. Tell it to build a generic version instead of trying to optimize based on the build host. --- pkgs/os-specific/linux/dpdk/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/os-specific/linux/dpdk/default.nix b/pkgs/os-specific/linux/dpdk/default.nix index bb4ba95a544b..f5d3ca5eaec0 100644 --- a/pkgs/os-specific/linux/dpdk/default.nix +++ b/pkgs/os-specific/linux/dpdk/default.nix @@ -53,6 +53,7 @@ in stdenv.mkDerivation rec { ++ lib.optional (mod && kernel.kernelOlder "5.11") "-Ddisable_drivers=kni" ++ lib.optional (!shared) "-Ddefault_library=static" ++ lib.optional stdenv.isx86_64 "-Dmachine=nehalem" + ++ lib.optional stdenv.isAarch64 "-Dmachine=generic" ++ lib.optional mod "-Dkernel_dir=${placeholder "kmod"}/lib/modules/${kernel.modDirVersion}" ++ lib.optional (withExamples != []) "-Dexamples=${builtins.concatStringsSep "," withExamples}"; From cc32f4990bc2cdec862f9f09049be42380281069 Mon Sep 17 00:00:00 2001 From: Pierre Bourdon Date: Thu, 9 Dec 2021 03:21:56 +0100 Subject: [PATCH 5/7] pktgen: 21.05.0 -> 21.11.0 --- pkgs/os-specific/linux/pktgen/default.nix | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/pkgs/os-specific/linux/pktgen/default.nix b/pkgs/os-specific/linux/pktgen/default.nix index 5a1a56ab6919..36dea8ed6e0e 100644 --- a/pkgs/os-specific/linux/pktgen/default.nix +++ b/pkgs/os-specific/linux/pktgen/default.nix @@ -5,13 +5,13 @@ stdenv.mkDerivation rec { pname = "pktgen"; - version = "21.05.0"; + version = "21.11.0"; src = fetchFromGitHub { owner = "pktgen"; repo = "Pktgen-DPDK"; rev = "pktgen-${version}"; - sha256 = "sha256-7lLDtbd14olEHO+1BuI6KTEUNRM/zAyRXau/OZbYbGA="; + sha256 = "sha256-3z5DSkggHTwjzsRzRG5zzZTcNsn/5YankJT8CKSN8b4="; }; nativeBuildInputs = [ meson ninja pkg-config ]; @@ -25,7 +25,6 @@ stdenv.mkDerivation rec { RTE_SDK = dpdk; GUI = lib.optionalString withGtk "true"; - NIX_CFLAGS_COMPILE = "-msse3"; # requires symbols from this file NIX_LDFLAGS = "-lrte_net_bond"; @@ -43,7 +42,7 @@ stdenv.mkDerivation rec { description = "Traffic generator powered by DPDK"; homepage = "http://dpdk.org/"; license = licenses.bsdOriginal; - platforms = [ "x86_64-linux" ]; + platforms = platforms.linux; maintainers = [ maintainers.abuibrahim ]; }; } From 69e5198b6f472b2cd672ec8ba09abe2dd5969a04 Mon Sep 17 00:00:00 2001 From: Pierre Bourdon Date: Thu, 9 Dec 2021 03:42:05 +0100 Subject: [PATCH 6/7] spdk: 21.07 -> 21.10 --- pkgs/development/libraries/spdk/default.nix | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/pkgs/development/libraries/spdk/default.nix b/pkgs/development/libraries/spdk/default.nix index 862547043ed8..e4884b85b4ae 100644 --- a/pkgs/development/libraries/spdk/default.nix +++ b/pkgs/development/libraries/spdk/default.nix @@ -1,5 +1,5 @@ { lib, stdenv -, fetchurl +, fetchpatch , fetchFromGitHub , ncurses , python3 @@ -14,19 +14,25 @@ stdenv.mkDerivation rec { pname = "spdk"; - version = "21.07"; + version = "21.10"; src = fetchFromGitHub { owner = "spdk"; repo = "spdk"; rev = "v${version}"; - sha256 = "sha256-/hynuYVdzIfiHUUfuuOY8SBJ18DqJr2Fos2JjQQVvbg="; + sha256 = "sha256-pFynTbbSF1g58VD9bOhe3c4oCozeqE+35kECTQwDBDM="; }; patches = [ # Backport of upstream patch for ncurses-6.3 support. # Will be in next release after 21.10. ./ncurses-6.3.patch + + # DPDK 21.11 compatibility. + (fetchpatch { + url = "https://github.com/spdk/spdk/commit/f72cab94dd35d7b45ec5a4f35967adf3184ca616.patch"; + sha256 = "sha256-sSetvyNjlM/hSOUsUO3/dmPzAliVcteNDvy34yM5d4A="; + }) ]; nativeBuildInputs = [ From 7e472d6dc2b3bdc6be73038fba513e7641e82bfd Mon Sep 17 00:00:00 2001 From: Pierre Bourdon Date: Thu, 9 Dec 2021 09:28:18 +0100 Subject: [PATCH 7/7] dpdk: move rdma-core dependency to propagated This allows for static building against DPDK. I would rather have all nixpkgs users link properly against the shared libraries, but fixing odp-dpdk looks like it will require patching their autoconf scripts. --- pkgs/os-specific/linux/dpdk/default.nix | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pkgs/os-specific/linux/dpdk/default.nix b/pkgs/os-specific/linux/dpdk/default.nix index f5d3ca5eaec0..7592be483f53 100644 --- a/pkgs/os-specific/linux/dpdk/default.nix +++ b/pkgs/os-specific/linux/dpdk/default.nix @@ -36,10 +36,15 @@ in stdenv.mkDerivation rec { libpcap numactl openssl.dev - rdma-core zlib ] ++ lib.optionals mod kernel.moduleBuildDependencies; + # Propagated to support current DPDK users in nixpkgs which statically link + # with the framework (e.g. odp-dpdk). + propagatedBuildInputs = [ + rdma-core + ]; + postPatch = '' patchShebangs config/arm buildtools '';