diff mbox series

[meta-oe] nvme-cli: Fix build on musl

Message ID 20240521211446.2347991-1-raj.khem@gmail.com
State New
Headers show
Series [meta-oe] nvme-cli: Fix build on musl | expand

Commit Message

Khem Raj May 21, 2024, 9:14 p.m. UTC
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
 ...0001-nvme-Use-C99-types-for-uint32_t.patch | 88 +++++++++++++++++++
 ...stc-Replace-__uint16_t-with-uint16_t.patch | 34 +++++++
 .../recipes-bsp/nvme-cli/nvme-cli_2.9.1.bb    |  5 +-
 3 files changed, 126 insertions(+), 1 deletion(-)
 create mode 100644 meta-oe/recipes-bsp/nvme-cli/nvme-cli/0001-nvme-Use-C99-types-for-uint32_t.patch
 create mode 100644 meta-oe/recipes-bsp/nvme-cli/nvme-cli/0001-plugins-ssstc-Replace-__uint16_t-with-uint16_t.patch
diff mbox series

Patch

diff --git a/meta-oe/recipes-bsp/nvme-cli/nvme-cli/0001-nvme-Use-C99-types-for-uint32_t.patch b/meta-oe/recipes-bsp/nvme-cli/nvme-cli/0001-nvme-Use-C99-types-for-uint32_t.patch
new file mode 100644
index 0000000000..be1452af51
--- /dev/null
+++ b/meta-oe/recipes-bsp/nvme-cli/nvme-cli/0001-nvme-Use-C99-types-for-uint32_t.patch
@@ -0,0 +1,88 @@ 
+From ac2ff1dbe0b44953de636c50c7d7f8c1e9f1e458 Mon Sep 17 00:00:00 2001
+From: Sam James <sam@gentoo.org>
+Date: Sat, 4 May 2024 09:13:06 +0100
+Subject: [PATCH] nvme: Use C99 types for uint32_t
+
+<stdint.h> provides `uint32_t`, while `u_int_32` is an unofficial/internal
+typedef that glibc happens to provide. This fixes the build on musl.
+
+Bug: https://bugs.gentoo.org/931194
+
+Upstream-Status: Backport [https://github.com/linux-nvme/nvme-cli/commit/ac2ff1dbe0b44953de636c50c7d7f8c1e9f1e458]
+Signed-off-by: Sam James <sam@gentoo.org>
+---
+ nvme.c        | 13 +++++++------
+ util/base64.c |  5 +++--
+ 2 files changed, 10 insertions(+), 8 deletions(-)
+
+diff --git a/nvme.c b/nvme.c
+index 46a2399a..5409ddf2 100644
+--- a/nvme.c
++++ b/nvme.c
+@@ -34,6 +34,7 @@
+ #include <inttypes.h>
+ #include <locale.h>
+ #include <stdio.h>
++#include <stdint.h>
+ #include <stdlib.h>
+ #include <string.h>
+ #include <unistd.h>
+@@ -9081,8 +9082,8 @@ static int check_dhchap_key(int argc, char **argv, struct command *command, stru
+ 
+ 	unsigned char decoded_key[128];
+ 	unsigned int decoded_len;
+-	u_int32_t crc = crc32(0L, NULL, 0);
+-	u_int32_t key_crc;
++	uint32_t crc = crc32(0L, NULL, 0);
++	uint32_t key_crc;
+ 	int err = 0, hmac;
+ 	struct config {
+ 		char	*key;
+@@ -9150,10 +9151,10 @@ static int check_dhchap_key(int argc, char **argv, struct command *command, stru
+ 		return -EINVAL;
+ 	}
+ 	crc = crc32(crc, decoded_key, decoded_len);
+-	key_crc = ((u_int32_t)decoded_key[decoded_len]) |
+-		   ((u_int32_t)decoded_key[decoded_len + 1] << 8) |
+-		   ((u_int32_t)decoded_key[decoded_len + 2] << 16) |
+-		   ((u_int32_t)decoded_key[decoded_len + 3] << 24);
++	key_crc = ((uint32_t)decoded_key[decoded_len]) |
++		   ((uint32_t)decoded_key[decoded_len + 1] << 8) |
++		   ((uint32_t)decoded_key[decoded_len + 2] << 16) |
++		   ((uint32_t)decoded_key[decoded_len + 3] << 24);
+ 	if (key_crc != crc) {
+ 		nvme_show_error("CRC mismatch (key %08x, crc %08x)", key_crc, crc);
+ 		return -EINVAL;
+diff --git a/util/base64.c b/util/base64.c
+index 7f47cda6..0e89f2e9 100644
+--- a/util/base64.c
++++ b/util/base64.c
+@@ -20,6 +20,7 @@
+  * MA  02110-1301, USA.
+  */
+ 
++#include <stdint.h>
+ #include <stdlib.h>
+ #include <string.h>
+ #include <errno.h>
+@@ -42,7 +43,7 @@ static const char base64_table[65] =
+ int base64_encode(const unsigned char *src, int srclen, char *dst)
+ {
+ 	int i, bits = 0;
+-	u_int32_t ac = 0;
++	uint32_t ac = 0;
+ 	char *cp = dst;
+ 
+ 	for (i = 0; i < srclen; i++) {
+@@ -77,7 +78,7 @@ int base64_encode(const unsigned char *src, int srclen, char *dst)
+  */
+ int base64_decode(const char *src, int srclen, unsigned char *dst)
+ {
+-	u_int32_t ac = 0;
++	uint32_t ac = 0;
+ 	int i, bits = 0;
+ 	unsigned char *bp = dst;
+ 
+-- 
+2.45.1
+
diff --git a/meta-oe/recipes-bsp/nvme-cli/nvme-cli/0001-plugins-ssstc-Replace-__uint16_t-with-uint16_t.patch b/meta-oe/recipes-bsp/nvme-cli/nvme-cli/0001-plugins-ssstc-Replace-__uint16_t-with-uint16_t.patch
new file mode 100644
index 0000000000..1881b18aac
--- /dev/null
+++ b/meta-oe/recipes-bsp/nvme-cli/nvme-cli/0001-plugins-ssstc-Replace-__uint16_t-with-uint16_t.patch
@@ -0,0 +1,34 @@ 
+From 47d33d8da7a5b7310a2c2f4328115b439039e46c Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 21 May 2024 14:09:32 -0700
+Subject: [PATCH] plugins/ssstc: Replace __uint16_t with uint16_t
+
+uint16_t is ISO defined and comes from stdint.h, makes it
+portable across glibc and musl on linux.
+
+Upstream-Status: Submitted [https://github.com/linux-nvme/nvme-cli/pull/2351]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ plugins/ssstc/ssstc-nvme.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/plugins/ssstc/ssstc-nvme.c b/plugins/ssstc/ssstc-nvme.c
+index 03e4fe3f..302df988 100644
+--- a/plugins/ssstc/ssstc-nvme.c
++++ b/plugins/ssstc/ssstc-nvme.c
+@@ -64,9 +64,9 @@ void show_ssstc_add_smart_log_jsn(struct nvme_additional_smart_log *smart,
+ 		unsigned int nsid, const char *devname)
+ {
+ 	struct json_object *root, *entry_stats, *dev_stats, *multi;
+-	__uint16_t wear_level_min = 0;
+-	__uint16_t wear_level_max = 0;
+-	__uint16_t wear_level_avg = 0;
++	uint16_t wear_level_min = 0;
++	uint16_t wear_level_max = 0;
++	uint16_t wear_level_avg = 0;
+ 	uint64_t raw_val = 0;
+ 
+ 	root = json_create_object();
+-- 
+2.45.1
+
diff --git a/meta-oe/recipes-bsp/nvme-cli/nvme-cli_2.9.1.bb b/meta-oe/recipes-bsp/nvme-cli/nvme-cli_2.9.1.bb
index 8c090186d8..ad1728eed6 100644
--- a/meta-oe/recipes-bsp/nvme-cli/nvme-cli_2.9.1.bb
+++ b/meta-oe/recipes-bsp/nvme-cli/nvme-cli_2.9.1.bb
@@ -8,7 +8,10 @@  LIC_FILES_CHKSUM = "file://LICENSE;md5=8264535c0c4e9c6c335635c4026a8022 \
 DEPENDS = "json-c libnvme"
 SRCREV = "b340fd7dcf1aef76f8d46ab28bef3c170d310887"
 
-SRC_URI = "git://github.com/linux-nvme/nvme-cli.git;branch=master;protocol=https"
+SRC_URI = "git://github.com/linux-nvme/nvme-cli.git;branch=master;protocol=https \
+           file://0001-nvme-Use-C99-types-for-uint32_t.patch \
+           file://0001-plugins-ssstc-Replace-__uint16_t-with-uint16_t.patch \
+           "
 
 S = "${WORKDIR}/git"