rclone: build: bazil.org/fuse no longer supports macOS
Alas the maintainer of the fuse library that rclone uses for rclone mount
is dropping support for macOS. I updated the library and it no longer builds on macOS.
https://github.com/bazil/fuse/issues/224
This isn’t a disaster - rclone has 2 other supported mount libraries on macOS.
mount2
cmount
They both have pros and cons though.
mount2
mount2
is relatively new and untested. It is supported on macOS but it isn’t supported on FreeBSD so we can’t drop the mount
library completely. It would be easy to make this the default mount on macOS.
cmount
cmount
uses libfuse directly via its C interface. It works well but requires building rclone with CGO.
A naive build of rclone on macOS with CGO will mean that rclone won’t run without the OSXFUSE library installed. Need to check this is actually the case as it might be dynamically loaded like cgofuse does on windows.
Investigations show that it is quite difficult to build go binaries on macOS that are static - this is discouraged by Apple, so what we need is a partially static binary which has libfuse compiled in but is still a dynamic library.
Another alternative would be to provide 2 binaries for macOS one which supports mount and one which doesn’t. This is undesireable!
If we can build rclone with the correct library statically then it might be a good idea to use cmount for all platforms.
About this issue
- Original URL
- State: closed
- Created 4 years ago
- Comments: 53 (39 by maintainers)
Commits related to this issue
- vendor: roll back bazil.org/fuse to the last version which supports macOS #4393 Roll back the bazil.org/fuse update to give us some time to explore alternatives for macOS. See upstream issue: https:... — committed to rclone/rclone by ncw 4 years ago
- vendor: Update github.com/billziss-gh/cgofuse@master #4393 — committed to rclone/rclone by ncw 4 years ago
- build: enable cmount on macOS #4393 — committed to rclone/rclone by ncw 4 years ago
- cmount: fix macOS losing directory contents #4393 Before this change when reading directories we would use the directory handle and the Readdir(-1) call on the directory handle. This worked fine for ... — committed to rclone/rclone by ncw 4 years ago
- vendor: roll back bazil.org/fuse to the last version which supports macOS #4393 Roll back the bazil.org/fuse update to give us some time to explore alternatives for macOS. See upstream issue: https:... — committed to negative0/rclone by ncw 4 years ago
- vendor: Update github.com/billziss-gh/cgofuse to v1.4.0 #4393 — committed to rclone/rclone by ncw 4 years ago
- build: enable cmount on macOS #4393 — committed to rclone/rclone by ncw 4 years ago
- cmount: fix macOS losing directory contents #4393 Before this change when reading directories we would use the directory handle and the Readdir(-1) call on the directory handle. This worked fine for ... — committed to rclone/rclone by ncw 4 years ago
- mount: warn macOS users that mount implementation is changing #4393 — committed to rclone/rclone by ncw 4 years ago
- mount: disable bazil/fuse based mount on macOS #4393 The library is no longer supported on macOS. — committed to rclone/rclone by ncw 4 years ago
- mount: make mount be cmount under macOS #4393 This also adds an alias to the mount command so it responds as `rclone cmount` as well as `rclone mount`. — committed to rclone/rclone by ncw 4 years ago
- mount: disable bazil/fuse based mount on macOS #4393 The library is no longer supported on macOS. — committed to rclone/rclone by ncw 4 years ago
- mount: make mount be cmount under macOS #4393 This also adds an alias to the mount command so it responds as `rclone cmount` as well as `rclone mount`. — committed to rclone/rclone by ncw 4 years ago
- rclone: build with 'cmount' support 'rclone cmount' provides the same functionality as 'rclone mount'. They both provide FUSE integration, but 'cmount' is backed by libfuse while 'mount' is backed by... — committed to midchildan/nixpkgs by midchildan 3 years ago
I have merged the changes to use cgofuse to master now 😃
The plan will be
for v1.53 (DONE)
rclone cmount
/cgofuse for macOS users unconditionallyrclone mount
will be usingrclone cmount
to nudge people to try it before v1.54 and report problems while they still have a way backfor v1.54
rclone mount
for macOS and make its implementation berclone cmount
provided there haven’t been problems we can’t fix.FWIW anacrolix/fuse now also supports FUSE-T.
An alternative to
cgofuse
is to use @anacrolix’s own fork of bazil/fuse, which is a drop-in replacement (no code changes necessary) which provides the exact same functionality — plus working macFUSE 4+ support.You can get it from here: https://github.com/anacrolix/fuse
This has been merged in brew, so any future installs or upgrades from brew should have the cmount command.
FYI I have released cgofuse v1.4.0.
Coming from many years of C# and having discovered Go only recently, I can totally relate to that 😄
Anyway… I gave a try on both my Mac:
Your “it all fits in my head” comment is so spot on. Many other programming languages that keep adding features miss that very important point.