fix osx mounting version checks
Juan Batiz-Benet committed
Jan 10, 2015 at 00:55 UTC
538550f8f8e76ebaff39ea382fe16379a91c3dba
1 file changed
+36
-2
core/commands/mount_darwin.go
+36
-2
@@ -5,6 +5,8 @@ import (
5
"runtime"
6
"strings"
7
"syscall"
8
+
9
+ fuseversion "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-fuse-version"
10
)
11
12
func init() {
@@ -18,11 +20,17 @@ func darwinFuseCheckVersion() error {
20
return nil
21
}
22
21
- ov, err := syscall.Sysctl("osxfuse.version.number")
23
+ ov, err := tryGFV()
24
if err != nil {
23
- return err
25
+ log.Debug(err)
26
+ ov, err = trySysctl()
27
+ if err != nil {
28
+ log.Debug(err)
29
+ return fmt.Errorf("cannot determine osxfuse version. is it installed?")
30
+ }
31
}
32
33
+ log.Debug("mount: osxfuse version:", ov)
34
if strings.HasPrefix(ov, "2.7.") || strings.HasPrefix(ov, "2.8.") {
35
return nil
36
}
@@ -31,3 +39,29 @@ func darwinFuseCheckVersion() error {
39
"Older versions of osxfuse have kernel panic bugs; please upgrade!",
40
"https://github.com/jbenet/go-ipfs/issues/177")
41
}
42
+
43
+func tryGFV() (string, error) {
44
+ sys, err := fuseversion.LocalFuseSystems()
45
+ if err != nil {
46
+ log.Debug("mount: fuseversion:", "failed")
47
+ return "", err
48
+ }
49
+
50
+ for _, s := range *sys {
51
+ v := s.AgentVersion
52
+ log.Debug("mount: fuseversion:", v)
53
+ return v, nil
54
+ }
55
+
56
+ return "", fmt.Errorf("fuseversion: no system found")
57
+}
58
+
59
+func trySysctl() (string, error) {
60
+ v, err := syscall.Sysctl("osxfuse.version.number")
61
+ if err != nil {
62
+ log.Debug("mount: sysctl osxfuse.version.number:", "failed")
63
+ return "", err
64
+ }
65
+ log.Debug("mount: sysctl osxfuse.version.number:", v)
66
+ return v, nil
67
+}