aboutsummaryrefslogtreecommitdiffstats
path: root/main/fuse3
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2018-09-04 14:44:58 +0000
committerNatanael Copa <ncopa@alpinelinux.org>2018-09-04 15:28:09 +0000
commit3b0dc1771fa0307544da6a6804e63676cb4dc0f1 (patch)
tree5f16f561f5adc9ebb4a4f76d5969295022e145f0 /main/fuse3
parente41e95a329ad2722fbb056aa2a0d00c7b3f31555 (diff)
downloadaports-3b0dc1771fa0307544da6a6804e63676cb4dc0f1.tar.bz2
aports-3b0dc1771fa0307544da6a6804e63676cb4dc0f1.tar.xz
main/fuse3: move from testing
Diffstat (limited to 'main/fuse3')
-rw-r--r--main/fuse3/APKBUILD67
-rw-r--r--main/fuse3/fix-realpath.patch28
-rw-r--r--main/fuse3/fuse.initd35
3 files changed, 130 insertions, 0 deletions
diff --git a/main/fuse3/APKBUILD b/main/fuse3/APKBUILD
new file mode 100644
index 0000000000..31fedd8206
--- /dev/null
+++ b/main/fuse3/APKBUILD
@@ -0,0 +1,67 @@
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=fuse3
+_pkgname=fuse
+pkgver=3.2.5
+pkgrel=0
+pkgdesc="The reference implementation of the Linux FUSE (Filesystem in Userspace) interface"
+url="https://github.com/libfuse/libfuse"
+arch="all"
+license="GPL-2.0-only LGPL-2.1-only"
+depends="!fuse"
+makedepends="gettext-dev linux-headers meson eudev-dev python3
+ py3-six py3-pluggy py3-attrs py3-py"
+checkdepends="py3-pytest"
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://github.com/libfuse/libfuse/releases/download/fuse-$pkgver/fuse-$pkgver.tar.xz
+ fix-realpath.patch
+ fuse.initd"
+options="suid"
+
+builddir="$srcdir"/$_pkgname-$pkgver
+
+# secfixes:
+# 3.2.5-r0:
+# - CVE-2018-10906
+
+build() {
+ cd "$builddir"
+ meson \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --buildtype=release \
+ . output
+ ninja -C output
+}
+
+check() {
+ cd "$builddir"
+ python3 -m pytest test/
+}
+
+package() {
+ cd "$builddir"
+ DESTDIR="$pkgdir" ninja -C output install
+ rm -r "$pkgdir"/dev "$pkgdir"/etc/init.d
+
+ install -Dm755 "$srcdir"/fuse.initd "$pkgdir"/etc/init.d/fuse
+ # create config
+ install -d "$pkgdir"/etc
+ cat >"$pkgdir"/etc/fuse.conf << _EOF_
+# Set the maximum number of FUSE mounts allowed to non-root users.
+# The default is 1000.
+#
+#mount_max = 1000
+
+# Allow non-root users to specify the 'allow_other' or 'allow_root'
+# mount options.
+#
+#user_allow_other
+_EOF_
+
+}
+
+sha512sums="90c56a6652967450f03cb0f20ae929091a3e8b3f6927fe7a6ce59bb5e3f247d34a44ce19f085ab09547d9cc38ab1cec1e71fe44ec5c4f201782150aadcbe6b4f fuse-3.2.5.tar.xz
+1a9e1d1e8a7b0778ffde328e4322c73b5d57ec98d52767c846d755cce861ab27989823a75b6c5f994432ddb77fa351dfa4a8f948c9467c5f7d5f471e4608358b fix-realpath.patch
+7f6a503ef23cfa8b809c544375c2d83ad56525269b48ad1a7dff0ce36f4bf2f2a3fafed9dc70a71ff6281b261db5f01829e16c06f041921a5d8c8d715a04a8c1 fuse.initd"
diff --git a/main/fuse3/fix-realpath.patch b/main/fuse3/fix-realpath.patch
new file mode 100644
index 0000000000..375bedc961
--- /dev/null
+++ b/main/fuse3/fix-realpath.patch
@@ -0,0 +1,28 @@
+--- fuse-3.1.0.orig/util/fusermount.c
++++ fuse-3.1.0/util/fusermount.c
+@@ -1200,19 +1200,16 @@
+
+ origmnt = argv[optind];
+
+- drop_privs();
+ mnt = fuse_mnt_resolve_path(progname, origmnt);
+- if (mnt != NULL) {
+- res = chdir("/");
+- if (res == -1) {
+- fprintf(stderr, "%s: failed to chdir to '/'\n", progname);
+- goto err_out;
+- }
+- }
+- restore_privs();
+ if (mnt == NULL)
+ exit(1);
+
++ res = chdir("/");
++ if (res == -1) {
++ fprintf(stderr, "%s: failed to chdir to '/'\n", progname);
++ exit(1);
++ }
++
+ umask(033);
+ if (unmount)
+ goto do_unmount;
diff --git a/main/fuse3/fuse.initd b/main/fuse3/fuse.initd
new file mode 100644
index 0000000000..6c99929c22
--- /dev/null
+++ b/main/fuse3/fuse.initd
@@ -0,0 +1,35 @@
+#!/sbin/openrc-run
+# Copyright 1999-2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+MOUNTPOINT=/sys/fs/fuse/connections
+
+depend() {
+ need localmount
+}
+
+start() {
+
+ ebegin "Starting fuse"
+ if ! grep -qw fuse /proc/filesystems; then
+ modprobe fuse >/dev/null 2>&1 || eerror $? "Error loading fuse module"
+ fi
+ if grep -qw fusectl /proc/filesystems && \
+ ! grep -qw $MOUNTPOINT /proc/mounts; then
+ mount -t fusectl none $MOUNTPOINT >/dev/null 2>&1 || \
+ eerror $? "Error mounting control filesystem"
+ fi
+ eend ${?}
+
+}
+
+stop() {
+
+ ebegin "Stopping fuse"
+ if grep -qw $MOUNTPOINT /proc/mounts; then
+ umount $MOUNTPOINT >/dev/null 2>&1 || \
+ eerror $? "Error unmounting control filesystem"
+ fi
+ eend ${?}
+
+}