diff --git a/cmd/dep/root_analyzer.go b/cmd/dep/root_analyzer.go index 978536c03f..03f95cfd19 100644 --- a/cmd/dep/root_analyzer.go +++ b/cmd/dep/root_analyzer.go @@ -8,19 +8,15 @@ import ( "context" "io/ioutil" "log" - "strings" "golang.org/x/sync/errgroup" "github.com/golang/dep" fb "github.com/golang/dep/internal/feedback" "github.com/golang/dep/internal/gps" - "github.com/golang/dep/internal/gps/paths" "github.com/golang/dep/internal/importers" ) -const concurrency = 4 - // rootAnalyzer supplies manifest/lock data from both dep and external tool's // configuration files. // * When used on the root project, it imports only from external tools. @@ -64,9 +60,9 @@ func (a *rootAnalyzer) InitializeRootManifestAndLock(dir string, pr gps.ProjectR } func (a *rootAnalyzer) cacheDeps(pr gps.ProjectRoot) error { - deps := make(map[gps.ProjectRoot]bool) logger := a.ctx.Err g, ctx := errgroup.WithContext(context.TODO()) + concurrency := 4 sem := make(chan struct{}, concurrency) syncDep := func(pr gps.ProjectRoot, sm gps.SourceManager) error { @@ -80,22 +76,11 @@ func (a *rootAnalyzer) cacheDeps(pr gps.ProjectRoot) error { for ip := range a.directDeps { logger.Printf("Package %q, analyzing...", ip) - if paths.IsStandardImportPath(ip) { - continue - } - if hasImportPathPrefix(ip, string(pr)) { - continue - } - pr, err := a.sm.DeduceProjectRoot(ip) if err != nil { return err } - if _, ok := deps[pr]; ok { - continue - } - g.Go(func() error { select { case sem <- struct{}{}: @@ -103,25 +88,16 @@ func (a *rootAnalyzer) cacheDeps(pr gps.ProjectRoot) error { case <-ctx.Done(): return ctx.Err() } - err := syncDep(pr, a.sm) - return err + return syncDep(pr, a.sm) }) - - deps[pr] = true } - if err := g.Wait(); err == nil { - logger.Printf("Successfully cached all deps.") + if err := g.Wait(); err != nil { + return err } + logger.Printf("Successfully cached all deps.") return nil } -func hasImportPathPrefix(s, prefix string) bool { - if s == prefix { - return true - } - return strings.HasPrefix(s, prefix+"/") -} - func (a *rootAnalyzer) importManifestAndLock(dir string, pr gps.ProjectRoot, suppressLogs bool) (*dep.Manifest, *dep.Lock, error) { logger := a.ctx.Err if suppressLogs {