diff options
author | Christophe Vu-Brugier <christophe.vu-brugier@seagate.com> | 2023-10-09 21:47:50 +0200 |
---|---|---|
committer | Khem Raj <raj.khem@gmail.com> | 2023-10-09 13:06:47 -0700 |
commit | 8930d8798b44f538fcfb2013cf273c4534778404 (patch) | |
tree | 511d27121f195bf04ce63b1faa52bf38c50ddd9c /meta-oe | |
parent | 6ee4a15ce28b7f09fa80aad05276ad347a182cbd (diff) | |
download | meta-openembedded-8930d8798b44f538fcfb2013cf273c4534778404.tar.gz |
libnvme: apply patch already upstream to fix build with musl
Build failure with musl due to conflicting definitions of ioctl()
between glibc and musl has been fixed by libnvme developers with this
commit:
* https://github.com/linux-nvme/libnvme/commit/ca47ba3119365eafac0ab25a86cab9d9a1b29bd4
Signed-off-by: Christophe Vu-Brugier <christophe.vu-brugier@seagate.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Diffstat (limited to 'meta-oe')
3 files changed, 69 insertions, 39 deletions
diff --git a/meta-oe/recipes-support/libnvme/libnvme/0001-ioctl-Check-for-ioctl-signature-for-musl.patch b/meta-oe/recipes-support/libnvme/libnvme/0001-ioctl-Check-for-ioctl-signature-for-musl.patch deleted file mode 100644 index 06f7b57121..0000000000 --- a/meta-oe/recipes-support/libnvme/libnvme/0001-ioctl-Check-for-ioctl-signature-for-musl.patch +++ /dev/null @@ -1,38 +0,0 @@ -From ad1ac4215f051bd42b7ddf64dad63d8215cc3ac4 Mon Sep 17 00:00:00 2001 -From: Khem Raj <raj.khem@gmail.com> -Date: Sat, 7 Oct 2023 17:50:54 -0700 -Subject: [PATCH] ioctl: Check for ioctl signature for musl - -Fixes -../git/test/ioctl/mock.c:117:5: error: conflicting types for 'ioctl' - 117 | int ioctl(int fd, unsigned long request, ...) - | ^ -/mnt/b/yoe/master/build/tmp/work/cortexa15t2hf-neon-yoe-linux-musleabi/libnvme/1.6/recipe-sysroot/usr/include/sys/ioctl.h:115:5: note: previous declaration is here - 115 | int ioctl (int, int, ...); - | ^ - -Upstream-Status: Pending -Signed-off-by: Khem Raj <raj.khem@gmail.com> ---- - test/ioctl/mock.c | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/test/ioctl/mock.c b/test/ioctl/mock.c -index e917244..7d5c983 100644 ---- a/test/ioctl/mock.c -+++ b/test/ioctl/mock.c -@@ -114,7 +114,11 @@ void end_mock_cmds(void) - } \ - }) - -+#if defined(__linux__) && !defined(__GLIBC__) -+int ioctl(int fd, int request, ...) -+#else - int ioctl(int fd, unsigned long request, ...) -+#endif - { - struct mock_cmds *mock_cmds; - bool result64; --- -2.42.0 - diff --git a/meta-oe/recipes-support/libnvme/libnvme/0001-test-handle-POSIX-ioctl-prototype.patch b/meta-oe/recipes-support/libnvme/libnvme/0001-test-handle-POSIX-ioctl-prototype.patch new file mode 100644 index 0000000000..ef9cc47d25 --- /dev/null +++ b/meta-oe/recipes-support/libnvme/libnvme/0001-test-handle-POSIX-ioctl-prototype.patch @@ -0,0 +1,68 @@ +From ca47ba3119365eafac0ab25a86cab9d9a1b29bd4 Mon Sep 17 00:00:00 2001 +From: Sam James <sam@gentoo.org> +Date: Sat, 30 Sep 2023 06:38:53 +0100 +Subject: [PATCH] test: handle POSIX ioctl prototype + +glibc has the following prototype for ioctl: int ioctl(int fd, unsigned long request, ...) +POSIX (inc. musl) has the following for ioctl: int ioctl(int fd, int request, ...) + +Check which prototype is used in <sys/ioctl.h> to avoid a conflict and conditionally +define the right one for the system. + +Bug: https://bugs.gentoo.org/914921 +Signed-off-by: Sam James <sam@gentoo.org> +Upstream-Status: Backport [https://github.com/linux-nvme/libnvme/commit/ca47ba3119365eafac0ab25a86cab9d9a1b29bd4] +--- + meson.build | 10 ++++++++++ + test/ioctl/mock.c | 6 +++++- + 2 files changed, 15 insertions(+), 1 deletion(-) + +diff --git a/meson.build b/meson.build +index 6fcf1da..2c979cc 100644 +--- a/meson.build ++++ b/meson.build +@@ -230,6 +230,16 @@ conf.set( + ), + description: 'Is network address and service translation available' + ) ++conf.set( ++ 'HAVE_GLIBC_IOCTL', ++ cc.compiles( ++ '''#include <sys/ioctl.h> ++ int ioctl(int fd, unsigned long request, ...); ++ ''', ++ name: 'ioctl has glibc-style prototype' ++ ), ++ description: 'Is ioctl the glibc interface (rather than POSIX)' ++) + + if cc.has_function_attribute('fallthrough') + conf.set('fallthrough', '__attribute__((__fallthrough__))') +diff --git a/test/ioctl/mock.c b/test/ioctl/mock.c +index e917244..5d2ac94 100644 +--- a/test/ioctl/mock.c ++++ b/test/ioctl/mock.c +@@ -114,7 +114,11 @@ void end_mock_cmds(void) + } \ + }) + ++#ifdef HAVE_GLIBC_IOCTL + int ioctl(int fd, unsigned long request, ...) ++#else ++int ioctl(int fd, int request, ...) ++#endif + { + struct mock_cmds *mock_cmds; + bool result64; +@@ -141,7 +145,7 @@ int ioctl(int fd, unsigned long request, ...) + result64 = true; + break; + default: +- fail("unexpected %s %lu", __func__, request); ++ fail("unexpected %s %lu", __func__, (unsigned long) request); + } + check(mock_cmds->remaining_cmds, + "unexpected %s command", mock_cmds->name); +-- +2.40.1 + diff --git a/meta-oe/recipes-support/libnvme/libnvme_1.6.bb b/meta-oe/recipes-support/libnvme/libnvme_1.6.bb index 26ad36d7d0..802edac508 100644 --- a/meta-oe/recipes-support/libnvme/libnvme_1.6.bb +++ b/meta-oe/recipes-support/libnvme/libnvme_1.6.bb @@ -14,7 +14,7 @@ DEPENDS = "json-c" SRCREV = "37a803cf77e224f66d86b1e1d9e74a15f55ea600" SRC_URI = "git://github.com/linux-nvme/libnvme;protocol=https;branch=master \ - file://0001-ioctl-Check-for-ioctl-signature-for-musl.patch \ + file://0001-test-handle-POSIX-ioctl-prototype.patch \ " S = "${WORKDIR}/git" |