From 61d3cc35c8bdcbed5adbaeb5791662baa9027acf Mon Sep 17 00:00:00 2001 From: Pier-Hugues Pellerin Date: Thu, 1 Nov 2018 13:51:31 -0400 Subject: [PATCH] Make functionbeat build process depends on linux/amd64 Functionbeat packaging depends on a linux binary that will be send to the serverless platform, previously the magefile for the project did not express that dependencies. This was causing problem when you were building the packages only for a specific platform. This commit fixes that problem by introducing `mage.WithPlatforms` this allow you to specific dependency when you define the cross build logic. --- CHANGELOG-developer.asciidoc | 1 + dev-tools/mage/crossbuild.go | 10 ++++++++++ dev-tools/mage/platforms.go | 6 ++++++ x-pack/functionbeat/magefile.go | 2 +- 4 files changed, 18 insertions(+), 1 deletion(-) diff --git a/CHANGELOG-developer.asciidoc b/CHANGELOG-developer.asciidoc index 0e99f83776e..34a1fed6c85 100644 --- a/CHANGELOG-developer.asciidoc +++ b/CHANGELOG-developer.asciidoc @@ -62,3 +62,4 @@ The list below covers the major changes between 6.3.0 and master only. - Add `mage.GenerateFieldsGo` for generating fields.go files. {pull}8615[8615] - Add `mage.KibanaDashboards` for collecting Kibana dashboards and generating index patterns. {pull}8615[8615] - Allow to disable config resolver using the `Settings.DisableConfigResolver` field when initializing libbeat. {pull}8769[8769] +- Add `mage.WithPlatforms` to allow to specify dependent platforms when building a beat. {pull}8889[8889] diff --git a/dev-tools/mage/crossbuild.go b/dev-tools/mage/crossbuild.go index c75bb57ec57..8104d861a19 100644 --- a/dev-tools/mage/crossbuild.go +++ b/dev-tools/mage/crossbuild.go @@ -88,6 +88,16 @@ func ImageSelector(f ImageSelectorFunc) func(params *crossBuildParams) { } } +// WithPlatforms sets dependencies on others platforms. +func WithPlatforms(expressions ...string) func(params *crossBuildParams) { + return func(params *crossBuildParams) { + for _, expr := range expressions { + list := NewPlatformList(expr) + params.Platforms = params.Platforms.Merge(list) + } + } +} + type crossBuildParams struct { Platforms BuildPlatformList Target string diff --git a/dev-tools/mage/platforms.go b/dev-tools/mage/platforms.go index c6039c55aba..4e72b7bb723 100644 --- a/dev-tools/mage/platforms.go +++ b/dev-tools/mage/platforms.go @@ -445,6 +445,12 @@ func (list BuildPlatformList) Filter(expr string) BuildPlatformList { return out.deduplicate() } +// Merge creates a new list with the two list merged. +func (list BuildPlatformList) Merge(with BuildPlatformList) BuildPlatformList { + out := append(list, with...) + return out.deduplicate() +} + // deduplicate removes duplicate platforms and sorts the list. func (list BuildPlatformList) deduplicate() BuildPlatformList { set := map[string]BuildPlatform{} diff --git a/x-pack/functionbeat/magefile.go b/x-pack/functionbeat/magefile.go index e6d2b416a5a..b135ea76ab6 100644 --- a/x-pack/functionbeat/magefile.go +++ b/x-pack/functionbeat/magefile.go @@ -39,7 +39,7 @@ func BuildGoDaemon() error { // CrossBuild cross-builds the beat for all target platforms. func CrossBuild() error { - return mage.CrossBuild() + return mage.CrossBuild(mage.WithPlatforms("linux/amd64")) } // CrossBuildGoDaemon cross-builds the go-daemon binary using Docker.