Skip to content

Commit 3e31519

Browse files
authored
Merge pull request #6135 from anacrolix/fuse-fixes
Fuse fixes
2 parents d25819d + ef903f6 commit 3e31519

File tree

5 files changed

+34
-11
lines changed

5 files changed

+34
-11
lines changed

core/bootstrap.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ func Bootstrap(n *IpfsNode, cfg BootstrapConfig) (io.Closer, error) {
8080
if len(cfg.BootstrapPeers()) == 0 {
8181
// We *need* to bootstrap but we have no bootstrap peers
8282
// configured *at all*, inform the user.
83-
log.Error("no bootstrap nodes configured: go-ipfs may have difficulty connecting to the network")
83+
log.Warning("no bootstrap nodes configured: go-ipfs may have difficulty connecting to the network")
8484
}
8585

8686
// the periodic bootstrap function -- the connection supervisor

fuse/ipns/ipns_test.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ import (
1212
"sync"
1313
"testing"
1414

15+
"bazil.org/fuse"
16+
1517
core "github.com/ipfs/go-ipfs/core"
1618

1719
fstest "bazil.org/fuse/fs/fstestutil"
@@ -106,6 +108,7 @@ func (m *mountWrap) Close() error {
106108
}
107109

108110
func setupIpnsTest(t *testing.T, node *core.IpfsNode) (*core.IpfsNode, *mountWrap) {
111+
t.Helper()
109112
maybeSkipFuseTests(t)
110113

111114
var err error
@@ -126,8 +129,11 @@ func setupIpnsTest(t *testing.T, node *core.IpfsNode) (*core.IpfsNode, *mountWra
126129
t.Fatal(err)
127130
}
128131
mnt, err := fstest.MountedT(t, fs, nil)
132+
if err == fuse.ErrOSXFUSENotFound {
133+
t.Skip(err)
134+
}
129135
if err != nil {
130-
t.Fatal(err)
136+
t.Fatalf("error mounting at temporary directory: %v", err)
131137
}
132138

133139
return node, &mountWrap{

fuse/node/mount_darwin.go

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,10 @@ func init() {
2222

2323
// dontCheckOSXFUSEConfigKey is a key used to let the user tell us to
2424
// skip fuse checks.
25-
var dontCheckOSXFUSEConfigKey = "DontCheckOSXFUSE"
25+
const dontCheckOSXFUSEConfigKey = "DontCheckOSXFUSE"
2626

2727
// fuseVersionPkg is the go pkg url for fuse-version
28-
var fuseVersionPkg = "github.com/jbenet/go-fuse-version/fuse-version"
28+
const fuseVersionPkg = "github.com/jbenet/go-fuse-version/fuse-version"
2929

3030
// errStrFuseRequired is returned when we're sure the user does not have fuse.
3131
var errStrFuseRequired = `OSXFUSE not found.
@@ -58,7 +58,12 @@ For more help, see:
5858
https://github.com/ipfs/go-ipfs/issues/177
5959
`
6060

61-
var errStrNeedFuseVersion = `unable to check fuse version.
61+
type errNeedFuseVersion struct {
62+
cause string
63+
}
64+
65+
func (me errNeedFuseVersion) Error() string {
66+
return fmt.Sprintf(`unable to check fuse version.
6267
6368
Dear User,
6469
@@ -79,7 +84,8 @@ version you have by running:
7984
[1]: https://github.com/ipfs/go-ipfs/issues/177
8085
[2]: https://github.com/ipfs/go-ipfs/pull/533
8186
[3]: %s
82-
`
87+
`, fuseVersionPkg, dontCheckOSXFUSEConfigKey, me.cause)
88+
}
8389

8490
var errStrFailedToRunFuseVersion = `unable to check fuse version.
8591
@@ -197,7 +203,7 @@ func ensureFuseVersionIsInstalled() error {
197203

198204
// try installing it...
199205
log.Debug("fuse-version: no fuse-version. attempting to install.")
200-
cmd := exec.Command("go", "get", "github.com/jbenet/go-fuse-version/fuse-version")
206+
cmd := exec.Command("go", "install", "github.com/jbenet/go-fuse-version/fuse-version")
201207
cmdout := new(bytes.Buffer)
202208
cmd.Stdout = cmdout
203209
cmd.Stderr = cmdout
@@ -211,13 +217,13 @@ func ensureFuseVersionIsInstalled() error {
211217

212218
log.Debug("fuse-version: failed to install.")
213219
s := err.Error() + "\n" + cmdoutstr
214-
return fmt.Errorf(errStrNeedFuseVersion, fuseVersionPkg, dontCheckOSXFUSEConfigKey, s)
220+
return errNeedFuseVersion{s}
215221
}
216222

217223
// ok, try again...
218224
if _, err := exec.LookPath("fuse-version"); err != nil {
219225
log.Debug("fuse-version: failed to install?")
220-
return fmt.Errorf(errStrNeedFuseVersion, fuseVersionPkg, dontCheckOSXFUSEConfigKey, err)
226+
return errNeedFuseVersion{err.Error()}
221227
}
222228

223229
log.Debug("fuse-version: install success")

fuse/node/mount_test.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ import (
88
"testing"
99
"time"
1010

11+
"bazil.org/fuse"
12+
1113
"context"
1214

1315
core "github.com/ipfs/go-ipfs/core"
@@ -61,8 +63,11 @@ func TestExternalUnmount(t *testing.T) {
6163
mkdir(t, ipnsDir)
6264

6365
err = Mount(node, ipfsDir, ipnsDir)
66+
if _, ok := err.(errNeedFuseVersion); ok || err == fuse.ErrOSXFUSENotFound {
67+
t.Skip(err)
68+
}
6469
if err != nil {
65-
t.Fatal(err)
70+
t.Fatalf("error mounting: %v", err)
6671
}
6772

6873
// Run shell command to externally unmount the directory

fuse/readonly/ipfs_test.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ import (
1515
"sync"
1616
"testing"
1717

18+
"bazil.org/fuse"
19+
1820
core "github.com/ipfs/go-ipfs/core"
1921
coreapi "github.com/ipfs/go-ipfs/core/coreapi"
2022
coremock "github.com/ipfs/go-ipfs/core/mock"
@@ -50,6 +52,7 @@ func randObj(t *testing.T, nd *core.IpfsNode, size int64) (ipld.Node, []byte) {
5052
}
5153

5254
func setupIpfsTest(t *testing.T, node *core.IpfsNode) (*core.IpfsNode, *fstest.Mount) {
55+
t.Helper()
5356
maybeSkipFuseTests(t)
5457

5558
var err error
@@ -62,8 +65,11 @@ func setupIpfsTest(t *testing.T, node *core.IpfsNode) (*core.IpfsNode, *fstest.M
6265

6366
fs := NewFileSystem(node)
6467
mnt, err := fstest.MountedT(t, fs, nil)
68+
if err == fuse.ErrOSXFUSENotFound {
69+
t.Skip(err)
70+
}
6571
if err != nil {
66-
t.Fatal(err)
72+
t.Fatalf("error mounting temporary directory: %v", err)
6773
}
6874

6975
return node, mnt

0 commit comments

Comments
 (0)