From 11ca5bc2615952fbe482a9e111a67bf7ac8344f5 Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Tue, 21 May 2024 14:14:11 -0700 Subject: nvme-cli: Fix build on musl Signed-off-by: Khem Raj --- .../0001-nvme-Use-C99-types-for-uint32_t.patch | 88 ++++++++++++++++++++++ ...ns-ssstc-Replace-__uint16_t-with-uint16_t.patch | 34 +++++++++ meta-oe/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 --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 +Date: Sat, 4 May 2024 09:13:06 +0100 +Subject: [PATCH] nvme: Use C99 types for uint32_t + + 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 +--- + 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 + #include + #include ++#include + #include + #include + #include +@@ -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 + #include + #include + #include +@@ -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 +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 +--- + 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 78fff64fcd..842403c311 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" -- cgit v1.2.3-54-g00ecf