@ -1,7 +1,13 @@
{ stdenv , kernel , fetchurl , pkgconfig , numactl }:
{ stdenv , lib , kernel , fetchurl , pkgconfig , numactl }:
stdenv . mkDerivation rec {
name = " d p d k - ${ version } - ${ kernel . version } " ;
let
kver = kernel . modDirVersion or null ;
mod = kernel != null ;
in stdenv . mkDerivation rec {
name = " d p d k - ${ version } " + lib . optionalString mod " - ${ kernel . version } " ;
version = " 1 7 . 1 1 . 2 " ;
src = fetchurl {
@ -9,35 +15,45 @@ stdenv.mkDerivation rec {
sha256 = " 1 9 m 5 l 3 j k r n s 8 r 1 z b j b 6 r y 1 8 w 5 0 f f 3 6 k b l 5 b 5 g 6 p f c p 9 p 5 7 s f i s d 2 " ;
} ;
nativeBuildInputs = [ pkgconfig ] ++ kernel . moduleBuildDependencies ;
buildInputs = [ numactl ] ;
nativeBuildInputs = [ pkgconfig ] ;
buildInputs = [ numactl ] ++ lib . optional mod kernel . moduleBuildDependencies ;
RTE_KERNELDIR = "${ kernel . dev } / l i b / m o d u l e s / ${ kernel . modDirVersion } / b u i l d " ;
RTE_KERNELDIR = if mod then "${ kernel . dev } / l i b / m o d u l e s / ${ kver } / b u i l d " else " / v a r / e m p t y " ;
RTE_TARGET = " x 8 6 _ 6 4 - n a t i v e - l i n u x a p p - g c c " ;
# we need sse3 instructions to build
NIX_CFLAGS_COMPILE = [ " - m s s e 3 " ] ;
enableParallelBuilding = true ;
outputs = [ " o u t " " k m o d " ] ;
hardeningDisable = [ " p i c " ] ;
postPatch = lib . optionalString ( ! mod ) ''
# Do not build kernel modules.
cat > > config/defconfig_ $ RTE_TARGET < < EOF
CONFIG_RTE_EAL_IGB_UIO = n
CONFIG_RTE_KNI_KMOD = n
EOF
'' ;
configurePhase = ''
make T = $ { RTE_TARGET } config
'' ;
installPhase = ''
make install-runtime DESTDIR = $ out prefix = includedir = /include datadir = /
make install-sdk DESTDIR = $ out prefix = includedir = /include datadir = /
make install-kmod DESTDIR = $ kmod
'' ;
installTargets = [ " i n s t a l l - r u n t i m e " " i n s t a l l - s d k " " i n s t a l l - k m o d " ] ; # skip install-doc
installFlags = [
" p r e f i x = $ ( o u t ) " " d a t a d i r = $ ( o u t ) " " i n c l u d e d i r = $ ( o u t ) / i n c l u d e "
] ++ lib . optionals mod [
" k e r n e l d i r = $ ( k m o d ) / l i b / m o d u l e s / ${ kver } "
] ;
outputs = [ " o u t " ] ++ lib . optional mod " k m o d " ;
enableParallelBuilding = true ;
meta = with stdenv . lib ; {
meta = with lib ; {
description = " S e t o f l i b r a r i e s a n d d r i v e r s f o r f a s t p a c k e t p r o c e s s i n g " ;
homepage = http://dpdk.org/ ;
license = with licenses ; [ lgpl21 gpl2 bsd2 ] ;
platforms = [ " x 8 6 _ 6 4 - l i n u x " ] ;
maintainers = [ maintainers . domenkozar ] ;
maintainers = with maintainers ; [ domenkozar orivej ] ;
} ;
}