aboutsummaryrefslogtreecommitdiffstats
path: root/internal/build
diff options
context:
space:
mode:
authorYondon Fu <yondon.fu@gmail.com>2017-12-19 06:17:41 +0800
committerYondon Fu <yondon.fu@gmail.com>2017-12-19 06:17:41 +0800
commit3857cdc267e3192697f561df0a0f827f65dfb6b5 (patch)
tree401c52c4972a68229ea283a394a0b0a5f3cfdc8e /internal/build
parenta5330fe0c569b75cb8a524f60f7e8dc06498262b (diff)
parentfe070ab5c32702033489f1b9d1655ea1b894c29e (diff)
downloaddexon-3857cdc267e3192697f561df0a0f827f65dfb6b5.tar
dexon-3857cdc267e3192697f561df0a0f827f65dfb6b5.tar.gz
dexon-3857cdc267e3192697f561df0a0f827f65dfb6b5.tar.bz2
dexon-3857cdc267e3192697f561df0a0f827f65dfb6b5.tar.lz
dexon-3857cdc267e3192697f561df0a0f827f65dfb6b5.tar.xz
dexon-3857cdc267e3192697f561df0a0f827f65dfb6b5.tar.zst
dexon-3857cdc267e3192697f561df0a0f827f65dfb6b5.zip
Merge branch 'master' into abi-offset-fixed-arrays
Diffstat (limited to 'internal/build')
-rw-r--r--internal/build/env.go14
-rw-r--r--internal/build/util.go10
2 files changed, 19 insertions, 5 deletions
diff --git a/internal/build/env.go b/internal/build/env.go
index c47681ebe..c9848bf82 100644
--- a/internal/build/env.go
+++ b/internal/build/env.go
@@ -82,18 +82,22 @@ func Env() Environment {
// LocalEnv returns build environment metadata gathered from git.
func LocalEnv() Environment {
env := applyEnvFlags(Environment{Name: "local", Repo: "ethereum/go-ethereum"})
- if _, err := os.Stat(".git"); err != nil {
+
+ head := readGitFile("HEAD")
+ if splits := strings.Split(head, " "); len(splits) == 2 {
+ head = splits[1]
+ } else {
return env
}
if env.Commit == "" {
- env.Commit = RunGit("rev-parse", "HEAD")
+ env.Commit = readGitFile(head)
}
if env.Branch == "" {
- if b := RunGit("rev-parse", "--abbrev-ref", "HEAD"); b != "HEAD" {
- env.Branch = b
+ if head != "HEAD" {
+ env.Branch = strings.TrimLeft(head, "refs/heads/")
}
}
- if env.Tag == "" {
+ if info, err := os.Stat(".git/objects"); err == nil && info.IsDir() && env.Tag == "" {
env.Tag = firstLine(RunGit("tag", "-l", "--points-at", "HEAD"))
}
return env
diff --git a/internal/build/util.go b/internal/build/util.go
index ade9cbe93..c6e059f0d 100644
--- a/internal/build/util.go
+++ b/internal/build/util.go
@@ -25,6 +25,7 @@ import (
"log"
"os"
"os/exec"
+ "path"
"path/filepath"
"runtime"
"strings"
@@ -88,6 +89,15 @@ func RunGit(args ...string) string {
return strings.TrimSpace(stdout.String())
}
+// readGitFile returns content of file in .git directory.
+func readGitFile(file string) string {
+ content, err := ioutil.ReadFile(path.Join(".git", file))
+ if err != nil {
+ return ""
+ }
+ return strings.TrimSpace(string(content))
+}
+
// Render renders the given template file into outputFile.
func Render(templateFile, outputFile string, outputPerm os.FileMode, x interface{}) {
tpl := template.Must(template.ParseFiles(templateFile))