diff --git a/package/libfuse3/0001-Fix-build-with-kernel-5.9.patch b/package/libfuse3/0001-Fix-build-with-kernel-5.9.patch new file mode 100644 index 0000000000..f47af0ecc7 --- /dev/null +++ b/package/libfuse3/0001-Fix-build-with-kernel-5.9.patch @@ -0,0 +1,72 @@ +From 714fcf4123ae5512893019d2c205aad94b6afea6 Mon Sep 17 00:00:00 2001 +From: Giulio Benetti +Date: Tue, 1 Apr 2025 00:53:07 +0200 +Subject: [PATCH] Fix build with kernel < 5.9 + +linux/close_range.h is only available since kernel 5.9 and +https://github.com/torvalds/linux/commit/60997c3d45d9a67daf01c56d805ae4fec37e0bd8 +resulting in the following build failure: + +../util/fusermount.c:40:10: fatal error: linux/close_range.h: No such file or directory + +So let's check for header presence and emit HAVE_LINUX_CLOSE_RANGE_H +accordingly and check for it when including and +calling close_range() instead of checking for close_range() function in +meson and check against HAVE_CLOSE_RANGE. + +Upstream: https://github.com/libfuse/libfuse/pull/1185 +Signed-off-by: Giulio Benetti +--- + meson.build | 6 +++++- + util/fusermount.c | 4 ++-- + 2 files changed, 7 insertions(+), 3 deletions(-) + +diff --git a/meson.build b/meson.build +index cbcd70d..96c655c 100644 +--- a/meson.build ++++ b/meson.build +@@ -72,7 +72,7 @@ private_cfg.set_quoted('PACKAGE_VERSION', meson.project_version()) + # Test for presence of some functions + test_funcs = [ 'fork', 'fstatat', 'openat', 'readlinkat', 'pipe2', + 'splice', 'vmsplice', 'posix_fallocate', 'fdatasync', +- 'utimensat', 'copy_file_range', 'fallocate', 'close_range' ] ++ 'utimensat', 'copy_file_range', 'fallocate' ] + foreach func : test_funcs + private_cfg.set('HAVE_' + func.to_upper(), + cc.has_function(func, prefix: include_default, args: args_default)) +@@ -84,6 +84,10 @@ private_cfg.set('HAVE_ICONV', + private_cfg.set('HAVE_BACKTRACE', + cc.has_function('backtrace', prefix: '#include ')) + ++# Test if headers exist ++private_cfg.set('HAVE_LINUX_CLOSE_RANGE_H', ++ cc.check_header('#include ')) ++ + # Test if structs have specific member + private_cfg.set('HAVE_STRUCT_STAT_ST_ATIM', + cc.has_member('struct stat', 'st_atim', +diff --git a/util/fusermount.c b/util/fusermount.c +index dbd947c..da6d5f2 100644 +--- a/util/fusermount.c ++++ b/util/fusermount.c +@@ -36,7 +36,7 @@ + #include + #include + +-#ifdef HAVE_CLOSE_RANGE ++#ifdef HAVE_LINUX_CLOSE_RANGE_H + #include + #endif + +@@ -1477,7 +1477,7 @@ static int close_inherited_fds(int cfd) + if (cfd <= STDERR_FILENO) + return -EINVAL; + +-#ifdef HAVE_CLOSE_RANGE ++#ifdef HAVE_LINUX_CLOSE_RANGE_H + if (cfd < STDERR_FILENO + 2) { + close_range_loop(STDERR_FILENO + 1, cfd - 1, cfd); + } else { +-- +2.39.5 + diff --git a/package/libfuse3/0002-Fix-static_assert-build-failure-with-C-version-11.patch b/package/libfuse3/0002-Fix-static_assert-build-failure-with-C-version-11.patch new file mode 100644 index 0000000000..3bcff3d256 --- /dev/null +++ b/package/libfuse3/0002-Fix-static_assert-build-failure-with-C-version-11.patch @@ -0,0 +1,49 @@ +From 5fafd1a33e9442811074604eeaa060578e589730 Mon Sep 17 00:00:00 2001 +From: Giulio Benetti +Date: Fri, 4 Apr 2025 22:17:49 +0200 +Subject: [PATCH] Fix static_assert build failure with C++ version < 11 + +At the moment build fails due to lack of static_assert: +https://gitlab.com/jolivain/buildroot/-/jobs/9606292537 +this means that the check per date is not enough, so let's use meson to +check if static_assert() is present or not and simplify +fuse_static_assert() definition by only checking HAVE_STATIC_ASSERT. + +Upstream: https://github.com/libfuse/libfuse/pull/1189 +Signed-off-by: Giulio Benetti +--- + include/fuse_common.h | 4 +--- + meson.build | 2 +- + 2 files changed, 2 insertions(+), 4 deletions(-) + +diff --git a/include/fuse_common.h b/include/fuse_common.h +index 77efc5d..582505f 100644 +--- a/include/fuse_common.h ++++ b/include/fuse_common.h +@@ -30,9 +30,7 @@ + #define FUSE_MAKE_VERSION(maj, min) ((maj) * 100 + (min)) + #define FUSE_VERSION FUSE_MAKE_VERSION(FUSE_MAJOR_VERSION, FUSE_MINOR_VERSION) + +-#if (defined(__cplusplus) && __cplusplus >= 201103L) || \ +- (!defined(__cplusplus) && defined(__STDC_VERSION__) && \ +- __STDC_VERSION__ >= 201112L) ++#ifdef HAVE_STATIC_ASSERT + #define fuse_static_assert(condition, message) static_assert(condition, message) + #else + #define fuse_static_assert(condition, message) +diff --git a/meson.build b/meson.build +index 96c655c..bab98da 100644 +--- a/meson.build ++++ b/meson.build +@@ -72,7 +72,7 @@ private_cfg.set_quoted('PACKAGE_VERSION', meson.project_version()) + # Test for presence of some functions + test_funcs = [ 'fork', 'fstatat', 'openat', 'readlinkat', 'pipe2', + 'splice', 'vmsplice', 'posix_fallocate', 'fdatasync', +- 'utimensat', 'copy_file_range', 'fallocate' ] ++ 'utimensat', 'copy_file_range', 'fallocate', 'static_assert' ] + foreach func : test_funcs + private_cfg.set('HAVE_' + func.to_upper(), + cc.has_function(func, prefix: include_default, args: args_default)) +-- +2.39.5 + diff --git a/package/libfuse3/libfuse3.hash b/package/libfuse3/libfuse3.hash index 6f3b3ce122..b6e919d56b 100644 --- a/package/libfuse3/libfuse3.hash +++ b/package/libfuse3/libfuse3.hash @@ -1,3 +1,3 @@ # Locally calculated sha256 checksums -sha256 1bc306be1a1f4f6c8965fbdd79c9ccca021fdc4b277d501483a711cbd7dbcd6c libfuse3-3.16.2.tar.gz +sha256 b81027fc8f444fb574de7f13edf0cf9810643d2935670c4fe19f140354241208 libfuse3-3.17.1.tar.gz sha256 b8832d9caaa075bbbd2aef24efa09f8b7ab66a832812d88c602da0c7b4397fad LICENSE diff --git a/package/libfuse3/libfuse3.mk b/package/libfuse3/libfuse3.mk index f5c9dae8f7..768179797b 100644 --- a/package/libfuse3/libfuse3.mk +++ b/package/libfuse3/libfuse3.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBFUSE3_VERSION = 3.16.2 +LIBFUSE3_VERSION = 3.17.1 LIBFUSE3_SITE = $(call github,libfuse,libfuse,fuse-$(LIBFUSE3_VERSION)) LIBFUSE3_LICENSE = LGPL-2.1 LIBFUSE3_LICENSE_FILES = LICENSE @@ -18,6 +18,11 @@ LIBFUSE3_CONF_OPTS = \ -Duseroot=false \ -Dtests=false +# Uses __atomic_fetch_sub_4 +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +LIBFUSE3_LDFLAGS += -latomic +endif + define LIBFUSE3_DEVICES /dev/fuse c 666 0 0 10 229 0 0 - endef