Revert "Merge pull request #1288 from glevand/for-merge-1"

This reverts commit 686a273cbbbb4a3f857ce0eb3c09469e8e686540, reversing
changes made to 2d309b671aa0b21481d6c1b25393885c871c4ca8.
This commit is contained in:
Alex Crawford 2015-06-17 20:19:26 -07:00
parent eba3f4dd93
commit a99979e434
13 changed files with 318 additions and 0 deletions

View File

@ -46,7 +46,9 @@ RDEPEND="
sys-apps/which
sys-devel/gcc
sys-devel/gdb
sys-fs/fuse
sys-fs/lvm2
sys-fs/sshfs-fuse
sys-process/ktop
sys-process/procps
sys-process/psmisc

View File

@ -83,6 +83,7 @@ RDEPEND="${RDEPEND}
sys-apps/systemd
!sys-apps/nih-dbus-tool
=sys-devel/automake-1.10*
sys-fs/sshfs-fuse
sys-libs/libnih
sys-libs/nss-usrfiles
sys-power/iasl
@ -120,6 +121,7 @@ RDEPEND="${RDEPEND}
# Host dependencies that are needed to create and sign images
# TODO: sys-apps/mosys
RDEPEND="${RDEPEND}
sys-fs/libfat
sys-fs/squashfs-tools
"

View File

@ -0,0 +1,12 @@
DEFINED_PHASES=configure install prepare setup
DESCRIPTION=An interface for filesystems implemented in userspace.
EAPI=3
HOMEPAGE=http://fuse.sourceforge.net
IUSE=kernel_linux kernel_FreeBSD
KEYWORDS=alpha amd64 arm hppa ia64 ppc ppc64 sparc x86 ~x86-fbsd
LICENSE=GPL-2
PDEPEND=kernel_FreeBSD? ( sys-fs/fuse4bsd )
SLOT=0
SRC_URI=mirror://sourceforge/fuse/fuse-2.8.6.tar.gz
_eclasses_=eutils 6faef4c127028ccbba3a11400d24ae34 libtool 52d0e17251d04645ffaa61bfdd858944 linux-info 2b8c53f6065bdee2d757472215a3088f multilib 3bf24e6abb9b76d9f6c20600f0b716bf toolchain-funcs 0dfbfa13f57c6184f4728d12ac002aac versionator cd0bcdb170807e4a1984115e9d53a26f
_md5_=d183f42b5be02d89f014faa3c6a7c252

View File

@ -9,6 +9,7 @@
=dev-python/ws4py-0.2.4 ~amd64
=dev-embedded/smdk-dltool-0.20-r3 ~amd64
=sys-fs/libfat-0.3a ~amd64
=dev-cpp/gflags-2.0 ~amd64
=sys-devel/smatch-1.57-r1 ~amd64
=dev-lang/closure-compiler-bin-20120305 ~amd64

View File

@ -0,0 +1 @@
DIST fuse-2.8.6.tar.gz 505334 RMD160 df66df0256a677c50f2fc94fef6f34b2d598386c SHA1 c2c0f9fff8bfee217da200888123e5abb5b498f2 SHA256 1ec1913e38f09b2a9ec1579e1800805b5e2c747d1dce515e316dbb665ca139d6

View File

@ -0,0 +1,11 @@
diff -pur fuse-1.4.orig/util/Makefile.in fuse-1.4/util/Makefile.in
--- fuse-1.4.orig/util/Makefile.in 2005-01-02 21:09:09.000000000 +0100
+++ fuse-1.4/util/Makefile.in 2005-01-03 08:49:25.333258992 +0100
@@ -36,6 +36,7 @@ NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
ACLOCAL = @ACLOCAL@
+AM_CFLAGS=-Wl,-z,now
AMTAR = @AMTAR@
AR = @AR@
AUTOCONF = @AUTOCONF@

View File

@ -0,0 +1,66 @@
diff -purN fuse-2.8.5.orig/lib/fuse.c fuse-2.8.5/lib/fuse.c
--- fuse-2.8.5.orig/lib/fuse.c 2011-07-27 12:57:39.580516283 -0700
+++ fuse-2.8.5/lib/fuse.c 2011-07-27 13:00:12.920525842 -0700
@@ -3947,11 +3947,11 @@ struct fuse *fuse_new_compat1(int fd, in
11);
}
-FUSE_SYMVER(".symver fuse_exited,__fuse_exited@");
-FUSE_SYMVER(".symver fuse_process_cmd,__fuse_process_cmd@");
-FUSE_SYMVER(".symver fuse_read_cmd,__fuse_read_cmd@");
-FUSE_SYMVER(".symver fuse_set_getcontext_func,__fuse_set_getcontext_func@");
-FUSE_SYMVER(".symver fuse_new_compat2,fuse_new@");
+FUSE_SYMVER(".symver fuse_exited,__fuse_exited@FUSE_UNVERSIONED");
+FUSE_SYMVER(".symver fuse_process_cmd,__fuse_process_cmd@FUSE_UNVERSIONED");
+FUSE_SYMVER(".symver fuse_read_cmd,__fuse_read_cmd@FUSE_UNVERSIONED");
+FUSE_SYMVER(".symver fuse_set_getcontext_func,__fuse_set_getcontext_func@FUSE_UNVERSIONED");
+FUSE_SYMVER(".symver fuse_new_compat2,fuse_new@FUSE_UNVERSIONED");
FUSE_SYMVER(".symver fuse_new_compat22,fuse_new@FUSE_2.2");
#endif /* __FreeBSD__ */
diff -purN fuse-2.8.5.orig/lib/fuse_mt.c fuse-2.8.5/lib/fuse_mt.c
--- fuse-2.8.5.orig/lib/fuse_mt.c 2011-07-27 12:57:39.580516283 -0700
+++ fuse-2.8.5/lib/fuse_mt.c 2011-07-27 13:01:08.011292778 -0700
@@ -113,4 +113,4 @@ int fuse_loop_mt(struct fuse *f)
return fuse_session_loop_mt(fuse_get_session(f));
}
-FUSE_SYMVER(".symver fuse_loop_mt_proc,__fuse_loop_mt@");
+FUSE_SYMVER(".symver fuse_loop_mt_proc,__fuse_loop_mt@FUSE_UNVERSIONED");
diff -purN fuse-2.8.5.orig/lib/fuse_session.c fuse-2.8.5/lib/fuse_session.c
--- fuse-2.8.5.orig/lib/fuse_session.c 2011-07-27 12:57:39.580516283 -0700
+++ fuse-2.8.5/lib/fuse_session.c 2011-07-27 13:02:22.181708010 -0700
@@ -202,4 +202,6 @@ void fuse_chan_destroy(struct fuse_chan
#ifndef __FreeBSD__
FUSE_SYMVER(".symver fuse_chan_new_compat24,fuse_chan_new@FUSE_2.4");
+#else
+FUSE_SYMVER(".symver fuse_chan_new,fuse_chan_new@FUSE_2.4");
#endif
diff -purN fuse-2.8.5.orig/lib/fuse_versionscript fuse-2.8.5/lib/fuse_versionscript
--- fuse-2.8.5.orig/lib/fuse_versionscript 2011-07-27 12:57:39.580516283 -0700
+++ fuse-2.8.5/lib/fuse_versionscript 2011-07-27 13:05:21.620513909 -0700
@@ -1,3 +1,6 @@
+FUSE_UNVERSIONED {
+};
+
FUSE_2.2 {
global:
fuse_destroy;
diff -purN fuse-2.8.5.orig/lib/helper.c fuse-2.8.5/lib/helper.c
--- fuse-2.8.5.orig/lib/helper.c 2011-07-27 12:57:39.580516283 -0700
+++ fuse-2.8.5/lib/helper.c 2011-07-27 13:06:26.560513148 -0700
@@ -409,10 +409,10 @@ int fuse_mount_compat1(const char *mount
return fuse_mount_compat22(mountpoint, NULL);
}
-FUSE_SYMVER(".symver fuse_setup_compat2,__fuse_setup@");
+FUSE_SYMVER(".symver fuse_setup_compat2,__fuse_setup@FUSE_UNVERSIONED");
FUSE_SYMVER(".symver fuse_setup_compat22,fuse_setup@FUSE_2.2");
-FUSE_SYMVER(".symver fuse_teardown,__fuse_teardown@");
-FUSE_SYMVER(".symver fuse_main_compat2,fuse_main@");
+FUSE_SYMVER(".symver fuse_teardown,__fuse_teardown@FUSE_UNVERSIONED");
+FUSE_SYMVER(".symver fuse_main_compat2,fuse_main@FUSE_UNVERSIONED");
FUSE_SYMVER(".symver fuse_main_real_compat22,fuse_main_real@FUSE_2.2");
#endif /* __FreeBSD__ */

View File

@ -0,0 +1,77 @@
diff -rupN fuse-2.8.6/util/fusermount.c fuse-2.8.6.patched/util/fusermount.c
--- fuse-2.8.6/util/fusermount.c 2011-09-13 00:23:14.000000000 -0700
+++ fuse-2.8.6.patched/util/fusermount.c 2011-10-19 08:48:44.346535813 -0700
@@ -613,6 +613,21 @@ static int add_option(char **optsp, cons
return 0;
}
+static int add_user_option(char **mnt_optsp, const char *user)
+{
+ if (getuid() != 0) {
+ if (user == NULL)
+ user = get_user_name();
+ if (user == NULL)
+ return -1;
+
+ if (add_option(mnt_optsp, "user=", strlen(user)) == -1)
+ return -1;
+ strcat(*mnt_optsp, user);
+ }
+ return 0;
+}
+
static int get_mnt_opts(int flags, char *opts, char **mnt_optsp)
{
int i;
@@ -633,15 +648,6 @@ static int get_mnt_opts(int flags, char
l = strlen(*mnt_optsp);
if ((*mnt_optsp)[l-1] == ',')
(*mnt_optsp)[l-1] = '\0';
- if (getuid() != 0) {
- const char *user = get_user_name();
- if (user == NULL)
- return -1;
-
- if (add_option(mnt_optsp, "user=", strlen(user)) == -1)
- return -1;
- strcat(*mnt_optsp, user);
- }
return 0;
}
@@ -694,6 +700,7 @@ static int do_mount(const char *mnt, cha
char *subtype = NULL;
char *source = NULL;
char *type = NULL;
+ char *user = NULL;
int check_empty = 1;
int blkdev = 0;
@@ -707,6 +714,7 @@ static int do_mount(const char *mnt, cha
unsigned len;
const char *fsname_str = "fsname=";
const char *subtype_str = "subtype=";
+ const char *user_str = "user=";
for (len = 0; s[len]; len++) {
if (s[len] == '\\' && s[len + 1])
len++;
@@ -719,6 +727,9 @@ static int do_mount(const char *mnt, cha
} else if (begins_with(s, subtype_str)) {
if (!get_string_opt(s, len, subtype_str, &subtype))
goto err;
+ } else if (begins_with(s, user_str)) {
+ if (!get_string_opt(s, len, user_str, &user))
+ goto err;
} else if (opt_eq(s, len, "blkdev")) {
if (getuid() != 0) {
fprintf(stderr,
@@ -775,6 +786,9 @@ static int do_mount(const char *mnt, cha
res = get_mnt_opts(flags, optbuf, &mnt_opts);
if (res == -1)
goto err;
+ res = add_user_option(&mnt_opts, user);
+ if (res == -1)
+ goto err;
sprintf(d, "fd=%i,rootmode=%o,user_id=%i,group_id=%i",
fd, rootmode, getuid(), getgid());

View File

@ -0,0 +1,23 @@
#!/sbin/runscript
# Copyright 1999-2007 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
depend() {
need localmount
}
start() {
ebegin "Starting fuse"
if ! kldstat -q -m fuse; then
kldload fuse >/dev/null 2>&1 || eerror $? "Error loading fuse module"
fi
eend ${?}
}
stop() {
ebegin "Stopping fuse"
if kldstat -q -m fuse; then
kldunload fuse >/dev/null 2>&1 || eerror $? "Error unloading fuse module"
fi
eend ${?}
}

View File

@ -0,0 +1,35 @@
#!/sbin/runscript
# 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 ${?}
}

View File

@ -0,0 +1,88 @@
# Copyright 1999-2011 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/sys-fs/fuse/fuse-2.8.5.ebuild,v 1.11 2011/07/26 00:09:54 zmedico Exp $
EAPI=3
inherit eutils libtool linux-info
MY_P=${P/_/-}
DESCRIPTION="An interface for filesystems implemented in userspace."
HOMEPAGE="http://fuse.sourceforge.net"
SRC_URI="mirror://sourceforge/fuse/${MY_P}.tar.gz"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="alpha amd64 arm hppa ia64 ppc ppc64 sparc x86 ~x86-fbsd"
IUSE="kernel_linux kernel_FreeBSD"
S=${WORKDIR}/${MY_P}
PDEPEND="kernel_FreeBSD? ( sys-fs/fuse4bsd )"
pkg_setup() {
if use kernel_linux ; then
if kernel_is lt 2 6 9; then
die "Your kernel is too old."
fi
CONFIG_CHECK="~FUSE_FS"
FUSE_FS_WARNING="You need to have FUSE module built to use user-mode utils"
linux-info_pkg_setup
fi
}
src_prepare() {
epatch "${FILESDIR}"/fuse-2.8.5-fix-lazy-binding.patch
epatch "${FILESDIR}"/fuse-2.8.5-gold.patch
# This patch changes fusermount to avoid calling getpwuid(3)
# if '-o user=<username>' is provided in the command line.
# This prevents glibc's implementation of getpwuid from invoking
# socket/connect syscalls, which allows Chromium OS daemons to
# put more restrictive seccomp filters on fusermount.
epatch "${FILESDIR}"/fuse-2.8.6-user-option.patch
elibtoolize
}
src_configure() {
econf \
INIT_D_PATH="${EPREFIX}/etc/init.d" \
MOUNT_FUSE_PATH="${EPREFIX}/sbin" \
UDEV_RULES_PATH="${EPREFIX}/lib/udev/rules.d" \
--disable-example \
--disable-mtab
}
src_install() {
emake DESTDIR="${D}" install || die "emake install failed"
dodoc AUTHORS ChangeLog Filesystems README \
README.NFS NEWS doc/how-fuse-works \
doc/kernel.txt FAQ
docinto example
dodoc example/*
if use kernel_linux ; then
newinitd "${FILESDIR}"/fuse.init fuse
elif use kernel_FreeBSD ; then
insinto /usr/include/fuse
doins include/fuse_kernel.h
newinitd "${FILESDIR}"/fuse-fbsd.init fuse
else
die "We don't know what init code install for your kernel, please file a bug."
fi
rm -rf "${D}/dev"
# user_allow_other is enabled to allow Chromium OS to run FUSE-based
# file system daemons as a non-root and non-chronos user, while
# allowing chronos to access the mount file systems.
dodir /etc
cat >"${ED}"/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
}