1
0
mirror of https://github.com/ipfs/kubo.git synced 2025-06-20 02:21:48 +08:00

fix osx mounting version checks

This commit is contained in:
Juan Batiz-Benet
2015-01-10 00:55:53 -08:00
parent 01f9ef3c54
commit 538550f8f8

View File

@ -5,6 +5,8 @@ import (
"runtime"
"strings"
"syscall"
fuseversion "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-fuse-version"
)
func init() {
@ -18,11 +20,17 @@ func darwinFuseCheckVersion() error {
return nil
}
ov, err := syscall.Sysctl("osxfuse.version.number")
ov, err := tryGFV()
if err != nil {
return err
log.Debug(err)
ov, err = trySysctl()
if err != nil {
log.Debug(err)
return fmt.Errorf("cannot determine osxfuse version. is it installed?")
}
}
log.Debug("mount: osxfuse version:", ov)
if strings.HasPrefix(ov, "2.7.") || strings.HasPrefix(ov, "2.8.") {
return nil
}
@ -31,3 +39,29 @@ func darwinFuseCheckVersion() error {
"Older versions of osxfuse have kernel panic bugs; please upgrade!",
"https://github.com/jbenet/go-ipfs/issues/177")
}
func tryGFV() (string, error) {
sys, err := fuseversion.LocalFuseSystems()
if err != nil {
log.Debug("mount: fuseversion:", "failed")
return "", err
}
for _, s := range *sys {
v := s.AgentVersion
log.Debug("mount: fuseversion:", v)
return v, nil
}
return "", fmt.Errorf("fuseversion: no system found")
}
func trySysctl() (string, error) {
v, err := syscall.Sysctl("osxfuse.version.number")
if err != nil {
log.Debug("mount: sysctl osxfuse.version.number:", "failed")
return "", err
}
log.Debug("mount: sysctl osxfuse.version.number:", v)
return v, nil
}