new file mode 100644
@@ -0,0 +1,121 @@
+From 4840ffe9e8610934d91b27061ff149cc74b41c28 Mon Sep 17 00:00:00 2001
+From: Bernd Schubert <bschubert@ddn.com>
+Date: Thu, 24 Apr 2025 16:49:08 +0200
+Subject: [PATCH] Fix meson function tests
+
+Several meson tests were incorrectly failing
+
+Checking for function "static_assert" : NO (cached)
+Checking for function "pthread_setname_np" : NO (cached)
+Check usable header "#include <linux/close_range.h>" : NO (cached)
+
+These functions get now tested with compilation tests
+and get found on my system.
+
+Checking if "static_assert check" compiles: YES
+Checking if "pthread_setname_np check" compiles: YES
+Checking if "close_range check" compiles: YES
+
+Upstream: https://github.com/libfuse/libfuse/commit/82bcd818fb3e7d5ced9b0c04b7b7a98a892e807e
+Signed-off-by: Bernd Schubert <bschubert@ddn.com>
+Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>
+---
+ meson.build | 67 +++++++++++++++++++++++++++++++++++++++--------------
+ 1 file changed, 49 insertions(+), 18 deletions(-)
+
+diff --git a/meson.build b/meson.build
+index ba551ed..d1346d0 100644
+--- a/meson.build
++++ b/meson.build
+@@ -59,6 +59,8 @@ include_default = '''
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ #include <fcntl.h>
++#include <assert.h> /* For static_assert */
++#include <pthread.h> /* For pthread_setname_np */
+ '''
+ args_default = [ '-D_GNU_SOURCE' ]
+
+@@ -72,32 +74,61 @@ 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', 'static_assert',
+- 'pthread_setname_np' ]
++ '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))
+ endforeach
+-private_cfg.set('HAVE_SETXATTR',
+- cc.has_function('setxattr', prefix: '#include <sys/xattr.h>'))
+-private_cfg.set('HAVE_ICONV',
+- cc.has_function('iconv', prefix: '#include <iconv.h>'))
+-private_cfg.set('HAVE_BACKTRACE',
+- cc.has_function('backtrace', prefix: '#include <execinfo.h>'))
+
+-# Test if headers exist
+-private_cfg.set('HAVE_LINUX_CLOSE_RANGE_H',
+- cc.check_header('#include <linux/close_range.h>'))
++# Special case checks that need custom code
++special_funcs = {
++ 'static_assert': '''
++ #include <assert.h>
++ static_assert(1, "test");
++ int main(void) { return 0; }
++ ''',
++ 'pthread_setname_np': '''
++ #include <pthread.h>
++ int main(void) {
++ pthread_t thread = pthread_self();
++ pthread_setname_np(thread, "test");
++ return 0;
++ }
++ ''',
++ 'close_range': '''
++ #include <unistd.h>
++ #include <fcntl.h>
++ #include <linux/close_range.h>
++ int main(void) {
++ unsigned int flags = CLOSE_RANGE_UNSHARE;
++ return close_range(3, ~0U, flags);
++ }
++ '''
++}
++
++foreach name, code : special_funcs
++ private_cfg.set('HAVE_' + name.to_upper(),
++ cc.compiles(code, args: ['-Werror'] + args_default,
++ name: name + ' check'))
++endforeach
++
++# Regular function checks
++private_cfg.set('HAVE_SETXATTR',
++ cc.has_function('setxattr', prefix: '#include <sys/xattr.h>'))
++private_cfg.set('HAVE_ICONV',
++ cc.has_function('iconv', prefix: '#include <iconv.h>'))
++private_cfg.set('HAVE_BACKTRACE',
++ cc.has_function('backtrace', prefix: '#include <execinfo.h>'))
+
+-# Test if structs have specific member
++# Struct member checks
+ private_cfg.set('HAVE_STRUCT_STAT_ST_ATIM',
+- cc.has_member('struct stat', 'st_atim',
+- prefix: include_default,
+- args: args_default))
++ cc.has_member('struct stat', 'st_atim',
++ prefix: include_default + '#include <sys/stat.h>',
++ args: args_default))
+ private_cfg.set('HAVE_STRUCT_STAT_ST_ATIMESPEC',
+- cc.has_member('struct stat', 'st_atimespec',
+- prefix: include_default,
+- args: args_default))
++ cc.has_member('struct stat', 'st_atimespec',
++ prefix: include_default + '#include <sys/stat.h>',
++ args: args_default))
+
+ #
+ # Compiler configuration
+--
+2.39.5
+
new file mode 100644
@@ -0,0 +1,41 @@
+From 6f50c950d09ad09339437b81ce22b36e0e2749c9 Mon Sep 17 00:00:00 2001
+From: Giulio Benetti <giulio.benetti@benettiengineering.com>
+Date: Fri, 25 Apr 2025 19:00:14 +0200
+Subject: [PATCH] meson.build: make special_funcs check more reliable
+
+Unfortunately while cross-compiling with build tools like Buildroot it
+happens to have repeated flags or anything that could lead to a warning.
+This way the check fails because of a warning not related to the special
+function. So let's use cc.links() and increase minimum meson_version to
+0.60 since cc.links() has been added during that version.
+
+Upstream: https://github.com/libfuse/libfuse/pull/1211
+Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>
+---
+ meson.build | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/meson.build b/meson.build
+index d1346d0..d3d236d 100644
+--- a/meson.build
++++ b/meson.build
+@@ -1,6 +1,6 @@
+ project('libfuse3', ['c'],
+ version: '3.17.2',
+- meson_version: '>= 0.51.0',
++ meson_version: '>= 0.60.0',
+ default_options: [
+ 'buildtype=debugoptimized',
+ 'c_std=gnu11',
+@@ -108,7 +108,7 @@ special_funcs = {
+
+ foreach name, code : special_funcs
+ private_cfg.set('HAVE_' + name.to_upper(),
+- cc.compiles(code, args: ['-Werror'] + args_default,
++ cc.links(code, args: args_default,
+ name: name + ' check'))
+ endforeach
+
+--
+2.39.5
+
Add local patches, one upstreamed and one pending upstream to fix the presence of function pthread_setname_np in runtime. Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com> --- .../0001-Fix-meson-function-tests.patch | 121 ++++++++++++++++++ ...ke-special_funcs-check-more-reliable.patch | 41 ++++++ 2 files changed, 162 insertions(+) create mode 100644 package/libfuse3/0001-Fix-meson-function-tests.patch create mode 100644 package/libfuse3/0002-meson.build-make-special_funcs-check-more-reliable.patch