Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Open sidebar
dms3
go-dms3
Commits
5b6c44fd
Commit
5b6c44fd
authored
Jan 10, 2015
by
Juan Batiz-Benet
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #533 from jbenet/fix-osx-mount
osxfuse: fix version check
parents
29071bac
538550f8
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
200 additions
and
3 deletions
+200
-3
Godeps/Godeps.json
Godeps/Godeps.json
+4
-0
Godeps/_workspace/src/github.com/jbenet/go-fuse-version/README.md
...workspace/src/github.com/jbenet/go-fuse-version/README.md
+45
-0
Godeps/_workspace/src/github.com/jbenet/go-fuse-version/fuseprint/.gitignore
...rc/github.com/jbenet/go-fuse-version/fuseprint/.gitignore
+1
-0
Godeps/_workspace/src/github.com/jbenet/go-fuse-version/fuseprint/README.md
...src/github.com/jbenet/go-fuse-version/fuseprint/README.md
+1
-0
Godeps/_workspace/src/github.com/jbenet/go-fuse-version/fuseprint/index.go
.../src/github.com/jbenet/go-fuse-version/fuseprint/index.go
+21
-0
Godeps/_workspace/src/github.com/jbenet/go-fuse-version/version.go
...orkspace/src/github.com/jbenet/go-fuse-version/version.go
+37
-0
Godeps/_workspace/src/github.com/jbenet/go-fuse-version/version_bsd.go
...pace/src/github.com/jbenet/go-fuse-version/version_bsd.go
+11
-0
Godeps/_workspace/src/github.com/jbenet/go-fuse-version/version_darwin.go
...e/src/github.com/jbenet/go-fuse-version/version_darwin.go
+24
-0
Godeps/_workspace/src/github.com/jbenet/go-fuse-version/version_linux.go
...ce/src/github.com/jbenet/go-fuse-version/version_linux.go
+9
-0
Godeps/_workspace/src/github.com/jbenet/go-fuse-version/version_windows.go
.../src/github.com/jbenet/go-fuse-version/version_windows.go
+9
-0
core/commands/mount_darwin.go
core/commands/mount_darwin.go
+36
-2
test/sharness/Makefile
test/sharness/Makefile
+2
-1
No files found.
Godeps/Godeps.json
View file @
5b6c44fd
...
...
@@ -108,6 +108,10 @@
"ImportPath"
:
"github.com/jbenet/go-datastore"
,
"Rev"
:
"6a1c83bda2a71a9bdc936749fdb507df958ed949"
},
{
"ImportPath"
:
"github.com/jbenet/go-fuse-version"
,
"Rev"
:
"ff72c39433f95ada15f116fa493a51eeec2bd52e"
},
{
"ImportPath"
:
"github.com/jbenet/go-is-domain"
,
"Rev"
:
"93b717f2ae17838a265e30277275ee99ee7198d6"
...
...
Godeps/_workspace/src/github.com/jbenet/go-fuse-version/README.md
0 → 100644
View file @
5b6c44fd
# go-fuse-version
Simple package to get the user's FUSE libraries information.
-
Godoc: https://godoc.org/github.com/jbenet/go-fuse-version
**Warning**
Currently only supports OSXFUSE. if you want more, add them, it's really trivial now.
## Example
```
Go
package main
import (
"fmt"
"os"
fuseversion "github.com/jbenet/go-fuse-version"
)
func main() {
sys, err := fuseversion.LocalFuseSystems()
if err != nil {
fmt.Fprintf(os.Stderr, "%s\n", err)
os.Exit(1)
}
fmt.Printf("FuseVersion, AgentVersion, Agent\n")
for _, s := range *sys {
fmt.Printf("%s, %s, %s\n", s.FuseVersion, s.AgentVersion, s.AgentName)
}
}
```
## fuseprint
If you dont use Go, you can also install the example as the silly util fuseprint:
```
> go get github.com/jbenet/go-fuse-version/fuseprint
> go install github.com/jbenet/go-fuse-version/fuseprint
> fuseprint
FuseVersion, AgentVersion, Agent
27, 2.7.2, OSXFUSE
```
Godeps/_workspace/src/github.com/jbenet/go-fuse-version/fuseprint/.gitignore
0 → 100644
View file @
5b6c44fd
fuseprint
Godeps/_workspace/src/github.com/jbenet/go-fuse-version/fuseprint/README.md
0 → 120000
View file @
5b6c44fd
../README.md
\ No newline at end of file
Godeps/_workspace/src/github.com/jbenet/go-fuse-version/fuseprint/index.go
0 → 100644
View file @
5b6c44fd
package
main
import
(
"fmt"
"os"
fuseversion
"github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-fuse-version"
)
func
main
()
{
sys
,
err
:=
fuseversion
.
LocalFuseSystems
()
if
err
!=
nil
{
fmt
.
Fprintf
(
os
.
Stderr
,
"%s
\n
"
,
err
)
os
.
Exit
(
1
)
}
fmt
.
Printf
(
"FuseVersion, AgentVersion, Agent
\n
"
)
for
_
,
s
:=
range
*
sys
{
fmt
.
Printf
(
"%s, %s, %s
\n
"
,
s
.
FuseVersion
,
s
.
AgentVersion
,
s
.
AgentName
)
}
}
Godeps/_workspace/src/github.com/jbenet/go-fuse-version/version.go
0 → 100644
View file @
5b6c44fd
// package fuseversion simply exposes the version of FUSE installed
// in the user's machine. For reasoning, see:
// - https://github.com/jbenet/go-ipfs/issues/177
// - https://github.com/jbenet/go-ipfs/issues/202
// - https://github.com/osxfuse/osxfuse/issues/175#issuecomment-61888505
package
fuseversion
type
Systems
map
[
string
]
FuseSystem
type
FuseSystem
struct
{
// FuseVersion is the version of the FUSE protocol
FuseVersion
string
// AgentName identifies the system implementing FUSE, or Agent
AgentName
string
// AgentVersion is the version of the Agent program
// (it fights for the user! Sometimes it fights the user...)
AgentVersion
string
}
// LocalFuseSystems returns a map of FuseSystems, keyed by name.
// For example:
//
// systems := fuseversion.LocalFuseSystems()
// for n, sys := range systems {
// fmt.Printf("%s, %s, %s", n, sys.FuseVersion, sys.AgentVersion)
// }
// // Outputs:
// // OSXFUSE, , 2.7.2
//
func
LocalFuseSystems
()
(
*
Systems
,
error
)
{
return
getLocalFuseSystems
()
// implemented by each platform
}
var
notImplYet
=
`Error: not implemented for %s yet. :(
Please do it: https://github.com/jbenet/go-fuse-version`
Godeps/_workspace/src/github.com/jbenet/go-fuse-version/version_bsd.go
0 → 100644
View file @
5b6c44fd
// +build dragonfly freebsd netbsd openbsd
package
fuseversion
import
(
"runtime"
)
func
getLocalFuseSystems
()
(
*
Systems
,
error
)
{
return
nil
,
fmt
.
Sprintf
(
notImplYet
,
runtime
.
GOARCH
())
}
Godeps/_workspace/src/github.com/jbenet/go-fuse-version/version_darwin.go
0 → 100644
View file @
5b6c44fd
package
fuseversion
// #cgo CFLAGS: -I /usr/local/include/osxfuse/ -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=25
// #cgo LDFLAGS: /usr/local/lib/libosxfuse.dylib
//
// #include <fuse/fuse.h>
// #include <fuse/fuse_common.h>
// #include <fuse/fuse_darwin.h>
import
"C"
import
"fmt"
func
getLocalFuseSystems
()
(
*
Systems
,
error
)
{
sys
:=
Systems
{}
sys
[
"OSXFUSE"
]
=
getOSXFUSE
()
return
&
sys
,
nil
}
func
getOSXFUSE
()
FuseSystem
{
return
FuseSystem
{
FuseVersion
:
fmt
.
Sprintf
(
"%d"
,
int
(
C
.
fuse_version
())),
AgentName
:
"OSXFUSE"
,
AgentVersion
:
C
.
GoString
(
C
.
osxfuse_version
()),
}
}
Godeps/_workspace/src/github.com/jbenet/go-fuse-version/version_linux.go
0 → 100644
View file @
5b6c44fd
package
fuseversion
import
(
"runtime"
)
func
getLocalFuseSystems
()
(
*
Systems
,
error
)
{
return
nil
,
fmt
.
Sprintf
(
notImplYet
,
runtime
.
GOARCH
())
}
Godeps/_workspace/src/github.com/jbenet/go-fuse-version/version_windows.go
0 → 100644
View file @
5b6c44fd
package
fuseversion
import
(
"runtime"
)
func
getLocalFuseSystems
()
(
*
Systems
,
error
)
{
return
nil
,
fmt
.
Sprintf
(
notImplYet
,
runtime
.
GOARCH
())
}
core/commands/mount_darwin.go
View file @
5b6c44fd
...
...
@@ -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
}
test/sharness/Makefile
View file @
5b6c44fd
...
...
@@ -9,6 +9,7 @@
T
=
$(
sort
$(
wildcard
t[0-9][0-9][0-9][0-9]-
*
.sh
))
BINS
=
bin/random bin/ipfs
SHARNESS
=
lib/sharness/sharness.sh
IPFS_ROOT
=
../..
all
:
clean deps $(T) aggregate
...
...
@@ -30,7 +31,7 @@ $(SHARNESS):
@
echo
"*** installing
$@
***"
lib/install-sharness.sh
bin/%
:
bin/%
:
$(IPFS_ROOT)/**/*.go
@
echo
"*** installing
$@
***"
cd
..
&&
make
$@
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment