diff --git a/changelog/unreleased/issue-3096 b/changelog/unreleased/issue-3096 new file mode 100644 index 000000000..548e54bbe --- /dev/null +++ b/changelog/unreleased/issue-3096 @@ -0,0 +1,8 @@ +Enhancement: Support mount command on macOS using macFUSE 4.x + +We have switched to a different version of the fuse library used to mount +snapshots. This adds support for macFUSE 4.x which is necessary for recent +macOS versions. + +https://github.com/restic/restic/issues/3096 +https://github.com/restic/restic/pull/4024 diff --git a/cmd/restic/cmd_mount.go b/cmd/restic/cmd_mount.go index 95ee7efcf..7afb30f7c 100644 --- a/cmd/restic/cmd_mount.go +++ b/cmd/restic/cmd_mount.go @@ -18,8 +18,8 @@ import ( resticfs "github.com/restic/restic/internal/fs" "github.com/restic/restic/internal/fuse" - systemFuse "bazil.org/fuse" - "bazil.org/fuse/fs" + systemFuse "github.com/anacrolix/fuse" + "github.com/anacrolix/fuse/fs" ) var cmdMount = &cobra.Command{ diff --git a/go.mod b/go.mod index d819a6be7..84b11b997 100644 --- a/go.mod +++ b/go.mod @@ -1,7 +1,6 @@ module github.com/restic/restic require ( - bazil.org/fuse v0.0.0-20200407214033-5883e5a4b512 cloud.google.com/go v0.103.0 // indirect cloud.google.com/go/compute v1.9.0 // indirect cloud.google.com/go/storage v1.25.0 @@ -9,6 +8,7 @@ require ( github.com/Azure/go-autorest/autorest v0.11.28 // indirect github.com/Azure/go-autorest/autorest/adal v0.9.21 // indirect github.com/Azure/go-autorest/autorest/to v0.4.0 // indirect + github.com/anacrolix/fuse v0.2.0 github.com/cenkalti/backoff/v4 v4.1.3 github.com/cespare/xxhash/v2 v2.1.2 github.com/dnaeon/go-vcr v1.2.0 // indirect diff --git a/go.sum b/go.sum index 959651048..06231c47c 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,3 @@ -bazil.org/fuse v0.0.0-20200407214033-5883e5a4b512 h1:SRsZGA7aFnCZETmov57jwPrWuTmaZK6+4R4v5FUe1/c= -bazil.org/fuse v0.0.0-20200407214033-5883e5a4b512/go.mod h1:FbcW6z/2VytnFDhZfumh8Ss8zxHE6qpMP5sHTRe0EaM= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= @@ -87,7 +85,10 @@ github.com/Azure/go-autorest/tracing v0.6.0 h1:TYi4+3m5t6K48TGI9AUdb+IzbnSxvnvUM github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/Julusian/godocdown v0.0.0-20170816220326-6d19f8ff2df8/go.mod h1:INZr5t32rG59/5xeltqoCJoNY7e5x/3xoY9WSWVWg74= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/anacrolix/fuse v0.2.0 h1:pc+To78kI2d/WUjIyrsdqeJQAesuwpGxlI3h1nAv3Do= +github.com/anacrolix/fuse v0.2.0/go.mod h1:Kfu02xBwnySDpH3N23BmrP3MDfwAQGRLUCj6XyeOvBQ= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/cenkalti/backoff/v4 v4.1.3 h1:cFAlzYUlVYDysBEH2T5hyJZMh3+5+WCBvSnK6Q8UtC4= github.com/cenkalti/backoff/v4 v4.1.3/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= @@ -119,6 +120,8 @@ github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI= github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/dvyukov/go-fuzz v0.0.0-20200318091601-be3528f3a813/go.mod h1:11Gm+ccJnvAhCNLlf5+cS9KjtbaD5I5zaZpFMsTHWTw= +github.com/elazarl/go-bindata-assetfs v1.0.0/go.mod h1:v+YaWX3bdea5J/mo8dSETolEo7R71Vk1u8bnjau5yw4= github.com/elithrar/simple-scrypt v1.3.0 h1:KIlOlxdoQf9JWKl5lMAJ28SY2URB0XTRDn2TckyzAZg= github.com/elithrar/simple-scrypt v1.3.0/go.mod h1:U2XQRI95XHY0St410VE3UjT7vuKb1qPwrl/EJwEqnZo= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= @@ -292,6 +295,7 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZN github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/restic/chunker v0.4.0 h1:YUPYCUn70MYP7VO4yllypp2SjmsRhRJaad3xKu1QFRw= github.com/restic/chunker v0.4.0/go.mod h1:z0cH2BejpW636LXw0R/BGyv+Ey8+m9QGiOanDHItzyw= +github.com/robertkrimen/godocdown v0.0.0-20130622164427-0bfa04905481/go.mod h1:C9WhFzY47SzYBIvzFqSvHIR6ROgDo4TtdTuRaOMjF/s= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rs/xid v1.4.0 h1:qd7wPTDkN6KQx2VmMBLrpHkiyQwgFXRnkOLacUiaSNY= @@ -305,6 +309,7 @@ github.com/spf13/cobra v1.5.0 h1:X+jTBEBqF0bHN+9cSMgmfuvv2VHJ9ezmFNf9Y/XstYU= github.com/spf13/cobra v1.5.0/go.mod h1:dWXEIy2H428czQCjInthrTRUg7yKbok+2Qi/yBIJoUM= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/stephens2424/writerset v1.0.2/go.mod h1:aS2JhsMn6eA7e82oNmW4rfsgAOp9COBTTl8mzkwADnc= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= @@ -575,6 +580,7 @@ golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapK golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200423201157-2723c5de0d66/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= diff --git a/internal/fuse/dir.go b/internal/fuse/dir.go index cfb2aa71d..18e7eb51c 100644 --- a/internal/fuse/dir.go +++ b/internal/fuse/dir.go @@ -10,8 +10,8 @@ import ( "path/filepath" "sync" - "bazil.org/fuse" - "bazil.org/fuse/fs" + "github.com/anacrolix/fuse" + "github.com/anacrolix/fuse/fs" "github.com/restic/restic/internal/debug" "github.com/restic/restic/internal/restic" diff --git a/internal/fuse/file.go b/internal/fuse/file.go index 505b9dca2..28ff5d450 100644 --- a/internal/fuse/file.go +++ b/internal/fuse/file.go @@ -11,8 +11,8 @@ import ( "github.com/restic/restic/internal/errors" "github.com/restic/restic/internal/restic" - "bazil.org/fuse" - "bazil.org/fuse/fs" + "github.com/anacrolix/fuse" + "github.com/anacrolix/fuse/fs" ) // The default block size to report in stat diff --git a/internal/fuse/fuse_test.go b/internal/fuse/fuse_test.go index a46f9ba15..5b894c3c2 100644 --- a/internal/fuse/fuse_test.go +++ b/internal/fuse/fuse_test.go @@ -15,8 +15,8 @@ import ( "github.com/restic/restic/internal/repository" "github.com/restic/restic/internal/restic" - "bazil.org/fuse" - "bazil.org/fuse/fs" + "github.com/anacrolix/fuse" + "github.com/anacrolix/fuse/fs" rtest "github.com/restic/restic/internal/test" ) diff --git a/internal/fuse/link.go b/internal/fuse/link.go index a69c06f85..f910aadc4 100644 --- a/internal/fuse/link.go +++ b/internal/fuse/link.go @@ -6,8 +6,8 @@ package fuse import ( "context" - "bazil.org/fuse" - "bazil.org/fuse/fs" + "github.com/anacrolix/fuse" + "github.com/anacrolix/fuse/fs" "github.com/restic/restic/internal/restic" ) diff --git a/internal/fuse/other.go b/internal/fuse/other.go index 48de06b97..1a78403a7 100644 --- a/internal/fuse/other.go +++ b/internal/fuse/other.go @@ -6,7 +6,7 @@ package fuse import ( "context" - "bazil.org/fuse" + "github.com/anacrolix/fuse" "github.com/restic/restic/internal/restic" ) diff --git a/internal/fuse/root.go b/internal/fuse/root.go index 63ab96d6d..fc8841964 100644 --- a/internal/fuse/root.go +++ b/internal/fuse/root.go @@ -10,7 +10,7 @@ import ( "github.com/restic/restic/internal/debug" "github.com/restic/restic/internal/restic" - "bazil.org/fuse/fs" + "github.com/anacrolix/fuse/fs" ) // Config holds settings for the fuse mount. diff --git a/internal/fuse/snapshots_dir.go b/internal/fuse/snapshots_dir.go index 79c8378d8..d6536523a 100644 --- a/internal/fuse/snapshots_dir.go +++ b/internal/fuse/snapshots_dir.go @@ -10,8 +10,8 @@ import ( "github.com/restic/restic/internal/debug" "github.com/restic/restic/internal/restic" - "bazil.org/fuse" - "bazil.org/fuse/fs" + "github.com/anacrolix/fuse" + "github.com/anacrolix/fuse/fs" ) // SnapshotsDir is a actual fuse directory generated from SnapshotsDirStructure