git.iko.soy/typeable/nixpkgs
on master help sign in
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); | ^~~~~~~~~

commit914567e4a7f41b046af6aa4b5214b9d026256a77 authorSergei Trofimovich <slyich@gmail.com> dateTue 30 Nov 2021, 21:55 (5 years ago) parentab5a3f8
3 files changed+54−18
pkgs/development/libraries/spdk/default.nix+6−1 pkgs/development/libraries/spdk/ncurses-6.3.patch+48 pkgs/development/libraries/spdk/spdk-dpdk-meson.patch−17
pkgs/development/libraries/spdk/default.nix+6−1
@@ -1,7 +1,6 @@
11{ lib, stdenv
22, fetchurl
33, fetchFromGitHub
4−, fetchpatch
54, ncurses
65, python3
76, cunit
@@ -24,6 +23,12 @@ stdenv.mkDerivation rec {
2423 sha256 = "sha256-/hynuYVdzIfiHUUfuuOY8SBJ18DqJr2Fos2JjQQVvbg=";
2524 };
2625
26+ patches = [
27+ # Backport of upstream patch for ncurses-6.3 support.
28+ # Will be in next release after 21.10.
29+ ./ncurses-6.3.patch
30+ ];
31+
2732 nativeBuildInputs = [
2833 python3
2934 ];
pkgs/development/libraries/spdk/ncurses-6.3.patchnew file+48
@@ -0,0 +1,48 @@
1+Backport of upstream https://review.spdk.io/gerrit/c/spdk/spdk/+/10300
2+--- a/app/spdk_top/spdk_top.c
3++++ b/app/spdk_top/spdk_top.c
4+@@ -1012 +1012 @@ print_max_len(WINDOW *win, int row, uint16_t col, uint16_t max_len, enum str_ali
5+- mvwprintw(win, row, col, tmp_str);
6++ mvwprintw(win, row, col, "%s", tmp_str);
7+@@ -1944 +1944 @@ display_thread(struct rpc_thread_info *thread_info)
8+- mvwprintw(thread_win, 3, THREAD_WIN_FIRST_COL + 6, "%" PRIu64,
9++ mvwprintw(thread_win, 3, THREAD_WIN_FIRST_COL + 6, "%d",
10+@@ -1949 +1949 @@ display_thread(struct rpc_thread_info *thread_info)
11+- mvwprintw(thread_win, 3, THREAD_WIN_FIRST_COL + 32, idle_time);
12++ mvwprintw(thread_win, 3, THREAD_WIN_FIRST_COL + 32, "%s", idle_time);
13+@@ -1951 +1951 @@ display_thread(struct rpc_thread_info *thread_info)
14+- mvwprintw(thread_win, 3, THREAD_WIN_FIRST_COL + 54, busy_time);
15++ mvwprintw(thread_win, 3, THREAD_WIN_FIRST_COL + 54, "%s", busy_time);
16+@@ -1954 +1954 @@ display_thread(struct rpc_thread_info *thread_info)
17+- mvwprintw(thread_win, 3, THREAD_WIN_FIRST_COL + 32, idle_time);
18++ mvwprintw(thread_win, 3, THREAD_WIN_FIRST_COL + 32, "%s", idle_time);
19+@@ -1956 +1956 @@ display_thread(struct rpc_thread_info *thread_info)
20+- mvwprintw(thread_win, 3, THREAD_WIN_FIRST_COL + 54, busy_time);
21++ mvwprintw(thread_win, 3, THREAD_WIN_FIRST_COL + 54, "%s", busy_time);
22+@@ -2111 +2111 @@ show_core(uint8_t current_page)
23+- mvwprintw(core_win, 5, CORE_WIN_FIRST_COL + 20, idle_time);
24++ mvwprintw(core_win, 5, CORE_WIN_FIRST_COL + 20, "%s", idle_time);
25+@@ -2118 +2118 @@ show_core(uint8_t current_page)
26+- mvwprintw(core_win, 7, CORE_WIN_FIRST_COL + 20, busy_time);
27++ mvwprintw(core_win, 7, CORE_WIN_FIRST_COL + 20, "%s", busy_time);
28+@@ -2124 +2124 @@ show_core(uint8_t current_page)
29+- mvwprintw(core_win, i + 10, 1, core_info->threads.thread[i].name);
30++ mvwprintw(core_win, i + 10, 1, "%s", core_info->threads.thread[i].name);
31+@@ -2137 +2137 @@ show_core(uint8_t current_page)
32+- mvwprintw(core_win, i + 10, 1, core_info->threads.thread[i].name);
33++ mvwprintw(core_win, i + 10, 1, "%s", core_info->threads.thread[i].name);
34+@@ -2214 +2214 @@ show_poller(uint8_t current_page)
35+- mvwprintw(poller_win, 3, POLLER_WIN_FIRST_COL,
36++ mvwprintw(poller_win, 3, POLLER_WIN_FIRST_COL, "%s",
37+@@ -2216 +2216 @@ show_poller(uint8_t current_page)
38+- mvwprintw(poller_win, 3, POLLER_WIN_FIRST_COL + 23, poller->thread_name);
39++ mvwprintw(poller_win, 3, POLLER_WIN_FIRST_COL + 23, "%s", poller->thread_name);
40+@@ -2231 +2231 @@ show_poller(uint8_t current_page)
41+- mvwprintw(poller_win, 4, POLLER_WIN_FIRST_COL + 23, poller_period);
42++ mvwprintw(poller_win, 4, POLLER_WIN_FIRST_COL + 23, "%s", poller_period);
43+@@ -2264 +2264 @@ print_bottom_error_message(char *msg)
44+- mvprintw(g_max_row - 1, g_max_col - strlen(msg) - 2, msg);
45++ mvprintw(g_max_row - 1, g_max_col - strlen(msg) - 2, "%s", msg);
46+@@ -2434 +2434 @@ show_stats(pthread_t *data_thread)
47+- mvprintw(g_max_row - 1, 1, current_page_str);
48++ mvprintw(g_max_row - 1, 1, "%s", current_page_str);
pkgs/development/libraries/spdk/spdk-dpdk-meson.patchdeleted−17
@@ -1,17 +0,0 @@
1−1. dpdk built with meson generates rte_build_config.h rather than rte_config.h.
2−2. dpdk configured with libbsd requires that dependents link with libbsd.
3−
4−--- a/lib/env_dpdk/env.mk
5−+++ b/lib/env_dpdk/env.mk
6−@@ -140,6 +140,9 @@ endif
7−
8−-ifneq (,$(wildcard $(DPDK_INC_DIR)/rte_config.h))
9−-ifneq (,$(shell grep -e "define RTE_LIBRTE_VHOST_NUMA 1" -e "define RTE_EAL_NUMA_AWARE_HUGEPAGES 1" $(DPDK_INC_DIR)/rte_config.h))
10−+ifneq (,$(wildcard $(DPDK_INC_DIR)/rte_build_config.h))
11−+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))
12− ENV_LINKER_ARGS += -lnuma
13− endif
14−+ifneq (,$(shell grep -e "define RTE_USE_LIBBSD 1" $(DPDK_INC_DIR)/rte_build_config.h))
15−+ENV_LINKER_ARGS += -lbsd
16−+endif
17− endif