@cryptotaxi247 / kubo / commits / f485a7ee8

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=