Opened 13 years ago

Closed 13 years ago

Last modified 13 years ago

#30383 closed defect (fixed)

fuse filesystems should support fuse4x as dependency

Reported by: drkp (Dan Ports) Owned by: drkp (Dan Ports)
Priority: Normal Milestone:
Component: ports Version: 2.0.0
Keywords: Cc: anatol (Anatol Pomozov), darenzana@…, Markus.Ueberall@…, sfiera@…, raimue (Rainer Müller), mellon85@…, mail@…, petri@…, bonoba@…
Port: bindfs curlftpfs encfs ext2fuse fuse-bindings-python fuse-bindings-python25 mhddfs mp3fs ntfs-3g procfs spotlightfs

Description

I just added ports for Fuse4X, a fork of MacFUSE that provides 64-bit kernel support among other features. It should be possible to use any of our existing fuse filesystem to run atop fuse4x, although macfuse should remain the default.

At a minimum, existing ports will need to change their port:macfuse dependency to path:lib/pkgconfig/fuse.pc:macfuse

Some other problems ports might run into:

  • fuse4x's library is -lfuse4x not -lfuse; ports using pkgconfig should figure this out on their own
  • macfuse includes emulation of named semaphores, fuse4x doesn't
  • fuse4x's framework is in a different location (and in the fuse4x-framework port)

I am looking through the ports now to see if they work with fuse4x, and will report here if any changes seem to be necessary. I already fixed sshfs in r81150.

Attachments (3)

encfs.patch (2.4 KB) - added by drkp (Dan Ports) 13 years ago.
change_libfuse4x_to_libfuse.diff (1.1 KB) - added by anatol (Anatol Pomozov) 13 years ago.
Change library name from libfuse4x to libfuse
main.log (45.1 KB) - added by tristan.klocke@… 13 years ago.
sshfs build error on lion (10.7)

Download all attachments as: .zip

Change History (21)

comment:1 Changed 13 years ago by anatol (Anatol Pomozov)

I already fixed sshfs in r81150

It is better to use updated version of sshfs from fuse4x https://github.com/fuse4x/sshfs It already includes fixes you provide plus updates sshfs to version 2.3

comment:2 Changed 13 years ago by drkp (Dan Ports)

bindfs, curlftpfs, fuse-bindings-python, fuse-bindings-python25, mhddfs, mp3fs, and ntfs-3g appear to work OK after just changing the dependency to path:lib/pkgconfig/fuse.pc:macfuse. I made that change in r81151.

gmailfs uses the Python interface, so it doesn't need to depend on macfuse directly; fuse-bindings-python2.5 is enough. I removed the macfuse dependency in r81152

encfs, ext2fuse, procfs, and spotlightfs may need some more work. (Actually, procfs may be pretty much broken altogether...)

comment:3 in reply to:  1 Changed 13 years ago by drkp (Dan Ports)

Replying to anatol.pomozov@…:

I already fixed sshfs in r81150

It is better to use updated version of sshfs from fuse4x https://github.com/fuse4x/sshfs It already includes fixes you provide plus updates sshfs to version 2.3

Thanks, but I'm trying to make only one change at a time. I'll consider updating to 2.3 later.

comment:4 Changed 13 years ago by anatol (Anatol Pomozov)

encfs works fine with fuse4x. There is a prebuild binary that I use https://groups.google.com/forum/#!topic/fuse4x/w0s6KNWwoK4

comment:5 Changed 13 years ago by drkp (Dan Ports)

Yes, the only issue with encfs seems to be that its configure script has -lfuse hardcoded instead of using pkgconfig. Here's a patch to fix that. Markus, is it OK to apply this?

Changed 13 years ago by drkp (Dan Ports)

Attachment: encfs.patch added

comment:6 Changed 13 years ago by raimue (Rainer Müller)

Port: gmailfs removed

The gmailfs port did not work with current gmail anyway. Port removed in r81165.

comment:7 Changed 13 years ago by anatol (Anatol Pomozov)

fuse4x's library is -lfuse4x not -lfuse; ports using pkgconfig should figure this out on their own

would it be better if fuse4x install fuse.pc instead of fuse4x.pc, as well as libfuse.dylib instead of libfuse4x.dylib? So Portfiles stay unchanged...

You also mentioned about making fuse4x library ABI compatible with macfuse. It looks reasonable to me.

comment:8 in reply to:  7 Changed 13 years ago by drkp (Dan Ports)

Replying to anatol.pomozov@…:

would it be better if fuse4x install fuse.pc instead of fuse4x.pc, as well as libfuse.dylib instead of libfuse4x.dylib? So Portfiles stay unchanged...

You also mentioned about making fuse4x library ABI compatible with macfuse. It looks reasonable to me.

It does get installed as fuse.pc, and I would *not* change that.

Installing the library as libfuse instead of libfuse4x would be OK, but I don't think we need to; things seem fine as it is.

comment:9 Changed 13 years ago by anatol (Anatol Pomozov)

Installing the library as libfuse instead of libfuse4x would be OK, but I don't think we need to; things seem fine as it is.

My point is that it would be better to change fuse4x only once than move "choose libfuse vs libfuse4x" logic to existing and future Portfiles.

Original fuse installs libfuse.dylib. I changed it in fuse4x to allow macfuse and fuse4x coexist together. As macports does not allow to coexist these 2 ports then I do not see any reason why libfuse4x should be installed instead of libfuse.

comment:10 Changed 13 years ago by bonoba@…

Cc: bonoba@… added

Cc Me!

Changed 13 years ago by anatol (Anatol Pomozov)

Change library name from libfuse4x to libfuse

comment:11 Changed 13 years ago by anatol (Anatol Pomozov)

Dan,

I just added a patch that changes the library name to libfuse. This eliminates patches to portfiles that use '-lfuse'.

comment:12 Changed 13 years ago by anatol (Anatol Pomozov)

With my change above encfs and ext2fuse work fine. If I understand correctly the only change need to be done to these ports is

change port:macfuse to path:lib/libfuse.dylib:macfuse

comment:13 Changed 13 years ago by anatol (Anatol Pomozov)

There are 2 more ports left: procfs and spotlightfs. My question - do we really need it in macports? These filesystems are marked as deprecated on macfuse page. These fs were created by Amit as an example for OSX book I doubt that many people use it. The portfiles also do not have maintainer.

Is it time to clean it up?

comment:14 Changed 13 years ago by drkp (Dan Ports)

Resolution: fixed
Status: newclosed

OK, I committed the patch to rename the lib to libfuse in r81459, revbumped the ports that can already be built with fuse4x in r81460, and changed the depspec on encfs and ext2fuse in r81461.

That covers everything except procfs and spotlightfs, which are sufficiently broken that we need to either fix them or (more likely) remove the ports. But that's a separate issue.

comment:15 Changed 13 years ago by tristan.klocke@…

Tried to build with the new dependencies but it failed. Here is the ticket and log: https://trac.macports.org/attachment/ticket/30428/main.3.log

Changed 13 years ago by tristan.klocke@…

Attachment: main.log added

sshfs build error on lion (10.7)

comment:16 Changed 13 years ago by tristan.klocke@…

Same for sshfs (see mainlog). Only encfs and ext2fuse went fine.

comment:17 Changed 13 years ago by drkp (Dan Ports)

Hmm, I see -DFreeBSD=10 in the CFLAGS, which isn't right; that should only be set for macfuse, not fuse4x. What is the output of pkgconfig --cflags fuse?

comment:18 in reply to:  15 Changed 13 years ago by anatol (Anatol Pomozov)

Replying to tristan.klocke@…:

Tried to build with the new dependencies but it failed. Here is the ticket and log: https://trac.macports.org/attachment/ticket/30428/main.3.log

From the error message I see

:info:build Undefined symbols for architecture x86_64:
526	:info:build   "_fuse_sem_destroy", referenced from:
527	:info:build       _sshfs_read in sshfs-sshfs.o
528	:info:build       _sshfs_release in sshfs-sshfs.o
529	:info:build       _process_requests in sshfs-sshfs.o
530	:info:build       _clean_req in sshfs-sshfs.o
531	:info:build       _sshfs_read_end in sshfs-sshfs.o
532	:info:build       _sftp_request_wait in sshfs-sshfs.o
533	:info:build       _submit_read in sshfs-sshfs.o
534	:info:build       ...

the compiler found function _fuse_sem_destroy defined in *macfuse* headers, but it was not able to find it in the dylib.

I also see -DFreeBSD=10 which is absent in the fuse4x fuse4x.pc file.

This makes me think that the issue is you have headers and fuse.pc file from macfuse, but dylib from fuse4x.

Note: See TracTickets for help on using tickets.