commit:     44d0530879ab4219ce8452c8aa33fc75b1a03141
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Sat May  4 12:43:48 2024 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Sat May  4 12:43:48 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=44d05308

sys-libs/libnvme: fix musl build

I don't think this actually failed, unlike libnvme, but pull in the patches for
completeness.

Bug: https://bugs.gentoo.org/931194
Signed-off-by: Sam James <sam <AT> gentoo.org>

 .../libnvme/files/libnvme-1.9-musl-stdint.patch    | 59 ++++++++++++++++++++++
 sys-libs/libnvme/libnvme-1.9.ebuild                |  4 ++
 2 files changed, 63 insertions(+)

diff --git a/sys-libs/libnvme/files/libnvme-1.9-musl-stdint.patch 
b/sys-libs/libnvme/files/libnvme-1.9-musl-stdint.patch
new file mode 100644
index 000000000000..c2319b72bc96
--- /dev/null
+++ b/sys-libs/libnvme/files/libnvme-1.9-musl-stdint.patch
@@ -0,0 +1,59 @@
+https://github.com/linux-nvme/libnvme/pull/838
+
+From b3ca2923affce631bc302f0fdce565093ffe1b5b Mon Sep 17 00:00:00 2001
+From: Sam James <s...@gentoo.org>
+Date: Sat, 4 May 2024 10:59:16 +0100
+Subject: [PATCH] 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
+
+Signed-off-by: Sam James <s...@gentoo.org>
+--- a/src/nvme/base64.c
++++ b/src/nvme/base64.c
+@@ -7,6 +7,7 @@
+  * Author: Hannes Reinecke <h...@suse.de>
+  */
+ 
++#include <stdint.h>
+ #include <stdlib.h>
+ #include <string.h>
+ #include <errno.h>
+@@ -29,7 +30,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++) {
+@@ -64,7 +65,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;
+ 
+--- a/src/nvme/linux.c
++++ b/src/nvme/linux.c
+@@ -1513,10 +1513,10 @@ unsigned char *nvme_import_tls_key(const char 
*encoded_key, int *key_len,
+               return NULL;
+       }
+       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_msg(NULL, LOG_ERR, "CRC mismatch (key %08x, crc %08x)",
+                        key_crc, crc);
+

diff --git a/sys-libs/libnvme/libnvme-1.9.ebuild 
b/sys-libs/libnvme/libnvme-1.9.ebuild
index 1cc2223f879a..3436c4d122bd 100644
--- a/sys-libs/libnvme/libnvme-1.9.ebuild
+++ b/sys-libs/libnvme/libnvme-1.9.ebuild
@@ -35,6 +35,10 @@ BDEPEND="
        dev-lang/swig
 "
 
+PATCHES=(
+       "${FILESDIR}"/${PN}-1.9-musl-stdint.patch
+)
+
 src_configure() {
        local emesonargs=(
                -Dpython=disabled

Reply via email to