From 4a74938e510c0dad732ae4c48f815dd0f0cabb46 Mon Sep 17 00:00:00 2001 From: V3n3RiX Date: Mon, 13 Feb 2023 08:16:09 +0000 Subject: gentoo auto-resync : 13:02:2023 - 08:16:09 --- sys-fs/fuse/Manifest | 2 + sys-fs/fuse/files/fuse-3.13.1-r1-fix-config.patch | 256 ++++++++++++++++++++++ sys-fs/fuse/fuse-3.13.1-r1.ebuild | 76 +++++++ 3 files changed, 334 insertions(+) create mode 100644 sys-fs/fuse/files/fuse-3.13.1-r1-fix-config.patch create mode 100644 sys-fs/fuse/fuse-3.13.1-r1.ebuild (limited to 'sys-fs/fuse') diff --git a/sys-fs/fuse/Manifest b/sys-fs/fuse/Manifest index 9bc184db1c90..c69f0b21d277 100644 --- a/sys-fs/fuse/Manifest +++ b/sys-fs/fuse/Manifest @@ -1,6 +1,7 @@ AUX fuse-2.9.3-kernel-types.patch 434 BLAKE2B 501d771217a6131c31982a5cee300d1d6f977308c429858817fce81520291fd49fb58e6c863474a45a2e3a674da33b5678fcd784a7d1e8bc9472bbe0995ae3dc SHA512 909d43fbe190400d4beabd9801bf554e38a5bb5a3545930883976f42a2090c8768e485183949269639ddeae5bae5490b37dc23f031c48d6c4fd4c9facf08b66b AUX fuse-2.9.9-avoid-calling-umount.patch 1264 BLAKE2B f02bb80aab844f90638ed291891d819169946e3e4e58318bf370f5f3721aa80ba8ecd7cb127e387780e5ed8336875e3eca2d776ecde29a85e40821ee89c8264d SHA512 24f6c7ccf8b3d291e0e477685532854a21aeb65a90f7c428db039e6c7ba8a4cdb5435f2effba3a397448c0f6a44e056f2580eb55357a0b29c6c78bf5b364830c AUX fuse-2.9.9-closefrom-glibc-2-34.patch 1649 BLAKE2B 6697ecfd16ca8a71ec10c0caadee97c84fe412056c04124cf501a30df1dd7cb5bbbfd8a761692f2396755dda156fd94b86278d78f1a2bd2d7a41b9fd87f20fee SHA512 77bca6a67c235d7d22b156a9c3a8b906de59029d28fa0c985cb15e30d306b0dd6b9437d75eabe307aca7e159ecd90e47bd8fb723a582e95d0c491a6cb308e8a5 +AUX fuse-3.13.1-r1-fix-config.patch 9611 BLAKE2B 05de6d654c21f72ff29b1193d1e4bde2fe34caf390958470972c4e7d598e1fc442d2cbe6ed22a0805395e84504871efd2ae4ea41c6e04bf0d2999e271cc7e5fd SHA512 59f9dc1d6a57f54a7f053dcbcb2c3026f2fd2a6d0716e2ea27f28312f658413bc8577c4bd8e97e51cda5cfe06d8ae4df82b4a76b11a5b86f3674bc090f0f2f30 DIST fuse-2.9.9.tar.gz 1813177 BLAKE2B 9e9141380bda46eb0bcce325c6fd293fe3844fe884a4952bb38d4b89dc48b728ffcc891038b3a7a861f05acfacce9dd7bb0e11d600609f3ad0ab278ccbe98847 SHA512 3d82fafd04f2924299bb09d2bb144935fa004a43fb9a6568e2e1cc5a60fded2efa1711029a0d7f12b3e6e4501f7217f2ee3545646d89da8dece083cb390f23e2 DIST fuse-3.12.0.tar.xz 3206368 BLAKE2B 9f7df324f5c28480e48264c53c23fd2afc372592aab586bebdee38a809881603c93d05d0ca20c9007ba4b77efdf391705a93a0a6a12b218c9bd5541aa6a5275d SHA512 b66232785fbe83ec32a9779542d085dc2c19f1fe0655e5f1e22e1a7add69795df40eb58da256a963537e64a9bf798ed8dfbc678f977fdd22567c5befa5b6ca04 DIST fuse-3.13.0.tar.xz 3847800 BLAKE2B b9428f27c431c30deca48cf4b76761c120ebbdb6d22789c19fa25ffbff47c752690e7d0a0b28b70bff2b8f9063272adc65dc084ee45036548452ae891fb77ab2 SHA512 762262ed45b3e139481e39e7c7aae1df4347064fe100538138467f7567ae04f46fca19e6dac76f046cc07d2c4736f34ddb3780e067a48165e0d1fdd1153b66b1 @@ -9,5 +10,6 @@ DIST iconv.m4.bz2 3057 BLAKE2B 9d8f7637d87bfcea1b60f3ea11e162aecf391b3f4579a3b85 EBUILD fuse-2.9.9-r2.ebuild 2141 BLAKE2B 92bedf477999e4b306f48194f211769747f1c0955efa944421c5afbfd95f0d2f731b1b0ccc33dd403a8083a915c3c73081b332ea9c08629084923fcc470d0ca5 SHA512 808807cdd2daef32aa9923beb6317e4c13b9a70205899537aecf1c31ad88a7b1945f5b5242edb1869db9d0e56ade86a1fc2b65633c64b02236f9358bae9aafe3 EBUILD fuse-3.12.0.ebuild 1680 BLAKE2B 9a60340f545bdd9e1a58f4e8a95860b858fd85d0a4c1a6ba92bdd3d9f7b6ea976f77d333f5d00da9c6ed658eaf151669c80fa653549434bdc688159c100aef22 SHA512 8432461667f4ce53971f9d51a0dc2d4d620b178f7aa56d0953eedf26d7ccff2e8cfc98641bda839d7c62eae9f323734329c02c99b0bca4b00a7dc38efd9d0e17 EBUILD fuse-3.13.0-r1.ebuild 1729 BLAKE2B d395b137cdc295f0e734d41ce9758126d5a83625520af1f740f1d975a7136be7ddc825251331bb351e9ee48f385839f9c8f837d80490a443b058d1babab06f89 SHA512 e19cdbf99edfc20e84f8088e6d20d901a868ac0987394a54c8b97cd115daadd378c10d8884004eb61900dac3604b63dbaa9940bec599debfb4a66ca2c87d1f9a +EBUILD fuse-3.13.1-r1.ebuild 1789 BLAKE2B 5ac191998410a835e490882fd5f95bd0661933f114edf5f913b7272c3192e7bff799b1cdcbcbab5f8b9c71746d6e83bb8346f519c1e711bbaf9caae0d7129e61 SHA512 d6f75f98dbb3c26b19d0701c235f7b78072488be8e39d533074a40335ff659464a864ec5577f916e8544a45c74320a5b76299840d48522496568ea6db8d7527e EBUILD fuse-3.13.1.ebuild 1729 BLAKE2B d395b137cdc295f0e734d41ce9758126d5a83625520af1f740f1d975a7136be7ddc825251331bb351e9ee48f385839f9c8f837d80490a443b058d1babab06f89 SHA512 e19cdbf99edfc20e84f8088e6d20d901a868ac0987394a54c8b97cd115daadd378c10d8884004eb61900dac3604b63dbaa9940bec599debfb4a66ca2c87d1f9a MISC metadata.xml 357 BLAKE2B 49ff08baa6cc3cb3d58f892f8d1db18f2d8fd184945c4fe7fc75f0db265bf9b6ee8861b421c8ab1070a51e2b03b94eb77133991d71208a51a30d1f286d3a9ea6 SHA512 1c5b658c85cb13904843e1b0746019cca9dba7ec0cc61d4ba0c13378b32b4d3eaf016fbc7805637113c5285909c22f16d8ad3cdc23fec69775b12057f4146a0e diff --git a/sys-fs/fuse/files/fuse-3.13.1-r1-fix-config.patch b/sys-fs/fuse/files/fuse-3.13.1-r1-fix-config.patch new file mode 100644 index 000000000000..d61657f3c285 --- /dev/null +++ b/sys-fs/fuse/files/fuse-3.13.1-r1-fix-config.patch @@ -0,0 +1,256 @@ +From d7560cc9916b086bfe5d86459cc9f04033edd904 Mon Sep 17 00:00:00 2001 +Message-Id: +From: Bernd Schubert +Date: Tue, 7 Feb 2023 23:06:42 +0100 +Subject: [PATCH] Split config.h into private and public config + +This addresses https://github.com/libfuse/libfuse/issues/729 + +commit db35a37def14b72181f3630efeea0e0433103c41 introduced a public +config.h (rename to fuse_config.h to avoid conflicts) that +was installed with the package and included by libfuse users +through fuse_common.h. Probablem is that this file does not have +unique defines so that they are unique to libfuse - on including +the file conflicts with libfuse users came up. + +In principle all defines could be prefixed, but then most of them +are internal for libfuse compilation only. So this splits out +publically required defines to a new file 'libfuse_config.h' +and changes back to include of "fuse_config.h" only when +HAVE_LIBFUSE_PRIVATE_CONFIG_H is defined. + +This also renames HAVE_LIBC_VERSIONED_SYMBOLS to +LIBFUSE_BUILT_WITH_VERSIONED_SYMBOLS, as it actually +better explains for libfuse users what that variable +is for. + +Signed-off-by: Martin Kletzander +--- + include/fuse.h | 10 ++++----- + include/fuse_common.h | 5 +++++ + include/fuse_lowlevel.h | 4 ++-- + lib/compat.c | 2 +- + lib/fuse_misc.h | 2 +- + lib/meson.build | 2 +- + meson.build | 45 ++++++++++++++++++++++++++++------------- + 7 files changed, 46 insertions(+), 24 deletions(-) + +diff --git a/include/fuse.h b/include/fuse.h +index 2888d2b497c1..6f162dd07821 100644 +--- a/include/fuse.h ++++ b/include/fuse.h +@@ -948,15 +948,15 @@ struct fuse *fuse_new_30(struct fuse_args *args, const struct fuse_operations *o + size_t op_size, void *private_data); + #define fuse_new(args, op, size, data) fuse_new_30(args, op, size, data) + #else +-#if (defined(HAVE_LIBC_VERSIONED_SYMBOLS)) ++#if (defined(LIBFUSE_BUILT_WITH_VERSIONED_SYMBOLS)) + struct fuse *fuse_new(struct fuse_args *args, const struct fuse_operations *op, + size_t op_size, void *private_data); +-#else /* HAVE_LIBC_VERSIONED_SYMBOLS */ ++#else /* LIBFUSE_BUILT_WITH_VERSIONED_SYMBOLS */ + struct fuse *fuse_new_31(struct fuse_args *args, + const struct fuse_operations *op, + size_t op_size, void *user_data); + #define fuse_new(args, op, size, data) fuse_new_31(args, op, size, data) +-#endif /* HAVE_LIBC_VERSIONED_SYMBOLS */ ++#endif /* LIBFUSE_BUILT_WITH_VERSIONED_SYMBOLS */ + #endif + + /** +@@ -1053,11 +1053,11 @@ int fuse_loop_mt_32(struct fuse *f, struct fuse_loop_config *config); + * + * See also: fuse_loop() + */ +-#if (defined(HAVE_LIBC_VERSIONED_SYMBOLS)) ++#if (defined(LIBFUSE_BUILT_WITH_VERSIONED_SYMBOLS)) + int fuse_loop_mt(struct fuse *f, struct fuse_loop_config *config); + #else + #define fuse_loop_mt(f, config) fuse_loop_mt_312(f, config) +-#endif /* HAVE_LIBC_VERSIONED_SYMBOLS */ ++#endif /* LIBFUSE_BUILT_WITH_VERSIONED_SYMBOLS */ + #endif + + +diff --git a/include/fuse_common.h b/include/fuse_common.h +index 1d050bb3a00a..8ee1a34029ff 100644 +--- a/include/fuse_common.h ++++ b/include/fuse_common.h +@@ -14,7 +14,12 @@ + #ifndef FUSE_COMMON_H_ + #define FUSE_COMMON_H_ + ++#ifdef HAVE_LIBFUSE_PRIVATE_CONFIG_H + #include "fuse_config.h" ++#endif ++ ++#include "libfuse_config.h" ++ + #include "fuse_opt.h" + #include "fuse_log.h" + #include +diff --git a/include/fuse_lowlevel.h b/include/fuse_lowlevel.h +index 96088d7ae8f2..9099e45357f3 100644 +--- a/include/fuse_lowlevel.h ++++ b/include/fuse_lowlevel.h +@@ -1958,7 +1958,7 @@ struct fuse_cmdline_opts { + * @param opts output argument for parsed options + * @return 0 on success, -1 on failure + */ +-#if (defined(HAVE_LIBC_VERSIONED_SYMBOLS)) ++#if (defined(LIBFUSE_BUILT_WITH_VERSIONED_SYMBOLS)) + int fuse_parse_cmdline(struct fuse_args *args, + struct fuse_cmdline_opts *opts); + #else +@@ -2076,7 +2076,7 @@ int fuse_session_loop(struct fuse_session *se); + int fuse_session_loop_mt_32(struct fuse_session *se, struct fuse_loop_config *config); + #define fuse_session_loop_mt(se, config) fuse_session_loop_mt_32(se, config) + #else +- #if (defined(HAVE_LIBC_VERSIONED_SYMBOLS)) ++ #if (defined(LIBFUSE_BUILT_WITH_VERSIONED_SYMBOLS)) + /** + * Enter a multi-threaded event loop. + * +diff --git a/lib/compat.c b/lib/compat.c +index cab6cbfe9641..0bac39e597f4 100644 +--- a/lib/compat.c ++++ b/lib/compat.c +@@ -34,7 +34,7 @@ + /** + * Compatibility ABI symbol for systems that do not support version symboling + */ +-#if (!defined(HAVE_LIBC_VERSIONED_SYMBOLS)) ++#if (!defined(LIBFUSE_BUILT_WITH_VERSIONED_SYMBOLS)) + /* With current libfuse fuse_parse_cmdline is a macro pointing to the + * versioned function. Here in this file we need to provide the ABI symbol + * and the redirecting macro is conflicting. +diff --git a/lib/fuse_misc.h b/lib/fuse_misc.h +index 37e3635bbc1d..855edc326d0f 100644 +--- a/lib/fuse_misc.h ++++ b/lib/fuse_misc.h +@@ -15,7 +15,7 @@ + Note: "@@" denotes the default symbol, "@" is binary a compat version. + + */ +-#ifdef HAVE_LIBC_VERSIONED_SYMBOLS ++#ifdef LIBFUSE_BUILT_WITH_VERSIONED_SYMBOLS + # if HAVE_SYMVER_ATTRIBUTE + # define FUSE_SYMVER(sym1, sym2) __attribute__ ((symver (sym2))) + # else +diff --git a/lib/meson.build b/lib/meson.build +index 54d07597c519..904463095d98 100644 +--- a/lib/meson.build ++++ b/lib/meson.build +@@ -11,7 +11,7 @@ else + endif + + deps = [ thread_dep ] +-if cfg.get('HAVE_ICONV') ++if private_cfg.get('HAVE_ICONV') + libfuse_sources += [ 'modules/iconv.c' ] + libiconv = cc.find_library('iconv', required: false) + if libiconv.found() +diff --git a/meson.build b/meson.build +index eb7b47727b4f..fb6451a0daac 100644 +--- a/meson.build ++++ b/meson.build +@@ -16,11 +16,22 @@ elif platform == 'cygwin' or platform == 'windows' + 'Take a look at http://www.secfs.net/winfsp/ instead') + endif + ++cc = meson.get_compiler('c') ++ + # +-# Feature detection ++# Feature detection, only available at libfuse compilation time, ++# but not for application linking to libfuse. + # +-cfg = configuration_data() +-cc = meson.get_compiler('c') ++private_cfg = configuration_data() ++ ++# ++# Feature detection, the resulting config file is installed ++# with the package. ++# Note: Symbols need to be care fully named, to avoid conflicts ++# with applications linking to libfuse and including ++# this config. ++# ++public_cfg = configuration_data() + + # Default includes when checking for presence of functions and + # struct members +@@ -35,27 +46,27 @@ include_default = ''' + ''' + args_default = [ '-D_GNU_SOURCE' ] + +-cfg.set_quoted('PACKAGE_VERSION', meson.project_version()) ++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' ] + foreach func : test_funcs +- cfg.set('HAVE_' + func.to_upper(), ++ private_cfg.set('HAVE_' + func.to_upper(), + cc.has_function(func, prefix: include_default, args: args_default)) + endforeach +-cfg.set('HAVE_SETXATTR', ++private_cfg.set('HAVE_SETXATTR', + cc.has_function('setxattr', prefix: '#include ')) +-cfg.set('HAVE_ICONV', ++private_cfg.set('HAVE_ICONV', + cc.has_function('iconv', prefix: '#include ')) + + # Test if structs have specific member +-cfg.set('HAVE_STRUCT_STAT_ST_ATIM', ++private_cfg.set('HAVE_STRUCT_STAT_ST_ATIM', + cc.has_member('struct stat', 'st_atim', + prefix: include_default, + args: args_default)) +-cfg.set('HAVE_STRUCT_STAT_ST_ATIMESPEC', ++private_cfg.set('HAVE_STRUCT_STAT_ST_ATIMESPEC', + cc.has_member('struct stat', 'st_atimespec', + prefix: include_default, + args: args_default)) +@@ -63,7 +74,7 @@ cfg.set('HAVE_STRUCT_STAT_ST_ATIMESPEC', + # + # Compiler configuration + # +-add_project_arguments('-D_REENTRANT', '-DHAVE_CONFIG_H', '-Wno-sign-compare', ++add_project_arguments('-D_REENTRANT', '-DHAVE_LIBFUSE_PRIVATE_CONFIG_H', '-Wno-sign-compare', + '-Wstrict-prototypes', '-Wmissing-declarations', '-Wwrite-strings', + '-fno-strict-aliasing', language: 'c') + add_project_arguments('-D_REENTRANT', '-DHAVE_CONFIG_H', '-D_GNU_SOURCE', +@@ -111,7 +122,7 @@ endif + + if versioned_symbols == 1 + message('Enabling versioned libc symbols') +- cfg.set('HAVE_LIBC_VERSIONED_SYMBOLS', 1) ++ public_cfg.set('LIBFUSE_BUILT_WITH_VERSIONED_SYMBOLS', 1) + + # gcc-10 and newer support the symver attribute which we need to use if we + # want to support LTO +@@ -140,9 +151,15 @@ else + message('Disabling versioned libc symbols') + endif + +-# Write the test results into config.h (stored in build directory) +-configure_file(output: 'fuse_config.h', +- configuration : cfg, install: true, install_dir: 'include/fuse3') ++# Write private test results into fuse_config.h (stored in build directory) ++configure_file(output: 'fuse_config.h', configuration : private_cfg) ++ ++# Write the test results, installed with the package, ++# symbols need to be properly prefixed to avoid ++# symbol (define) conflicts ++configure_file(output: 'libfuse_config.h', ++ configuration : public_cfg, ++ install: true, install_dir: 'include/fuse3') + + # '.' will refer to current build directory, which contains config.h + include_dirs = include_directories('include', 'lib', '.') +-- +2.39.1 + diff --git a/sys-fs/fuse/fuse-3.13.1-r1.ebuild b/sys-fs/fuse/fuse-3.13.1-r1.ebuild new file mode 100644 index 000000000000..2d12bd5021b5 --- /dev/null +++ b/sys-fs/fuse/fuse-3.13.1-r1.ebuild @@ -0,0 +1,76 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{9..10} ) +inherit flag-o-matic meson-multilib udev python-any-r1 + +DESCRIPTION="An interface for filesystems implemented in userspace" +HOMEPAGE="https://github.com/libfuse/libfuse" +SRC_URI="https://github.com/libfuse/libfuse/releases/download/${P}/${P}.tar.xz" + +LICENSE="GPL-2 LGPL-2.1" +SLOT="3" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" +IUSE="+suid test" +RESTRICT="!test? ( test ) test? ( userpriv )" + +BDEPEND="virtual/pkgconfig + test? ( + ${PYTHON_DEPS} + $(python_gen_any_dep 'dev-python/pytest[${PYTHON_USEDEP}]') + )" +RDEPEND=">=sys-fs/fuse-common-3.3.0-r1" + +DOCS=( AUTHORS ChangeLog.rst README.md doc/README.NFS doc/kernel.txt ) + +PATCHES=( + "${FILESDIR}"/fuse-3.13.1-r1-fix-config.patch +) + +python_check_deps() { + python_has_version "dev-python/pytest[${PYTHON_USEDEP}]" +} + +pkg_setup() { + use test && python-any-r1_pkg_setup +} + +multilib_src_configure() { + # bug #853058 + filter-lto + + local emesonargs=( + $(meson_use test examples) + $(meson_use test tests) + -Duseroot=false + -Dudevrulesdir="${EPREFIX}$(get_udevdir)/rules.d" + ) + meson_src_configure +} + +src_test() { + if has sandbox ${FEATURES}; then + ewarn "Sandbox enabled, skipping tests" + else + multilib-minimal_src_test + fi +} + +multilib_src_test() { + epytest +} + +multilib_src_install_all() { + # Installed via fuse-common + rm -r "${ED}"{/etc,$(get_udevdir)} || die + rm -rf "${ED}"/etc || die + + # useroot=false prevents the build system from doing this. + use suid && fperms u+s /usr/bin/fusermount3 + + # manually install man pages to respect compression + rm -r "${ED}"/usr/share/man || die + doman doc/{fusermount3.1,mount.fuse3.8} +} -- cgit v1.2.3