diff --git a/.go-version b/.go-version index 587c5f0c7309..7b4d9a4ff9bc 100644 --- a/.go-version +++ b/.go-version @@ -1 +1 @@ -1.10.3 +1.10.6 diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index d38f6234227c..c55ab334c3cb 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -33,6 +33,8 @@ https://github.com/elastic/beats/compare/v6.5.3...6.5[Check the HEAD diff] *Affecting all Beats* +- Update Golang to 1.10.6. {pull}9563[9563] + *Auditbeat* *Filebeat* diff --git a/NOTICE.txt b/NOTICE.txt index 08b1d4b02995..a2fc20411227 100644 --- a/NOTICE.txt +++ b/NOTICE.txt @@ -649,7 +649,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------- Dependency: github.com/fsnotify/fsevents -Revision: 4d5197691b054c220286f7c6ea167de9753d902d +Revision: e1d381a4d27063baac2e9d3c5887ceb4ab059287 License type (autodetected): BSD-3-Clause ./vendor/github.com/fsnotify/fsevents/LICENSE: -------------------------------------------------------------------- diff --git a/auditbeat/Dockerfile b/auditbeat/Dockerfile index 5cfb18d46a55..df38254e1692 100644 --- a/auditbeat/Dockerfile +++ b/auditbeat/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.10.3 +FROM golang:1.10.6 MAINTAINER Nicolas Ruflin RUN set -x && \ diff --git a/filebeat/Dockerfile b/filebeat/Dockerfile index b6a6a9b2a464..a9a999b33e96 100644 --- a/filebeat/Dockerfile +++ b/filebeat/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.10.3 +FROM golang:1.10.6 MAINTAINER Nicolas Ruflin RUN set -x && \ diff --git a/heartbeat/Dockerfile b/heartbeat/Dockerfile index 222f4944ba8a..d7548a769e64 100644 --- a/heartbeat/Dockerfile +++ b/heartbeat/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.10.3 +FROM golang:1.10.6 MAINTAINER Nicolas Ruflin RUN set -x && \ diff --git a/journalbeat/Dockerfile b/journalbeat/Dockerfile index 975fce8f3820..40ffb4c86b68 100644 --- a/journalbeat/Dockerfile +++ b/journalbeat/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.10.3 +FROM golang:1.10.6 MAINTAINER Noémi Ványi RUN set -x && \ diff --git a/libbeat/Dockerfile b/libbeat/Dockerfile index 4c9a303bd4de..a3eb0efaf23b 100644 --- a/libbeat/Dockerfile +++ b/libbeat/Dockerfile @@ -1,5 +1,5 @@ # Beats dockerfile used for testing -FROM golang:1.10.3 +FROM golang:1.10.6 MAINTAINER Nicolas Ruflin RUN set -x && \ diff --git a/libbeat/docs/version.asciidoc b/libbeat/docs/version.asciidoc index 8048b566721f..bb70bbf093ba 100644 --- a/libbeat/docs/version.asciidoc +++ b/libbeat/docs/version.asciidoc @@ -1,6 +1,6 @@ :stack-version: 6.5.3 :doc-branch: 6.5 -:go-version: 1.10.3 +:go-version: 1.10.6 :release-state: released :python: 2.7.9 :docker: 1.12 diff --git a/metricbeat/Dockerfile b/metricbeat/Dockerfile index 8ab5e06e414e..261e08ee6b73 100644 --- a/metricbeat/Dockerfile +++ b/metricbeat/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.10.3 +FROM golang:1.10.6 MAINTAINER Nicolas Ruflin RUN set -x && \ diff --git a/metricbeat/module/http/_meta/Dockerfile b/metricbeat/module/http/_meta/Dockerfile index d67abee2cd0e..8922a010c05f 100644 --- a/metricbeat/module/http/_meta/Dockerfile +++ b/metricbeat/module/http/_meta/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.10.3 +FROM golang:1.10.6 COPY test/main.go main.go diff --git a/vendor/github.com/fsnotify/fsevents/go_1_10_after.go b/vendor/github.com/fsnotify/fsevents/go_1_10_after.go new file mode 100644 index 000000000000..db7824c66915 --- /dev/null +++ b/vendor/github.com/fsnotify/fsevents/go_1_10_after.go @@ -0,0 +1,27 @@ +// +build darwin,go1.10 + +package fsevents + +/* +#include +*/ +import "C" + +const ( + nullCFStringRef = C.CFStringRef(0) + nullCFUUIDRef = C.CFUUIDRef(0) +) + +// NOTE: The following code is identical between go_1_10_after and go_1_10_before, +// however versions of Go 1.10.x prior to 1.10.4 fail to compile when the code utilizing +// the above constants is in a different file (wrap.go). + +// GetDeviceUUID retrieves the UUID required to identify an EventID +// in the FSEvents database +func GetDeviceUUID(deviceID int32) string { + uuid := C.FSEventsCopyUUIDForDevice(C.dev_t(deviceID)) + if uuid == nullCFUUIDRef { + return "" + } + return cfStringToGoString(C.CFUUIDCreateString(C.kCFAllocatorDefault, uuid)) +} diff --git a/vendor/github.com/fsnotify/fsevents/go_1_10_before.go b/vendor/github.com/fsnotify/fsevents/go_1_10_before.go new file mode 100644 index 000000000000..4ddd444130a1 --- /dev/null +++ b/vendor/github.com/fsnotify/fsevents/go_1_10_before.go @@ -0,0 +1,25 @@ +// +build darwin,!go1.10 + +package fsevents + +/* +#include +*/ +import "C" + +var ( + nullCFStringRef = C.CFStringRef(nil) + nullCFUUIDRef = C.CFUUIDRef(nil) +) + +// NOTE: The following code is identical between go_1_10_after and go_1_10_before. + +// GetDeviceUUID retrieves the UUID required to identify an EventID +// in the FSEvents database +func GetDeviceUUID(deviceID int32) string { + uuid := C.FSEventsCopyUUIDForDevice(C.dev_t(deviceID)) + if uuid == nullCFUUIDRef { + return "" + } + return cfStringToGoString(C.CFUUIDCreateString(C.kCFAllocatorDefault, uuid)) +} diff --git a/vendor/github.com/fsnotify/fsevents/go_1_9_2_after.go b/vendor/github.com/fsnotify/fsevents/go_1_9_2_after.go new file mode 100644 index 000000000000..4164f9c7e910 --- /dev/null +++ b/vendor/github.com/fsnotify/fsevents/go_1_9_2_after.go @@ -0,0 +1,11 @@ +// +build darwin,go1.9.2 + +package fsevents + +/* +#include +*/ +import "C" + +// eventIDSinceNow is a sentinel to begin watching events "since now". +const eventIDSinceNow = uint64(C.kFSEventStreamEventIdSinceNow) diff --git a/vendor/github.com/fsnotify/fsevents/go_1_9_2_before.go b/vendor/github.com/fsnotify/fsevents/go_1_9_2_before.go new file mode 100644 index 000000000000..e1806e97c939 --- /dev/null +++ b/vendor/github.com/fsnotify/fsevents/go_1_9_2_before.go @@ -0,0 +1,13 @@ +// +build darwin,!go1.9.2 + +package fsevents + +// Prior to Go 1.9.2, converting C.kFSEventStreamEventIdSinceNow to a uint64 +// results in the error: "constant -1 overflows uint64". +// Related Go issue: https://github.com/golang/go/issues/21708 + +// Hardcoding the value here from FSEvents.h: +// kFSEventStreamEventIdSinceNow = 0xFFFFFFFFFFFFFFFFULL + +// eventIDSinceNow is a sentinel to begin watching events "since now". +const eventIDSinceNow = uint64(0xFFFFFFFFFFFFFFFF) diff --git a/vendor/github.com/fsnotify/fsevents/wrap.go b/vendor/github.com/fsnotify/fsevents/wrap.go index 6e4e418f18d9..b3ce5d95ec71 100644 --- a/vendor/github.com/fsnotify/fsevents/wrap.go +++ b/vendor/github.com/fsnotify/fsevents/wrap.go @@ -1,4 +1,4 @@ -// +build darwin,go1.10 +// +build darwin package fsevents @@ -34,9 +34,6 @@ import ( "unsafe" ) -// eventIDSinceNow is a sentinel to begin watching events "since now". -const eventIDSinceNow = uint64(C.kFSEventStreamEventIdSinceNow) - // LatestEventID returns the most recently generated event ID, system-wide. func LatestEventID() uint64 { return uint64(C.FSEventsGetCurrentEventId()) @@ -105,21 +102,11 @@ func GetStreamRefPaths(f FSEventStreamRef) []string { return ss } -// GetDeviceUUID retrieves the UUID required to identify an EventID -// in the FSEvents database -func GetDeviceUUID(deviceID int32) string { - uuid := C.FSEventsCopyUUIDForDevice(C.dev_t(deviceID)) - if uuid == C.CFUUIDRef(0) { - return "" - } - return cfStringToGoString(C.CFUUIDCreateString(nil, uuid)) -} - func cfStringToGoString(cfs C.CFStringRef) string { - if cfs == 0 { + if cfs == nullCFStringRef { return "" } - cfStr := C.CFStringCreateCopy(nil, cfs) + cfStr := copyCFString(cfs) length := C.CFStringGetLength(cfStr) if length == 0 { // short-cut for empty strings @@ -148,6 +135,11 @@ func cfStringToGoString(cfs C.CFStringRef) string { return *(*string)(unsafe.Pointer(strHeader)) } +// copyCFString makes an immutable copy of a string with CFStringCreateCopy. +func copyCFString(cfs C.CFStringRef) C.CFStringRef { + return C.CFStringCreateCopy(C.kCFAllocatorDefault, cfs) +} + // CFRunLoopRef wraps C.CFRunLoopRef type CFRunLoopRef C.CFRunLoopRef @@ -169,10 +161,7 @@ func createPaths(paths []string) (C.CFArrayRef, error) { // because of them errs = append(errs, err) } - cpath := C.CString(p) - defer C.free(unsafe.Pointer(cpath)) - - str := C.CFStringCreateWithCString(nil, cpath, C.kCFStringEncodingUTF8) + str := makeCFString(p) C.CFArrayAppendValue(C.CFMutableArrayRef(cPaths), unsafe.Pointer(str)) } var err error @@ -182,6 +171,13 @@ func createPaths(paths []string) (C.CFArrayRef, error) { return cPaths, err } +// makeCFString makes an immutable string with CFStringCreateWithCString. +func makeCFString(str string) C.CFStringRef { + s := C.CString(str) + defer C.free(unsafe.Pointer(s)) + return C.CFStringCreateWithCString(C.kCFAllocatorDefault, s, C.kCFStringEncodingUTF8) +} + // CFArrayLen retrieves the length of CFArray type // See https://developer.apple.com/library/mac/documentation/CoreFoundation/Reference/CFArrayRef/#//apple_ref/c/func/CFArrayGetCount func cfArrayLen(ref C.CFArrayRef) int { diff --git a/vendor/github.com/fsnotify/fsevents/wrap_deprecated.go b/vendor/github.com/fsnotify/fsevents/wrap_deprecated.go deleted file mode 100644 index 5493428bd71b..000000000000 --- a/vendor/github.com/fsnotify/fsevents/wrap_deprecated.go +++ /dev/null @@ -1,276 +0,0 @@ -// +build darwin,!go1.10 - -package fsevents - -/* -#cgo LDFLAGS: -framework CoreServices -#include -#include - -static CFArrayRef ArrayCreateMutable(int len) { - return CFArrayCreateMutable(NULL, len, &kCFTypeArrayCallBacks); -} - -extern void fsevtCallback(FSEventStreamRef p0, uintptr_t info, size_t p1, char** p2, FSEventStreamEventFlags* p3, FSEventStreamEventId* p4); - -static FSEventStreamRef EventStreamCreateRelativeToDevice(FSEventStreamContext * context, uintptr_t info, dev_t dev, CFArrayRef paths, FSEventStreamEventId since, CFTimeInterval latency, FSEventStreamCreateFlags flags) { - context->info = (void*) info; - return FSEventStreamCreateRelativeToDevice(NULL, (FSEventStreamCallback) fsevtCallback, context, dev, paths, since, latency, flags); -} - -static FSEventStreamRef EventStreamCreate(FSEventStreamContext * context, uintptr_t info, CFArrayRef paths, FSEventStreamEventId since, CFTimeInterval latency, FSEventStreamCreateFlags flags) { - context->info = (void*) info; - return FSEventStreamCreate(NULL, (FSEventStreamCallback) fsevtCallback, context, paths, since, latency, flags); -} -*/ -import "C" -import ( - "fmt" - "log" - "path/filepath" - "reflect" - "runtime" - "time" - "unsafe" -) - -// eventIDSinceNow is a sentinel to begin watching events "since now". -// NOTE: Go 1.9.2 broke compatibility here, for 1.9.1 and earlier we did: -// uint64(C.kFSEventStreamEventIdSinceNow + (1 << 64)) -// But 1.9.2+ complains about overflow and requires: -// uint64(C.kFSEventStreamEventIdSinceNow) -// There does not seem to be an easy way to rectify, so hardcoding the value -// here from FSEvents.h: -// kFSEventStreamEventIdSinceNow = 0xFFFFFFFFFFFFFFFFULL -const eventIDSinceNow = uint64(0xFFFFFFFFFFFFFFFF) - -// LatestEventID returns the most recently generated event ID, system-wide. -func LatestEventID() uint64 { - return uint64(C.FSEventsGetCurrentEventId()) -} - -// arguments are released by C at the end of the callback. Ensure copies -// are made if data is expected to persist beyond this function ending. -// -//export fsevtCallback -func fsevtCallback(stream C.FSEventStreamRef, info uintptr, numEvents C.size_t, cpaths **C.char, cflags *C.FSEventStreamEventFlags, cids *C.FSEventStreamEventId) { - l := int(numEvents) - events := make([]Event, l) - - es := registry.Get(info) - if es == nil { - log.Printf("failed to retrieve registry %d", info) - return - } - // These slices are backed by C data. Ensure data is copied out - // if it expected to exist outside of this function. - paths := (*[1 << 30]*C.char)(unsafe.Pointer(cpaths))[:l:l] - ids := (*[1 << 30]C.FSEventStreamEventId)(unsafe.Pointer(cids))[:l:l] - flags := (*[1 << 30]C.FSEventStreamEventFlags)(unsafe.Pointer(cflags))[:l:l] - for i := range events { - events[i] = Event{ - Path: C.GoString(paths[i]), - Flags: EventFlags(flags[i]), - ID: uint64(ids[i]), - } - es.EventID = uint64(ids[i]) - } - - es.Events <- events -} - -// FSEventStreamRef wraps C.FSEventStreamRef -type FSEventStreamRef C.FSEventStreamRef - -// GetStreamRefEventID retrieves the last EventID from the ref -func GetStreamRefEventID(f FSEventStreamRef) uint64 { - return uint64(C.FSEventStreamGetLatestEventId(f)) -} - -// GetStreamRefDeviceID retrieves the device ID the stream is watching -func GetStreamRefDeviceID(f FSEventStreamRef) int32 { - return int32(C.FSEventStreamGetDeviceBeingWatched(f)) -} - -// GetStreamRefDescription retrieves debugging description information -// about the StreamRef -func GetStreamRefDescription(f FSEventStreamRef) string { - return cfStringToGoString(C.FSEventStreamCopyDescription(f)) -} - -// GetStreamRefPaths returns a copy of the paths being watched by -// this stream -func GetStreamRefPaths(f FSEventStreamRef) []string { - arr := C.FSEventStreamCopyPathsBeingWatched(f) - l := cfArrayLen(arr) - - ss := make([]string, l) - for i := range ss { - void := C.CFArrayGetValueAtIndex(arr, C.CFIndex(i)) - ss[i] = cfStringToGoString(C.CFStringRef(void)) - } - return ss -} - -// GetDeviceUUID retrieves the UUID required to identify an EventID -// in the FSEvents database -func GetDeviceUUID(deviceID int32) string { - uuid := C.FSEventsCopyUUIDForDevice(C.dev_t(deviceID)) - if uuid == nil { - return "" - } - return cfStringToGoString(C.CFUUIDCreateString(nil, uuid)) -} - -func cfStringToGoString(cfs C.CFStringRef) string { - if cfs == nil { - return "" - } - cfStr := C.CFStringCreateCopy(nil, cfs) - length := C.CFStringGetLength(cfStr) - if length == 0 { - // short-cut for empty strings - return "" - } - cfRange := C.CFRange{0, length} - enc := C.CFStringEncoding(C.kCFStringEncodingUTF8) - // first find the buffer size necessary - var usedBufLen C.CFIndex - if C.CFStringGetBytes(cfStr, cfRange, enc, 0, C.false, nil, 0, &usedBufLen) == 0 { - return "" - } - - bs := make([]byte, usedBufLen) - buf := (*C.UInt8)(unsafe.Pointer(&bs[0])) - if C.CFStringGetBytes(cfStr, cfRange, enc, 0, C.false, buf, usedBufLen, nil) == 0 { - return "" - } - - // Create a string (byte array) backed by C byte array - header := (*reflect.SliceHeader)(unsafe.Pointer(&bs)) - strHeader := &reflect.StringHeader{ - Data: header.Data, - Len: header.Len, - } - return *(*string)(unsafe.Pointer(strHeader)) -} - -// CFRunLoopRef wraps C.CFRunLoopRef -type CFRunLoopRef C.CFRunLoopRef - -// EventIDForDeviceBeforeTime returns an event ID before a given time. -func EventIDForDeviceBeforeTime(dev int32, before time.Time) uint64 { - tm := C.CFAbsoluteTime(before.Unix()) - return uint64(C.FSEventsGetLastEventIdForDeviceBeforeTime(C.dev_t(dev), tm)) -} - -// createPaths accepts the user defined set of paths and returns FSEvents -// compatible array of paths -func createPaths(paths []string) (C.CFArrayRef, error) { - cPaths := C.ArrayCreateMutable(C.int(len(paths))) - var errs []error - for _, path := range paths { - p, err := filepath.Abs(path) - if err != nil { - // hack up some reporting errors, but don't prevent execution - // because of them - errs = append(errs, err) - } - cpath := C.CString(p) - defer C.free(unsafe.Pointer(cpath)) - - str := C.CFStringCreateWithCString(nil, cpath, C.kCFStringEncodingUTF8) - C.CFArrayAppendValue(cPaths, unsafe.Pointer(str)) - } - var err error - if len(errs) > 0 { - err = fmt.Errorf("%q", errs) - } - return cPaths, err -} - -// CFArrayLen retrieves the length of CFArray type -// See https://developer.apple.com/library/mac/documentation/CoreFoundation/Reference/CFArrayRef/#//apple_ref/c/func/CFArrayGetCount -func cfArrayLen(ref C.CFArrayRef) int { - // FIXME: this will probably crash on 32bit, untested - // requires OS X v10.0 - return int(C.CFArrayGetCount(ref)) -} - -func setupStream(paths []string, flags CreateFlags, callbackInfo uintptr, eventID uint64, latency time.Duration, deviceID int32) FSEventStreamRef { - cPaths, err := createPaths(paths) - if err != nil { - log.Printf("Error creating paths: %s", err) - } - defer C.CFRelease(C.CFTypeRef(cPaths)) - - since := C.FSEventStreamEventId(eventID) - context := C.FSEventStreamContext{} - info := C.uintptr_t(callbackInfo) - cfinv := C.CFTimeInterval(float64(latency) / float64(time.Second)) - - var ref C.FSEventStreamRef - if deviceID != 0 { - ref = C.EventStreamCreateRelativeToDevice(&context, info, - C.dev_t(deviceID), cPaths, since, cfinv, - C.FSEventStreamCreateFlags(flags)) - } else { - ref = C.EventStreamCreate(&context, info, cPaths, since, - cfinv, C.FSEventStreamCreateFlags(flags)) - } - - return FSEventStreamRef(ref) -} - -func (es *EventStream) start(paths []string, callbackInfo uintptr) { - - since := eventIDSinceNow - if es.Resume { - since = es.EventID - } - - es.stream = setupStream(paths, es.Flags, callbackInfo, since, es.Latency, es.Device) - - started := make(chan struct{}) - - go func() { - runtime.LockOSThread() - es.rlref = CFRunLoopRef(C.CFRunLoopGetCurrent()) - C.FSEventStreamScheduleWithRunLoop(es.stream, es.rlref, C.kCFRunLoopDefaultMode) - C.FSEventStreamStart(es.stream) - close(started) - C.CFRunLoopRun() - }() - - if !es.hasFinalizer { - // TODO: There is no guarantee this run before program exit - // and could result in panics at exit. - runtime.SetFinalizer(es, finalizer) - es.hasFinalizer = true - } - - <-started -} - -func finalizer(es *EventStream) { - // If an EventStream is freed without Stop being called it will - // cause a panic. This avoids that, and closes the stream instead. - es.Stop() -} - -// flush drains the event stream of undelivered events -func flush(stream FSEventStreamRef, sync bool) { - if sync { - C.FSEventStreamFlushSync(stream) - } else { - C.FSEventStreamFlushAsync(stream) - } -} - -// stop requests fsevents stops streaming events -func stop(stream FSEventStreamRef, rlref CFRunLoopRef) { - C.FSEventStreamStop(stream) - C.FSEventStreamInvalidate(stream) - C.FSEventStreamRelease(stream) - C.CFRunLoopStop(rlref) -} diff --git a/vendor/vendor.json b/vendor/vendor.json index 886ef619d636..6323ee10d9a7 100644 --- a/vendor/vendor.json +++ b/vendor/vendor.json @@ -1376,11 +1376,11 @@ "versionExact": "v1.5.0" }, { - "checksumSHA1": "TmMTaJIWueXrKneUOKMOgq75fKE=", + "checksumSHA1": "4ZEyxKIsoeECu8pA7mK4mjiUvpw=", "origin": "github.com/elastic/fsevents", "path": "github.com/fsnotify/fsevents", - "revision": "4d5197691b054c220286f7c6ea167de9753d902d", - "revisionTime": "2018-05-02T14:11:16Z", + "revision": "e1d381a4d27063baac2e9d3c5887ceb4ab059287", + "revisionTime": "2018-10-29T22:35:31Z", "tree": true }, { diff --git a/x-pack/functionbeat/Dockerfile b/x-pack/functionbeat/Dockerfile index b34fa982756c..6885214c3a74 100644 --- a/x-pack/functionbeat/Dockerfile +++ b/x-pack/functionbeat/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.10.3 +FROM golang:1.10.6 MAINTAINER Pier-Hugues Pellerin RUN set -x && \