forked from mirror/logrus
reduce the list of cross build target
This commit is contained in:
parent
accc7da667
commit
51f2599bdd
|
@ -1,3 +1,4 @@
|
||||||
|
//go:build mage
|
||||||
// +build mage
|
// +build mage
|
||||||
|
|
||||||
package main
|
package main
|
||||||
|
@ -7,13 +8,34 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"path"
|
"path"
|
||||||
|
"sort"
|
||||||
|
|
||||||
"github.com/magefile/mage/mg"
|
"github.com/magefile/mage/mg"
|
||||||
"github.com/magefile/mage/sh"
|
"github.com/magefile/mage/sh"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func intersect(a, b []string) []string {
|
||||||
|
sort.Strings(a)
|
||||||
|
sort.Strings(b)
|
||||||
|
|
||||||
|
res := make([]string, 0, func() int {
|
||||||
|
if len(a) < len(b) {
|
||||||
|
return len(a)
|
||||||
|
}
|
||||||
|
return len(b)
|
||||||
|
}())
|
||||||
|
|
||||||
|
for _, v := range a {
|
||||||
|
idx := sort.SearchStrings(b, v)
|
||||||
|
if idx < len(b) && b[idx] == v {
|
||||||
|
res = append(res, v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
|
||||||
// getBuildMatrix returns the build matrix from the current version of the go compiler
|
// getBuildMatrix returns the build matrix from the current version of the go compiler
|
||||||
func getBuildMatrix() (map[string][]string, error) {
|
func getFullBuildMatrix() (map[string][]string, error) {
|
||||||
jsonData, err := sh.Output("go", "tool", "dist", "list", "-json")
|
jsonData, err := sh.Output("go", "tool", "dist", "list", "-json")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -38,6 +60,31 @@ func getBuildMatrix() (map[string][]string, error) {
|
||||||
return matrix, nil
|
return matrix, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func getBuildMatrix() (map[string][]string, error) {
|
||||||
|
minimalMatrix := map[string][]string{
|
||||||
|
"linux": []string{"amd64"},
|
||||||
|
"darwin": []string{"amd64", "arm64"},
|
||||||
|
"freebsd": []string{"amd64"},
|
||||||
|
"js": []string{"wasm"},
|
||||||
|
"solaris": []string{"amd64"},
|
||||||
|
"windows": []string{"amd64", "arm64"},
|
||||||
|
}
|
||||||
|
|
||||||
|
fullMatrix, err := getFullBuildMatrix()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
for os, arches := range minimalMatrix {
|
||||||
|
if fullV, ok := fullMatrix[os]; !ok {
|
||||||
|
delete(minimalMatrix, os)
|
||||||
|
} else {
|
||||||
|
minimalMatrix[os] = intersect(arches, fullV)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return minimalMatrix, nil
|
||||||
|
}
|
||||||
|
|
||||||
func CrossBuild() error {
|
func CrossBuild() error {
|
||||||
matrix, err := getBuildMatrix()
|
matrix, err := getBuildMatrix()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
Loading…
Reference in New Issue