sys-fs/fuse: Add from Gentoo

It's from Gentoo commit ba10b3c5f0eec6233e4dfbfa65db40253e7fdd7d.
This commit is contained in:
Krzesimir Nowak 2023-09-13 13:58:14 +02:00
parent 618e11dd53
commit 481b0e0eaf
9 changed files with 433 additions and 0 deletions

View File

@ -0,0 +1,5 @@
DIST fuse-2.9.9.tar.gz 1813177 BLAKE2B 9e9141380bda46eb0bcce325c6fd293fe3844fe884a4952bb38d4b89dc48b728ffcc891038b3a7a861f05acfacce9dd7bb0e11d600609f3ad0ab278ccbe98847 SHA512 3d82fafd04f2924299bb09d2bb144935fa004a43fb9a6568e2e1cc5a60fded2efa1711029a0d7f12b3e6e4501f7217f2ee3545646d89da8dece083cb390f23e2
DIST fuse-3.15.0.tar.xz 4589124 BLAKE2B 4777a956f8429aee2e5da43b9606ac6acc66744943739051f2be87a646b93c2aaa8f0b7f0c188f6d1724c1ab3fdf706d35c981066b0ba8c4dd647c0eb1f3c821 SHA512 5046b827c2cdccd03031761aeb995caf159f075a16cdda7248fcdd81177500f337368208948e0ff0e4bee32d06dd3d2d966828d3b5e82a79339f28a01727b1ae
DIST fuse-3.15.1.tar.gz 14078062 BLAKE2B 8842874c65f9bcd4f867175f9c6ca496c02069f269ac16e588307e5d9cb67b6251511f9015e830f6015ca492c05824445a75091210e0bc78b5416f208201ca80 SHA512 927132acff5f313257b39a487d2bb1cb47a4e2a71b49ffc2a2d3428cea22f7c57d133fe93fefc943fec8271802ecd1ddbd43e5e1f534b8ddf2036c1039902ffd
DIST fuse-3.16.1.tar.gz 14175331 BLAKE2B 80bdf704d2251edba795f50e5623ba5194c36bbc940a185f3a7b4f7d965b7e7d8a81650c4c1dfe33ad73010cbdd841063b2f07356b3b2b70794af2072f8bf377 SHA512 3f07919a7451a30d05bc174e2f8ec2c65b6225e63b4bbb40f2b097d760d4aa9b753a1da5da4874855094a01979fc4313ffabce54668ed20a6900f5eed92912c8
DIST iconv.m4.bz2 3057 BLAKE2B 9d8f7637d87bfcea1b60f3ea11e162aecf391b3f4579a3b85afb01735f56bfbae363a7e781279f3b2bed0d1dd3336f7d0678d3b1d59004824d7d0ca848dceb6e SHA512 9899368b8acc06e216a7a548b83a894f780e152a02612cd52af02b5c3f2ff38e2c36e77bda300587f81c3d74c90addec8066885216fa0e74f3f3280a383d2b55

View File

@ -0,0 +1,19 @@
this is a minimal version of:
https://sourceforge.net/p/fuse/fuse/ci/6b02a7082ae4c560427ff95b51aa8930bb4a6e1f/
--- a/include/fuse_kernel.h
+++ b/include/fuse_kernel.h
@@ -88,12 +88,7 @@
#ifndef _LINUX_FUSE_H
#define _LINUX_FUSE_H
-#include <sys/types.h>
-#define __u64 uint64_t
-#define __s64 int64_t
-#define __u32 uint32_t
-#define __s32 int32_t
-#define __u16 uint16_t
+#include <linux/types.h>
/*
* Version negotiation:

View File

@ -0,0 +1,38 @@
From acb69eca6c25db44523efb4cb1e7088ae66d093d Mon Sep 17 00:00:00 2001
From: Sam James <sam@gentoo.org>
Date: Tue, 3 Aug 2021 23:14:12 +0100
Subject: [PATCH] Avoid calling umount
Converting a sed into a patch.
Ebuild had:
# sandbox violation with mtab writability wrt #438250
# don't sed configure.in without eautoreconf because of maintainer mode
sed -i 's:umount --fake:true --fake:' configure || die
Bug: https://bugs.gentoo.org/438250
---
configure.ac | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/configure.ac b/configure.ac
index 9946a0e..de433cb 100644
--- a/configure.ac
+++ b/configure.ac
@@ -101,11 +101,11 @@ util_linux_ok=yes
if test "$arch" = linux -a "$cross_compiling" != "yes"; then
AC_MSG_CHECKING([if umount supports --fake --no-canonicalize])
# exit code of umount is 1 if option is unrecognised, 2 otherwise
- umount --fake --no-canonicalize > /dev/null 2>&1
+ true --fake --no-canonicalize > /dev/null 2>&1
if test $? != 1; then
AC_MSG_RESULT([yes])
else
- firstline=`umount --fake --no-canonicalize 2>&1 | head -1`
+ firstline=`true --fake --no-canonicalize 2>&1 | head -1`
if test "$firstline" = 'umount: only root can use "--fake" option'; then
AC_MSG_RESULT([yes])
else
--
2.32.0

View File

@ -0,0 +1,60 @@
From ae2352bca9b4e607538412da0cc2a9625cd8b692 Mon Sep 17 00:00:00 2001
From: Sam James <sam@gentoo.org>
Date: Sat, 24 Jul 2021 22:02:45 +0100
Subject: [PATCH] util/ulockmgr_server.c: conditionally define closefrom (fix
glibc-2.34+)
closefrom(3) has joined us in glibc-land from *BSD and Solaris. Since
it's available in glibc 2.34+, we want to detect it and only define our
fallback if the libc doesn't provide it.
Bug: https://bugs.gentoo.org/803923
Signed-off-by: Sam James <sam@gentoo.org>
---
configure.ac | 1 +
util/ulockmgr_server.c | 6 ++++++
2 files changed, 7 insertions(+)
diff --git a/configure.ac b/configure.ac
index 9946a0efa..a2d481aa9 100644
--- a/configure.ac
+++ b/configure.ac
@@ -55,6 +55,7 @@ fi
AC_CHECK_FUNCS([fork setxattr fdatasync splice vmsplice utimensat])
AC_CHECK_FUNCS([posix_fallocate])
+AC_CHECK_FUNCS([closefrom])
AC_CHECK_MEMBERS([struct stat.st_atim])
AC_CHECK_MEMBERS([struct stat.st_atimespec])
diff --git a/util/ulockmgr_server.c b/util/ulockmgr_server.c
index 273c7d923..a04dac5c6 100644
--- a/util/ulockmgr_server.c
+++ b/util/ulockmgr_server.c
@@ -22,6 +22,10 @@
#include <sys/socket.h>
#include <sys/wait.h>
+#ifdef HAVE_CONFIG_H
+ #include "config.h"
+#endif
+
struct message {
unsigned intr : 1;
unsigned nofd : 1;
@@ -124,6 +128,7 @@ static int receive_message(int sock, void *buf, size_t buflen, int *fdp,
return res;
}
+#if !defined(HAVE_CLOSEFROM)
static int closefrom(int minfd)
{
DIR *dir = opendir("/proc/self/fd");
@@ -141,6 +146,7 @@ static int closefrom(int minfd)
}
return 0;
}
+#endif
static void send_reply(int cfd, struct message *msg)
{

View File

@ -0,0 +1,78 @@
# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
inherit autotools flag-o-matic linux-info udev
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.gz"
# For bug #809920 to avoid a gettext dependency
# extracted from sys-devel/gettext-0.21-r1
SRC_URI+=" https://dev.gentoo.org/~sam/distfiles/${CATEGORY}/${PN}/iconv.m4.bz2"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux"
IUSE="examples static-libs"
BDEPEND="sys-devel/gettext
virtual/pkgconfig"
RDEPEND=">=sys-fs/fuse-common-3.3.0-r1"
PATCHES=(
"${FILESDIR}"/${PN}-2.9.3-kernel-types.patch
"${FILESDIR}"/${PN}-2.9.9-avoid-calling-umount.patch
"${FILESDIR}"/${PN}-2.9.9-closefrom-glibc-2-34.patch
)
pkg_setup() {
if use kernel_linux ; then
CONFIG_CHECK="~FUSE_FS"
WARNING_FUSE_FS="You need to have FUSE module built to use user-mode utils"
linux-info_pkg_setup
fi
}
src_prepare() {
default
# Can be dropped along with additional SRC_URI if dropping eautoreconf
cp "${WORKDIR}"/iconv.m4 m4/ || die
eautoreconf
}
src_configure() {
# lto not supported yet -- https://github.com/libfuse/libfuse/issues/198
# gcc-9 with -flto leads to link failures: #663518 (see also #863899)
# https://gcc.gnu.org/PR91186
filter-lto
# ... and strict aliasing warnings, bug #863899
append-flags -fno-strict-aliasing
econf \
INIT_D_PATH="${EPREFIX}/etc/init.d" \
MOUNT_FUSE_PATH="${EPREFIX}/sbin" \
UDEV_RULES_PATH="${EPREFIX}/$(get_udevdir)/rules.d" \
$(use_enable static-libs static) \
--disable-example
}
src_install() {
local DOCS=( AUTHORS ChangeLog README.md README.NFS NEWS doc/how-fuse-works doc/kernel.txt )
default
if use examples ; then
docinto examples
dodoc example/*
fi
find "${ED}" -name '*.la' -delete || die
# installed via fuse-common
rm -r "${ED}"/{etc,$(get_udevdir)} || die
# handled by the device manager
rm -r "${D}"/dev || die
}

View File

@ -0,0 +1,74 @@
# Copyright 1999-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{10..11} )
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 )
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
-Dinitscriptdir=
-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
# 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}
}

View File

@ -0,0 +1,74 @@
# Copyright 1999-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{10..11} )
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.gz"
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 )
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
-Dinitscriptdir=
-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
# 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}
}

View File

@ -0,0 +1,74 @@
# Copyright 1999-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{10..11} )
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.gz"
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 )
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
-Dinitscriptdir=
-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
# 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}
}

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="project">
<email>base-system@gentoo.org</email>
</maintainer>
<upstream>
<remote-id type="cpe">cpe:/a:fuse:fuse</remote-id>
<remote-id type="github">libfuse/libfuse</remote-id>
</upstream>
</pkgmetadata>