commit
82fdac1cd6
@ -176,7 +176,10 @@ func copyDirInfo(fi os.FileInfo, path string) error {
|
|||||||
return errors.Wrapf(err, "failed to chmod %s", path)
|
return errors.Wrapf(err, "failed to chmod %s", path)
|
||||||
}
|
}
|
||||||
|
|
||||||
timespec := []unix.Timespec{unix.Timespec(fs.StatAtime(st)), unix.Timespec(fs.StatMtime(st))}
|
timespec := []unix.Timespec{
|
||||||
|
unix.NsecToTimespec(syscall.TimespecToNsec(fs.StatAtime(st))),
|
||||||
|
unix.NsecToTimespec(syscall.TimespecToNsec(fs.StatMtime(st))),
|
||||||
|
}
|
||||||
if err := unix.UtimesNanoAt(unix.AT_FDCWD, path, timespec, unix.AT_SYMLINK_NOFOLLOW); err != nil {
|
if err := unix.UtimesNanoAt(unix.AT_FDCWD, path, timespec, unix.AT_SYMLINK_NOFOLLOW); err != nil {
|
||||||
return errors.Wrapf(err, "failed to utime %s", path)
|
return errors.Wrapf(err, "failed to utime %s", path)
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// +build go1.8,!windows,amd64,!static_build
|
// +build go1.8,!windows,amd64,!static_build,!gccgo
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Copyright The containerd Authors.
|
Copyright The containerd Authors.
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// +build !go1.8 windows !amd64 static_build
|
// +build !go1.8 windows !amd64 static_build gccgo
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Copyright The containerd Authors.
|
Copyright The containerd Authors.
|
||||||
|
@ -3,7 +3,7 @@ github.com/BurntSushi/toml 3012a1dbe2e4bd1391d42b32f057
|
|||||||
github.com/containerd/btrfs af5082808c833de0e79c1e72eea9fea239364877
|
github.com/containerd/btrfs af5082808c833de0e79c1e72eea9fea239364877
|
||||||
github.com/containerd/cgroups fada802a7909d430bd17126fd6e4bbf5716f2bcd
|
github.com/containerd/cgroups fada802a7909d430bd17126fd6e4bbf5716f2bcd
|
||||||
github.com/containerd/console 8375c3424e4d7b114e8a90a4a40c8e1b40d1d4e6
|
github.com/containerd/console 8375c3424e4d7b114e8a90a4a40c8e1b40d1d4e6
|
||||||
github.com/containerd/continuity f2a389ac0a02ce21c09edd7344677a601970f41c
|
github.com/containerd/continuity 0ec596719c75bfd42908850990acea594b7593ac
|
||||||
github.com/containerd/fifo bda0ff6ed73c67bfb5e62bc9c697f146b7fd7f13
|
github.com/containerd/fifo bda0ff6ed73c67bfb5e62bc9c697f146b7fd7f13
|
||||||
github.com/containerd/go-runc a5c2862aed5e6358b305b0e16bfce58e0549b1cd
|
github.com/containerd/go-runc a5c2862aed5e6358b305b0e16bfce58e0549b1cd
|
||||||
github.com/containerd/ttrpc 92c8520ef9f86600c650dd540266a007bf03670f
|
github.com/containerd/ttrpc 92c8520ef9f86600c650dd540266a007bf03670f
|
||||||
|
6
vendor/github.com/containerd/continuity/fs/copy.go
generated
vendored
6
vendor/github.com/containerd/continuity/fs/copy.go
generated
vendored
@ -80,7 +80,7 @@ func copyDirectory(dst, src string, inodes map[uint64]string, o *copyDirOpts) er
|
|||||||
return errors.Wrapf(err, "failed to stat %s", src)
|
return errors.Wrapf(err, "failed to stat %s", src)
|
||||||
}
|
}
|
||||||
if !stat.IsDir() {
|
if !stat.IsDir() {
|
||||||
return errors.Errorf("source is not directory")
|
return errors.Errorf("source %s is not directory", src)
|
||||||
}
|
}
|
||||||
|
|
||||||
if st, err := os.Stat(dst); err != nil {
|
if st, err := os.Stat(dst); err != nil {
|
||||||
@ -104,6 +104,10 @@ func copyDirectory(dst, src string, inodes map[uint64]string, o *copyDirOpts) er
|
|||||||
return errors.Wrapf(err, "failed to copy file info for %s", dst)
|
return errors.Wrapf(err, "failed to copy file info for %s", dst)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if err := copyXAttrs(dst, src, o.xeh); err != nil {
|
||||||
|
return errors.Wrap(err, "failed to copy xattrs")
|
||||||
|
}
|
||||||
|
|
||||||
for _, fi := range fis {
|
for _, fi := range fis {
|
||||||
source := filepath.Join(src, fi.Name())
|
source := filepath.Join(src, fi.Name())
|
||||||
target := filepath.Join(dst, fi.Name())
|
target := filepath.Join(dst, fi.Name())
|
||||||
|
5
vendor/github.com/containerd/continuity/fs/copy_linux.go
generated
vendored
5
vendor/github.com/containerd/continuity/fs/copy_linux.go
generated
vendored
@ -51,7 +51,10 @@ func copyFileInfo(fi os.FileInfo, name string) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
timespec := []unix.Timespec{unix.Timespec(StatAtime(st)), unix.Timespec(StatMtime(st))}
|
timespec := []unix.Timespec{
|
||||||
|
unix.NsecToTimespec(syscall.TimespecToNsec(StatAtime(st))),
|
||||||
|
unix.NsecToTimespec(syscall.TimespecToNsec(StatMtime(st))),
|
||||||
|
}
|
||||||
if err := unix.UtimesNanoAt(unix.AT_FDCWD, name, timespec, unix.AT_SYMLINK_NOFOLLOW); err != nil {
|
if err := unix.UtimesNanoAt(unix.AT_FDCWD, name, timespec, unix.AT_SYMLINK_NOFOLLOW); err != nil {
|
||||||
return errors.Wrapf(err, "failed to utime %s", name)
|
return errors.Wrapf(err, "failed to utime %s", name)
|
||||||
}
|
}
|
||||||
|
10
vendor/github.com/containerd/continuity/fs/fstest/file.go
generated
vendored
10
vendor/github.com/containerd/continuity/fs/fstest/file.go
generated
vendored
@ -20,9 +20,9 @@ import (
|
|||||||
"bytes"
|
"bytes"
|
||||||
"io"
|
"io"
|
||||||
"math/rand"
|
"math/rand"
|
||||||
"net"
|
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
"syscall"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -158,11 +158,15 @@ func Link(oldname, newname string) Applier {
|
|||||||
func CreateSocket(name string, perm os.FileMode) Applier {
|
func CreateSocket(name string, perm os.FileMode) Applier {
|
||||||
return applyFn(func(root string) error {
|
return applyFn(func(root string) error {
|
||||||
fullPath := filepath.Join(root, name)
|
fullPath := filepath.Join(root, name)
|
||||||
ln, err := net.Listen("unix", fullPath)
|
fd, err := syscall.Socket(syscall.AF_UNIX, syscall.SOCK_STREAM, 0)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
defer ln.Close()
|
defer syscall.Close(fd)
|
||||||
|
sa := &syscall.SockaddrUnix{Name: fullPath}
|
||||||
|
if err := syscall.Bind(fd, sa); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
return os.Chmod(fullPath, perm)
|
return os.Chmod(fullPath, perm)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
2
vendor/github.com/containerd/continuity/fs/fstest/testsuite.go
generated
vendored
2
vendor/github.com/containerd/continuity/fs/fstest/testsuite.go
generated
vendored
@ -90,7 +90,7 @@ var (
|
|||||||
Symlink("libnothing.so", "/usr/local/lib/libnothing.so.2"),
|
Symlink("libnothing.so", "/usr/local/lib/libnothing.so.2"),
|
||||||
CreateDir("/home", 0755),
|
CreateDir("/home", 0755),
|
||||||
CreateDir("/home/derek", 0700),
|
CreateDir("/home/derek", 0700),
|
||||||
CreateDir("/var/run/socket", 0700),
|
// TODO: CreateSocket: how should Sockets be handled in continuity?
|
||||||
)
|
)
|
||||||
|
|
||||||
// basicTest covers basic operations
|
// basicTest covers basic operations
|
||||||
|
23
vendor/github.com/containerd/continuity/go.mod
generated
vendored
Normal file
23
vendor/github.com/containerd/continuity/go.mod
generated
vendored
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
module github.com/containerd/continuity
|
||||||
|
|
||||||
|
go 1.11
|
||||||
|
|
||||||
|
require (
|
||||||
|
bazil.org/fuse v0.0.0-20160811212531-371fbbdaa898
|
||||||
|
github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4
|
||||||
|
github.com/golang/protobuf v1.2.0
|
||||||
|
github.com/inconshreveable/mousetrap v1.0.0 // indirect
|
||||||
|
github.com/onsi/ginkgo v1.10.1 // indirect
|
||||||
|
github.com/onsi/gomega v1.7.0 // indirect
|
||||||
|
github.com/opencontainers/go-digest v1.0.0-rc1
|
||||||
|
github.com/pkg/errors v0.8.1-0.20171018195549-f15c970de5b7
|
||||||
|
github.com/sirupsen/logrus v1.0.4-0.20170822132746-89742aefa4b2
|
||||||
|
github.com/spf13/cobra v0.0.2-0.20171109065643-2da4a54c5cee
|
||||||
|
github.com/spf13/pflag v1.0.1-0.20171106142849-4c012f6dcd95 // indirect
|
||||||
|
github.com/stretchr/testify v1.4.0 // indirect
|
||||||
|
golang.org/x/crypto v0.0.0-20171113213409-9f005a07e0d3 // indirect
|
||||||
|
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f
|
||||||
|
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e
|
||||||
|
gopkg.in/airbrake/gobrake.v2 v2.0.9 // indirect
|
||||||
|
gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2 // indirect
|
||||||
|
)
|
13
vendor/github.com/containerd/continuity/vendor.conf
generated
vendored
13
vendor/github.com/containerd/continuity/vendor.conf
generated
vendored
@ -1,13 +0,0 @@
|
|||||||
bazil.org/fuse 371fbbdaa8987b715bdd21d6adc4c9b20155f748
|
|
||||||
github.com/dustin/go-humanize bb3d318650d48840a39aa21a027c6630e198e626
|
|
||||||
github.com/golang/protobuf 1e59b77b52bf8e4b449a57e6f79f21226d571845
|
|
||||||
github.com/inconshreveable/mousetrap 76626ae9c91c4f2a10f34cad8ce83ea42c93bb75
|
|
||||||
github.com/opencontainers/go-digest 279bed98673dd5bef374d3b6e4b09e2af76183bf
|
|
||||||
github.com/pkg/errors f15c970de5b76fac0b59abb32d62c17cc7bed265
|
|
||||||
github.com/sirupsen/logrus 89742aefa4b206dcf400792f3bd35b542998eb3b
|
|
||||||
github.com/spf13/cobra 2da4a54c5ceefcee7ca5dd0eea1e18a3b6366489
|
|
||||||
github.com/spf13/pflag 4c012f6dcd9546820e378d0bdda4d8fc772cdfea
|
|
||||||
golang.org/x/crypto 9f005a07e0d31d45e6656d241bb5c0f2efd4bc94
|
|
||||||
golang.org/x/net a337091b0525af65de94df2eb7e98bd9962dcbe2
|
|
||||||
golang.org/x/sync 450f422ab23cf9881c94e2db30cac0eb1b7cf80c
|
|
||||||
golang.org/x/sys 77b0e4315053a57ed2962443614bdb28db152054
|
|
Loading…
Reference in New Issue
Block a user