Unverified 提交 3e315191 作者: Steven Allen 提交者: GitHub

Merge pull request #6135 from anacrolix/fuse-fixes

Fuse fixes
...@@ -80,7 +80,7 @@ func Bootstrap(n *IpfsNode, cfg BootstrapConfig) (io.Closer, error) { ...@@ -80,7 +80,7 @@ func Bootstrap(n *IpfsNode, cfg BootstrapConfig) (io.Closer, error) {
if len(cfg.BootstrapPeers()) == 0 { if len(cfg.BootstrapPeers()) == 0 {
// We *need* to bootstrap but we have no bootstrap peers // We *need* to bootstrap but we have no bootstrap peers
// configured *at all*, inform the user. // configured *at all*, inform the user.
log.Error("no bootstrap nodes configured: go-ipfs may have difficulty connecting to the network") log.Warning("no bootstrap nodes configured: go-ipfs may have difficulty connecting to the network")
} }
// the periodic bootstrap function -- the connection supervisor // the periodic bootstrap function -- the connection supervisor
......
...@@ -12,6 +12,8 @@ import ( ...@@ -12,6 +12,8 @@ import (
"sync" "sync"
"testing" "testing"
"bazil.org/fuse"
core "github.com/ipfs/go-ipfs/core" core "github.com/ipfs/go-ipfs/core"
fstest "bazil.org/fuse/fs/fstestutil" fstest "bazil.org/fuse/fs/fstestutil"
...@@ -106,6 +108,7 @@ func (m *mountWrap) Close() error { ...@@ -106,6 +108,7 @@ func (m *mountWrap) Close() error {
} }
func setupIpnsTest(t *testing.T, node *core.IpfsNode) (*core.IpfsNode, *mountWrap) { func setupIpnsTest(t *testing.T, node *core.IpfsNode) (*core.IpfsNode, *mountWrap) {
t.Helper()
maybeSkipFuseTests(t) maybeSkipFuseTests(t)
var err error var err error
...@@ -126,8 +129,11 @@ func setupIpnsTest(t *testing.T, node *core.IpfsNode) (*core.IpfsNode, *mountWra ...@@ -126,8 +129,11 @@ func setupIpnsTest(t *testing.T, node *core.IpfsNode) (*core.IpfsNode, *mountWra
t.Fatal(err) t.Fatal(err)
} }
mnt, err := fstest.MountedT(t, fs, nil) mnt, err := fstest.MountedT(t, fs, nil)
if err == fuse.ErrOSXFUSENotFound {
t.Skip(err)
}
if err != nil { if err != nil {
t.Fatal(err) t.Fatalf("error mounting at temporary directory: %v", err)
} }
return node, &mountWrap{ return node, &mountWrap{
......
...@@ -22,10 +22,10 @@ func init() { ...@@ -22,10 +22,10 @@ func init() {
// dontCheckOSXFUSEConfigKey is a key used to let the user tell us to // dontCheckOSXFUSEConfigKey is a key used to let the user tell us to
// skip fuse checks. // skip fuse checks.
var dontCheckOSXFUSEConfigKey = "DontCheckOSXFUSE" const dontCheckOSXFUSEConfigKey = "DontCheckOSXFUSE"
// fuseVersionPkg is the go pkg url for fuse-version // fuseVersionPkg is the go pkg url for fuse-version
var fuseVersionPkg = "github.com/jbenet/go-fuse-version/fuse-version" const fuseVersionPkg = "github.com/jbenet/go-fuse-version/fuse-version"
// errStrFuseRequired is returned when we're sure the user does not have fuse. // errStrFuseRequired is returned when we're sure the user does not have fuse.
var errStrFuseRequired = `OSXFUSE not found. var errStrFuseRequired = `OSXFUSE not found.
...@@ -58,7 +58,12 @@ For more help, see: ...@@ -58,7 +58,12 @@ For more help, see:
https://github.com/ipfs/go-ipfs/issues/177 https://github.com/ipfs/go-ipfs/issues/177
` `
var errStrNeedFuseVersion = `unable to check fuse version. type errNeedFuseVersion struct {
cause string
}
func (me errNeedFuseVersion) Error() string {
return fmt.Sprintf(`unable to check fuse version.
Dear User, Dear User,
...@@ -79,7 +84,8 @@ version you have by running: ...@@ -79,7 +84,8 @@ version you have by running:
[1]: https://github.com/ipfs/go-ipfs/issues/177 [1]: https://github.com/ipfs/go-ipfs/issues/177
[2]: https://github.com/ipfs/go-ipfs/pull/533 [2]: https://github.com/ipfs/go-ipfs/pull/533
[3]: %s [3]: %s
` `, fuseVersionPkg, dontCheckOSXFUSEConfigKey, me.cause)
}
var errStrFailedToRunFuseVersion = `unable to check fuse version. var errStrFailedToRunFuseVersion = `unable to check fuse version.
...@@ -197,7 +203,7 @@ func ensureFuseVersionIsInstalled() error { ...@@ -197,7 +203,7 @@ func ensureFuseVersionIsInstalled() error {
// try installing it... // try installing it...
log.Debug("fuse-version: no fuse-version. attempting to install.") log.Debug("fuse-version: no fuse-version. attempting to install.")
cmd := exec.Command("go", "get", "github.com/jbenet/go-fuse-version/fuse-version") cmd := exec.Command("go", "install", "github.com/jbenet/go-fuse-version/fuse-version")
cmdout := new(bytes.Buffer) cmdout := new(bytes.Buffer)
cmd.Stdout = cmdout cmd.Stdout = cmdout
cmd.Stderr = cmdout cmd.Stderr = cmdout
...@@ -211,13 +217,13 @@ func ensureFuseVersionIsInstalled() error { ...@@ -211,13 +217,13 @@ func ensureFuseVersionIsInstalled() error {
log.Debug("fuse-version: failed to install.") log.Debug("fuse-version: failed to install.")
s := err.Error() + "\n" + cmdoutstr s := err.Error() + "\n" + cmdoutstr
return fmt.Errorf(errStrNeedFuseVersion, fuseVersionPkg, dontCheckOSXFUSEConfigKey, s) return errNeedFuseVersion{s}
} }
// ok, try again... // ok, try again...
if _, err := exec.LookPath("fuse-version"); err != nil { if _, err := exec.LookPath("fuse-version"); err != nil {
log.Debug("fuse-version: failed to install?") log.Debug("fuse-version: failed to install?")
return fmt.Errorf(errStrNeedFuseVersion, fuseVersionPkg, dontCheckOSXFUSEConfigKey, err) return errNeedFuseVersion{err.Error()}
} }
log.Debug("fuse-version: install success") log.Debug("fuse-version: install success")
......
...@@ -8,6 +8,8 @@ import ( ...@@ -8,6 +8,8 @@ import (
"testing" "testing"
"time" "time"
"bazil.org/fuse"
"context" "context"
core "github.com/ipfs/go-ipfs/core" core "github.com/ipfs/go-ipfs/core"
...@@ -61,8 +63,11 @@ func TestExternalUnmount(t *testing.T) { ...@@ -61,8 +63,11 @@ func TestExternalUnmount(t *testing.T) {
mkdir(t, ipnsDir) mkdir(t, ipnsDir)
err = Mount(node, ipfsDir, ipnsDir) err = Mount(node, ipfsDir, ipnsDir)
if _, ok := err.(errNeedFuseVersion); ok || err == fuse.ErrOSXFUSENotFound {
t.Skip(err)
}
if err != nil { if err != nil {
t.Fatal(err) t.Fatalf("error mounting: %v", err)
} }
// Run shell command to externally unmount the directory // Run shell command to externally unmount the directory
......
...@@ -15,6 +15,8 @@ import ( ...@@ -15,6 +15,8 @@ import (
"sync" "sync"
"testing" "testing"
"bazil.org/fuse"
core "github.com/ipfs/go-ipfs/core" core "github.com/ipfs/go-ipfs/core"
coreapi "github.com/ipfs/go-ipfs/core/coreapi" coreapi "github.com/ipfs/go-ipfs/core/coreapi"
coremock "github.com/ipfs/go-ipfs/core/mock" 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) { ...@@ -50,6 +52,7 @@ func randObj(t *testing.T, nd *core.IpfsNode, size int64) (ipld.Node, []byte) {
} }
func setupIpfsTest(t *testing.T, node *core.IpfsNode) (*core.IpfsNode, *fstest.Mount) { func setupIpfsTest(t *testing.T, node *core.IpfsNode) (*core.IpfsNode, *fstest.Mount) {
t.Helper()
maybeSkipFuseTests(t) maybeSkipFuseTests(t)
var err error var err error
...@@ -62,8 +65,11 @@ func setupIpfsTest(t *testing.T, node *core.IpfsNode) (*core.IpfsNode, *fstest.M ...@@ -62,8 +65,11 @@ func setupIpfsTest(t *testing.T, node *core.IpfsNode) (*core.IpfsNode, *fstest.M
fs := NewFileSystem(node) fs := NewFileSystem(node)
mnt, err := fstest.MountedT(t, fs, nil) mnt, err := fstest.MountedT(t, fs, nil)
if err == fuse.ErrOSXFUSENotFound {
t.Skip(err)
}
if err != nil { if err != nil {
t.Fatal(err) t.Fatalf("error mounting temporary directory: %v", err)
} }
return node, mnt return node, mnt
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论