diff --git a/pkgs/development/libraries/spdk/default.nix b/pkgs/development/libraries/spdk/default.nix index a18edc0a6df..e70980afac6 100644 --- a/pkgs/development/libraries/spdk/default.nix +++ b/pkgs/development/libraries/spdk/default.nix @@ -1,19 +1,21 @@ -{ stdenv, fetchFromGitHub, python, cunit, dpdk, libaio, libuuid, numactl, openssl }: +{ stdenv, fetchFromGitHub, python, cunit, dpdk, libaio, libbsd, libuuid, numactl, openssl }: stdenv.mkDerivation rec { pname = "spdk"; - version = "19.04"; + version = "19.10"; src = fetchFromGitHub { owner = "spdk"; repo = "spdk"; rev = "v${version}"; - sha256 = "10mzal1hspnh26ws5d7sc54gyjfzkf6amr0gkd7b368ng2a9z8s6"; + sha256 = "16v2vswn3rnnj7ak5w5rsak6r8f9b85gyhyll4ac1k4xpyj488hj"; }; + patches = [ ./spdk-dpdk-meson.patch ]; + nativeBuildInputs = [ python ]; - buildInputs = [ cunit dpdk libaio libuuid numactl openssl ]; + buildInputs = [ cunit dpdk libaio libbsd libuuid numactl openssl ]; postPatch = '' patchShebangs . diff --git a/pkgs/development/libraries/spdk/spdk-dpdk-meson.patch b/pkgs/development/libraries/spdk/spdk-dpdk-meson.patch new file mode 100644 index 00000000000..9cc6d89ce50 --- /dev/null +++ b/pkgs/development/libraries/spdk/spdk-dpdk-meson.patch @@ -0,0 +1,17 @@ +1. dpdk built with meson generates rte_build_config.h rather than rte_config.h. +2. dpdk configured with libbsd requires that dependents link with libbsd. + +--- a/lib/env_dpdk/env.mk ++++ b/lib/env_dpdk/env.mk +@@ -140,6 +140,9 @@ endif + +-ifneq (,$(wildcard $(DPDK_INC_DIR)/rte_config.h)) +-ifneq (,$(shell grep -e "define RTE_LIBRTE_VHOST_NUMA 1" -e "define RTE_EAL_NUMA_AWARE_HUGEPAGES 1" $(DPDK_INC_DIR)/rte_config.h)) ++ifneq (,$(wildcard $(DPDK_INC_DIR)/rte_build_config.h)) ++ifneq (,$(shell grep -e "define RTE_LIBRTE_VHOST_NUMA 1" -e "define RTE_EAL_NUMA_AWARE_HUGEPAGES 1" $(DPDK_INC_DIR)/rte_build_config.h)) + ENV_LINKER_ARGS += -lnuma + endif ++ifneq (,$(shell grep -e "define RTE_USE_LIBBSD 1" $(DPDK_INC_DIR)/rte_build_config.h)) ++ENV_LINKER_ARGS += -lbsd ++endif + endif