New formulas: fuse4x and fuse4x-kext #7371
New formulas: fuse4x and fuse4x-kext #7371
Conversation
def caveats | ||
<<-EOS.undent | ||
Install kernel extension to the system: | ||
sudo cp -rfX #{prefix}/fuse4x.kext /System/Library/Extensions |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Perhaps we should suggest /Library/Extensions
instead? That is where VirtualBox places it's stuff and it keeps /System/Library/Extensions
untouched---so only things provided by Apple live there.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ahh. Never mind, seems /System/Library/Extensions
is the only folder OS X will check during boot:
http://daringfireball.net/2003/08/the_one_and_only_mac_os_x_extensions_folder
/Library/Extensions
is commonly used for extensions that specific Applications load when they start up.
Looking good, was able to compile and use SSHFS from: https://github.com/fuse4x/sshfs The only change I might consider is merging @mxcl @adamv @MikeMcQuaid @jacknagel I don't think we've done a kernel extension before---any thoughts or caveats we should add? |
Presumably it's just a matter if copying the file to the right location? |
Yeah, just the user following a caveat that they need to sudo-copy the But that's the risk you take. |
Also looks like it the MacPorts guys have rigged things so that the kernel extension is auto-loaded by the library: https://trac.macports.org/browser/trunk/dports/fuse/fuse4x-kext/Portfile We may want to look into that instead of copying to |
To load the kernel extension it must be chowned by root, so we can't simply leave
The kextload program is used to explicitly load kernel extensions (kexts). For most kexts, kextload must run as the superuser (root). Kexts installed under /System/ with an OSBundleAllowUserLoad property set to true may be loaded via kextload by non-root users. So, if we want to put Regarding definition of a |
Allright, guess we'll just leave it alone and go with the caveat recommending a sudo-copy to
It looks like the version number of both formulae are locked together---but it is totally conceivable that they may drift apart due to a hotfix in one or the other. I guess keeping them separate does make it easier to hack on one of the components while leaving the other alone---which is a good thing. I suppose my main concern is that Last issue that pops up in my mind: The MacPorts portfile makes some substitutions that change the name of the library from It would be great if there was a |
Sounds good, but I'm not sure about it. Some points:
|
Remember that various versions of VMWare Fusion will install FUSE libraries directly into /usr/local, hence the whitelisting. |
Hrm. Well that's nice of them. Perhaps we should stick with |
Allright, I guess I will merge this as-is with a few caveat modifications---it will require changes to other formulae but it also avoids stepping on other people's toes which is a good thing. Thanks for your hard work and patience! |
I'm getting a build failure on 10.5.8 with XCode 3.1.4 even though this post suggests that fuse4x supports Leopard since 0.8.7: https://groups.google.com/forum/#!topic/fuse4x/vUVA0mstyi4 I tried restricting it to a single-architecture install by passing Full build logs here: https://gist.github.com/1191673/eb276ef1feb5a1776e9521af6ddc2efcc78c2045 |
If I understand things correctly. You can chown things to root, as long as another user owns that directory the file can still be deleted.
|
@mxcl True, but it does not work with homebrew
|
We can fix that with a force remove if it will improve things. |
One more thing, fuse4x.kext is a directory, not a file.
|
@Sharpie the error says that it cannot build kernel extension for 64bit architecture. It looks like osx10.5 & the old xcode does not support compilation for 64bit kernels. Could you please add "-arch i386" flag to xcode (line 12) and send me the output? fuse4x should build/work fine on osx10.5. At least it builds on macports. |
It failed on this line:
I believe that i386 build fine finished successfully but failed to copy this dir. In any case 10.5 SDK does not support 64bit kernel and we should not try to build x86_64 architecture. There should be arch restriction something like if MACOS_VERSION < "10.6" do |
Sorry, some critical information got left out of the log for some reason. When installing with
It appears that the default for "Compiler Version" in I was able to install the kext manually by opening the project in XCode, setting "Compiler Version" to "GCC System Version" and then running Do you know if there is a way to pass this information directly to |
@Sharpie Ah, good point. fuse4x should use the default compiler, not the custom one. I have a fix in my private repo, I am testing it now. anatol/kext@892ec01 It should be available in the next fuse4x version (0.8.12). Currently the only way is to remove "clang" from pbxproj file using inreplace. |
I am also having trouble compiling the fuse4x library on Leopard due to the way CFLAGS="$CFLAGS -DUNNAMED_SEMAPHORES_NOT_SUPPORTED -D_POSIX_C_SOURCE=200112L -D__DARWIN_64_BIT_INO_T=1 -arch i386 -arch x86_64 -isysroot /Developer/SDKs/MacOSX10.6.sdk -mmacosx-version-min=10.5"
LDFLAGS="$LDFLAGS -arch i386 -arch x86_64 -framework CoreFoundation" The problem is with
After fixing https://gist.github.com/1191673/eb276ef1feb5a1776e9521af6ddc2efcc78c2045#file_fuse4x_lib_install.log |
Hi On Tue, Sep 6, 2011 at 9:48 AM, Sharpie <
So what is the best choice? Just to remove isysroot flag from configure and
It is weird. Could you please add "#include <machine/param.h>" to Thanks for doing it! |
Yeah, I wouldn't force a particular
That didn't work. Adding |
On Tue, Sep 6, 2011 at 11:30 AM, Sharpie <
Ok, it will be in the official repo sson.
That file already includes "#include <sys/vmparam.h>" I assumed that it
|
Sounds good, let me know which patches need to be applied. |
Hi On Tue, Sep 6, 2011 at 1:51 PM, Charlie Sharpsteen <
Meanwhile you can try to build fuse4x from HEAD. I'll test it for day or two |
While we are here I would like to discuss the library and *.pc names. I suggest to change it from libfuse4x to libfuse, the same way as macports does. reinplace "s|-lfuse4x|-lfuse|" fuse.pc.in The reason why it worth doing is that most of the filesystems use "libfuse" name. If you apply changes as above then you don't need to change filesystems (similar to what afds did for encfs). |
@anatol We already discussed this, could you please check following items and tell us what do you think. Start with this comment and follow 3 comments below. |
@afds Personally I am in favor of using "libfuse", it is what most filesystems expect. And I like your idea where you said "install fuse4x if no macfuse installed". If a user already installed some macfuse flavor (e.g Google,Tuxera, osxfuse or BrianPhams') then there is no reason to install one more (fuse4x). In this case Homebrew can just use installed macfuse flavor. Otherwise Homebrew should do the best possible thing - install fuse4x. |
The other corner case to worry about are things like VMware Fusion installing a
|
The second one feels more Homebrewy to me. |
You can get the Xcode prefix with: |
fuse4x/fuse4x@fuse4x_0_8_12 is still failing on Leopard due to |
Do'h, I pushed a wrong commit as a tag. I repushed the correct tag. Please test it once again... Sorry about that. |
Looks good. Adding to master. Thanks to everyone for the hard work and input! |
Thank to all of you for doing this. In case if you'll see any issues with fuse4x, fuse4x-kext do not hesitate to contact me. |
Provides libraries required to build and run programs that use FUSE filesystems. Note that this formula installs `libfuse4x` instead of the traditional `libfuse` in order to avoid clashing with MacFUSE and other `libfuse` distributions---such as the one bundled with VMWare Fusion. Configure scripts for software expecting to link against `libfuse` will need to be modified accordingly. Closes Homebrew#7371. Closes Homebrew#6185. Signed-off-by: Charlie Sharpsteen <source@sharpsteen.net>
Provides libraries required to build and run programs that use FUSE filesystems. Note that this formula installs `libfuse4x` instead of the traditional `libfuse` in order to avoid clashing with MacFUSE and other `libfuse` distributions---such as the one bundled with VMWare Fusion. Configure scripts for software expecting to link against `libfuse` will need to be modified accordingly. Closes Homebrew#7371. Closes Homebrew#6185. Signed-off-by: Charlie Sharpsteen <source@sharpsteen.net>
Provides libraries required to build and run programs that use FUSE filesystems. Note that this formula installs `libfuse4x` instead of the traditional `libfuse` in order to avoid clashing with MacFUSE and other `libfuse` distributions---such as the one bundled with VMWare Fusion. Configure scripts for software expecting to link against `libfuse` will need to be modified accordingly. Closes Homebrew#7371. Closes Homebrew#6185. Signed-off-by: Charlie Sharpsteen <source@sharpsteen.net>
Potential fix for issue #6185