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.