From 1a4850baca550a0679a364e53715d90769989eb5 Mon Sep 17 00:00:00 2001 From: Alex Flint Date: Sat, 22 Jul 2023 11:35:08 -0400 Subject: [PATCH] warn when attempting to run egg using an unsupported version of go --- cmd/egg/build/builder.go | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/cmd/egg/build/builder.go b/cmd/egg/build/builder.go index aa540d9..ced22e1 100644 --- a/cmd/egg/build/builder.go +++ b/cmd/egg/build/builder.go @@ -1,10 +1,12 @@ package build import ( + "fmt" "io/ioutil" "os" "os/exec" "path/filepath" + "strings" ) type Config struct { @@ -39,7 +41,15 @@ func (b *Builder) Build() error { b.basedir = b.cfg.Basedir } - err := b.buildPrepare() + goversion, err := b.goVersion() + if err != nil { + return err + } + if !strings.Contains(goversion, "go1.16") { + return fmt.Errorf("eggos requires go 1.16 but found %s", strings.TrimSpace(goversion)) + } + + err = b.buildPrepare() if err != nil { return err } @@ -71,6 +81,16 @@ func (b *Builder) fixGoTags() bool { return false } +func (b *Builder) goVersion() (string, error) { + cmd := exec.Command(b.gobin(), "version") + cmd.Env = os.Environ() + stdout, err := cmd.Output() + if err != nil { + return "", fmt.Errorf("error executing: go version: %w", err) + } + return string(stdout), nil +} + func (b *Builder) buildPkg() error { var buildArgs []string ldflags := "-E github.com/icexin/eggos/kernel.rt0 -T 0x100000"