summary refs log tree commit diff
path: root/pkgs/os-specific/linux/dpdk/default.nix
diff options
context:
space:
mode:
authorOrivej Desh <orivej@gmx.fr>2019-12-23 08:49:35 +0000
committerOrivej Desh <orivej@gmx.fr>2019-12-30 16:50:40 +0000
commitfdb16f3a77fb9eca4c886abfd6f4492f9fd538bb (patch)
treecdc0cc8810932dbf01933835a338d98a0d966c96 /pkgs/os-specific/linux/dpdk/default.nix
parentddc4239e6a291a032d2cd00c678cfb94adbbdd04 (diff)
downloadnixpkgs-fdb16f3a77fb9eca4c886abfd6f4492f9fd538bb.tar
nixpkgs-fdb16f3a77fb9eca4c886abfd6f4492f9fd538bb.tar.gz
nixpkgs-fdb16f3a77fb9eca4c886abfd6f4492f9fd538bb.tar.bz2
nixpkgs-fdb16f3a77fb9eca4c886abfd6f4492f9fd538bb.tar.lz
nixpkgs-fdb16f3a77fb9eca4c886abfd6f4492f9fd538bb.tar.xz
nixpkgs-fdb16f3a77fb9eca4c886abfd6f4492f9fd538bb.tar.zst
nixpkgs-fdb16f3a77fb9eca4c886abfd6f4492f9fd538bb.zip
linuxPackages.dpdk: fix build
Diffstat (limited to 'pkgs/os-specific/linux/dpdk/default.nix')
-rw-r--r--pkgs/os-specific/linux/dpdk/default.nix21
1 files changed, 15 insertions, 6 deletions
diff --git a/pkgs/os-specific/linux/dpdk/default.nix b/pkgs/os-specific/linux/dpdk/default.nix
index ecc239453fa..414f276a210 100644
--- a/pkgs/os-specific/linux/dpdk/default.nix
+++ b/pkgs/os-specific/linux/dpdk/default.nix
@@ -7,7 +7,6 @@
 , shared ? false }:
 
 let
-  kver = kernel.modDirVersion or null;
   mod = kernel != null;
 
 in stdenv.mkDerivation rec {
@@ -44,13 +43,23 @@ in stdenv.mkDerivation rec {
 
   mesonFlags = [
     "-Denable_docs=true"
-    "-Denable_kmods=${if kernel != null then "true" else "false"}"
-  ]
-  ++ lib.optionals (shared == false) [
-    "-Ddefault_library=static"
+    "-Denable_kmods=${if mod then "true" else "false"}"
   ]
+  ++ lib.optional (!shared) "-Ddefault_library=static"
   ++ lib.optional stdenv.isx86_64 "-Dmachine=nehalem"
-  ++ lib.optional (kernel != null) "-Dkernel_dir=${kernel.dev}/lib/modules/${kernel.modDirVersion}";
+  ++ lib.optional mod "-Dkernel_dir=${placeholder "kmod"}/lib/modules/${kernel.modDirVersion}";
+
+  # dpdk meson script does not support separate kernel source and installion
+  # dirs (except via destdir), so we temporarily link the former into the latter.
+  preConfigure = lib.optionalString mod ''
+    mkdir -p $kmod/lib/modules/${kernel.modDirVersion}
+    ln -sf ${kernel.dev}/lib/modules/${kernel.modDirVersion}/build \
+      $kmod/lib/modules/${kernel.modDirVersion}
+  '';
+
+  postBuild = lib.optionalString mod ''
+    rm -f $kmod/lib/modules/${kernel.modDirVersion}/build
+  '';
 
   outputs = [ "out" ] ++ lib.optional mod "kmod";