From 264400a9849c4782a299010e780686d3be4c95ae Mon Sep 17 00:00:00 2001 From: Jakob Borg Date: Tue, 19 Aug 2014 11:04:20 +0200 Subject: [PATCH] Check for supported go version build.go --- build.go | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/build.go b/build.go index 645b7a615..9ac32e68d 100644 --- a/build.go +++ b/build.go @@ -33,6 +33,8 @@ var ( noupgrade bool ) +const minGoVersion = 1.3 + func main() { log.SetOutput(os.Stdout) log.SetFlags(0) @@ -53,6 +55,8 @@ func main() { flag.BoolVar(&noupgrade, "no-upgrade", false, "Disable upgrade functionality") flag.Parse() + checkRequiredGoVersion() + if check() != nil { setup() } @@ -122,6 +126,25 @@ func check() error { return err } +func checkRequiredGoVersion() { + ver := run("go", "version") + re := regexp.MustCompile(`go version go(\d+\.\d+)`) + if m := re.FindSubmatch(ver); len(m) == 2 { + vs := string(m[1]) + // This is a standard go build. Verify that it's new enough. + f, err := strconv.ParseFloat(vs, 64) + if err != nil { + log.Printf("*** Could parse Go version out of %q.\n*** This isn't known to work, proceed on your own risk.", vs) + return + } + if f < minGoVersion { + log.Fatalf("*** Go version %.01f is less than required %.01f.\n*** This is known not to work, not proceeding.", f, minGoVersion) + } + } else { + log.Printf("*** Unknown Go version %q.\n*** This isn't known to work, proceed on your own risk.", ver) + } +} + func setup() { runPrint("go", "get", "-v", "code.google.com/p/go.tools/cmd/cover") runPrint("go", "get", "-v", "code.google.com/p/go.tools/cmd/vet")