From e76b14aef05acb8ca797946998f2f9366035d848 Mon Sep 17 00:00:00 2001 From: Jakub Sztandera Date: Tue, 22 Nov 2016 14:52:00 +0100 Subject: [PATCH 1/3] fuse: Parse OSX fuse version properly License: MIT Signed-off-by: Jakub Sztandera --- fuse/node/mount_darwin.go | 14 +++++++++++--- package.json | 6 ++++++ 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/fuse/node/mount_darwin.go b/fuse/node/mount_darwin.go index e1d287227ec..a743763ba73 100644 --- a/fuse/node/mount_darwin.go +++ b/fuse/node/mount_darwin.go @@ -11,6 +11,8 @@ import ( "syscall" core "github.com/ipfs/go-ipfs/core" + + "gx/ipfs/QmU1N5xVAUXgo3XRTt6GhJ2SuJEbxj2zRgMS7FpjSR2U83/semver" ) func init() { @@ -138,11 +140,17 @@ func darwinFuseCheckVersion(node *core.IpfsNode) error { } log.Debug("mount: osxfuse version:", ov) - if strings.HasPrefix(ov, "2.7.") || strings.HasPrefix(ov, "2.8.") { - return nil + + min := semver.MustParse("2.7.2") + curr, err := semver.Make(ov) + if err != nil { + return err } - return fmt.Errorf(errStrUpgradeFuse, ov) + if curr.LT(min) { + return fmt.Errorf(errStrUpgradeFuse, ov) + } + return nil } func tryGFV() (string, error) { diff --git a/package.json b/package.json index 20e3e5a06b3..36270e7292e 100644 --- a/package.json +++ b/package.json @@ -293,6 +293,12 @@ "hash": "QmXGevGDVTqeKdisBzaxEK4CJZqfxeXiVSWLaXaVWcG5on", "name": "go-smux-multiplex", "version": "1.1.4" + }, + { + "author": "blang", + "hash": "QmU1N5xVAUXgo3XRTt6GhJ2SuJEbxj2zRgMS7FpjSR2U83", + "name": "semver", + "version": "3.3.0" } ], "gxVersion": "0.4.0", From 53a35a8f50a3f7cacb14cbe17b5484a69ba31d28 Mon Sep 17 00:00:00 2001 From: Jakub Sztandera Date: Mon, 5 Dec 2016 19:42:49 +0100 Subject: [PATCH 2/3] Fail nicelly on OSXFUSE 3.0.0+ License: MIT Signed-off-by: Jakub Sztandera --- fuse/node/mount_darwin.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/fuse/node/mount_darwin.go b/fuse/node/mount_darwin.go index a743763ba73..5417ee9db2a 100644 --- a/fuse/node/mount_darwin.go +++ b/fuse/node/mount_darwin.go @@ -31,7 +31,7 @@ var fuseVersionPkg = "github.com/jbenet/go-fuse-version/fuse-version" var errStrFuseRequired = `OSXFUSE not found. OSXFUSE is required to mount, please install it. -NOTE: Version 2.7.2 or higher required; prior versions are known to kernel panic! +NOTE: Version in between 2.7.2 and 3.0.0 is required; prior versions are known to kernel panic! It is recommended you install it from the OSXFUSE website: http://osxfuse.github.io/ @@ -56,6 +56,8 @@ It is recommended you install it from the OSXFUSE website: For more help, see: https://github.com/ipfs/go-ipfs/issues/177 + +OSXFUSE versions >3.0.0 are not compatible with version of FUSE library in current use. ` var errStrNeedFuseVersion = `unable to check fuse version. @@ -142,6 +144,7 @@ func darwinFuseCheckVersion(node *core.IpfsNode) error { log.Debug("mount: osxfuse version:", ov) min := semver.MustParse("2.7.2") + max := semver.MustParse("3.0.0") curr, err := semver.Make(ov) if err != nil { return err @@ -150,6 +153,10 @@ func darwinFuseCheckVersion(node *core.IpfsNode) error { if curr.LT(min) { return fmt.Errorf(errStrUpgradeFuse, ov) } + // TODO: Upgrade fuse lib and work nice with 3.0.0+ + if curr.GE(max) { + return fmt.Errorf(errStrUpgradeFuse, ov) + } return nil } From 018a5d594db14570c4c5f8eed5fee6bb8f435a4f Mon Sep 17 00:00:00 2001 From: Jakub Sztandera Date: Tue, 6 Dec 2016 00:22:00 +0100 Subject: [PATCH 3/3] Add issue number to the OSXFUSE 3+ message License: MIT Signed-off-by: Jakub Sztandera --- fuse/node/mount_darwin.go | 1 + 1 file changed, 1 insertion(+) diff --git a/fuse/node/mount_darwin.go b/fuse/node/mount_darwin.go index 5417ee9db2a..e4bf92168e6 100644 --- a/fuse/node/mount_darwin.go +++ b/fuse/node/mount_darwin.go @@ -58,6 +58,7 @@ For more help, see: https://github.com/ipfs/go-ipfs/issues/177 OSXFUSE versions >3.0.0 are not compatible with version of FUSE library in current use. + This will be fixed in near future, see https://github.com/ipfs/go-ipfs/issues/3471 ` var errStrNeedFuseVersion = `unable to check fuse version.