From 8ed72a84703382b88fe8372f08a5dbed2e0c47cf Mon Sep 17 00:00:00 2001 From: Felix Lange Date: Fri, 18 Nov 2016 19:55:19 +0100 Subject: [PATCH 1/3] build: simplify unstable build check ci.go decides whether a build is unstable by looking at the branch and tag. This causes issues when a GitHub release is created on the master branch because the build is considered unstable (the CI environment reports the branch as "master"). Fix this by looking at the tag only. Any tagged build is stable. --- build/ci.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/ci.go b/build/ci.go index 0e1ed37ca..71609c727 100644 --- a/build/ci.go +++ b/build/ci.go @@ -459,7 +459,7 @@ func makeWorkdir(wdflag string) string { } func isUnstableBuild(env build.Environment) bool { - if env.Branch != "master" && env.Tag != "" { + if env.Tag != "" { return false } return true From 92959cd4ef1369bc5338169d209945bb5be6b53b Mon Sep 17 00:00:00 2001 From: Felix Lange Date: Mon, 21 Nov 2016 12:22:00 +0100 Subject: [PATCH 2/3] appveyor: use native 32bit go This simplifies the build and should speed it up a bit because the standard library doesn't need to be cross compiled on the 32bit builder. --- appveyor.yml | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 03ffdca9d..dbdda9b6c 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -22,19 +22,18 @@ environment: install: - rmdir C:\go /s /q - - appveyor DownloadFile https://storage.googleapis.com/golang/go1.7.3.windows-amd64.zip - - 7z x go1.7.3.windows-amd64.zip -y -oC:\ > NUL + - appveyor DownloadFile https://storage.googleapis.com/golang/go1.7.3.windows-%GETH_ARCH%.zip + - 7z x go1.7.3.windows-%GETH_ARCH%.zip -y -oC:\ > NUL - go version - gcc --version build_script: - - go run build\ci.go install -arch %GETH_ARCH% + - go run build\ci.go install after_build: - - go run build\ci.go archive -arch %GETH_ARCH% -type zip -signer WINDOWS_SIGNING_KEY -upload gethstore/builds - - go run build\ci.go nsis -arch %GETH_ARCH% -signer WINDOWS_SIGNING_KEY -upload gethstore/builds + - go run build\ci.go archive -type zip -signer WINDOWS_SIGNING_KEY -upload gethstore/builds + - go run build\ci.go nsis -signer WINDOWS_SIGNING_KEY -upload gethstore/builds test_script: - - set GOARCH=%GETH_ARCH% - set CGO_ENABLED=1 - go run build\ci.go test -vet -coverage From e1e2df656a46c428bfb487e5ec3d126905ff003e Mon Sep 17 00:00:00 2001 From: Felix Lange Date: Mon, 21 Nov 2016 12:44:42 +0100 Subject: [PATCH 3/3] internal/build: add support for git tag in local Environment I didn't add this initially because the command I tried was too slow. The 'git for-each-ref ...' invocation takes 40ms on my machine. That ought to be acceptable. --- internal/build/env.go | 5 +++-- internal/build/util.go | 7 ++++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/internal/build/env.go b/internal/build/env.go index cd3355092..95281df86 100644 --- a/internal/build/env.go +++ b/internal/build/env.go @@ -88,8 +88,9 @@ func LocalEnv() Environment { env.Branch = b } } - // Note that we don't get the current git tag. It would slow down - // builds and isn't used by anything. + if env.Tag == "" { + env.Tag = RunGit("for-each-ref", "--points-at=HEAD", "--count=1", "--format=%(refname:short)", "refs/tags") + } return env } diff --git a/internal/build/util.go b/internal/build/util.go index c7e0614f2..1523a067b 100644 --- a/internal/build/util.go +++ b/internal/build/util.go @@ -76,6 +76,8 @@ func VERSION() string { return string(bytes.TrimSpace(version)) } +var warnedAboutGit bool + // RunGit runs a git subcommand and returns its output. // The command must complete successfully. func RunGit(args ...string) string { @@ -83,7 +85,10 @@ func RunGit(args ...string) string { var stdout, stderr bytes.Buffer cmd.Stdout, cmd.Stderr = &stdout, &stderr if err := cmd.Run(); err == exec.ErrNotFound { - log.Println("no git in PATH") + if !warnedAboutGit { + log.Println("Warning: can't find 'git' in PATH") + warnedAboutGit = true + } return "" } else if err != nil { log.Fatal(strings.Join(cmd.Args, " "), ": ", err, "\n", stderr.String())