Skip to content

Commit 7b4650c

Browse files
committed
remove direct dependency on github.com/pkg/errors
Signed-off-by: Akihiro Suda <[email protected]>
1 parent 2e0898a commit 7b4650c

30 files changed

Lines changed: 93 additions & 799 deletions

devices/devices_windows.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,10 @@
1717
package devices
1818

1919
import (
20+
"fmt"
2021
"os"
21-
22-
"github.com/pkg/errors"
2322
)
2423

2524
func DeviceInfo(fi os.FileInfo) (uint64, uint64, error) {
26-
return 0, 0, errors.Wrap(ErrNotSupported, "cannot get device info on windows")
25+
return 0, 0, fmt.Errorf("cannot get device info on windows: %w", ErrNotSupported)
2726
}

fs/copy.go

Lines changed: 20 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,11 @@
1717
package fs
1818

1919
import (
20+
"fmt"
2021
"io/ioutil"
2122
"os"
2223
"path/filepath"
2324
"sync"
24-
25-
"github.com/pkg/errors"
2625
)
2726

2827
var bufferPool = &sync.Pool{
@@ -92,35 +91,35 @@ func CopyDir(dst, src string, opts ...CopyDirOpt) error {
9291
func copyDirectory(dst, src string, inodes map[uint64]string, o *copyDirOpts) error {
9392
stat, err := os.Stat(src)
9493
if err != nil {
95-
return errors.Wrapf(err, "failed to stat %s", src)
94+
return fmt.Errorf("failed to stat %s: %w", src, err)
9695
}
9796
if !stat.IsDir() {
98-
return errors.Errorf("source %s is not directory", src)
97+
return fmt.Errorf("source %s is not directory", src)
9998
}
10099

101100
if st, err := os.Stat(dst); err != nil {
102101
if err := os.Mkdir(dst, stat.Mode()); err != nil {
103-
return errors.Wrapf(err, "failed to mkdir %s", dst)
102+
return fmt.Errorf("failed to mkdir %s: %w", dst, err)
104103
}
105104
} else if !st.IsDir() {
106-
return errors.Errorf("cannot copy to non-directory: %s", dst)
105+
return fmt.Errorf("cannot copy to non-directory: %s", dst)
107106
} else {
108107
if err := os.Chmod(dst, stat.Mode()); err != nil {
109-
return errors.Wrapf(err, "failed to chmod on %s", dst)
108+
return fmt.Errorf("failed to chmod on %s: %w", dst, err)
110109
}
111110
}
112111

113112
fis, err := ioutil.ReadDir(src)
114113
if err != nil {
115-
return errors.Wrapf(err, "failed to read %s", src)
114+
return fmt.Errorf("failed to read %s: %w", src, err)
116115
}
117116

118117
if err := copyFileInfo(stat, dst); err != nil {
119-
return errors.Wrapf(err, "failed to copy file info for %s", dst)
118+
return fmt.Errorf("failed to copy file info for %s: %w", dst, err)
120119
}
121120

122121
if err := copyXAttrs(dst, src, o.xex, o.xeh); err != nil {
123-
return errors.Wrap(err, "failed to copy xattrs")
122+
return fmt.Errorf("failed to copy xattrs: %w", err)
124123
}
125124

126125
for _, fi := range fis {
@@ -136,37 +135,37 @@ func copyDirectory(dst, src string, inodes map[uint64]string, o *copyDirOpts) er
136135
case (fi.Mode() & os.ModeType) == 0:
137136
link, err := getLinkSource(target, fi, inodes)
138137
if err != nil {
139-
return errors.Wrap(err, "failed to get hardlink")
138+
return fmt.Errorf("failed to get hardlink: %w", err)
140139
}
141140
if link != "" {
142141
if err := os.Link(link, target); err != nil {
143-
return errors.Wrap(err, "failed to create hard link")
142+
return fmt.Errorf("failed to create hard link: %w", err)
144143
}
145144
} else if err := CopyFile(target, source); err != nil {
146-
return errors.Wrap(err, "failed to copy files")
145+
return fmt.Errorf("failed to copy files: %w", err)
147146
}
148147
case (fi.Mode() & os.ModeSymlink) == os.ModeSymlink:
149148
link, err := os.Readlink(source)
150149
if err != nil {
151-
return errors.Wrapf(err, "failed to read link: %s", source)
150+
return fmt.Errorf("failed to read link: %s: %w", source, err)
152151
}
153152
if err := os.Symlink(link, target); err != nil {
154-
return errors.Wrapf(err, "failed to create symlink: %s", target)
153+
return fmt.Errorf("failed to create symlink: %s: %w", target, err)
155154
}
156155
case (fi.Mode() & os.ModeDevice) == os.ModeDevice:
157156
if err := copyDevice(target, fi); err != nil {
158-
return errors.Wrapf(err, "failed to create device")
157+
return fmt.Errorf("failed to create device: %w", err)
159158
}
160159
default:
161160
// TODO: Support pipes and sockets
162-
return errors.Wrapf(err, "unsupported mode %s", fi.Mode())
161+
return fmt.Errorf("unsupported mode %s: %w", fi.Mode(), err)
163162
}
164163
if err := copyFileInfo(fi, target); err != nil {
165-
return errors.Wrap(err, "failed to copy file info")
164+
return fmt.Errorf("failed to copy file info: %w", err)
166165
}
167166

168167
if err := copyXAttrs(target, source, o.xex, o.xeh); err != nil {
169-
return errors.Wrap(err, "failed to copy xattrs")
168+
return fmt.Errorf("failed to copy xattrs: %w", err)
170169
}
171170
}
172171

@@ -178,12 +177,12 @@ func copyDirectory(dst, src string, inodes map[uint64]string, o *copyDirOpts) er
178177
func CopyFile(target, source string) error {
179178
src, err := os.Open(source)
180179
if err != nil {
181-
return errors.Wrapf(err, "failed to open source %s", source)
180+
return fmt.Errorf("failed to open source %s: %w", source, err)
182181
}
183182
defer src.Close()
184183
tgt, err := os.Create(target)
185184
if err != nil {
186-
return errors.Wrapf(err, "failed to open target %s", target)
185+
return fmt.Errorf("failed to open target %s: %w", target, err)
187186
}
188187
defer tgt.Close()
189188

fs/copy_darwin.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,10 @@
1919
package fs
2020

2121
import (
22+
"errors"
2223
"os"
2324
"syscall"
2425

25-
"github.com/pkg/errors"
2626
"golang.org/x/sys/unix"
2727
)
2828

fs/copy_freebsd.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,10 @@
1919
package fs
2020

2121
import (
22+
"errors"
2223
"os"
2324
"syscall"
2425

25-
"github.com/pkg/errors"
2626
"golang.org/x/sys/unix"
2727
)
2828

fs/copy_linux.go

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,13 @@
1717
package fs
1818

1919
import (
20+
"errors"
21+
"fmt"
2022
"io"
2123
"os"
2224
"syscall"
2325

2426
"github.com/containerd/continuity/sysx"
25-
"github.com/pkg/errors"
2627
"golang.org/x/sys/unix"
2728
)
2829

@@ -41,13 +42,13 @@ func copyFileInfo(fi os.FileInfo, name string) error {
4142
}
4243
}
4344
if err != nil {
44-
return errors.Wrapf(err, "failed to chown %s", name)
45+
return fmt.Errorf("failed to chown %s: %w", name, err)
4546
}
4647
}
4748

4849
if (fi.Mode() & os.ModeSymlink) != os.ModeSymlink {
4950
if err := os.Chmod(name, fi.Mode()); err != nil {
50-
return errors.Wrapf(err, "failed to chmod %s", name)
51+
return fmt.Errorf("failed to chmod %s: %w", name, err)
5152
}
5253
}
5354

@@ -56,7 +57,7 @@ func copyFileInfo(fi os.FileInfo, name string) error {
5657
unix.NsecToTimespec(syscall.TimespecToNsec(StatMtime(st))),
5758
}
5859
if err := unix.UtimesNanoAt(unix.AT_FDCWD, name, timespec, unix.AT_SYMLINK_NOFOLLOW); err != nil {
59-
return errors.Wrapf(err, "failed to utime %s", name)
60+
return fmt.Errorf("failed to utime %s: %w", name, err)
6061
}
6162

6263
return nil
@@ -67,7 +68,7 @@ const maxSSizeT = int64(^uint(0) >> 1)
6768
func copyFileContent(dst, src *os.File) error {
6869
st, err := src.Stat()
6970
if err != nil {
70-
return errors.Wrap(err, "unable to stat source")
71+
return fmt.Errorf("unable to stat source: %w", err)
7172
}
7273

7374
size := st.Size()
@@ -88,13 +89,13 @@ func copyFileContent(dst, src *os.File) error {
8889
n, err := unix.CopyFileRange(srcFd, nil, dstFd, nil, copySize, 0)
8990
if err != nil {
9091
if (err != unix.ENOSYS && err != unix.EXDEV) || !first {
91-
return errors.Wrap(err, "copy file range failed")
92+
return fmt.Errorf("copy file range failed: %w", err)
9293
}
9394

9495
buf := bufferPool.Get().(*[]byte)
9596
_, err = io.CopyBuffer(dst, src, *buf)
9697
bufferPool.Put(buf)
97-
return errors.Wrap(err, "userspace copy failed")
98+
return fmt.Errorf("userspace copy failed: %w", err)
9899
}
99100

100101
first = false
@@ -107,7 +108,7 @@ func copyFileContent(dst, src *os.File) error {
107108
func copyXAttrs(dst, src string, excludes map[string]struct{}, errorHandler XAttrErrorHandler) error {
108109
xattrKeys, err := sysx.LListxattr(src)
109110
if err != nil {
110-
e := errors.Wrapf(err, "failed to list xattrs on %s", src)
111+
e := fmt.Errorf("failed to list xattrs on %s: %w", src, err)
111112
if errorHandler != nil {
112113
e = errorHandler(dst, src, "", e)
113114
}
@@ -119,7 +120,7 @@ func copyXAttrs(dst, src string, excludes map[string]struct{}, errorHandler XAtt
119120
}
120121
data, err := sysx.LGetxattr(src, xattr)
121122
if err != nil {
122-
e := errors.Wrapf(err, "failed to get xattr %q on %s", xattr, src)
123+
e := fmt.Errorf("failed to get xattr %q on %s: %w", xattr, src, err)
123124
if errorHandler != nil {
124125
if e = errorHandler(dst, src, xattr, e); e == nil {
125126
continue
@@ -128,7 +129,7 @@ func copyXAttrs(dst, src string, excludes map[string]struct{}, errorHandler XAtt
128129
return e
129130
}
130131
if err := sysx.LSetxattr(dst, xattr, data, 0); err != nil {
131-
e := errors.Wrapf(err, "failed to set xattr %q on %s", xattr, dst)
132+
e := fmt.Errorf("failed to set xattr %q on %s: %w", xattr, dst, err)
132133
if errorHandler != nil {
133134
if e = errorHandler(dst, src, xattr, e); e == nil {
134135
continue

fs/copy_openbsdsolaris.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,10 @@
1919
package fs
2020

2121
import (
22+
"errors"
2223
"os"
2324
"syscall"
2425

25-
"github.com/pkg/errors"
2626
"golang.org/x/sys/unix"
2727
)
2828

fs/copy_test.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,13 @@ package fs
1818

1919
import (
2020
_ "crypto/sha256"
21+
"fmt"
2122
"io/ioutil"
2223
"os"
2324
"testing"
2425
"time"
2526

2627
"github.com/containerd/continuity/fs/fstest"
27-
"github.com/pkg/errors"
2828
)
2929

3030
// TODO: Create copy directory which requires privilege
@@ -80,22 +80,22 @@ func TestCopyWithLargeFile(t *testing.T) {
8080
func testCopy(apply fstest.Applier) error {
8181
t1, err := ioutil.TempDir("", "test-copy-src-")
8282
if err != nil {
83-
return errors.Wrap(err, "failed to create temporary directory")
83+
return fmt.Errorf("failed to create temporary directory: %w", err)
8484
}
8585
defer os.RemoveAll(t1)
8686

8787
t2, err := ioutil.TempDir("", "test-copy-dst-")
8888
if err != nil {
89-
return errors.Wrap(err, "failed to create temporary directory")
89+
return fmt.Errorf("failed to create temporary directory: %w", err)
9090
}
9191
defer os.RemoveAll(t2)
9292

9393
if err := apply.Apply(t1); err != nil {
94-
return errors.Wrap(err, "failed to apply changes")
94+
return fmt.Errorf("failed to apply changes: %w", err)
9595
}
9696

9797
if err := CopyDir(t2, t1); err != nil {
98-
return errors.Wrap(err, "failed to copy")
98+
return fmt.Errorf("failed to copy: %w", err)
9999
}
100100

101101
return fstest.CheckDirectoryEqual(t1, t2)

fs/copy_unix.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,12 @@
1919
package fs
2020

2121
import (
22+
"fmt"
2223
"io"
2324
"os"
2425
"syscall"
2526

2627
"github.com/containerd/continuity/sysx"
27-
"github.com/pkg/errors"
2828
)
2929

3030
func copyFileInfo(fi os.FileInfo, name string) error {
@@ -42,18 +42,18 @@ func copyFileInfo(fi os.FileInfo, name string) error {
4242
}
4343
}
4444
if err != nil {
45-
return errors.Wrapf(err, "failed to chown %s", name)
45+
return fmt.Errorf("failed to chown %s: %w", name, err)
4646
}
4747
}
4848

4949
if (fi.Mode() & os.ModeSymlink) != os.ModeSymlink {
5050
if err := os.Chmod(name, fi.Mode()); err != nil {
51-
return errors.Wrapf(err, "failed to chmod %s", name)
51+
return fmt.Errorf("failed to chmod %s: %w", name, err)
5252
}
5353
}
5454

5555
if err := utimesNano(name, StatAtime(st), StatMtime(st)); err != nil {
56-
return errors.Wrapf(err, "failed to utime %s", name)
56+
return fmt.Errorf("failed to utime %s: %w", name, err)
5757
}
5858

5959
return nil
@@ -70,7 +70,7 @@ func copyFileContent(dst, src *os.File) error {
7070
func copyXAttrs(dst, src string, excludes map[string]struct{}, errorHandler XAttrErrorHandler) error {
7171
xattrKeys, err := sysx.LListxattr(src)
7272
if err != nil {
73-
e := errors.Wrapf(err, "failed to list xattrs on %s", src)
73+
e := fmt.Errorf("failed to list xattrs on %s: %w", src, err)
7474
if errorHandler != nil {
7575
e = errorHandler(dst, src, "", e)
7676
}
@@ -82,7 +82,7 @@ func copyXAttrs(dst, src string, excludes map[string]struct{}, errorHandler XAtt
8282
}
8383
data, err := sysx.LGetxattr(src, xattr)
8484
if err != nil {
85-
e := errors.Wrapf(err, "failed to get xattr %q on %s", xattr, src)
85+
e := fmt.Errorf("failed to get xattr %q on %s: %w", xattr, src, err)
8686
if errorHandler != nil {
8787
if e = errorHandler(dst, src, xattr, e); e == nil {
8888
continue
@@ -91,7 +91,7 @@ func copyXAttrs(dst, src string, excludes map[string]struct{}, errorHandler XAtt
9191
return e
9292
}
9393
if err := sysx.LSetxattr(dst, xattr, data, 0); err != nil {
94-
e := errors.Wrapf(err, "failed to set xattr %q on %s", xattr, dst)
94+
e := fmt.Errorf("failed to set xattr %q on %s: %w", xattr, dst, err)
9595
if errorHandler != nil {
9696
if e = errorHandler(dst, src, xattr, e); e == nil {
9797
continue

fs/copy_windows.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,15 @@
1717
package fs
1818

1919
import (
20+
"errors"
21+
"fmt"
2022
"io"
2123
"os"
22-
23-
"github.com/pkg/errors"
2424
)
2525

2626
func copyFileInfo(fi os.FileInfo, name string) error {
2727
if err := os.Chmod(name, fi.Mode()); err != nil {
28-
return errors.Wrapf(err, "failed to chmod %s", name)
28+
return fmt.Errorf("failed to chmod %s: %w", name, err)
2929
}
3030

3131
// TODO: copy windows specific metadata

0 commit comments

Comments
 (0)