You've already forked goreleaser
mirror of
https://github.com/goreleaser/goreleaser.git
synced 2025-06-17 00:17:53 +02:00
moving targets to buildtarget package as well
This commit is contained in:
93
internal/buildtarget/targets.go
Normal file
93
internal/buildtarget/targets.go
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
package buildtarget
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/apex/log"
|
||||||
|
"github.com/goreleaser/goreleaser/config"
|
||||||
|
)
|
||||||
|
|
||||||
|
// All returns all valid build targets for a given build
|
||||||
|
func All(build config.Build) (targets []Target) {
|
||||||
|
for _, target := range allBuildTargets(build) {
|
||||||
|
if !valid(target) {
|
||||||
|
log.WithField("target", target.String()).
|
||||||
|
Warn("skipped invalid build")
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if ignored(build, target) {
|
||||||
|
log.WithField("target", target.String()).
|
||||||
|
Warn("skipped ignored build")
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
targets = append(targets, target)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func allBuildTargets(build config.Build) (targets []Target) {
|
||||||
|
for _, goos := range build.Goos {
|
||||||
|
for _, goarch := range build.Goarch {
|
||||||
|
if goarch == "arm" {
|
||||||
|
for _, goarm := range build.Goarm {
|
||||||
|
targets = append(targets, New(goos, goarch, goarm))
|
||||||
|
}
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
targets = append(targets, New(goos, goarch, ""))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func ignored(build config.Build, target Target) bool {
|
||||||
|
for _, ig := range build.Ignore {
|
||||||
|
var ignored = New(ig.Goos, ig.Goarch, ig.Goarm)
|
||||||
|
if ignored == target {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
func valid(target Target) bool {
|
||||||
|
var s = target.OS + target.Arch
|
||||||
|
for _, a := range validTargets {
|
||||||
|
if a == s {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
// list from https://golang.org/doc/install/source#environment
|
||||||
|
var validTargets = []string{
|
||||||
|
"androidarm",
|
||||||
|
"darwin386",
|
||||||
|
"darwinamd64",
|
||||||
|
// "darwinarm", - requires admin rights and other ios stuff
|
||||||
|
// "darwinarm64", - requires admin rights and other ios stuff
|
||||||
|
"dragonflyamd64",
|
||||||
|
"freebsd386",
|
||||||
|
"freebsdamd64",
|
||||||
|
"freebsdarm",
|
||||||
|
"linux386",
|
||||||
|
"linuxamd64",
|
||||||
|
"linuxarm",
|
||||||
|
"linuxarm64",
|
||||||
|
"linuxppc64",
|
||||||
|
"linuxppc64le",
|
||||||
|
"linuxmips",
|
||||||
|
"linuxmipsle",
|
||||||
|
"linuxmips64",
|
||||||
|
"linuxmips64le",
|
||||||
|
"netbsd386",
|
||||||
|
"netbsdamd64",
|
||||||
|
"netbsdarm",
|
||||||
|
"openbsd386",
|
||||||
|
"openbsdamd64",
|
||||||
|
"openbsdarm",
|
||||||
|
"plan9386",
|
||||||
|
"plan9amd64",
|
||||||
|
"solarisamd64",
|
||||||
|
"windows386",
|
||||||
|
"windowsamd64",
|
||||||
|
}
|
@ -1,11 +1,10 @@
|
|||||||
package build
|
package buildtarget
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/goreleaser/goreleaser/config"
|
"github.com/goreleaser/goreleaser/config"
|
||||||
"github.com/goreleaser/goreleaser/internal/buildtarget"
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -38,17 +37,17 @@ func TestAllBuildTargets(t *testing.T) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
assert.Equal([]buildtarget.Target{
|
assert.Equal([]Target{
|
||||||
buildtarget.New("linux", "386", ""),
|
New("linux", "386", ""),
|
||||||
buildtarget.New("linux", "amd64", ""),
|
New("linux", "amd64", ""),
|
||||||
buildtarget.New("linux", "arm", "6"),
|
New("linux", "arm", "6"),
|
||||||
buildtarget.New("linux", "arm64", ""),
|
New("linux", "arm64", ""),
|
||||||
buildtarget.New("darwin", "amd64", ""),
|
New("darwin", "amd64", ""),
|
||||||
buildtarget.New("freebsd", "386", ""),
|
New("freebsd", "386", ""),
|
||||||
buildtarget.New("freebsd", "amd64", ""),
|
New("freebsd", "amd64", ""),
|
||||||
buildtarget.New("freebsd", "arm", "6"),
|
New("freebsd", "arm", "6"),
|
||||||
buildtarget.New("freebsd", "arm", "7"),
|
New("freebsd", "arm", "7"),
|
||||||
}, buildTargets(build))
|
}, All(build))
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGoosGoarchCombos(t *testing.T) {
|
func TestGoosGoarchCombos(t *testing.T) {
|
||||||
@ -94,7 +93,7 @@ func TestGoosGoarchCombos(t *testing.T) {
|
|||||||
}
|
}
|
||||||
for _, p := range platforms {
|
for _, p := range platforms {
|
||||||
t.Run(fmt.Sprintf("%v %v valid=%v", p.os, p.arch, p.valid), func(t *testing.T) {
|
t.Run(fmt.Sprintf("%v %v valid=%v", p.os, p.arch, p.valid), func(t *testing.T) {
|
||||||
assert.Equal(t, p.valid, valid(buildtarget.New(p.os, p.arch, "")))
|
assert.Equal(t, p.valid, valid(New(p.os, p.arch, "")))
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -43,7 +43,7 @@ func runPipeOnBuild(ctx *context.Context, build config.Build) error {
|
|||||||
}
|
}
|
||||||
sem := make(chan bool, 4)
|
sem := make(chan bool, 4)
|
||||||
var g errgroup.Group
|
var g errgroup.Group
|
||||||
for _, target := range buildTargets(build) {
|
for _, target := range buildtarget.All(build) {
|
||||||
sem <- true
|
sem <- true
|
||||||
target := target
|
target := target
|
||||||
build := build
|
build := build
|
||||||
|
@ -1,59 +0,0 @@
|
|||||||
package build
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/apex/log"
|
|
||||||
"github.com/goreleaser/goreleaser/config"
|
|
||||||
"github.com/goreleaser/goreleaser/internal/buildtarget"
|
|
||||||
)
|
|
||||||
|
|
||||||
func buildTargets(build config.Build) (targets []buildtarget.Target) {
|
|
||||||
for _, target := range allBuildTargets(build) {
|
|
||||||
if !valid(target) {
|
|
||||||
log.WithField("target", target.String()).
|
|
||||||
Warn("skipped invalid build")
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
if ignored(build, target) {
|
|
||||||
log.WithField("target", target.String()).
|
|
||||||
Warn("skipped ignored build")
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
targets = append(targets, target)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func allBuildTargets(build config.Build) (targets []buildtarget.Target) {
|
|
||||||
for _, goos := range build.Goos {
|
|
||||||
for _, goarch := range build.Goarch {
|
|
||||||
if goarch == "arm" {
|
|
||||||
for _, goarm := range build.Goarm {
|
|
||||||
targets = append(targets, buildtarget.New(goos, goarch, goarm))
|
|
||||||
}
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
targets = append(targets, buildtarget.New(goos, goarch, ""))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func ignored(build config.Build, target buildtarget.Target) bool {
|
|
||||||
for _, ig := range build.Ignore {
|
|
||||||
var ignored = buildtarget.New(ig.Goos, ig.Goarch, ig.Goarm)
|
|
||||||
if ignored == target {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
func valid(target buildtarget.Target) bool {
|
|
||||||
var s = target.OS + target.Arch
|
|
||||||
for _, a := range valids {
|
|
||||||
if a == s {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
|
@ -1,35 +0,0 @@
|
|||||||
package build
|
|
||||||
|
|
||||||
// list from https://golang.org/doc/install/source#environment
|
|
||||||
var valids = []string{
|
|
||||||
"androidarm",
|
|
||||||
"darwin386",
|
|
||||||
"darwinamd64",
|
|
||||||
// "darwinarm", - requires admin rights and other ios stuff
|
|
||||||
// "darwinarm64", - requires admin rights and other ios stuff
|
|
||||||
"dragonflyamd64",
|
|
||||||
"freebsd386",
|
|
||||||
"freebsdamd64",
|
|
||||||
"freebsdarm",
|
|
||||||
"linux386",
|
|
||||||
"linuxamd64",
|
|
||||||
"linuxarm",
|
|
||||||
"linuxarm64",
|
|
||||||
"linuxppc64",
|
|
||||||
"linuxppc64le",
|
|
||||||
"linuxmips",
|
|
||||||
"linuxmipsle",
|
|
||||||
"linuxmips64",
|
|
||||||
"linuxmips64le",
|
|
||||||
"netbsd386",
|
|
||||||
"netbsdamd64",
|
|
||||||
"netbsdarm",
|
|
||||||
"openbsd386",
|
|
||||||
"openbsdamd64",
|
|
||||||
"openbsdarm",
|
|
||||||
"plan9386",
|
|
||||||
"plan9amd64",
|
|
||||||
"solarisamd64",
|
|
||||||
"windows386",
|
|
||||||
"windowsamd64",
|
|
||||||
}
|
|
Reference in New Issue
Block a user