diff options
author | Felix Lange <fjl@twurst.com> | 2017-03-23 22:46:03 +0800 |
---|---|---|
committer | Felix Lange <fjl@twurst.com> | 2017-03-23 22:50:05 +0800 |
commit | e7911ad9ea38eaf8707b7247a5ac96bc81de856c (patch) | |
tree | 91f58f53f8bcfa45f8141ca2b0bc721b0a9ca656 /internal | |
parent | 11e7a712f469fb24ddb88ecebcefab6ed8880eb8 (diff) | |
download | go-tangerine-e7911ad9ea38eaf8707b7247a5ac96bc81de856c.tar go-tangerine-e7911ad9ea38eaf8707b7247a5ac96bc81de856c.tar.gz go-tangerine-e7911ad9ea38eaf8707b7247a5ac96bc81de856c.tar.bz2 go-tangerine-e7911ad9ea38eaf8707b7247a5ac96bc81de856c.tar.lz go-tangerine-e7911ad9ea38eaf8707b7247a5ac96bc81de856c.tar.xz go-tangerine-e7911ad9ea38eaf8707b7247a5ac96bc81de856c.tar.zst go-tangerine-e7911ad9ea38eaf8707b7247a5ac96bc81de856c.zip |
build: unify vendor skipping logic
This fixes a recent bug where 'make geth' built everything instead of
just geth.
Diffstat (limited to 'internal')
-rw-r--r-- | internal/build/util.go | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/internal/build/util.go b/internal/build/util.go index 4df7b9138..44f6760b9 100644 --- a/internal/build/util.go +++ b/internal/build/util.go @@ -26,6 +26,7 @@ import ( "os" "os/exec" "path/filepath" + "runtime" "strings" "text/template" ) @@ -136,3 +137,30 @@ func CopyFile(dst, src string, mode os.FileMode) { log.Fatal(err) } } + +// ExpandPackagesNoVendor expands a cmd/go import path pattern, skipping +// vendored packages. +func ExpandPackagesNoVendor(patterns []string) []string { + expand := false + for _, pkg := range patterns { + if strings.Contains(pkg, "...") { + expand = true + } + } + if expand { + args := append([]string{"list"}, patterns...) + cmd := exec.Command(filepath.Join(runtime.GOROOT(), "bin", "go"), args...) + out, err := cmd.CombinedOutput() + if err != nil { + log.Fatalf("package listing failed: %v\n%s", err, string(out)) + } + var packages []string + for _, line := range strings.Split(string(out), "\n") { + if !strings.Contains(line, "/vendor/") { + packages = append(packages, strings.TrimSpace(line)) + } + } + return packages + } + return patterns +} |