aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbarner <barner@FreeBSD.org>2005-10-19 16:14:55 +0800
committerbarner <barner@FreeBSD.org>2005-10-19 16:14:55 +0800
commitd53cadb6aa25d3a07449e35d7162225bed67edfe (patch)
tree7f3862c069e2ec8ea1f4f75979853e0dcf5c37c8
parentddbf0e01a90dcc32e98c6c0bf05cd9262e5db42c (diff)
downloadfreebsd-ports-gnome-d53cadb6aa25d3a07449e35d7162225bed67edfe.tar.gz
freebsd-ports-gnome-d53cadb6aa25d3a07449e35d7162225bed67edfe.tar.zst
freebsd-ports-gnome-d53cadb6aa25d3a07449e35d7162225bed67edfe.zip
Add new port for the fuse libraries:
FUSE makes it possible to implement a filesystem in a userspace program. Features include: simple yet comprehensive API, secure mounting by non-root users, support for RELENG_6 and HEAD FreeBSD kernels, multi-threaded operation. WWW: http://sourceforge.net/projects/fuse/ PR: ports/87167 Submitted by: Anish Mistry <amistry@am-productions.biz> Reviewed by: Csaba Henk <csaba.henk@creo.hu> (fuse SoC participant)
-rw-r--r--sysutils/Makefile1
-rw-r--r--sysutils/fusefs-libs/Makefile44
-rw-r--r--sysutils/fusefs-libs/distinfo2
-rw-r--r--sysutils/fusefs-libs/files/patch-Makefile.in11
-rw-r--r--sysutils/fusefs-libs/files/patch-example_fusexmp.c36
-rw-r--r--sysutils/fusefs-libs/files/patch-example_fusexmp_fh.c62
-rw-r--r--sysutils/fusefs-libs/files/patch-include_fuse.h15
-rw-r--r--sysutils/fusefs-libs/files/patch-include_fuse_kernel.h14
-rw-r--r--sysutils/fusefs-libs/files/patch-include_fuse_lowlevel.h15
-rw-r--r--sysutils/fusefs-libs/files/patch-include_linux_compat.h9
-rw-r--r--sysutils/fusefs-libs/files/patch-lib_fuse.c52
-rw-r--r--sysutils/fusefs-libs/files/patch-lib_fuse_lowlevel.c26
-rw-r--r--sysutils/fusefs-libs/files/patch-lib_helper.c62
-rw-r--r--sysutils/fusefs-libs/files/patch-lib_mount.c118
-rw-r--r--sysutils/fusefs-libs/files/patch-util_Makefile.in68
-rw-r--r--sysutils/fusefs-libs/pkg-descr6
-rw-r--r--sysutils/fusefs-libs/pkg-message1
-rw-r--r--sysutils/fusefs-libs/pkg-plist11
18 files changed, 553 insertions, 0 deletions
diff --git a/sysutils/Makefile b/sysutils/Makefile
index 4e087243cec6..9c297db14235 100644
--- a/sysutils/Makefile
+++ b/sysutils/Makefile
@@ -169,6 +169,7 @@
SUBDIR += freesbie
SUBDIR += fsbackup
SUBDIR += ftrace
+ SUBDIR += fusefs-libs
SUBDIR += fvcool
SUBDIR += gag
SUBDIR += ganglia-monitor-core
diff --git a/sysutils/fusefs-libs/Makefile b/sysutils/fusefs-libs/Makefile
new file mode 100644
index 000000000000..ace12b176d4e
--- /dev/null
+++ b/sysutils/fusefs-libs/Makefile
@@ -0,0 +1,44 @@
+# New ports collection makefile for: fusefs-libs
+# Date created: 01 October 2005
+# Whom: Anish Mistry
+# $FreeBSD$
+#
+
+PORTNAME= fusefs
+PORTVERSION= 2.4.0
+CATEGORIES= sysutils
+MASTER_SITES= ${MASTER_SITE_SOURCEFORGE}
+MASTER_SITE_SUBDIR= fuse
+PKGNAMESUFFIX= -libs
+DISTNAME= fuse-${PORTVERSION}
+
+MAINTAINER= amistry@am-productions.biz
+COMMENT= FUSE allows filesystem implementation in userspace
+
+USE_LIBTOOL_VER=15
+CONFIGURE_ENV= MOUNT_FUSE_PATH=${PREFIX}/sbin \
+ PKG_CONFIG_PATH=${PREFIX}/libdata/pkgconfig \
+ CFLAGS="${CFLAGS} ${PTHREAD_CFLAGS}"
+GNU_CONFIGURE= yes
+INSTALLS_SHLIB= yes
+CONFIGURE_ARGS= --disable-kernel-module --prefix=${PREFIX}
+USE_REINPLACE= yes
+
+.include <bsd.port.pre.mk>
+
+.if ${OSVERSION} < 600000
+IGNORE= Depends on kernel module that requires FreeBSD 6 or later
+.endif
+
+post-patch:
+ ${REINPLACE_CMD} -e 's,-lpthread,${PTHREAD_LIBS},' \
+ -e 's,-D_FILE_OFFSET_BITS=64,-D_FILE_OFFSET_BITS=64 ${PTHREAD_CFLAGS},' \
+ ${WRKSRC}/fuse.pc.in
+ ${REINPLACE_CMD} -e 's,-lpthread,${PTHREAD_LIBS},' \
+ ${WRKSRC}/lib/Makefile.in \
+ ${WRKSRC}/example/Makefile.in
+
+post-install:
+ ${INSTALL_DATA} ${WRKSRC}/include/fuse_kernel.h ${PREFIX}/include/fuse
+
+.include <bsd.port.post.mk>
diff --git a/sysutils/fusefs-libs/distinfo b/sysutils/fusefs-libs/distinfo
new file mode 100644
index 000000000000..f74d66ebfc6e
--- /dev/null
+++ b/sysutils/fusefs-libs/distinfo
@@ -0,0 +1,2 @@
+MD5 (fuse-2.4.0.tar.gz) = 52444398d4e771bf943d2eb602548db1
+SIZE (fuse-2.4.0.tar.gz) = 384358
diff --git a/sysutils/fusefs-libs/files/patch-Makefile.in b/sysutils/fusefs-libs/files/patch-Makefile.in
new file mode 100644
index 000000000000..c3fe2bb971f9
--- /dev/null
+++ b/sysutils/fusefs-libs/files/patch-Makefile.in
@@ -0,0 +1,11 @@
+--- Makefile.in.orig Mon Oct 3 16:43:22 2005
++++ Makefile.in Sun Oct 9 22:05:09 2005
+@@ -184,7 +184,7 @@
+ doc/how-fuse-works \
+ doc/kernel.txt
+
+-pkgconfigdir = $(libdir)/pkgconfig
++pkgconfigdir = $(prefix)/libdata/pkgconfig
+ pkgconfig_DATA = fuse.pc
+ all: all-recursive
+
diff --git a/sysutils/fusefs-libs/files/patch-example_fusexmp.c b/sysutils/fusefs-libs/files/patch-example_fusexmp.c
new file mode 100644
index 000000000000..85d2e1ab924e
--- /dev/null
+++ b/sysutils/fusefs-libs/files/patch-example_fusexmp.c
@@ -0,0 +1,36 @@
+--- example/fusexmp.c.orig Tue Sep 13 21:26:12 2005
++++ example/fusexmp.c Sun Oct 9 22:05:09 2005
+@@ -20,7 +20,12 @@
+ #include <fcntl.h>
+ #include <dirent.h>
+ #include <errno.h>
++#ifdef __FreeBSD__
++#include <sys/param.h>
++#include <sys/mount.h>
++#else
+ #include <sys/statfs.h>
++#endif
+ #ifdef HAVE_SETXATTR
+ #include <sys/xattr.h>
+ #endif
+@@ -79,7 +84,20 @@
+ {
+ int res;
+
++#ifndef __FreeBSD__
+ res = mknod(path, mode, rdev);
++#else
++ if (rdev)
++ res = mknod(path, mode, rdev);
++ else if (mode & S_IFIFO)
++ res = mkfifo(path, mode);
++ else {
++ res = open(path, O_CREAT | O_TRUNC | O_WRONLY, mode);
++ if (res >= 0)
++ res = close(res);
++ }
++#endif
++
+ if(res == -1)
+ return -errno;
+
diff --git a/sysutils/fusefs-libs/files/patch-example_fusexmp_fh.c b/sysutils/fusefs-libs/files/patch-example_fusexmp_fh.c
new file mode 100644
index 000000000000..19408c3ced87
--- /dev/null
+++ b/sysutils/fusefs-libs/files/patch-example_fusexmp_fh.c
@@ -0,0 +1,62 @@
+--- example/fusexmp_fh.c.orig Tue Sep 13 21:26:12 2005
++++ example/fusexmp_fh.c Sun Oct 9 22:05:09 2005
+@@ -17,7 +17,12 @@
+ #include <fcntl.h>
+ #include <dirent.h>
+ #include <errno.h>
++#ifdef __FreeBSD__
++#include <sys/param.h>
++#include <sys/mount.h>
++#else
+ #include <sys/statfs.h>
++#endif
+ #ifdef HAVE_SETXATTR
+ #include <sys/xattr.h>
+ #endif
+@@ -68,7 +73,11 @@
+ memset(&st, 0, sizeof(st));
+ st.st_ino = de->d_ino;
+ st.st_mode = de->d_type << 12;
++#ifdef __FreeBSD__
++ if (filler(buf, de->d_name, &st, telldir(dp)))
++#else
+ if (filler(buf, de->d_name, &st, de->d_off))
++#endif
+ break;
+ }
+
+@@ -87,7 +96,20 @@
+ {
+ int res;
+
++#ifndef __FreeBSD__
+ res = mknod(path, mode, rdev);
++#else
++ if (rdev)
++ res = mknod(path, mode, rdev);
++ else if (mode & S_IFIFO)
++ res = mkfifo(path, mode);
++ else {
++ res = open(path, O_CREAT | O_TRUNC | O_WRONLY, mode);
++ if (res >= 0)
++ res = close(res);
++ }
++#endif
++
+ if(res == -1)
+ return -errno;
+
+@@ -268,9 +290,13 @@
+ int res;
+ (void) path;
+
++#ifdef __FreeBSD__
++ (void) isdatasync;
++#else
+ if (isdatasync)
+ res = fdatasync(fi->fh);
+ else
++#endif
+ res = fsync(fi->fh);
+ if(res == -1)
+ return -errno;
diff --git a/sysutils/fusefs-libs/files/patch-include_fuse.h b/sysutils/fusefs-libs/files/patch-include_fuse.h
new file mode 100644
index 000000000000..dce43cd5177c
--- /dev/null
+++ b/sysutils/fusefs-libs/files/patch-include_fuse.h
@@ -0,0 +1,15 @@
+--- include/fuse.h.orig Mon Oct 3 16:12:50 2005
++++ include/fuse.h Sun Oct 9 22:05:09 2005
+@@ -20,7 +20,12 @@
+
+ #include <sys/types.h>
+ #include <sys/stat.h>
++#ifdef __FreeBSD__
++#include <sys/param.h>
++#include <sys/mount.h>
++#else
+ #include <sys/statfs.h>
++#endif
+ #include <utime.h>
+
+ #ifdef __cplusplus
diff --git a/sysutils/fusefs-libs/files/patch-include_fuse_kernel.h b/sysutils/fusefs-libs/files/patch-include_fuse_kernel.h
new file mode 100644
index 000000000000..253c95706f15
--- /dev/null
+++ b/sysutils/fusefs-libs/files/patch-include_fuse_kernel.h
@@ -0,0 +1,14 @@
+--- include/fuse_kernel.h.orig Mon Oct 3 17:02:36 2005
++++ include/fuse_kernel.h Sun Oct 9 22:05:09 2005
+@@ -36,7 +36,11 @@
+
+ /* This file defines the kernel interface of FUSE */
+
++#ifdef __FreeBSD__
++#include "linux_compat.h"
++#else
+ #include <asm/types.h>
++#endif
+
+ /** Version number of this interface */
+ #define FUSE_KERNEL_VERSION 7
diff --git a/sysutils/fusefs-libs/files/patch-include_fuse_lowlevel.h b/sysutils/fusefs-libs/files/patch-include_fuse_lowlevel.h
new file mode 100644
index 000000000000..c3ebf607fda9
--- /dev/null
+++ b/sysutils/fusefs-libs/files/patch-include_fuse_lowlevel.h
@@ -0,0 +1,15 @@
+--- include/fuse_lowlevel.h.orig Mon Oct 3 16:12:50 2005
++++ include/fuse_lowlevel.h Sun Oct 9 22:05:09 2005
+@@ -18,7 +18,12 @@
+ #include <utime.h>
+ #include <sys/types.h>
+ #include <sys/stat.h>
++#ifdef __FreeBSD__
++#include <sys/param.h>
++#include <sys/mount.h>
++#else
+ #include <sys/statfs.h>
++#endif
+ #include <sys/uio.h>
+
+ #ifdef __cplusplus
diff --git a/sysutils/fusefs-libs/files/patch-include_linux_compat.h b/sysutils/fusefs-libs/files/patch-include_linux_compat.h
new file mode 100644
index 000000000000..f08cc5eddcde
--- /dev/null
+++ b/sysutils/fusefs-libs/files/patch-include_linux_compat.h
@@ -0,0 +1,9 @@
+--- include/linux_compat.h.orig Sun Oct 9 22:05:09 2005
++++ include/linux_compat.h Sun Oct 9 22:05:09 2005
+@@ -0,0 +1,6 @@
++#include <sys/types.h> /* XXX Or should it be sys/stdint.h ? */
++
++#define __u64 uint64_t
++#define __u32 uint32_t
++#define __s32 int32_t
++
diff --git a/sysutils/fusefs-libs/files/patch-lib_fuse.c b/sysutils/fusefs-libs/files/patch-lib_fuse.c
new file mode 100644
index 000000000000..ffc7224fc47b
--- /dev/null
+++ b/sysutils/fusefs-libs/files/patch-lib_fuse.c
@@ -0,0 +1,52 @@
+--- lib/fuse.c.orig Mon Oct 3 17:02:37 2005
++++ lib/fuse.c Sun Oct 9 22:05:09 2005
+@@ -1414,7 +1414,12 @@
+
+ static int default_statfs(struct statfs *buf)
+ {
++#ifdef __FreeBSD__
++ buf->f_namemax = 255;
++#else
+ buf->f_namelen = 255;
++#endif
++
+ buf->f_bsize = 512;
+ return 0;
+ }
+@@ -1428,7 +1433,11 @@
+ stbuf->f_bavail = compatbuf->blocks_free;
+ stbuf->f_files = compatbuf->files;
+ stbuf->f_ffree = compatbuf->files_free;
++#ifdef __FreeBSD__
++ stbuf->f_namemax = compatbuf->namelen;
++#else
+ stbuf->f_namelen = compatbuf->namelen;
++#endif
+ }
+
+ static void fuse_statfs(fuse_req_t req)
+@@ -1761,8 +1770,10 @@
+ f->flags |= FUSE_HARD_REMOVE;
+ else if (strcmp(opt, "use_ino") == 0)
+ f->flags |= FUSE_USE_INO;
++#ifndef FreeBSD
+ else if (strcmp(opt, "readdir_ino") == 0)
+ f->flags |= FUSE_READDIR_INO;
++#endif
+ else if (strcmp(opt, "direct_io") == 0)
+ f->flags |= FUSE_DIRECT_IO;
+ else if (strcmp(opt, "kernel_cache") == 0)
+@@ -1787,6 +1798,13 @@
+ else
+ free(xopts);
+ }
++#ifdef __FreeBSD__
++ /*
++ * In FreeBSD, we always use these settings as inode numbers are needed to
++ * make getcwd(3) work.
++ */
++ f->flags |= FUSE_READDIR_INO;
++#endif
+ return 0;
+ }
+
diff --git a/sysutils/fusefs-libs/files/patch-lib_fuse_lowlevel.c b/sysutils/fusefs-libs/files/patch-lib_fuse_lowlevel.c
new file mode 100644
index 000000000000..361301bfba7a
--- /dev/null
+++ b/sysutils/fusefs-libs/files/patch-lib_fuse_lowlevel.c
@@ -0,0 +1,26 @@
+--- lib/fuse_lowlevel.c.orig Mon Oct 3 17:15:05 2005
++++ lib/fuse_lowlevel.c Sun Oct 9 22:05:09 2005
+@@ -194,7 +194,11 @@
+ kstatfs->bavail = stbuf->f_bavail;
+ kstatfs->files = stbuf->f_files;
+ kstatfs->ffree = stbuf->f_ffree;
++#ifdef __FreeBSD__
++ kstatfs->namelen = stbuf->f_namemax;
++#else
+ kstatfs->namelen = stbuf->f_namelen;
++#endif
+ }
+
+ static int send_reply_ok(fuse_req_t req, const void *arg, size_t argsize)
+@@ -690,7 +694,11 @@
+ req->ch = ch;
+
+ if (!f->got_init && in->opcode != FUSE_INIT)
++#ifdef EPROTO
+ fuse_reply_err(req, EPROTO);
++#else
++ fuse_reply_err(req, EPROTONOSUPPORT);
++#endif
+ else if (f->allow_root && in->uid != f->owner && in->uid != 0 &&
+ in->opcode != FUSE_INIT && in->opcode != FUSE_READ &&
+ in->opcode != FUSE_WRITE && in->opcode != FUSE_FSYNC &&
diff --git a/sysutils/fusefs-libs/files/patch-lib_helper.c b/sysutils/fusefs-libs/files/patch-lib_helper.c
new file mode 100644
index 000000000000..d3485cd7c78e
--- /dev/null
+++ b/sysutils/fusefs-libs/files/patch-lib_helper.c
@@ -0,0 +1,62 @@
+--- lib/helper.c.orig Mon Aug 15 16:03:59 2005
++++ lib/helper.c Sun Oct 9 22:05:09 2005
+@@ -22,7 +22,11 @@
+ {
+ if (progname)
+ fprintf(stderr,
++#ifdef __FreeBSD__
++ "usage: %s [FUSE options]\n\n", progname);
++#else
+ "usage: %s mountpoint [FUSE options]\n\n", progname);
++#endif
+
+ fprintf(stderr,
+ "FUSE options:\n"
+@@ -45,11 +49,19 @@
+ " debug enable debug output\n"
+ " fsname=NAME set filesystem name in mtab\n"
+ " use_ino let filesystem set inode numbers\n"
++#ifndef __FreeBSD__
+ " readdir_ino try to fill in d_ino in readdir\n"
++#endif
+ " nonempty allow mounts over non-empty file/dir\n"
+ " umask=M set file permissions (octal)\n"
+ " uid=N set file owner\n"
+ " gid=N set file group\n"
++#ifdef __FreeBSD__
++ "\n"
++ "(Note that the above description regards to Linux. Hence these\n"
++ "options might work differently or might not work at all.\n"
++ "For more information, see mount_fusefs(8).)\n"
++#endif
+ );
+ }
+
+@@ -275,11 +287,13 @@
+ }
+ }
+
++#ifndef __FreeBSD__
+ if (*mountpoint == NULL) {
+ fprintf(stderr, "missing mountpoint\n");
+ fprintf(stderr, "see `%s -h' for usage\n", argv[0]);
+ goto err;
+ }
++#endif
+ return 0;
+
+ err:
+@@ -377,8 +391,13 @@
+ fuse_instance = NULL;
+
+ fuse_destroy(fuse);
++#ifndef __FreeBSD__
+ close(fd);
+ fuse_unmount(mountpoint);
++#else
++ fuse_unmount(mountpoint);
++ close(fd);
++#endif
+ free(mountpoint);
+ }
+
diff --git a/sysutils/fusefs-libs/files/patch-lib_mount.c b/sysutils/fusefs-libs/files/patch-lib_mount.c
new file mode 100644
index 000000000000..4e9f8f653b4b
--- /dev/null
+++ b/sysutils/fusefs-libs/files/patch-lib_mount.c
@@ -0,0 +1,118 @@
+--- lib/mount.c.orig Sun Oct 2 11:16:12 2005
++++ lib/mount.c Sun Oct 9 22:05:09 2005
+@@ -21,7 +21,7 @@
+ #define FUSERMOUNT_PROG "fusermount"
+ #define FUSE_COMMFD_ENV "_FUSE_COMMFD"
+
+-
++#ifndef __FreeBSD__
+ /* return value:
+ * >= 0 => fd
+ * -1 => error
+@@ -66,9 +66,11 @@
+ }
+ return *(int*)CMSG_DATA(cmsg);
+ }
++#endif
+
+ void fuse_unmount(const char *mountpoint)
+ {
++#ifndef __FreeBSD__
+ const char *mountprog = FUSERMOUNT_PROG;
+ char umount_cmd[1024];
+
+@@ -77,10 +79,53 @@
+
+ umount_cmd[sizeof(umount_cmd) - 1] = '\0';
+ system(umount_cmd);
++#else
++ /*
++ * This is how we could do unmount-by-the-daemon in FreeBSD.
++ * Alas, by the time we get here, fuse_kern_chan_destroy
++ * has closed up the device, so this will fail.
++ * Maybe fuse_kern_chan_destroy should be castrated for FreeBSD?
++ * Well, let's stay on the safe side for now.
++ */
++#if 0
++ /*
++ * We keep on not wanting to rely on the mountpoint argument
++ * so let's just look up our device as in mount_fusefs(8)...
++ * we don't trust the environment here though.
++ */
++ char dev[128];
++ char *ssc, *umount_cmd;
++ FILE *sf;
++ int rv;
++ char *seekscript =
++ "/usr/bin/fstat /dev/fuse* |\n"
++ "/usr/bin/awk '{if ($3 == %d) print $10}' |\n"
++ "/usr/bin/sort |\n"
++ "/usr/bin/uniq |\n"
++ "/usr/bin/awk '{ i+=1; if(i > 1){ exit (1); }; printf; }; END{if (i==0) exit (1)}'";
++
++ asprintf(&ssc, seekscript, getpid());
++
++ errno = 0;
++ sf = popen(ssc, "r");
++ if (! sf)
++ return;
++
++ fgets(dev, sizeof(dev), sf);
++ rv = pclose(sf);
++ if (rv)
++ return;
++
++ asprintf(&umount_cmd, "/sbin/umount %s", dev);
++ system(umount_cmd);
++#endif
++ (void)mountpoint;
++#endif
+ }
+
+ int fuse_mount(const char *mountpoint, const char *opts)
+ {
++#ifndef __FreeBSD__
+ const char *mountprog = FUSERMOUNT_PROG;
+ int fds[2], pid;
+ int res;
+@@ -133,6 +178,40 @@
+ waitpid(pid, NULL, 0); /* bury zombie */
+
+ return rv;
++#else
++ int fd;
++ char *dev;
++
++ (void)mountpoint;
++ (void)opts;
++
++ dev = getenv("FUSE_DEV_FD");
++
++ if (dev) {
++ errno = 0;
++ fd = strtol(dev, NULL, 10);
++
++ if (errno) {
++ perror("bad value given in FUSE_DEV_FD");
++ return -1;
++ }
++
++ if (fd < 0)
++ return -1;
++
++ return fd;
++ }
++
++ dev = getenv("FUSE_DEV_NAME");
++
++ if (! dev)
++ dev = "/dev/fuse";
++
++ if ((fd = open(dev, O_RDWR)) < 0)
++ perror("failed to open fuse device");
++
++ return fd;
++#endif
+ }
+
+ int fuse_mount_compat1(const char *mountpoint, const char *args[])
diff --git a/sysutils/fusefs-libs/files/patch-util_Makefile.in b/sysutils/fusefs-libs/files/patch-util_Makefile.in
new file mode 100644
index 000000000000..8522bdca3ab5
--- /dev/null
+++ b/sysutils/fusefs-libs/files/patch-util_Makefile.in
@@ -0,0 +1,68 @@
+--- util/Makefile.in.orig Mon Oct 3 16:43:22 2005
++++ util/Makefile.in Sun Oct 9 22:05:09 2005
+@@ -38,7 +38,7 @@
+ POST_UNINSTALL = :
+ build_triplet = @build@
+ host_triplet = @host@
+-bin_PROGRAMS = fusermount$(EXEEXT)
++bin_PROGRAMS =
+ subdir = util
+ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+@@ -164,7 +164,7 @@
+ sysconfdir = @sysconfdir@
+ target_alias = @target_alias@
+ fusermount_SOURCES = fusermount.c
+-EXTRA_DIST = mount.fuse udev.rules
++EXTRA_DIST =
+ all: all-am
+
+ .SUFFIXES:
+@@ -361,10 +361,6 @@
+
+ installcheck: installcheck-am
+ install-strip:
+- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+- `test -z '$(STRIP)' || \
+- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+ mostlyclean-generic:
+
+ clean-generic:
+@@ -434,34 +430,21 @@
+ install-binPROGRAMS install-data install-data-am \
+ install-data-local install-exec install-exec-am \
+ install-exec-hook install-exec-local install-info \
+- install-info-am install-man install-strip installcheck \
++ install-info-am install-man installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags uninstall uninstall-am uninstall-binPROGRAMS \
+ uninstall-info-am uninstall-local
+
+-
+ install-exec-hook:
+- -chown root $(DESTDIR)$(bindir)/fusermount
+- -chmod u+s $(DESTDIR)$(bindir)/fusermount
+- @if test ! -e $(DESTDIR)/dev/fuse; then \
+- $(mkdir_p) $(DESTDIR)/dev; \
+- echo "mknod $(DESTDIR)/dev/fuse -m 0666 c 10 229"; \
+- mknod $(DESTDIR)/dev/fuse -m 0666 c 10 229; \
+- fi
+
+ install-exec-local:
+- $(mkdir_p) $(DESTDIR)$(MOUNT_FUSE_PATH)
+- $(INSTALL_PROGRAM) $(srcdir)/mount.fuse $(DESTDIR)$(MOUNT_FUSE_PATH)/mount.fuse
+
+ install-data-local:
+- $(mkdir_p) $(DESTDIR)$(UDEV_RULES_PATH)
+- $(INSTALL_DATA) $(srcdir)/udev.rules $(DESTDIR)$(UDEV_RULES_PATH)/40-fuse.rules
+
+ uninstall-local:
+- rm -f $(DESTDIR)$(MOUNT_FUSE_PATH)/mount.fuse
+- rm -f $(DESTDIR)$(UDEV_RULES_PATH)/40-fuse.rules
++
+ # Tell versions [3.59,3.63) of GNU make to not export all variables.
+ # Otherwise a system limit (for SysV at least) may be exceeded.
+ .NOEXPORT:
diff --git a/sysutils/fusefs-libs/pkg-descr b/sysutils/fusefs-libs/pkg-descr
new file mode 100644
index 000000000000..b267a2c83650
--- /dev/null
+++ b/sysutils/fusefs-libs/pkg-descr
@@ -0,0 +1,6 @@
+FUSE makes it possible to implement a filesystem in a userspace program.
+Features include: simple yet comprehensive API, secure mounting by non-root
+users, support for RELENG_6 and HEAD FreeBSD kernels, multi-threaded
+operation.
+
+WWW: http://sourceforge.net/projects/fuse/
diff --git a/sysutils/fusefs-libs/pkg-message b/sysutils/fusefs-libs/pkg-message
new file mode 100644
index 000000000000..13b7f2ee9224
--- /dev/null
+++ b/sysutils/fusefs-libs/pkg-message
@@ -0,0 +1 @@
+Install the fuse kernel module to use this port.
diff --git a/sysutils/fusefs-libs/pkg-plist b/sysutils/fusefs-libs/pkg-plist
new file mode 100644
index 000000000000..4b89ea75922b
--- /dev/null
+++ b/sysutils/fusefs-libs/pkg-plist
@@ -0,0 +1,11 @@
+include/fuse/fuse.h
+include/fuse/fuse_compat.h
+include/fuse/fuse_common.h
+include/fuse/fuse_lowlevel.h
+include/fuse/fuse_kernel.h
+include/fuse.h
+lib/libfuse.so.2
+lib/libfuse.so
+lib/libfuse.a
+libdata/pkgconfig/fuse.pc
+@dirrm include/fuse