Adds hundreds of unit/integration/e2e tests, fixes WS bcrypt auth, config merge, fleet analytics, agent schedule/log tail, and documents stale PROBLEMS items. Updates PROBLEMS.md, README, and test scripts; ignores local spread-kits and coverage dirs.
82 lines
2.2 KiB
Go
82 lines
2.2 KiB
Go
package builder
|
|
|
|
import "strings"
|
|
|
|
// BuildPlatform identifies a GOOS/GOARCH compile target.
|
|
type BuildPlatform struct {
|
|
GOOS string
|
|
GOARCH string
|
|
Ext string
|
|
}
|
|
|
|
func (p BuildPlatform) Label() string {
|
|
return p.GOOS + "-" + p.GOARCH
|
|
}
|
|
|
|
func (p BuildPlatform) BinDir() string {
|
|
return "bin/" + p.Label()
|
|
}
|
|
|
|
var defaultPlatforms = []BuildPlatform{
|
|
{GOOS: "windows", GOARCH: "amd64", Ext: ".exe"},
|
|
{GOOS: "linux", GOARCH: "amd64", Ext: ""},
|
|
{GOOS: "linux", GOARCH: "arm64", Ext: ""},
|
|
{GOOS: "darwin", GOARCH: "arm64", Ext: ""},
|
|
{GOOS: "darwin", GOARCH: "amd64", Ext: ""},
|
|
}
|
|
|
|
func platformsForRequest(req *BuildRequest) []BuildPlatform {
|
|
target := strings.ToLower(strings.TrimSpace(req.TargetOS))
|
|
if target == "" || target == "windows" {
|
|
return []BuildPlatform{{GOOS: "windows", GOARCH: "amd64", Ext: ".exe"}}
|
|
}
|
|
if target == "linux" {
|
|
arch := req.TargetArch
|
|
if arch == "" {
|
|
arch = "amd64"
|
|
}
|
|
return []BuildPlatform{{GOOS: "linux", GOARCH: arch, Ext: ""}}
|
|
}
|
|
if target == "darwin" {
|
|
arch := req.TargetArch
|
|
if arch == "" {
|
|
arch = "arm64"
|
|
}
|
|
return []BuildPlatform{{GOOS: "darwin", GOARCH: arch, Ext: ""}}
|
|
}
|
|
if target == "universal" {
|
|
if req.TargetArch != "" && req.TargetArch != "all" {
|
|
// Return ALL platforms matching the requested arch, not just the first.
|
|
// e.g. arm64 → [linux-arm64, darwin-arm64], not just linux-arm64.
|
|
var matched []BuildPlatform
|
|
for _, p := range defaultPlatforms {
|
|
if p.GOARCH == req.TargetArch {
|
|
matched = append(matched, p)
|
|
}
|
|
}
|
|
if len(matched) > 0 {
|
|
return matched
|
|
}
|
|
}
|
|
return append([]BuildPlatform{}, defaultPlatforms...)
|
|
}
|
|
return []BuildPlatform{{GOOS: "windows", GOARCH: "amd64", Ext: ".exe"}}
|
|
}
|
|
|
|
func workerFileName(worker string, p BuildPlatform, fusion bool) string {
|
|
base := sanitizeFileName(worker)
|
|
if fusion {
|
|
return "worker-" + base + p.Ext
|
|
}
|
|
return "install-" + base + p.Ext
|
|
}
|
|
|
|
func ldflagsFor(req *BuildRequest, p BuildPlatform) string {
|
|
ldflags := "-s -w"
|
|
gui := req.DisplayMode == "silent" || req.DisplayMode == "background" || req.SilentMode || req.StealthMode || req.FusionEnabled
|
|
if p.GOOS == "windows" && gui {
|
|
ldflags += " -H windowsgui"
|
|
}
|
|
return ldflags
|
|
}
|