Merge pull request #942 from dmcgowan/travis-make-build

Travis make build
This commit is contained in:
Kenfe-Mickaël Laventure 2017-05-31 14:10:50 -07:00 committed by GitHub
commit 47430d8909
21 changed files with 373 additions and 89 deletions

View File

@ -38,6 +38,7 @@ script:
- GIT_CHECK_EXCLUDE="./vendor" TRAVIS_COMMIT_RANGE="${TRAVIS_COMMIT_RANGE/.../..}" make dco - GIT_CHECK_EXCLUDE="./vendor" TRAVIS_COMMIT_RANGE="${TRAVIS_COMMIT_RANGE/.../..}" make dco
- make fmt - make fmt
- make vet - make vet
- make build
- make binaries - make binaries
- if [ "$GOOS" = "linux" ]; then sudo make install ; fi - if [ "$GOOS" = "linux" ]; then sudo make install ; fi
- if [ "$GOOS" = "linux" ]; then make coverage ; fi - if [ "$GOOS" = "linux" ]; then make coverage ; fi

View File

@ -1,4 +1,4 @@
// +build !linux // +build !linux,!windows
package main package main

View File

@ -5,8 +5,6 @@ import (
"os" "os"
"path/filepath" "path/filepath"
"time" "time"
"github.com/containerd/continuity/sysx"
) )
// Applier applies single file changes // Applier applies single file changes
@ -96,12 +94,6 @@ func Link(oldname, newname string) Applier {
}) })
} }
func SetXAttr(name, key, value string) Applier {
return applyFn(func(root string) error {
return sysx.LSetxattr(name, key, []byte(value), 0)
})
}
// TODO: Make platform specific, windows applier is always no-op // TODO: Make platform specific, windows applier is always no-op
//func Mknod(name string, mode int32, dev int) Applier { //func Mknod(name string, mode int32, dev int) Applier {
// return func(root string) error { // return func(root string) error {

11
fs/fstest/file_unix.go Normal file
View File

@ -0,0 +1,11 @@
// +build !windows
package fstest
import "github.com/containerd/continuity/sysx"
func SetXAttr(name, key, value string) Applier {
return applyFn(func(root string) error {
return sysx.LSetxattr(name, key, []byte(value), 0)
})
}

View File

@ -1,3 +1,5 @@
// +build !windows
package shim package shim
import ( import (

View File

@ -1,3 +1,5 @@
// +build linux
package cgroups package cgroups
import ( import (

View File

@ -6,7 +6,6 @@ import (
"io/ioutil" "io/ioutil"
"os" "os"
"path/filepath" "path/filepath"
"syscall"
"testing" "testing"
"github.com/containerd/containerd/fs/fstest" "github.com/containerd/containerd/fs/fstest"
@ -28,8 +27,8 @@ func SnapshotterSuite(t *testing.T, name string, snapshotterFn func(ctx context.
func makeTest(t *testing.T, name string, snapshotterFn func(ctx context.Context, root string) (snapshot.Snapshotter, func(), error), fn func(ctx context.Context, t *testing.T, snapshotter snapshot.Snapshotter, work string)) func(t *testing.T) { func makeTest(t *testing.T, name string, snapshotterFn func(ctx context.Context, root string) (snapshot.Snapshotter, func(), error), fn func(ctx context.Context, t *testing.T, snapshotter snapshot.Snapshotter, work string)) func(t *testing.T) {
return func(t *testing.T) { return func(t *testing.T) {
ctx := context.Background() ctx := context.Background()
oldumask := syscall.Umask(0) restoreMask := clearMask()
defer syscall.Umask(oldumask) defer restoreMask()
// Make two directories: a snapshotter root and a play area for the tests: // Make two directories: a snapshotter root and a play area for the tests:
// //
// /tmp // /tmp

View File

@ -0,0 +1,12 @@
// +build !windows
package testsuite
import "syscall"
func clearMask() func() {
oldumask := syscall.Umask(0)
return func() {
syscall.Umask(oldumask)
}
}

View File

@ -0,0 +1,5 @@
package testsuite
func clearMask() func() {
return func() {}
}

View File

@ -6,9 +6,9 @@ import (
"os" "os"
"path/filepath" "path/filepath"
"strconv" "strconv"
"syscall"
"testing" "testing"
"github.com/containerd/containerd/mount"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
) )
@ -21,7 +21,7 @@ func init() {
// Unmount unmounts a given mountPoint and sets t.Error if it fails // Unmount unmounts a given mountPoint and sets t.Error if it fails
func Unmount(t *testing.T, mountPoint string) { func Unmount(t *testing.T, mountPoint string) {
t.Log("unmount", mountPoint) t.Log("unmount", mountPoint)
if err := syscall.Unmount(mountPoint, 0); err != nil { if err := mount.Unmount(mountPoint, 0); err != nil {
t.Error("Could not umount", mountPoint, err) t.Error("Could not umount", mountPoint, err)
} }
} }

View File

@ -29,7 +29,7 @@ github.com/nightlyone/lockfile 1d49c987357a327b5b03aa84cbddd582c328615d
github.com/opencontainers/go-digest 21dfd564fd89c944783d00d069f33e3e7123c448 github.com/opencontainers/go-digest 21dfd564fd89c944783d00d069f33e3e7123c448
golang.org/x/sys f3918c30c5c2cb527c0b071a27c35120a6c0719a golang.org/x/sys f3918c30c5c2cb527c0b071a27c35120a6c0719a
github.com/opencontainers/image-spec v1.0.0-rc6 github.com/opencontainers/image-spec v1.0.0-rc6
github.com/containerd/continuity f4ad4294c92f596c9241947c416d1297f9faf3ea github.com/containerd/continuity 86cec1535a968310e7532819f699ff2830ed7463
golang.org/x/sync 450f422ab23cf9881c94e2db30cac0eb1b7cf80c golang.org/x/sync 450f422ab23cf9881c94e2db30cac0eb1b7cf80c
github.com/BurntSushi/toml v0.2.0-21-g9906417 github.com/BurntSushi/toml v0.2.0-21-g9906417
github.com/grpc-ecosystem/go-grpc-prometheus 6b7015e65d366bf3f19b2b2a000a831940f0f7e0 github.com/grpc-ecosystem/go-grpc-prometheus 6b7015e65d366bf3f19b2b2a000a831940f0f7e0

View File

@ -2,7 +2,6 @@ package continuity
import ( import (
"os" "os"
"strconv"
) )
// Driver provides all of the system-level functions in a common interface. // Driver provides all of the system-level functions in a common interface.
@ -25,7 +24,7 @@ type Driver interface {
Link(oldname, newname string) error Link(oldname, newname string) error
Lchmod(path string, mode os.FileMode) error Lchmod(path string, mode os.FileMode) error
Lchown(path, uid, gid string) error Lchown(path string, uid, gid int64) error
Symlink(oldname, newname string) error Symlink(oldname, newname string) error
// TODO(aaronl): These methods might move outside the main Driver // TODO(aaronl): These methods might move outside the main Driver
@ -127,16 +126,9 @@ func (d *driver) Link(oldname, newname string) error {
return os.Link(oldname, newname) return os.Link(oldname, newname)
} }
func (d *driver) Lchown(name, uidStr, gidStr string) error { func (d *driver) Lchown(name string, uid, gid int64) error {
uid, err := strconv.Atoi(uidStr) // TODO: error out if uid excesses int bit width?
if err != nil { return os.Lchown(name, int(uid), int(gid))
return err
}
gid, err := strconv.Atoi(gidStr)
if err != nil {
return err
}
return os.Lchown(name, uid, gid)
} }
func (d *driver) Symlink(oldname, newname string) error { func (d *driver) Symlink(oldname, newname string) error {

View File

@ -1,7 +0,0 @@
package continuity
import "os"
func (d *driver) DeviceInfo(fi os.FileInfo) (maj uint64, min uint64, err error) {
return deviceInfo(fi)
}

View File

@ -54,12 +54,10 @@ type Resource struct {
// path is present, the entry may represent a hardlink, rather than using // path is present, the entry may represent a hardlink, rather than using
// a link target. The path format is operating system specific. // a link target. The path format is operating system specific.
Path []string `protobuf:"bytes,1,rep,name=path" json:"path,omitempty"` Path []string `protobuf:"bytes,1,rep,name=path" json:"path,omitempty"`
// Uid specifies the user id for the resource. A string type is used for // Uid specifies the user id for the resource.
// compatibility across different OS. Uid int64 `protobuf:"varint,2,opt,name=uid" json:"uid,omitempty"`
Uid string `protobuf:"bytes,2,opt,name=uid" json:"uid,omitempty"` // Gid specifies the group id for the resource.
// Gid specifies the group id for the resource. A string type is used for Gid int64 `protobuf:"varint,3,opt,name=gid" json:"gid,omitempty"`
// compatibility across different OS.
Gid string `protobuf:"bytes,3,opt,name=gid" json:"gid,omitempty"`
// user and group are not currently used but their field numbers have been // user and group are not currently used but their field numbers have been
// reserved for future use. As such, they are marked as deprecated. // reserved for future use. As such, they are marked as deprecated.
User string `protobuf:"bytes,4,opt,name=user" json:"user,omitempty"` User string `protobuf:"bytes,4,opt,name=user" json:"user,omitempty"`
@ -157,25 +155,25 @@ func init() {
func init() { proto1.RegisterFile("manifest.proto", fileDescriptor0) } func init() { proto1.RegisterFile("manifest.proto", fileDescriptor0) }
var fileDescriptor0 = []byte{ var fileDescriptor0 = []byte{
// 313 bytes of a gzipped FileDescriptorProto // 317 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x8c, 0x90, 0x41, 0x4b, 0xfb, 0x40, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x8c, 0x90, 0x4f, 0x4b, 0xf3, 0x40,
0x10, 0xc5, 0x49, 0x93, 0xf4, 0x9f, 0x4e, 0xdb, 0xbf, 0xb2, 0x48, 0x99, 0x63, 0xcc, 0x29, 0x20, 0x10, 0xc6, 0x49, 0x93, 0xf4, 0x4d, 0xa7, 0xed, 0xab, 0x2c, 0x52, 0xe6, 0x18, 0x73, 0x0a, 0x08,
0x54, 0xd0, 0x83, 0xe7, 0x8a, 0x5e, 0x04, 0x2f, 0xeb, 0xc5, 0xeb, 0xea, 0xae, 0x71, 0x85, 0x64, 0x15, 0xf4, 0xe0, 0xb9, 0xa2, 0x17, 0xc1, 0xcb, 0x7a, 0xf1, 0xba, 0xba, 0x6b, 0x5c, 0x21, 0xd9,
0xc3, 0x66, 0x03, 0xea, 0x97, 0xf3, 0xab, 0xc9, 0x4c, 0xb6, 0x45, 0x6f, 0x9e, 0xf2, 0xde, 0x6f, 0xb0, 0xd9, 0x80, 0xfa, 0xe5, 0xfc, 0x6a, 0x32, 0xb3, 0x69, 0xd1, 0x9b, 0xa7, 0x3c, 0xcf, 0x6f,
0x76, 0x26, 0x8f, 0x07, 0xff, 0x5b, 0xd5, 0xd9, 0x17, 0x33, 0x84, 0x6d, 0xef, 0x5d, 0x70, 0x22, 0xfe, 0x64, 0xf6, 0x81, 0xff, 0xad, 0xea, 0xec, 0x8b, 0x19, 0xc2, 0xb6, 0xf7, 0x2e, 0x38, 0x91,
0xe7, 0x4f, 0x75, 0x05, 0xc5, 0x7d, 0x1c, 0x88, 0x33, 0x28, 0xbc, 0x19, 0xdc, 0xe8, 0x9f, 0x0d, 0xf3, 0xa7, 0xba, 0x82, 0xe2, 0x7e, 0x2a, 0x88, 0x33, 0x28, 0xbc, 0x19, 0xdc, 0xe8, 0x9f, 0x0d,
0x26, 0x65, 0x5a, 0x2f, 0x2f, 0x8e, 0xa6, 0xc7, 0x5b, 0x19, 0xb1, 0x3c, 0x3c, 0xa8, 0xbe, 0x66, 0x26, 0x65, 0x5a, 0x2f, 0x2f, 0x8e, 0x62, 0xf3, 0x56, 0x4e, 0x58, 0x1e, 0x1a, 0xaa, 0xaf, 0x19,
0x50, 0xec, 0xb1, 0x10, 0x90, 0xf5, 0x2a, 0xbc, 0xf2, 0xd6, 0x42, 0xb2, 0x16, 0xc7, 0x90, 0x8e, 0x14, 0x7b, 0x2c, 0x04, 0x64, 0xbd, 0x0a, 0xaf, 0x3c, 0xb5, 0x90, 0xac, 0xc5, 0x31, 0xa4, 0xa3,
0x56, 0xe3, 0xac, 0x4c, 0xea, 0x85, 0x24, 0x49, 0xa4, 0xb1, 0x1a, 0xd3, 0x89, 0x34, 0x56, 0x8b, 0xd5, 0x38, 0x2b, 0x93, 0x3a, 0x95, 0x24, 0x89, 0x34, 0x56, 0x63, 0x1a, 0x49, 0x63, 0xb5, 0xd8,
0x0d, 0x64, 0xe3, 0x60, 0x3c, 0x66, 0x84, 0xae, 0x67, 0x98, 0x48, 0xf6, 0x02, 0x21, 0x6f, 0xbc, 0x40, 0x36, 0x0e, 0xc6, 0x63, 0x56, 0x26, 0xf5, 0xe2, 0x7a, 0x86, 0x89, 0x64, 0x2f, 0x10, 0xf2,
0x1b, 0x7b, 0xcc, 0x0f, 0x83, 0x09, 0xd0, 0x9f, 0x5a, 0xa7, 0x0d, 0xce, 0xcb, 0xa4, 0x5e, 0x4b, 0xc6, 0xbb, 0xb1, 0xc7, 0xfc, 0x50, 0x88, 0x80, 0xfe, 0xd4, 0x3a, 0x6d, 0x70, 0x5e, 0x26, 0xf5,
0xd6, 0xc4, 0x06, 0xfb, 0x69, 0xf0, 0x5f, 0x99, 0xd4, 0x99, 0x64, 0x2d, 0x36, 0x30, 0xd7, 0xb6, 0x5a, 0xb2, 0x26, 0x36, 0xd8, 0x4f, 0x83, 0xff, 0xca, 0xa4, 0xce, 0x24, 0x6b, 0xb1, 0x81, 0xb9,
0x31, 0x43, 0xc0, 0x82, 0x33, 0x45, 0x47, 0x3c, 0x28, 0xdf, 0x98, 0x80, 0x0b, 0x8e, 0x11, 0x9d, 0xb6, 0x8d, 0x19, 0x02, 0x16, 0x7c, 0xd3, 0xe4, 0x88, 0x07, 0xe5, 0x1b, 0x13, 0x70, 0x41, 0xab,
0x38, 0x81, 0xbc, 0x55, 0x6f, 0xce, 0x23, 0xf0, 0x91, 0xc9, 0x30, 0xb5, 0x9d, 0xf3, 0xb8, 0x8c, 0xe5, 0xe4, 0xc4, 0x09, 0xe4, 0xad, 0x7a, 0x73, 0x1e, 0x81, 0x97, 0x44, 0xc3, 0xd4, 0x76, 0xce,
0x94, 0x8c, 0xa8, 0x20, 0x7f, 0x57, 0x21, 0x78, 0x5c, 0x71, 0x49, 0xab, 0x58, 0xd2, 0xe3, 0x2e, 0xe3, 0x72, 0xa2, 0x64, 0x44, 0x05, 0xf9, 0xbb, 0x0a, 0xc1, 0xe3, 0x8a, 0x43, 0x5a, 0x4d, 0x21,
0x04, 0x2f, 0xa7, 0x91, 0x38, 0x85, 0x54, 0xe9, 0x01, 0xd7, 0xbf, 0x6a, 0xdc, 0xdd, 0x3c, 0xdc, 0x3d, 0xee, 0x42, 0xf0, 0x32, 0x96, 0xc4, 0x29, 0xa4, 0x4a, 0x0f, 0xb8, 0xfe, 0x15, 0xe3, 0xee,
0x76, 0xc1, 0x7f, 0x48, 0x9a, 0x55, 0xe7, 0x90, 0xf3, 0x0a, 0xe5, 0xef, 0x54, 0x4b, 0x9d, 0x53, 0xe6, 0xe1, 0xb6, 0x0b, 0xfe, 0x43, 0x52, 0xad, 0x3a, 0x87, 0x9c, 0x47, 0xe8, 0xfe, 0x4e, 0xb5,
0x22, 0xd6, 0xc4, 0xb4, 0x0a, 0x8a, 0xeb, 0x5b, 0x49, 0xd6, 0xd5, 0x1d, 0x14, 0xfb, 0x0b, 0x7f, 0x94, 0x39, 0x5d, 0xc4, 0x9a, 0x98, 0x56, 0x41, 0x71, 0x7c, 0x2b, 0xc9, 0xba, 0xba, 0x83, 0x62,
0xdd, 0xf9, 0xd1, 0xc3, 0x54, 0x7b, 0x74, 0x4f, 0x73, 0x4e, 0x74, 0xf9, 0x1d, 0x00, 0x00, 0xff, 0xbf, 0xe1, 0xaf, 0x33, 0x3f, 0x72, 0x48, 0xe3, 0x7b, 0xa3, 0x7b, 0x9a, 0xf3, 0x45, 0x97, 0xdf,
0xff, 0x91, 0xfe, 0x64, 0xca, 0x17, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0xff, 0xff, 0xef, 0x27, 0x99, 0xf7, 0x17, 0x02, 0x00, 0x00,
} }

View File

@ -16,13 +16,11 @@ message Resource {
// NOTE(stevvooe): Need to define clear precedence for user/group/uid/gid precedence. // NOTE(stevvooe): Need to define clear precedence for user/group/uid/gid precedence.
// Uid specifies the user id for the resource. A string type is used for // Uid specifies the user id for the resource.
// compatibility across different OS. int64 uid = 2;
string uid = 2;
// Gid specifies the group id for the resource. A string type is used for // Gid specifies the group id for the resource.
// compatibility across different OS. int64 gid = 3;
string gid = 3;
// user and group are not currently used but their field numbers have been // user and group are not currently used but their field numbers have been
// reserved for future use. As such, they are marked as deprecated. // reserved for future use. As such, they are marked as deprecated.

View File

@ -26,8 +26,8 @@ type Resource interface {
// Mode returns the // Mode returns the
Mode() os.FileMode Mode() os.FileMode
UID() string UID() int64
GID() string GID() int64
} }
// ByPath provides the canonical sort order for a set of resources. Use with // ByPath provides the canonical sort order for a set of resources. Use with
@ -240,7 +240,7 @@ type Device interface {
type resource struct { type resource struct {
paths []string paths []string
mode os.FileMode mode os.FileMode
uid, gid string uid, gid int64
xattrs map[string][]byte xattrs map[string][]byte
} }
@ -258,11 +258,11 @@ func (r *resource) Mode() os.FileMode {
return r.mode return r.mode
} }
func (r *resource) UID() string { func (r *resource) UID() int64 {
return r.uid return r.uid
} }
func (r *resource) GID() string { func (r *resource) GID() int64 {
return r.gid return r.gid
} }

View File

@ -27,8 +27,8 @@ func newBaseResource(p string, fi os.FileInfo) (*resource, error) {
paths: []string{p}, paths: []string{p},
mode: fi.Mode(), mode: fi.Mode(),
uid: fmt.Sprint(sys.Uid), uid: int64(sys.Uid),
gid: fmt.Sprint(sys.Gid), gid: int64(sys.Gid),
// NOTE(stevvooe): Population of shared xattrs field is deferred to // NOTE(stevvooe): Population of shared xattrs field is deferred to
// the resource types that populate it. Since they are a property of // the resource types that populate it. Since they are a property of

View File

@ -7,6 +7,9 @@ import "syscall"
// $ GOOS=linux GOARCH=amd64 ./generate.sh xattr // $ GOOS=linux GOARCH=amd64 ./generate.sh xattr
// $ GOOS=linux GOARCH=arm ./generate.sh xattr // $ GOOS=linux GOARCH=arm ./generate.sh xattr
// $ GOOS=linux GOARCH=arm64 ./generate.sh xattr // $ GOOS=linux GOARCH=arm64 ./generate.sh xattr
// $ GOOS=linux GOARCH=ppc64 ./generate.sh xattr
// $ GOOS=linux GOARCH=ppc64le ./generate.sh xattr
// $ GOOS=linux GOARCH=s390x ./generate.sh xattr
// Listxattr calls syscall listxattr and reads all content // Listxattr calls syscall listxattr and reads all content
// and returns a string array // and returns a string array

View File

@ -1,19 +1,111 @@
// mksyscall.pl xattr_linux.go
// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
package sysx package sysx
import "github.com/pkg/errors" import (
"syscall"
"unsafe"
)
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
func llistxattr(path string, dest []byte) (sz int, err error) { func llistxattr(path string, dest []byte) (sz int, err error) {
return 0, errors.Wrap(ErrNotSupported, "llistxattr not implemented on ppc64") var _p0 *byte
_p0, err = syscall.BytePtrFromString(path)
if err != nil {
return
}
var _p1 unsafe.Pointer
if len(dest) > 0 {
_p1 = unsafe.Pointer(&dest[0])
} else {
_p1 = unsafe.Pointer(&_zero)
}
r0, _, e1 := syscall.Syscall(syscall.SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
use(unsafe.Pointer(_p0))
sz = int(r0)
if e1 != 0 {
err = errnoErr(e1)
}
return
} }
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
func lremovexattr(path string, attr string) (err error) { func lremovexattr(path string, attr string) (err error) {
return errors.Wrap(ErrNotSupported, "lremovexattr not implemented on ppc64") var _p0 *byte
_p0, err = syscall.BytePtrFromString(path)
if err != nil {
return
}
var _p1 *byte
_p1, err = syscall.BytePtrFromString(attr)
if err != nil {
return
}
_, _, e1 := syscall.Syscall(syscall.SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
use(unsafe.Pointer(_p0))
use(unsafe.Pointer(_p1))
if e1 != 0 {
err = errnoErr(e1)
}
return
} }
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
func lsetxattr(path string, attr string, data []byte, flags int) (err error) { func lsetxattr(path string, attr string, data []byte, flags int) (err error) {
return errors.Wrap(ErrNotSupported, "lsetxattr not implemented on ppc64") var _p0 *byte
_p0, err = syscall.BytePtrFromString(path)
if err != nil {
return
}
var _p1 *byte
_p1, err = syscall.BytePtrFromString(attr)
if err != nil {
return
}
var _p2 unsafe.Pointer
if len(data) > 0 {
_p2 = unsafe.Pointer(&data[0])
} else {
_p2 = unsafe.Pointer(&_zero)
}
_, _, e1 := syscall.Syscall6(syscall.SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
use(unsafe.Pointer(_p0))
use(unsafe.Pointer(_p1))
if e1 != 0 {
err = errnoErr(e1)
}
return
} }
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
func lgetxattr(path string, attr string, dest []byte) (sz int, err error) { func lgetxattr(path string, attr string, dest []byte) (sz int, err error) {
return 0, errors.Wrap(ErrNotSupported, "lgetxattr not implemented on ppc64") var _p0 *byte
_p0, err = syscall.BytePtrFromString(path)
if err != nil {
return
}
var _p1 *byte
_p1, err = syscall.BytePtrFromString(attr)
if err != nil {
return
}
var _p2 unsafe.Pointer
if len(dest) > 0 {
_p2 = unsafe.Pointer(&dest[0])
} else {
_p2 = unsafe.Pointer(&_zero)
}
r0, _, e1 := syscall.Syscall6(syscall.SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
use(unsafe.Pointer(_p0))
use(unsafe.Pointer(_p1))
sz = int(r0)
if e1 != 0 {
err = errnoErr(e1)
}
return
} }

View File

@ -1,19 +1,111 @@
// mksyscall.pl xattr_linux.go
// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
package sysx package sysx
import "github.com/pkg/errors" import (
"syscall"
"unsafe"
)
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
func llistxattr(path string, dest []byte) (sz int, err error) { func llistxattr(path string, dest []byte) (sz int, err error) {
return 0, errors.Wrap(ErrNotSupported, "llistxattr not implemented on ppc64le") var _p0 *byte
_p0, err = syscall.BytePtrFromString(path)
if err != nil {
return
}
var _p1 unsafe.Pointer
if len(dest) > 0 {
_p1 = unsafe.Pointer(&dest[0])
} else {
_p1 = unsafe.Pointer(&_zero)
}
r0, _, e1 := syscall.Syscall(syscall.SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
use(unsafe.Pointer(_p0))
sz = int(r0)
if e1 != 0 {
err = errnoErr(e1)
}
return
} }
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
func lremovexattr(path string, attr string) (err error) { func lremovexattr(path string, attr string) (err error) {
return errors.Wrap(ErrNotSupported, "lremovexattr not implemented on ppc64le") var _p0 *byte
_p0, err = syscall.BytePtrFromString(path)
if err != nil {
return
}
var _p1 *byte
_p1, err = syscall.BytePtrFromString(attr)
if err != nil {
return
}
_, _, e1 := syscall.Syscall(syscall.SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
use(unsafe.Pointer(_p0))
use(unsafe.Pointer(_p1))
if e1 != 0 {
err = errnoErr(e1)
}
return
} }
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
func lsetxattr(path string, attr string, data []byte, flags int) (err error) { func lsetxattr(path string, attr string, data []byte, flags int) (err error) {
return errors.Wrap(ErrNotSupported, "lsetxattr not implemented on ppc64le") var _p0 *byte
_p0, err = syscall.BytePtrFromString(path)
if err != nil {
return
}
var _p1 *byte
_p1, err = syscall.BytePtrFromString(attr)
if err != nil {
return
}
var _p2 unsafe.Pointer
if len(data) > 0 {
_p2 = unsafe.Pointer(&data[0])
} else {
_p2 = unsafe.Pointer(&_zero)
}
_, _, e1 := syscall.Syscall6(syscall.SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
use(unsafe.Pointer(_p0))
use(unsafe.Pointer(_p1))
if e1 != 0 {
err = errnoErr(e1)
}
return
} }
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
func lgetxattr(path string, attr string, dest []byte) (sz int, err error) { func lgetxattr(path string, attr string, dest []byte) (sz int, err error) {
return 0, errors.Wrap(ErrNotSupported, "lgetxattr not implemented on ppc64le") var _p0 *byte
_p0, err = syscall.BytePtrFromString(path)
if err != nil {
return
}
var _p1 *byte
_p1, err = syscall.BytePtrFromString(attr)
if err != nil {
return
}
var _p2 unsafe.Pointer
if len(dest) > 0 {
_p2 = unsafe.Pointer(&dest[0])
} else {
_p2 = unsafe.Pointer(&_zero)
}
r0, _, e1 := syscall.Syscall6(syscall.SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
use(unsafe.Pointer(_p0))
use(unsafe.Pointer(_p1))
sz = int(r0)
if e1 != 0 {
err = errnoErr(e1)
}
return
} }

View File

@ -1,19 +1,111 @@
// mksyscall.pl xattr_linux.go
// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
package sysx package sysx
import "github.com/pkg/errors" import (
"syscall"
"unsafe"
)
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
func llistxattr(path string, dest []byte) (sz int, err error) { func llistxattr(path string, dest []byte) (sz int, err error) {
return 0, errors.Wrap(ErrNotSupported, "llistxattr not implemented on s390x") var _p0 *byte
_p0, err = syscall.BytePtrFromString(path)
if err != nil {
return
}
var _p1 unsafe.Pointer
if len(dest) > 0 {
_p1 = unsafe.Pointer(&dest[0])
} else {
_p1 = unsafe.Pointer(&_zero)
}
r0, _, e1 := syscall.Syscall(syscall.SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
use(unsafe.Pointer(_p0))
sz = int(r0)
if e1 != 0 {
err = errnoErr(e1)
}
return
} }
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
func lremovexattr(path string, attr string) (err error) { func lremovexattr(path string, attr string) (err error) {
return errors.Wrap(ErrNotSupported, "lremovexattr not implemented on s390x") var _p0 *byte
_p0, err = syscall.BytePtrFromString(path)
if err != nil {
return
}
var _p1 *byte
_p1, err = syscall.BytePtrFromString(attr)
if err != nil {
return
}
_, _, e1 := syscall.Syscall(syscall.SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
use(unsafe.Pointer(_p0))
use(unsafe.Pointer(_p1))
if e1 != 0 {
err = errnoErr(e1)
}
return
} }
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
func lsetxattr(path string, attr string, data []byte, flags int) (err error) { func lsetxattr(path string, attr string, data []byte, flags int) (err error) {
return errors.Wrap(ErrNotSupported, "lsetxattr not implemented on s390x") var _p0 *byte
_p0, err = syscall.BytePtrFromString(path)
if err != nil {
return
}
var _p1 *byte
_p1, err = syscall.BytePtrFromString(attr)
if err != nil {
return
}
var _p2 unsafe.Pointer
if len(data) > 0 {
_p2 = unsafe.Pointer(&data[0])
} else {
_p2 = unsafe.Pointer(&_zero)
}
_, _, e1 := syscall.Syscall6(syscall.SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
use(unsafe.Pointer(_p0))
use(unsafe.Pointer(_p1))
if e1 != 0 {
err = errnoErr(e1)
}
return
} }
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
func lgetxattr(path string, attr string, dest []byte) (sz int, err error) { func lgetxattr(path string, attr string, dest []byte) (sz int, err error) {
return 0, errors.Wrap(ErrNotSupported, "lgetxattr not implemented on s390x") var _p0 *byte
_p0, err = syscall.BytePtrFromString(path)
if err != nil {
return
}
var _p1 *byte
_p1, err = syscall.BytePtrFromString(attr)
if err != nil {
return
}
var _p2 unsafe.Pointer
if len(dest) > 0 {
_p2 = unsafe.Pointer(&dest[0])
} else {
_p2 = unsafe.Pointer(&_zero)
}
r0, _, e1 := syscall.Syscall6(syscall.SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
use(unsafe.Pointer(_p0))
use(unsafe.Pointer(_p1))
sz = int(r0)
if e1 != 0 {
err = errnoErr(e1)
}
return
} }