diff options
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 @@ | |||
1 | From ad1ac4215f051bd42b7ddf64dad63d8215cc3ac4 Mon Sep 17 00:00:00 2001 | ||
2 | From: Khem Raj <raj.khem@gmail.com> | ||
3 | Date: Sat, 7 Oct 2023 17:50:54 -0700 | ||
4 | Subject: [PATCH] ioctl: Check for ioctl signature for musl | ||
5 | |||
6 | Fixes | ||
7 | ../git/test/ioctl/mock.c:117:5: error: conflicting types for 'ioctl' | ||
8 | 117 | int ioctl(int fd, unsigned long request, ...) | ||
9 | | ^ | ||
10 | /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 | ||
11 | 115 | int ioctl (int, int, ...); | ||
12 | | ^ | ||
13 | |||
14 | Upstream-Status: Pending | ||
15 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | ||
16 | --- | ||
17 | test/ioctl/mock.c | 4 ++++ | ||
18 | 1 file changed, 4 insertions(+) | ||
19 | |||
20 | diff --git a/test/ioctl/mock.c b/test/ioctl/mock.c | ||
21 | index e917244..7d5c983 100644 | ||
22 | --- a/test/ioctl/mock.c | ||
23 | +++ b/test/ioctl/mock.c | ||
24 | @@ -114,7 +114,11 @@ void end_mock_cmds(void) | ||
25 | } \ | ||
26 | }) | ||
27 | |||
28 | +#if defined(__linux__) && !defined(__GLIBC__) | ||
29 | +int ioctl(int fd, int request, ...) | ||
30 | +#else | ||
31 | int ioctl(int fd, unsigned long request, ...) | ||
32 | +#endif | ||
33 | { | ||
34 | struct mock_cmds *mock_cmds; | ||
35 | bool result64; | ||
36 | -- | ||
37 | 2.42.0 | ||
38 | |||
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 @@ | |||
1 | From ca47ba3119365eafac0ab25a86cab9d9a1b29bd4 Mon Sep 17 00:00:00 2001 | ||
2 | From: Sam James <sam@gentoo.org> | ||
3 | Date: Sat, 30 Sep 2023 06:38:53 +0100 | ||
4 | Subject: [PATCH] test: handle POSIX ioctl prototype | ||
5 | |||
6 | glibc has the following prototype for ioctl: int ioctl(int fd, unsigned long request, ...) | ||
7 | POSIX (inc. musl) has the following for ioctl: int ioctl(int fd, int request, ...) | ||
8 | |||
9 | Check which prototype is used in <sys/ioctl.h> to avoid a conflict and conditionally | ||
10 | define the right one for the system. | ||
11 | |||
12 | Bug: https://bugs.gentoo.org/914921 | ||
13 | Signed-off-by: Sam James <sam@gentoo.org> | ||
14 | Upstream-Status: Backport [https://github.com/linux-nvme/libnvme/commit/ca47ba3119365eafac0ab25a86cab9d9a1b29bd4] | ||
15 | --- | ||
16 | meson.build | 10 ++++++++++ | ||
17 | test/ioctl/mock.c | 6 +++++- | ||
18 | 2 files changed, 15 insertions(+), 1 deletion(-) | ||
19 | |||
20 | diff --git a/meson.build b/meson.build | ||
21 | index 6fcf1da..2c979cc 100644 | ||
22 | --- a/meson.build | ||
23 | +++ b/meson.build | ||
24 | @@ -230,6 +230,16 @@ conf.set( | ||
25 | ), | ||
26 | description: 'Is network address and service translation available' | ||
27 | ) | ||
28 | +conf.set( | ||
29 | + 'HAVE_GLIBC_IOCTL', | ||
30 | + cc.compiles( | ||
31 | + '''#include <sys/ioctl.h> | ||
32 | + int ioctl(int fd, unsigned long request, ...); | ||
33 | + ''', | ||
34 | + name: 'ioctl has glibc-style prototype' | ||
35 | + ), | ||
36 | + description: 'Is ioctl the glibc interface (rather than POSIX)' | ||
37 | +) | ||
38 | |||
39 | if cc.has_function_attribute('fallthrough') | ||
40 | conf.set('fallthrough', '__attribute__((__fallthrough__))') | ||
41 | diff --git a/test/ioctl/mock.c b/test/ioctl/mock.c | ||
42 | index e917244..5d2ac94 100644 | ||
43 | --- a/test/ioctl/mock.c | ||
44 | +++ b/test/ioctl/mock.c | ||
45 | @@ -114,7 +114,11 @@ void end_mock_cmds(void) | ||
46 | } \ | ||
47 | }) | ||
48 | |||
49 | +#ifdef HAVE_GLIBC_IOCTL | ||
50 | int ioctl(int fd, unsigned long request, ...) | ||
51 | +#else | ||
52 | +int ioctl(int fd, int request, ...) | ||
53 | +#endif | ||
54 | { | ||
55 | struct mock_cmds *mock_cmds; | ||
56 | bool result64; | ||
57 | @@ -141,7 +145,7 @@ int ioctl(int fd, unsigned long request, ...) | ||
58 | result64 = true; | ||
59 | break; | ||
60 | default: | ||
61 | - fail("unexpected %s %lu", __func__, request); | ||
62 | + fail("unexpected %s %lu", __func__, (unsigned long) request); | ||
63 | } | ||
64 | check(mock_cmds->remaining_cmds, | ||
65 | "unexpected %s command", mock_cmds->name); | ||
66 | -- | ||
67 | 2.40.1 | ||
68 | |||
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" | |||
14 | SRCREV = "37a803cf77e224f66d86b1e1d9e74a15f55ea600" | 14 | SRCREV = "37a803cf77e224f66d86b1e1d9e74a15f55ea600" |
15 | 15 | ||
16 | SRC_URI = "git://github.com/linux-nvme/libnvme;protocol=https;branch=master \ | 16 | SRC_URI = "git://github.com/linux-nvme/libnvme;protocol=https;branch=master \ |
17 | file://0001-ioctl-Check-for-ioctl-signature-for-musl.patch \ | 17 | file://0001-test-handle-POSIX-ioctl-prototype.patch \ |
18 | " | 18 | " |
19 | 19 | ||
20 | S = "${WORKDIR}/git" | 20 | S = "${WORKDIR}/git" |