diff --git a/build.go b/build.go index ff29c00..b9096f7 100644 --- a/build.go +++ b/build.go @@ -146,6 +146,20 @@ func buildPackage(ctx context.Context, script string, mgr manager.Manager) ([]st return nil, nil, err } + if !archMatches(vars.Architectures) { + var buildAnyway bool + survey.AskOne( + &survey.Confirm{ + Message: "Your system's CPU architecture doesn't match this package. Do you want to build anyway?", + Default: true, + }, + &buildAnyway, + ) + if !buildAnyway { + os.Exit(1) + } + } + log.Info("Building package").Str("name", vars.Name).Str("version", vars.Version).Send() baseDir := filepath.Join(cacheDir, "pkgs", vars.Name) @@ -525,6 +539,20 @@ func getBuildVars(ctx context.Context, script string, info *distro.OSRelease) (* return &vars, nil } +func archMatches(architectures []string) bool { + arch := runtime.GOARCH + + if arch == "arm" { + arch = cpu.ARMVariant() + } + + if slices.Contains(architectures, "arm") { + architectures = append(architectures, cpu.ARMVariant()) + } + + return slices.Contains(architectures, arch) +} + func uniq(ss ...*[]string) { for _, s := range ss { slices.Sort(*s)