-
-
Notifications
You must be signed in to change notification settings - Fork 174
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Build, install on OS-X v10.10 #115
Comments
Not having OSX myself nor having any output from your problem there isn't much I can do to help. |
I know this is old but I had the same problem and figured out how to make it work on OS-X v10.11. |
Thanks for the patch but scanning through this patch there looks to be a few problems.
|
I think a more general solution, from the portability perspective, is to use gnulib, but in my first attempt I ran into even more trouble. |
Hi, thanks for the initial works for osx. I have a quick question about the license issue. While the gnulib may be used to support some of missing functions in osx, it may likely require GPL/LGPL. Probably more restrictive than the current mergerfs license, if I am not too wrong. I am wondering if you could possibly consider GPL at least for mac version w/ gnulib? thanks! |
Only if for some reason the problem could only be fixed by embedding gnulib code but given the issues we've run into it seems extremely unlikely that's the case. |
Thanks for the reply. It seems two major issues are eaccess and utimensat if mergerfs needs to be ported beyond darksin1's initial conversion for osx, in order to closely match the original capability. While those may be rewritten/wrapped by own implementations, probably it has more to do with time/complexity to work with, and current availability to use at the moment. As a user, I personally prefer to mergerfs over mhddfs while both are excellent tools. For a mac, only mhddfs was available (even as a package) until darksin1's patch was released. While the patch was great enough for my use case, it could be also nice with other capability as well. Anyway, thanks for the great tool and patch. I guess I can probably put the additional patch to github that you can take a look. many thanks! |
There are a few things more that need to be done to make it really usable on macOS. I've looked into them and they shouldn't be difficult to implement. eaccess can be replaced by faccessat it looks like and utimensat can be simulated. gnulib can't be used because mergerfs is doing hacky things to improve performance on Linux and if those things aren't simulated on macOS it's performance will be limited. AFAICT I should be able to do that but I need access to an macOS machine (recently done) and familiarize myself with the dev environment) to really test it out. The documentation is rather lacking for me to blindly patch it. |
Support OSX compilation trapexit#115 (Add the compile option for RPI/Wheezy as well)
Support OSX compilation trapexit#115
Hi, Some osx patch version w/o gnulib has been uploaded to the cloned repository, in case it can help or save your time in any means. It includes the darksin1's patch and other additions. It also includes faccessat that you mentioned earlier (although it seems you already patched :-) While I am not sure if you meant your performance optimizations, like preallocations or read ahead, or something else, personally, I have been using gnulib-based patch for the past few months without much noticeable issues (The performance was not the primary issue for my case as bottleneck was at other places though). Anyway, thanks for your follow-ups and hard works! Cheers! |
I already know what needs to be done I simply need an OSX machine to test On Jul 31, 2016 8:58 AM, "xinush" notifications@github.com wrote:
|
Could someone try building master on OSX? It's got several changes which should help building on OSX. Please email me any build errors. Thanks. |
Looking at master@af9a71f: ./tools/cppfind: cpp is the wrong tool. use "cc -E ${FUSE_CFLAGS} -" instead. The final dash to use stdin is required. The stat structure is different on OS X. The following are repeated often:
Instead, OS X uses a timespec struct for times:
This looks like this:
Finally:
Mac OS doesn't have that GNU function but it does have futimes(2).
|
After fixing those:
I'll draft up a patch for all this. |
Thanks for looking into this. I've just not had access to a machine to try porting it. |
I don't think futimesat is in there at all these days. Running Sierra:
Probably not what you're after. 🙂 If it was in there, it likely went away with gcc/glibc when llvm came to town. |
That said, I faked a version with fcntl and F_GETPATH. 🙂 I'll try to get a patch up tonight. I'm not sure I'll have it organized like the rest of the xplat code you have, but at least it'll compile/work and you can move things around the way you like. |
I have access to an macOS machine now but need to fix it up and get familiar with development on the platform before I can properly support it. Recently I've made significant changes to mergerfs with regard to using libfuse. I now have it embedded into the project to have more control but this probably will complicate things on the macOS side. |
Thanks for your reply @trapexit 😄 I patiently albeit eagerly await any and all future developments! |
just tried 10.13.6 High Sierra and get
|
@jkt628 this is because, for some reason,
which is a harder problem because the build explicitly assumes that the build environment is Linux. |
Because FUSE and libfuse were designed as a linux only. mergerfs has been patched to allow for using the system libfuse which may help on BSD based systems but other changes will still need to done regarding xattrs and possibly some fs calls that aren't cross platform. |
FUSE may initially have been built on Linux; it's been available for OSX for a while -- it's even gone through a couple of evolutions (MacFUSE, and now OSXFuse). That said, I'm sure that there's not much help provided for building cross-platform clients. ext2fuse is probably a rich source of information about mapping Linux entities to BSD, but it's a Ruby client so probably not much help. Anyway, I saw your earlier comment that you don't have a Mac; I was providing a resource for other Mac users that getting this working on OSX is not trivial. I am curious -- |
I understand the general concept is available on other platforms and even called the same but the features, protocol, and userland aren't all the same or necessarily compatible. libfuse is not generally designed to be cross platform. Some efforts have been made but it's not a core focus. Yes, it's from upstream. The whole fuse directory is just a vendored version of libfuse to help with stability given older versions on old distributions were buggy. Being compatible with FreeBSD is not the same as OSX. OSX has different signatures for xattr functions and I believe the underlying protocol is slightly different. |
@trapexit, maybe we could use Travis to check the build for MacOS (and we already have Catalina, 10.15.7, there). https://docs.travis-ci.com/user/reference/osx/ At this project of mine I'm using it: https://github.com/funttastic/universal_kotlin/blob/master/.travis.yml Crossing fingers to have something for OSX ;) Thanks for the good work! |
That doesn't help port mergerfs macos which would be a big'ish undertaking as it lo longer uses the standard high level API. |
Build fails when I attempt on OS-X v10.10, Darwin CO183LNETO63 14.5.0 Darwin Kernel Version 14.5.0: Wed Jul 29 02:26:53 PDT 2015; root:xnu-2782.40.9~1/RELEASE_X86_64 x86_64 i386 MacBookPro11,3 Darwin.
The text was updated successfully, but these errors were encountered: