build: unify vendor skipping logic
This fixes a recent bug where 'make geth' built everything instead of just geth.
This commit is contained in:
parent
11e7a712f4
commit
e7911ad9ea
29
build/ci.go
29
build/ci.go
@ -173,19 +173,7 @@ func doInstall(cmdline []string) {
|
||||
if flag.NArg() > 0 {
|
||||
packages = flag.Args()
|
||||
}
|
||||
|
||||
// Resolve ./... manually and remove vendor/bazil/fuse (fuse is not in windows)
|
||||
out, err := goTool("list", "./...").CombinedOutput()
|
||||
if err != nil {
|
||||
log.Fatalf("package listing failed: %v\n%s", err, string(out))
|
||||
}
|
||||
packages = []string{}
|
||||
for _, line := range strings.Split(string(out), "\n") {
|
||||
if !strings.Contains(line, "vendor") {
|
||||
packages = append(packages, strings.TrimSpace(line))
|
||||
}
|
||||
}
|
||||
|
||||
packages = build.ExpandPackagesNoVendor(packages)
|
||||
|
||||
if *arch == "" || *arch == runtime.GOARCH {
|
||||
goinstall := goTool("install", buildFlags(env)...)
|
||||
@ -284,19 +272,8 @@ func doTest(cmdline []string) {
|
||||
if len(flag.CommandLine.Args()) > 0 {
|
||||
packages = flag.CommandLine.Args()
|
||||
}
|
||||
if len(packages) == 1 && packages[0] == "./..." {
|
||||
// Resolve ./... manually since go vet will fail on vendored stuff
|
||||
out, err := goTool("list", "./...").CombinedOutput()
|
||||
if err != nil {
|
||||
log.Fatalf("package listing failed: %v\n%s", err, string(out))
|
||||
}
|
||||
packages = []string{}
|
||||
for _, line := range strings.Split(string(out), "\n") {
|
||||
if !strings.Contains(line, "vendor") {
|
||||
packages = append(packages, strings.TrimSpace(line))
|
||||
}
|
||||
}
|
||||
}
|
||||
packages = build.ExpandPackagesNoVendor(packages)
|
||||
|
||||
// Run analysis tools before the tests.
|
||||
if *vet {
|
||||
build.MustRun(goTool("vet", packages...))
|
||||
|
@ -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
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user