spdk: upstream fix for ncurses-6.3

Without the change the build fails as:

    spdk_top.c:1949:69: error: format not a string literal and no format arguments [-Werror=format-security]
     1949 |                 mvwprintw(thread_win, 3, THREAD_WIN_FIRST_COL + 32, idle_time);
          |                                                                     ^~~~~~~~~
main
Sergei Trofimovich 3 years ago
parent ab5a3f8226
commit 914567e4a7
  1. 7
      pkgs/development/libraries/spdk/default.nix
  2. 48
      pkgs/development/libraries/spdk/ncurses-6.3.patch
  3. 17
      pkgs/development/libraries/spdk/spdk-dpdk-meson.patch

@ -1,7 +1,6 @@
{ lib, stdenv
, fetchurl
, fetchFromGitHub
, fetchpatch
, ncurses
, python3
, cunit
@ -24,6 +23,12 @@ stdenv.mkDerivation rec {
sha256 = "sha256-/hynuYVdzIfiHUUfuuOY8SBJ18DqJr2Fos2JjQQVvbg=";
};
patches = [
# Backport of upstream patch for ncurses-6.3 support.
# Will be in next release after 21.10.
./ncurses-6.3.patch
];
nativeBuildInputs = [
python3
];

@ -0,0 +1,48 @@
Backport of upstream https://review.spdk.io/gerrit/c/spdk/spdk/+/10300
--- a/app/spdk_top/spdk_top.c
+++ b/app/spdk_top/spdk_top.c
@@ -1012 +1012 @@ print_max_len(WINDOW *win, int row, uint16_t col, uint16_t max_len, enum str_ali
- mvwprintw(win, row, col, tmp_str);
+ mvwprintw(win, row, col, "%s", tmp_str);
@@ -1944 +1944 @@ display_thread(struct rpc_thread_info *thread_info)
- mvwprintw(thread_win, 3, THREAD_WIN_FIRST_COL + 6, "%" PRIu64,
+ mvwprintw(thread_win, 3, THREAD_WIN_FIRST_COL + 6, "%d",
@@ -1949 +1949 @@ display_thread(struct rpc_thread_info *thread_info)
- mvwprintw(thread_win, 3, THREAD_WIN_FIRST_COL + 32, idle_time);
+ mvwprintw(thread_win, 3, THREAD_WIN_FIRST_COL + 32, "%s", idle_time);
@@ -1951 +1951 @@ display_thread(struct rpc_thread_info *thread_info)
- mvwprintw(thread_win, 3, THREAD_WIN_FIRST_COL + 54, busy_time);
+ mvwprintw(thread_win, 3, THREAD_WIN_FIRST_COL + 54, "%s", busy_time);
@@ -1954 +1954 @@ display_thread(struct rpc_thread_info *thread_info)
- mvwprintw(thread_win, 3, THREAD_WIN_FIRST_COL + 32, idle_time);
+ mvwprintw(thread_win, 3, THREAD_WIN_FIRST_COL + 32, "%s", idle_time);
@@ -1956 +1956 @@ display_thread(struct rpc_thread_info *thread_info)
- mvwprintw(thread_win, 3, THREAD_WIN_FIRST_COL + 54, busy_time);
+ mvwprintw(thread_win, 3, THREAD_WIN_FIRST_COL + 54, "%s", busy_time);
@@ -2111 +2111 @@ show_core(uint8_t current_page)
- mvwprintw(core_win, 5, CORE_WIN_FIRST_COL + 20, idle_time);
+ mvwprintw(core_win, 5, CORE_WIN_FIRST_COL + 20, "%s", idle_time);
@@ -2118 +2118 @@ show_core(uint8_t current_page)
- mvwprintw(core_win, 7, CORE_WIN_FIRST_COL + 20, busy_time);
+ mvwprintw(core_win, 7, CORE_WIN_FIRST_COL + 20, "%s", busy_time);
@@ -2124 +2124 @@ show_core(uint8_t current_page)
- mvwprintw(core_win, i + 10, 1, core_info->threads.thread[i].name);
+ mvwprintw(core_win, i + 10, 1, "%s", core_info->threads.thread[i].name);
@@ -2137 +2137 @@ show_core(uint8_t current_page)
- mvwprintw(core_win, i + 10, 1, core_info->threads.thread[i].name);
+ mvwprintw(core_win, i + 10, 1, "%s", core_info->threads.thread[i].name);
@@ -2214 +2214 @@ show_poller(uint8_t current_page)
- mvwprintw(poller_win, 3, POLLER_WIN_FIRST_COL,
+ mvwprintw(poller_win, 3, POLLER_WIN_FIRST_COL, "%s",
@@ -2216 +2216 @@ show_poller(uint8_t current_page)
- mvwprintw(poller_win, 3, POLLER_WIN_FIRST_COL + 23, poller->thread_name);
+ mvwprintw(poller_win, 3, POLLER_WIN_FIRST_COL + 23, "%s", poller->thread_name);
@@ -2231 +2231 @@ show_poller(uint8_t current_page)
- mvwprintw(poller_win, 4, POLLER_WIN_FIRST_COL + 23, poller_period);
+ mvwprintw(poller_win, 4, POLLER_WIN_FIRST_COL + 23, "%s", poller_period);
@@ -2264 +2264 @@ print_bottom_error_message(char *msg)
- mvprintw(g_max_row - 1, g_max_col - strlen(msg) - 2, msg);
+ mvprintw(g_max_row - 1, g_max_col - strlen(msg) - 2, "%s", msg);
@@ -2434 +2434 @@ show_stats(pthread_t *data_thread)
- mvprintw(g_max_row - 1, 1, current_page_str);
+ mvprintw(g_max_row - 1, 1, "%s", current_page_str);

@ -1,17 +0,0 @@
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
Loading…
Cancel
Save