Skip to content

Commit

Permalink
package/libnvme: bump to version 1.6
Browse files Browse the repository at this point in the history
Add 2 upstream patches, one to avoid build failure due to different libc
ioctl() prototype and one to avoid link conflict due to test unit enabled
by default.

Signed-off-by: Giulio Benetti <[email protected]>
Signed-off-by: Arnout Vandecappelle <[email protected]>
  • Loading branch information
giuliobenetti authored and arnout committed Oct 15, 2023
1 parent 39e092a commit 087e2ce
Show file tree
Hide file tree
Showing 4 changed files with 121 additions and 2 deletions.
70 changes: 70 additions & 0 deletions package/libnvme/0001-test-handle-POSIX-ioctl-prototype.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
From ca47ba3119365eafac0ab25a86cab9d9a1b29bd4 Mon Sep 17 00:00:00 2001
From: Sam James <[email protected]>
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.

Upstream: https://github.com/linux-nvme/libnvme/commit/ca47ba3119365eafac0ab25a86cab9d9a1b29bd4

Bug: https://bugs.gentoo.org/914921
Signed-off-by: Sam James <[email protected]>
Signed-off-by: Giulio Benetti <[email protected]>
---
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.34.1

46 changes: 46 additions & 0 deletions package/libnvme/0002-meson-make-building-tests-conditional.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
From ff742e792725c316ba6de0800188bf36751bd1d1 Mon Sep 17 00:00:00 2001
From: Sam James <[email protected]>
Date: Sat, 30 Sep 2023 06:43:39 +0100
Subject: [PATCH] meson: make building tests conditional

Just like we do for docs.

Upstream: https://github.com/linux-nvme/libnvme/commit/ff742e792725c316ba6de0800188bf36751bd1d1

Signed-off-by: Sam James <[email protected]>
Signed-off-by: Giulio Benetti <[email protected]>
---
meson.build | 4 +++-
meson_options.txt | 1 +
2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/meson.build b/meson.build
index 2c979cc..a9263b5 100644
--- a/meson.build
+++ b/meson.build
@@ -273,7 +273,9 @@ subdir('internal')
subdir('ccan')
subdir('src')
subdir('libnvme')
-subdir('test')
+if get_option('tests')
+ subdir('test')
+endif
subdir('examples')
subdir('doc')

diff --git a/meson_options.txt b/meson_options.txt
index a1ed79f..251ae11 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -6,6 +6,7 @@ option('rstdir', type : 'string', value : '', description : 'directory for ReST

option('docs', type : 'combo', choices : ['false', 'html', 'man', 'rst', 'all'], description : 'install documentation')
option('docs-build', type : 'boolean', value : false, description : 'build documentation')
+option('tests', type : 'boolean', value : true, description : 'build tests')

option('python', type : 'feature', value: 'auto', description : 'Generate libnvme python bindings')
option('openssl', type : 'feature', value: 'auto', description : 'OpenSSL support')
--
2.34.1

2 changes: 1 addition & 1 deletion package/libnvme/libnvme.hash
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
# Locally calculated sha256 checksums
sha256 f73ba1edde059b2d5e7c1048ad4f895e6047bff241c94b34a7aff5894779d086 libnvme-1.5.tar.gz
sha256 0dd8ba8b655abe78c09833edb66632aa6bee82aebf117dd252ded968deaaeec7 libnvme-1.6.tar.gz
sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING
5 changes: 4 additions & 1 deletion package/libnvme/libnvme.mk
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,15 @@
#
################################################################################

LIBNVME_VERSION = 1.5
LIBNVME_VERSION = 1.6
LIBNVME_SITE = $(call github,linux-nvme,libnvme,v$(LIBNVME_VERSION))
LIBNVME_LICENSE = LGPL-2.1
LIBNVME_LICENSE_FILES = COPYING
LIBNVME_INSTALL_STAGING = YES

LIBNVME_CONF_OPTS += \
-Dtests=false

ifeq ($(BR2_PACKAGE_PYTHON3),y)
LIBNVME_DEPENDENCIES += python3
LIBNVME_CONF_OPTS += -Dpython=enabled
Expand Down

0 comments on commit 087e2ce

Please sign in to comment.