chore: update boxo to remove io.Seeker from files.File (#11254)
Update boxo to ipfs/boxo#1128 which removes io.Seeker from the files.File interface. Callers that need seeking now type-assert to io.Seeker. - core/commands/cat: type-assert before seeking - core/coreiface/tests: type-assert before seeking
Marcin Rataj committed
May 15, 2026 at 02:21 UTC
f485a7ee8aa471756c754588190da21dd1f44240
8 files changed
+21
-11
core/commands/cat.go
+6
-1
@@ -3,6 +3,7 @@ package commands
3
import (
4
"context"
5
"errors"
6
+ "fmt"
7
"io"
8
"os"
9
@@ -158,7 +159,11 @@ func cat(ctx context.Context, api iface.CoreAPI, paths []string, offset int64, m
159
continue
160
}
161
161
- count, err := file.Seek(offset, io.SeekStart)
162
+ seeker, ok := file.(io.Seeker)
163
+ if !ok {
164
+ return nil, 0, fmt.Errorf("file does not support seeking")
165
+ }
166
+ count, err := seeker.Seek(offset, io.SeekStart)
167
if err != nil {
168
return nil, 0, err
169
}
core/coreiface/tests/unixfs.go
+6
-1
@@ -938,9 +938,14 @@ func (tp *TestSuite) TestGetSeek(t *testing.T) {
938
t.Fatal("not a file")
939
}
940
941
+ fSeeker, ok := f.(io.Seeker)
942
+ if !ok {
943
+ t.Fatal("file does not support seeking")
944
+ }
945
+
946
test := func(offset int64, whence int, read int, expect int64, shouldEof bool) {
947
t.Run(fmt.Sprintf("seek%d+%d-r%d-%d", whence, offset, read, expect), func(t *testing.T) {
943
- n, err := f.Seek(offset, whence)
948
+ n, err := fSeeker.Seek(offset, whence)
949
if err != nil {
950
t.Fatal(err)
951
}
docs/examples/kubo-as-a-library/go.mod
+1
-1
@@ -7,7 +7,7 @@ go 1.26.2
7
replace github.com/ipfs/kubo => ./../../..
8
9
require (
10
- github.com/ipfs/boxo v0.39.1-0.20260514201954-b2b5d8a2ae5e
10
+ github.com/ipfs/boxo v0.39.1-0.20260515000232-c8708232456f
11
github.com/ipfs/kubo v0.0.0-00010101000000-000000000000
12
github.com/libp2p/go-libp2p v0.48.0
13
github.com/multiformats/go-multiaddr v0.16.1
docs/examples/kubo-as-a-library/go.sum
+2
-2
@@ -352,8 +352,8 @@ github.com/ipfs-shipyard/nopfs/ipfs v0.25.0 h1:OqNqsGZPX8zh3eFMO8Lf8EHRRnSGBMqcd
352
github.com/ipfs-shipyard/nopfs/ipfs v0.25.0/go.mod h1:BxhUdtBgOXg1B+gAPEplkg/GpyTZY+kCMSfsJvvydqU=
353
github.com/ipfs/bbloom v0.1.0 h1:nIWwfIE3AaG7RCDQIsrUonGCOTp7qSXzxH7ab/ss964=
354
github.com/ipfs/bbloom v0.1.0/go.mod h1:lDy3A3i6ndgEW2z1CaRFvDi5/ZTzgM1IxA/pkL7Wgts=
355
-github.com/ipfs/boxo v0.39.1-0.20260514201954-b2b5d8a2ae5e h1:kuArrVMzJ0eBOu4NsG7V4hPHLMn7o8UUHOOTA8+hPZI=
356
-github.com/ipfs/boxo v0.39.1-0.20260514201954-b2b5d8a2ae5e/go.mod h1:o+77q6sNLx04X1pWLTICgi+MimNAKFy9HJ2qfhNUTRs=
355
+github.com/ipfs/boxo v0.39.1-0.20260515000232-c8708232456f h1:gLeZpSeenmziHSu41hV0ztWpH4eFzzcA3HxdZ4mz6/A=
356
+github.com/ipfs/boxo v0.39.1-0.20260515000232-c8708232456f/go.mod h1:o+77q6sNLx04X1pWLTICgi+MimNAKFy9HJ2qfhNUTRs=
357
github.com/ipfs/go-bitfield v1.1.0 h1:fh7FIo8bSwaJEh6DdTWbCeZ1eqOaOkKFI74SCnsWbGA=
358
github.com/ipfs/go-bitfield v1.1.0/go.mod h1:paqf1wjq/D2BBmzfTVFlJQ9IlFOZpg422HL0HqsGWHU=
359
github.com/ipfs/go-block-format v0.0.3/go.mod h1:4LmD4ZUw0mhO+JSKdpWwrzATiEfM7WWgQ8H5l6P8MVk=
go.mod
+1
-1
@@ -21,7 +21,7 @@ require (
21
github.com/hashicorp/go-version v1.9.0
22
github.com/ipfs-shipyard/nopfs v0.0.14
23
github.com/ipfs-shipyard/nopfs/ipfs v0.25.0
24
- github.com/ipfs/boxo v0.39.1-0.20260514201954-b2b5d8a2ae5e
24
+ github.com/ipfs/boxo v0.39.1-0.20260515000232-c8708232456f
25
github.com/ipfs/go-block-format v0.2.3
26
github.com/ipfs/go-cid v0.6.1
27
github.com/ipfs/go-cidutil v0.1.1
go.sum
+2
-2
@@ -392,8 +392,8 @@ github.com/ipfs-shipyard/nopfs/ipfs v0.25.0 h1:OqNqsGZPX8zh3eFMO8Lf8EHRRnSGBMqcd
392
github.com/ipfs-shipyard/nopfs/ipfs v0.25.0/go.mod h1:BxhUdtBgOXg1B+gAPEplkg/GpyTZY+kCMSfsJvvydqU=
393
github.com/ipfs/bbloom v0.1.0 h1:nIWwfIE3AaG7RCDQIsrUonGCOTp7qSXzxH7ab/ss964=
394
github.com/ipfs/bbloom v0.1.0/go.mod h1:lDy3A3i6ndgEW2z1CaRFvDi5/ZTzgM1IxA/pkL7Wgts=
395
-github.com/ipfs/boxo v0.39.1-0.20260514201954-b2b5d8a2ae5e h1:kuArrVMzJ0eBOu4NsG7V4hPHLMn7o8UUHOOTA8+hPZI=
396
-github.com/ipfs/boxo v0.39.1-0.20260514201954-b2b5d8a2ae5e/go.mod h1:o+77q6sNLx04X1pWLTICgi+MimNAKFy9HJ2qfhNUTRs=
395
+github.com/ipfs/boxo v0.39.1-0.20260515000232-c8708232456f h1:gLeZpSeenmziHSu41hV0ztWpH4eFzzcA3HxdZ4mz6/A=
396
+github.com/ipfs/boxo v0.39.1-0.20260515000232-c8708232456f/go.mod h1:o+77q6sNLx04X1pWLTICgi+MimNAKFy9HJ2qfhNUTRs=
397
github.com/ipfs/go-bitfield v1.1.0 h1:fh7FIo8bSwaJEh6DdTWbCeZ1eqOaOkKFI74SCnsWbGA=
398
github.com/ipfs/go-bitfield v1.1.0/go.mod h1:paqf1wjq/D2BBmzfTVFlJQ9IlFOZpg422HL0HqsGWHU=
399
github.com/ipfs/go-block-format v0.0.3/go.mod h1:4LmD4ZUw0mhO+JSKdpWwrzATiEfM7WWgQ8H5l6P8MVk=
test/dependencies/go.mod
+1
-1
@@ -135,7 +135,7 @@ require (
135
github.com/huin/goupnp v1.3.0 // indirect
136
github.com/inconshreveable/mousetrap v1.1.0 // indirect
137
github.com/ipfs/bbloom v0.1.0 // indirect
138
- github.com/ipfs/boxo v0.39.1-0.20260514201954-b2b5d8a2ae5e // indirect
138
+ github.com/ipfs/boxo v0.39.1-0.20260515000232-c8708232456f // indirect
139
github.com/ipfs/go-bitfield v1.1.0 // indirect
140
github.com/ipfs/go-block-format v0.2.3 // indirect
141
github.com/ipfs/go-cid v0.6.1 // indirect
test/dependencies/go.sum
+2
-2
@@ -452,8 +452,8 @@ github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2
452
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
453
github.com/ipfs/bbloom v0.1.0 h1:nIWwfIE3AaG7RCDQIsrUonGCOTp7qSXzxH7ab/ss964=
454
github.com/ipfs/bbloom v0.1.0/go.mod h1:lDy3A3i6ndgEW2z1CaRFvDi5/ZTzgM1IxA/pkL7Wgts=
455
-github.com/ipfs/boxo v0.39.1-0.20260514201954-b2b5d8a2ae5e h1:kuArrVMzJ0eBOu4NsG7V4hPHLMn7o8UUHOOTA8+hPZI=
456
-github.com/ipfs/boxo v0.39.1-0.20260514201954-b2b5d8a2ae5e/go.mod h1:o+77q6sNLx04X1pWLTICgi+MimNAKFy9HJ2qfhNUTRs=
455
+github.com/ipfs/boxo v0.39.1-0.20260515000232-c8708232456f h1:gLeZpSeenmziHSu41hV0ztWpH4eFzzcA3HxdZ4mz6/A=
456
+github.com/ipfs/boxo v0.39.1-0.20260515000232-c8708232456f/go.mod h1:o+77q6sNLx04X1pWLTICgi+MimNAKFy9HJ2qfhNUTRs=
457
github.com/ipfs/go-bitfield v1.1.0 h1:fh7FIo8bSwaJEh6DdTWbCeZ1eqOaOkKFI74SCnsWbGA=
458
github.com/ipfs/go-bitfield v1.1.0/go.mod h1:paqf1wjq/D2BBmzfTVFlJQ9IlFOZpg422HL0HqsGWHU=
459
github.com/ipfs/go-block-format v0.2.3 h1:mpCuDaNXJ4wrBJLrtEaGFGXkferrw5eqVvzaHhtFKQk=