You've already forked goreleaser
mirror of
https://github.com/goreleaser/goreleaser.git
synced 2025-07-17 01:42:37 +02:00
feat: default GOARM change to 7 (#5157)
Guarded by an environment variable for now. Closes #5155
This commit is contained in:
committed by
GitHub
parent
15d54735ab
commit
0468da12fd
@ -15,6 +15,7 @@ import (
|
|||||||
"github.com/caarlos0/log"
|
"github.com/caarlos0/log"
|
||||||
"github.com/goreleaser/goreleaser/v2/internal/artifact"
|
"github.com/goreleaser/goreleaser/v2/internal/artifact"
|
||||||
"github.com/goreleaser/goreleaser/v2/internal/builders/buildtarget"
|
"github.com/goreleaser/goreleaser/v2/internal/builders/buildtarget"
|
||||||
|
"github.com/goreleaser/goreleaser/v2/internal/experimental"
|
||||||
"github.com/goreleaser/goreleaser/v2/internal/gio"
|
"github.com/goreleaser/goreleaser/v2/internal/gio"
|
||||||
"github.com/goreleaser/goreleaser/v2/internal/logext"
|
"github.com/goreleaser/goreleaser/v2/internal/logext"
|
||||||
"github.com/goreleaser/goreleaser/v2/internal/tmpl"
|
"github.com/goreleaser/goreleaser/v2/internal/tmpl"
|
||||||
@ -63,7 +64,7 @@ func (*Builder) WithDefaults(build config.Build) (config.Build, error) {
|
|||||||
build.Goarch = []string{"amd64", "arm64", "386"}
|
build.Goarch = []string{"amd64", "arm64", "386"}
|
||||||
}
|
}
|
||||||
if len(build.Goarm) == 0 {
|
if len(build.Goarm) == 0 {
|
||||||
build.Goarm = []string{"6"}
|
build.Goarm = []string{experimental.DefaultGOARM()}
|
||||||
}
|
}
|
||||||
if len(build.Gomips) == 0 {
|
if len(build.Gomips) == 0 {
|
||||||
build.Gomips = []string{"hardfloat"}
|
build.Gomips = []string{"hardfloat"}
|
||||||
|
31
internal/experimental/exp.go
Normal file
31
internal/experimental/exp.go
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
// Package experimental guards experimental features.
|
||||||
|
package experimental
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
envKey = "GORELEASER_EXPERIMENTAL"
|
||||||
|
defaultGOARMv7 = "defaultgoarm"
|
||||||
|
)
|
||||||
|
|
||||||
|
// DefaultGOARM considers the `defaultgoarm` experiment and returns the correct
|
||||||
|
// value.
|
||||||
|
func DefaultGOARM() string {
|
||||||
|
if has(defaultGOARMv7) {
|
||||||
|
return "7"
|
||||||
|
}
|
||||||
|
return "6"
|
||||||
|
}
|
||||||
|
|
||||||
|
func has(e string) bool {
|
||||||
|
experiments := strings.Split(os.Getenv(envKey), ",")
|
||||||
|
for _, exp := range experiments {
|
||||||
|
if exp == e {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
25
internal/experimental/exp_test.go
Normal file
25
internal/experimental/exp_test.go
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
package experimental
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestDefaultGoarm(t *testing.T) {
|
||||||
|
t.Run("not set", func(t *testing.T) {
|
||||||
|
require.Equal(t, "6", DefaultGOARM())
|
||||||
|
})
|
||||||
|
t.Run("empty", func(t *testing.T) {
|
||||||
|
t.Setenv(envKey, "")
|
||||||
|
require.Equal(t, "6", DefaultGOARM())
|
||||||
|
})
|
||||||
|
t.Run("notset", func(t *testing.T) {
|
||||||
|
t.Setenv(envKey, "otherexp")
|
||||||
|
require.Equal(t, "6", DefaultGOARM())
|
||||||
|
})
|
||||||
|
t.Run("set", func(t *testing.T) {
|
||||||
|
t.Setenv(envKey, "foo,"+defaultGOARMv7+",somethingelse")
|
||||||
|
require.Equal(t, "7", DefaultGOARM())
|
||||||
|
})
|
||||||
|
}
|
@ -16,6 +16,7 @@ import (
|
|||||||
"github.com/goreleaser/goreleaser/v2/internal/artifact"
|
"github.com/goreleaser/goreleaser/v2/internal/artifact"
|
||||||
"github.com/goreleaser/goreleaser/v2/internal/client"
|
"github.com/goreleaser/goreleaser/v2/internal/client"
|
||||||
"github.com/goreleaser/goreleaser/v2/internal/commitauthor"
|
"github.com/goreleaser/goreleaser/v2/internal/commitauthor"
|
||||||
|
"github.com/goreleaser/goreleaser/v2/internal/experimental"
|
||||||
"github.com/goreleaser/goreleaser/v2/internal/pipe"
|
"github.com/goreleaser/goreleaser/v2/internal/pipe"
|
||||||
"github.com/goreleaser/goreleaser/v2/internal/skips"
|
"github.com/goreleaser/goreleaser/v2/internal/skips"
|
||||||
"github.com/goreleaser/goreleaser/v2/internal/tmpl"
|
"github.com/goreleaser/goreleaser/v2/internal/tmpl"
|
||||||
@ -64,7 +65,7 @@ func (Pipe) Default(ctx *context.Context) error {
|
|||||||
brew.Name = ctx.Config.ProjectName
|
brew.Name = ctx.Config.ProjectName
|
||||||
}
|
}
|
||||||
if brew.Goarm == "" {
|
if brew.Goarm == "" {
|
||||||
brew.Goarm = "6"
|
brew.Goarm = experimental.DefaultGOARM()
|
||||||
}
|
}
|
||||||
if brew.Goamd64 == "" {
|
if brew.Goamd64 == "" {
|
||||||
brew.Goamd64 = "v1"
|
brew.Goamd64 = "v1"
|
||||||
|
@ -12,6 +12,7 @@ import (
|
|||||||
|
|
||||||
"github.com/caarlos0/log"
|
"github.com/caarlos0/log"
|
||||||
"github.com/goreleaser/goreleaser/v2/internal/artifact"
|
"github.com/goreleaser/goreleaser/v2/internal/artifact"
|
||||||
|
"github.com/goreleaser/goreleaser/v2/internal/experimental"
|
||||||
"github.com/goreleaser/goreleaser/v2/internal/gio"
|
"github.com/goreleaser/goreleaser/v2/internal/gio"
|
||||||
"github.com/goreleaser/goreleaser/v2/internal/ids"
|
"github.com/goreleaser/goreleaser/v2/internal/ids"
|
||||||
"github.com/goreleaser/goreleaser/v2/internal/pipe"
|
"github.com/goreleaser/goreleaser/v2/internal/pipe"
|
||||||
@ -66,7 +67,7 @@ func (Pipe) Default(ctx *context.Context) error {
|
|||||||
docker.Goarch = "amd64"
|
docker.Goarch = "amd64"
|
||||||
}
|
}
|
||||||
if docker.Goarm == "" {
|
if docker.Goarm == "" {
|
||||||
docker.Goarm = "6"
|
docker.Goarm = experimental.DefaultGOARM()
|
||||||
}
|
}
|
||||||
if docker.Goamd64 == "" {
|
if docker.Goamd64 == "" {
|
||||||
docker.Goamd64 = "v1"
|
docker.Goamd64 = "v1"
|
||||||
|
@ -6,6 +6,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/charmbracelet/x/exp/ordered"
|
"github.com/charmbracelet/x/exp/ordered"
|
||||||
|
"github.com/goreleaser/goreleaser/v2/internal/experimental"
|
||||||
"github.com/goreleaser/goreleaser/v2/pkg/context"
|
"github.com/goreleaser/goreleaser/v2/pkg/context"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -29,7 +30,7 @@ func getFilter() string {
|
|||||||
target = target + "_" + goamd64
|
target = target + "_" + goamd64
|
||||||
}
|
}
|
||||||
if strings.HasSuffix(target, "_arm") {
|
if strings.HasSuffix(target, "_arm") {
|
||||||
goarm := ordered.First(os.Getenv("GGOARM"), os.Getenv("GOARM"), "6")
|
goarm := ordered.First(os.Getenv("GGOARM"), os.Getenv("GOARM"), experimental.DefaultGOARM())
|
||||||
target = target + "_" + goarm
|
target = target + "_" + goarm
|
||||||
}
|
}
|
||||||
if strings.HasSuffix(target, "_mips") ||
|
if strings.HasSuffix(target, "_mips") ||
|
||||||
|
@ -162,6 +162,9 @@ func ToEnv(env []string) Env {
|
|||||||
if !ok || k == "" {
|
if !ok || k == "" {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
if k == "GORELEASER_EXPERIMENTAL" {
|
||||||
|
os.Setenv(k, v)
|
||||||
|
}
|
||||||
r[k] = v
|
r[k] = v
|
||||||
}
|
}
|
||||||
return r
|
return r
|
||||||
|
22
www/docs/experiments.md
Normal file
22
www/docs/experiments.md
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
# Experimental features
|
||||||
|
|
||||||
|
Much like Go, GoReleaser can be told to use an experimental feature via
|
||||||
|
environment variables.
|
||||||
|
|
||||||
|
Currently, the following experiments are available.
|
||||||
|
|
||||||
|
## Default `GOARM` change to `7`
|
||||||
|
|
||||||
|
Historically, GoReleaser sets `GOARM` to `6` by default.
|
||||||
|
You can make it use `7` instead by setting:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
export GORELEASER_EXPERIMENTAL="defaultgoarm"
|
||||||
|
```
|
||||||
|
|
||||||
|
This will be default behavior in GoReleaser v3.
|
||||||
|
|
||||||
|
!!! tip
|
||||||
|
|
||||||
|
You can also set the `GORELEASER_EXPERIMENTAL` variable in `env` array in
|
||||||
|
your `.goreleaser.yml`.
|
@ -194,6 +194,7 @@ nav:
|
|||||||
- sponsors.md
|
- sponsors.md
|
||||||
- users.md
|
- users.md
|
||||||
- deprecations.md
|
- deprecations.md
|
||||||
|
- experiments.md
|
||||||
- Common errors:
|
- Common errors:
|
||||||
- errors/version.md
|
- errors/version.md
|
||||||
- errors/dirty.md
|
- errors/dirty.md
|
||||||
|
Reference in New Issue
Block a user