ports/87167: New port: sysutils/fusefs

Anish Mistry amistry at am-productions.biz
Sun Oct 9 17:30:23 UTC 2005


>Number:         87167
>Category:       ports
>Synopsis:       New port: sysutils/fusefs
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Sun Oct 09 17:30:20 GMT 2005
>Closed-Date:
>Last-Modified:
>Originator:     Anish Mistry
>Release:        FreeBSD 5.4-STABLE i386
>Organization:
AM Productions 
>Environment:


System: FreeBSD 5.4-STABLE #3: Wed Aug 17 14:50:43 EDT 2005
    amistry at bigguy.am-productions.biz:/usr/obj/usr/src/sys/BIGGUY



>Description:


Add userland fuse filesystem support. This will allow the use of other filesystems like sshfs and gmailfs.  Kernel module support will be send-pr'ed soon.


>How-To-Repeat:





>Fix:


--- fusefs.shar begins here ---
# This is a shell archive.  Save it in a file, remove anything before
# this line, and then unpack it by entering "sh file".  Note, it may
# create directories; files and directories will be owned by you and
# have default permissions.
#
# This archive contains:
#
#	fusefs
#	fusefs/Makefile
#	fusefs/distinfo
#	fusefs/pkg-descr
#	fusefs/pkg-message
#	fusefs/pkg-plist
#	fusefs/files
#	fusefs/files/patch-ac
#	fusefs/files/patch-ab
#	fusefs/files/patch-aa
#	fusefs/files/patch-ad
#
echo c - fusefs
mkdir -p fusefs > /dev/null 2>&1
echo x - fusefs/Makefile
sed 's/^X//' >fusefs/Makefile << 'END-of-fusefs/Makefile'
X# New ports collection makefile for:    fusefs
X# Date created:         01 October 2005
X# Whom:                 Anish Mistry
X# $FreeBSD$
X#
X
XPORTNAME=	fusefs
XPORTVERSION=	2.4.0
XCATEGORIES=	sysutils
XMASTER_SITES=	${MASTER_SITE_SOURCEFORGE} \
X		http://creo.hu/~csaba/projects/fuse4bsd/downloads/
XMASTER_SITE_SUBDIR=	fuse
XDISTNAME=	fuse-${PORTVERSION}
X
XMAINTAINER=	amistry at am-productions.biz
XCOMMENT=	FUSE allows filesystem implementation in userspace
X
XUSE_LIBTOOL_VER=15
XCONFIGURE_ENV=	MOUNT_FUSE_PATH=${LOCALBASE}/sbin \
X		PKG_CONFIG_PATH=${LOCALBASE}/libdata/pkgconfig
XHAS_CONFIGURE=	yes
XINSTALLS_SHLIB=	yes
XCONFIGURE_ARGS=	--disable-kernel-module --exec-prefix=${LOCALBASE}
X
X.include <bsd.port.pre.mk>
X
X.if ${OSVERSION} < 500000
XBROKEN=		"does not compile"
X.endif
X
Xpost-install:
X	${INSTALL_DATA} ${WRKSRC}/include/fuse_kernel.h ${LOCALBASE}/include/fuse
X
X.include <bsd.port.post.mk>
END-of-fusefs/Makefile
echo x - fusefs/distinfo
sed 's/^X//' >fusefs/distinfo << 'END-of-fusefs/distinfo'
XMD5 (fuse-2.4.0.tar.gz) = 52444398d4e771bf943d2eb602548db1
XSIZE (fuse-2.4.0.tar.gz) = 384358
END-of-fusefs/distinfo
echo x - fusefs/pkg-descr
sed 's/^X//' >fusefs/pkg-descr << 'END-of-fusefs/pkg-descr'
XFUSE makes it possible to implement a filesystem in a userspace program.
XFeatures include: simple yet comprehensive API, secure mounting by non-root
Xusers, support for RELENG_6 and HEAD FreeBSD kernels, multi-threaded
Xoperation.
X
XWWW: http://sourceforge.net/projects/fuse/
X
X- Anish Mistry
Xamistry at am-productions.biz
XAM Productions http://am-productions.biz
END-of-fusefs/pkg-descr
echo x - fusefs/pkg-message
sed 's/^X//' >fusefs/pkg-message << 'END-of-fusefs/pkg-message'
XInstall the fuse kernel module to use this port.
END-of-fusefs/pkg-message
echo x - fusefs/pkg-plist
sed 's/^X//' >fusefs/pkg-plist << 'END-of-fusefs/pkg-plist'
Xinclude/fuse/fuse.h
Xinclude/fuse/fuse_compat.h
Xinclude/fuse/fuse_common.h
Xinclude/fuse/fuse_lowlevel.h
Xinclude/fuse/fuse_kernel.h
Xinclude/fuse.h
Xlib/libfuse.so.2
Xlib/libfuse.so
Xlib/libfuse.a
Xlibdata/pkgconfig/fuse.pc
X at dirrm include/fuse
END-of-fusefs/pkg-plist
echo c - fusefs/files
mkdir -p fusefs/files > /dev/null 2>&1
echo x - fusefs/files/patch-ac
sed 's/^X//' >fusefs/files/patch-ac << 'END-of-fusefs/files/patch-ac'
X--- util/Makefile.in.orig	Mon Sep 26 07:39:38 2005
X+++ util/Makefile.in	Sat Oct  1 23:56:51 2005
X@@ -38,7 +38,7 @@
X POST_UNINSTALL = :
X build_triplet = @build@
X host_triplet = @host@
X-bin_PROGRAMS = fusermount$(EXEEXT)
X+bin_PROGRAMS = 
X subdir = util
X DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
X ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
X@@ -164,7 +164,7 @@
X sysconfdir = @sysconfdir@
X target_alias = @target_alias@
X fusermount_SOURCES = fusermount.c
X-EXTRA_DIST = mount.fuse udev.rules
X+EXTRA_DIST = 
X all: all-am
X 
X .SUFFIXES:
X@@ -361,10 +361,6 @@
X 
X installcheck: installcheck-am
X install-strip:
X-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
X-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
X-	  `test -z '$(STRIP)' || \
X-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
X mostlyclean-generic:
X 
X clean-generic:
X@@ -434,34 +430,21 @@
X 	install-binPROGRAMS install-data install-data-am \
X 	install-data-local install-exec install-exec-am \
X 	install-exec-hook install-exec-local install-info \
X-	install-info-am install-man install-strip installcheck \
X+	install-info-am install-man installcheck \
X 	installcheck-am installdirs maintainer-clean \
X 	maintainer-clean-generic mostlyclean mostlyclean-compile \
X 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
X 	tags uninstall uninstall-am uninstall-binPROGRAMS \
X 	uninstall-info-am uninstall-local
X 
X-
X install-exec-hook:
X-	-chown root $(DESTDIR)$(bindir)/fusermount
X-	-chmod u+s $(DESTDIR)$(bindir)/fusermount
X-	@if test ! -e $(DESTDIR)/dev/fuse; then \
X-		$(mkdir_p) $(DESTDIR)/dev; \
X-		echo "mknod $(DESTDIR)/dev/fuse -m 0666 c 10 229"; \
X-		mknod $(DESTDIR)/dev/fuse -m 0666 c 10 229; \
X-	fi
X 
X install-exec-local:
X-	$(mkdir_p) $(DESTDIR)$(MOUNT_FUSE_PATH)
X-	$(INSTALL_PROGRAM) $(srcdir)/mount.fuse $(DESTDIR)$(MOUNT_FUSE_PATH)/mount.fuse
X 
X install-data-local:
X-	$(mkdir_p) $(DESTDIR)$(UDEV_RULES_PATH)
X-	$(INSTALL_DATA) $(srcdir)/udev.rules $(DESTDIR)$(UDEV_RULES_PATH)/40-fuse.rules
X 
X uninstall-local:
X-	rm -f $(DESTDIR)$(MOUNT_FUSE_PATH)/mount.fuse
X-	rm -f $(DESTDIR)$(UDEV_RULES_PATH)/40-fuse.rules
X+
X # Tell versions [3.59,3.63) of GNU make to not export all variables.
X # Otherwise a system limit (for SysV at least) may be exceeded.
X .NOEXPORT:
END-of-fusefs/files/patch-ac
echo x - fusefs/files/patch-ab
sed 's/^X//' >fusefs/files/patch-ab << 'END-of-fusefs/files/patch-ab'
X--- include.orig/fuse_kernel.h	Wed Aug  3 01:26:31 2005
X+++ include/fuse_kernel.h	Wed Aug  3 09:41:51 2005
X@@ -8,7 +8,11 @@
X 
X /* This file defines the kernel interface of FUSE */
X 
X+#ifdef __FreeBSD__
X+#include "linux_compat.h"
X+#else
X #include <asm/types.h>
X+#endif
X 
X /** Version number of this interface */
X #define FUSE_KERNEL_VERSION 7
X
Xdiff -ruN include.orig/linux_compat.h include/linux_compat.h
X--- include.orig/linux_compat.h	Wed Dec 31 19:00:00 1969
X+++ include/linux_compat.h	Wed Sep 28 12:57:45 2005
X@@ -0,0 +1,6 @@
X+#include <sys/types.h> /* XXX Or should it be sys/stdint.h ? */
X+
X+#define __u64 uint64_t
X+#define __u32 uint32_t
X+#define __s32 int32_t
X+
END-of-fusefs/files/patch-ab
echo x - fusefs/files/patch-aa
sed 's/^X//' >fusefs/files/patch-aa << 'END-of-fusefs/files/patch-aa'
Xdiff -Naur example/fusexmp.c example/fusexmp.c
X--- example/fusexmp.c	Tue Sep 13 21:26:12 2005
X+++ example/fusexmp.c	Thu Oct  6 02:38:03 2005
X@@ -20,7 +20,12 @@
X #include <fcntl.h>
X #include <dirent.h>
X #include <errno.h>
X+#ifdef __FreeBSD__
X+#include <sys/param.h>
X+#include <sys/mount.h>
X+#else
X #include <sys/statfs.h>
X+#endif
X #ifdef HAVE_SETXATTR
X #include <sys/xattr.h>
X #endif
X@@ -79,7 +84,20 @@
X {
X     int res;
X 
X+#ifndef __FreeBSD__
X     res = mknod(path, mode, rdev);
X+#else
X+    if (rdev)
X+        res = mknod(path, mode, rdev);
X+    else if (mode & S_IFIFO)
X+        res = mkfifo(path, mode);
X+    else {
X+        res = open(path, O_CREAT | O_TRUNC | O_WRONLY, mode);
X+        if (res >= 0)
X+            res = close(res);
X+    }
X+#endif
X+
X     if(res == -1)
X         return -errno;
X 
Xdiff -Naur example/fusexmp_fh.c example/fusexmp_fh.c
X--- example/fusexmp_fh.c	Tue Sep 13 21:26:12 2005
X+++ example/fusexmp_fh.c	Thu Oct  6 02:38:03 2005
X@@ -17,7 +17,12 @@
X #include <fcntl.h>
X #include <dirent.h>
X #include <errno.h>
X+#ifdef __FreeBSD__
X+#include <sys/param.h>
X+#include <sys/mount.h>
X+#else
X #include <sys/statfs.h>
X+#endif
X #ifdef HAVE_SETXATTR
X #include <sys/xattr.h>
X #endif
X@@ -68,7 +73,11 @@
X         memset(&st, 0, sizeof(st));
X         st.st_ino = de->d_ino;
X         st.st_mode = de->d_type << 12;
X+#ifdef __FreeBSD__
X+        if (filler(buf, de->d_name, &st, 0))
X+#else
X         if (filler(buf, de->d_name, &st, de->d_off))
X+#endif
X             break;
X     }
X 
X@@ -87,7 +96,20 @@
X {
X     int res;
X 
X+#ifndef __FreeBSD__
X     res = mknod(path, mode, rdev);
X+#else
X+    if (rdev)
X+        res = mknod(path, mode, rdev);
X+    else if (mode & S_IFIFO)
X+        res = mkfifo(path, mode);
X+    else {
X+        res = open(path, O_CREAT | O_TRUNC | O_WRONLY, mode);
X+        if (res >= 0)
X+            res = close(res);
X+    }
X+#endif
X+
X     if(res == -1)
X         return -errno;
X 
X@@ -268,9 +290,13 @@
X     int res;
X     (void) path;
X 
X+#ifdef __FreeBSD__
X+    (void) isdatasync;
X+#else
X     if (isdatasync)
X         res = fdatasync(fi->fh);
X     else
X+#endif
X         res = fsync(fi->fh);
X     if(res == -1)
X         return -errno;
Xdiff -Naur include/fuse.h include/fuse.h
X--- include/fuse.h	Mon Oct  3 16:12:50 2005
X+++ include/fuse.h	Thu Oct  6 02:38:03 2005
X@@ -20,7 +20,12 @@
X 
X #include <sys/types.h>
X #include <sys/stat.h>
X+#ifdef __FreeBSD__
X+#include <sys/param.h>
X+#include <sys/mount.h>
X+#else
X #include <sys/statfs.h>
X+#endif
X #include <utime.h>
X 
X #ifdef __cplusplus
Xdiff -Naur include/fuse_lowlevel.h include/fuse_lowlevel.h
X--- include/fuse_lowlevel.h	Mon Oct  3 16:12:50 2005
X+++ include/fuse_lowlevel.h	Thu Oct  6 02:38:03 2005
X@@ -18,7 +18,12 @@
X #include <utime.h>
X #include <sys/types.h>
X #include <sys/stat.h>
X+#ifdef __FreeBSD__
X+#include <sys/param.h>
X+#include <sys/mount.h>
X+#else
X #include <sys/statfs.h>
X+#endif
X #include <sys/uio.h>
X 
X #ifdef __cplusplus
Xdiff -Naur lib/fuse.c lib/fuse.c
X--- lib/fuse.c	Mon Oct  3 17:02:37 2005
X+++ lib/fuse.c	Thu Oct  6 02:38:03 2005
X@@ -1414,7 +1414,12 @@
X 
X static int default_statfs(struct statfs *buf)
X {
X+#ifdef __FreeBSD__
X+    buf->f_namemax = 255;
X+#else
X     buf->f_namelen = 255;
X+#endif
X+
X     buf->f_bsize = 512;
X     return 0;
X }
X@@ -1428,7 +1433,11 @@
X     stbuf->f_bavail  = compatbuf->blocks_free;
X     stbuf->f_files   = compatbuf->files;
X     stbuf->f_ffree   = compatbuf->files_free;
X+#ifdef __FreeBSD__
X+    stbuf->f_namemax = compatbuf->namelen;
X+#else
X     stbuf->f_namelen = compatbuf->namelen;
X+#endif
X }
X 
X static void fuse_statfs(fuse_req_t req)
X@@ -1761,8 +1770,10 @@
X                 f->flags |= FUSE_HARD_REMOVE;
X             else if (strcmp(opt, "use_ino") == 0)
X                 f->flags |= FUSE_USE_INO;
X+#ifndef FreeBSD
X             else if (strcmp(opt, "readdir_ino") == 0)
X                 f->flags |= FUSE_READDIR_INO;
X+#endif
X             else if (strcmp(opt, "direct_io") == 0)
X                 f->flags |= FUSE_DIRECT_IO;
X             else if (strcmp(opt, "kernel_cache") == 0)
X@@ -1787,6 +1798,13 @@
X         else
X             free(xopts);
X     }
X+#ifdef __FreeBSD__
X+    /*
X+     * In FreeBSD, we always use these settings as inode numbers are needed to
X+     * make getcwd(3) work.
X+     */
X+    f->flags |= FUSE_READDIR_INO;
X+#endif
X     return 0;
X }
X 
Xdiff -Naur lib/fuse_lowlevel.c lib/fuse_lowlevel.c
X--- lib/fuse_lowlevel.c	Mon Oct  3 17:15:05 2005
X+++ lib/fuse_lowlevel.c	Thu Oct  6 02:38:03 2005
X@@ -194,7 +194,11 @@
X     kstatfs->bavail	= stbuf->f_bavail;
X     kstatfs->files	= stbuf->f_files;
X     kstatfs->ffree	= stbuf->f_ffree;
X+#ifdef __FreeBSD__
X+    kstatfs->namelen	= stbuf->f_namemax;
X+#else
X     kstatfs->namelen	= stbuf->f_namelen;
X+#endif
X }
X 
X static int send_reply_ok(fuse_req_t req, const void *arg, size_t argsize)
X@@ -690,7 +694,11 @@
X     req->ch = ch;
X 
X     if (!f->got_init && in->opcode != FUSE_INIT)
X+#ifdef EPROTO
X         fuse_reply_err(req, EPROTO);
X+#else
X+        fuse_reply_err(req, EPROTONOSUPPORT);
X+#endif
X     else if (f->allow_root && in->uid != f->owner && in->uid != 0 &&
X              in->opcode != FUSE_INIT && in->opcode != FUSE_READ &&
X              in->opcode != FUSE_WRITE && in->opcode != FUSE_FSYNC &&
Xdiff -Naur lib/helper.c lib/helper.c
X--- lib/helper.c	Mon Aug 15 16:03:59 2005
X+++ lib/helper.c	Thu Oct  6 02:38:03 2005
X@@ -22,7 +22,11 @@
X {
X     if (progname)
X         fprintf(stderr,
X+#ifdef __FreeBSD__
X+                "usage: %s [FUSE options]\n\n", progname);
X+#else
X                 "usage: %s mountpoint [FUSE options]\n\n", progname);
X+#endif
X 
X     fprintf(stderr,
X             "FUSE options:\n"
X@@ -45,11 +49,19 @@
X             "    debug                  enable debug output\n"
X             "    fsname=NAME            set filesystem name in mtab\n"
X             "    use_ino                let filesystem set inode numbers\n"
X+#ifndef __FreeBSD__
X             "    readdir_ino            try to fill in d_ino in readdir\n"
X+#endif
X             "    nonempty               allow mounts over non-empty file/dir\n"
X             "    umask=M                set file permissions (octal)\n"
X             "    uid=N                  set file owner\n"
X             "    gid=N                  set file group\n"
X+#ifdef __FreeBSD__
X+            "\n"
X+            "(Note that the above description regards to Linux. Hence these\n"
X+            "options might work differently or might not work at all.\n"
X+            "For more information, see mount_fusefs(8).)\n"
X+#endif
X             );
X }
X 
X@@ -275,11 +287,13 @@
X         }
X     }
X 
X+#ifndef __FreeBSD__
X     if (*mountpoint == NULL) {
X         fprintf(stderr, "missing mountpoint\n");
X         fprintf(stderr, "see `%s -h' for usage\n", argv[0]);
X         goto err;
X     }
X+#endif
X     return 0;
X 
X  err:
X@@ -377,8 +391,13 @@
X         fuse_instance = NULL;
X 
X     fuse_destroy(fuse);
X+#ifndef __FreeBSD__
X     close(fd);
X     fuse_unmount(mountpoint);
X+#else
X+    fuse_unmount(mountpoint);
X+    close(fd);
X+#endif
X     free(mountpoint);
X }
X 
Xdiff -Naur lib/mount.c lib/mount.c
X--- lib/mount.c	Sun Oct  2 11:16:12 2005
X+++ lib/mount.c	Thu Oct  6 02:38:03 2005
X@@ -21,7 +21,7 @@
X #define FUSERMOUNT_PROG         "fusermount"
X #define FUSE_COMMFD_ENV         "_FUSE_COMMFD"
X 
X-
X+#ifndef __FreeBSD__
X /* return value:
X  * >= 0  => fd
X  * -1    => error
X@@ -66,9 +66,11 @@
X     }
X     return *(int*)CMSG_DATA(cmsg);
X }
X+#endif
X 
X void fuse_unmount(const char *mountpoint)
X {
X+#ifndef __FreeBSD__
X     const char *mountprog = FUSERMOUNT_PROG;
X     char umount_cmd[1024];
X 
X@@ -77,10 +79,53 @@
X 
X     umount_cmd[sizeof(umount_cmd) - 1] = '\0';
X     system(umount_cmd);
X+#else
X+    /*
X+     * This is how we could do unmount-by-the-daemon in FreeBSD.
X+     * Alas, by the time we get here, fuse_kern_chan_destroy
X+     * has closed up the device, so this will fail.
X+     * Maybe fuse_kern_chan_destroy should be castrated for FreeBSD?
X+     * Well, let's stay on the safe side for now.
X+     */
X+#if 0
X+    /*
X+     * We keep on not wanting to rely on the mountpoint argument
X+     * so let's just look up our device as in mount_fusefs(8)...
X+     * we don't trust the environment here though.
X+     */
X+    char dev[128];
X+    char *ssc, *umount_cmd;
X+    FILE *sf;
X+    int rv;
X+    char *seekscript =
X+    "/usr/bin/fstat  /dev/fuse* |\n"
X+    "/usr/bin/awk '{if ($3 == %d) print $10}' |\n"
X+    "/usr/bin/sort |\n"
X+    "/usr/bin/uniq |\n"
X+    "/usr/bin/awk '{ i+=1; if(i > 1){ exit (1); }; printf; }; END{if (i==0) exit (1)}'";
X+
X+    asprintf(&ssc, seekscript, getpid());
X+
X+    errno = 0; 	
X+    sf = popen(ssc, "r");
X+    if (! sf)
X+        return;
X+
X+    fgets(dev, sizeof(dev), sf);
X+    rv = pclose(sf);
X+    if (rv)
X+        return;
X+
X+    asprintf(&umount_cmd, "/sbin/umount %s", dev); 
X+    system(umount_cmd);
X+#endif
X+    (void)mountpoint;
X+#endif
X }
X 
X int fuse_mount(const char *mountpoint, const char *opts)
X {
X+#ifndef __FreeBSD__
X     const char *mountprog = FUSERMOUNT_PROG;
X     int fds[2], pid;
X     int res;
X@@ -133,6 +178,40 @@
X     waitpid(pid, NULL, 0); /* bury zombie */
X 
X     return rv;
X+#else
X+    int fd;
X+    char *dev;
X+
X+    (void)mountpoint;
X+    (void)opts;
X+
X+    dev = getenv("FUSE_DEV_FD");
X+
X+    if (dev) {
X+        errno = 0;
X+        fd = strtol(dev, NULL, 10);
X+    
X+        if (errno) {
X+            perror("bad value given in FUSE_DEV_FD");
X+            return -1;
X+        }
X+    
X+        if (fd < 0)
X+            return -1;
X+    
X+        return fd;
X+    }
X+
X+    dev = getenv("FUSE_DEV_NAME");
X+
X+    if (! dev)
X+	dev = "/dev/fuse";
X+
X+    if ((fd = open(dev, O_RDWR)) < 0)
X+        perror("failed to open fuse device");
X+
X+    return fd;
X+#endif
X }
X 
X int fuse_mount_compat1(const char *mountpoint, const char *args[])
Xdiff -Naur util/fusermount.c util/fusermount.c
X--- util/fusermount.c	Mon Oct  3 17:02:37 2005
X+++ util/fusermount.c	Thu Oct  6 02:38:03 2005
X@@ -1,3 +1,4 @@
X+#ifndef __FreeBSD__
X /*
X     FUSE: Filesystem in Userspace
X     Copyright (C) 2001-2005  Miklos Szeredi <miklos at szeredi.hu>
X@@ -1113,3 +1114,12 @@
X 
X     return 0;
X }
X+#else
X+#include <stdio.h>
X+
X+main()
X+{
X+    fprintf(stderr, "You don't wanna use this program under FreeBSD...\n");
X+    exit(1);
X+}
X+#endif
END-of-fusefs/files/patch-aa
echo x - fusefs/files/patch-ad
sed 's/^X//' >fusefs/files/patch-ad << 'END-of-fusefs/files/patch-ad'
X--- Makefile.in.orig	Sun Oct  9 12:37:38 2005
X+++ Makefile.in	Sun Oct  9 12:39:05 2005
X@@ -184,7 +184,7 @@
X 	doc/how-fuse-works	\
X 	doc/kernel.txt
X 
X-pkgconfigdir = $(libdir)/pkgconfig
X+pkgconfigdir = $(prefix)/libdata/pkgconfig
X pkgconfig_DATA = fuse.pc
X all: all-recursive
X 
END-of-fusefs/files/patch-ad
exit

--- fusefs.shar ends here ---



>Release-Note:
>Audit-Trail:
>Unformatted:



More information about the freebsd-ports-bugs mailing list