From e158b392874aa4d33a33f690a3216904a7476af6 Mon Sep 17 00:00:00 2001 From: Sauyon Lee Date: Wed, 23 Sep 2020 04:30:21 -0700 Subject: [PATCH 1/2] Improve extractor logging Co-authored-by: Max Schaefer <54907921+max-schaefer@users.noreply.github.com> --- extractor/extractor.go | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/extractor/extractor.go b/extractor/extractor.go index 30323c41314..57d45ef2f18 100644 --- a/extractor/extractor.go +++ b/extractor/extractor.go @@ -32,6 +32,12 @@ func Extract(patterns []string) error { // ExtractWithFlags extracts the packages specified by the given patterns and build flags func ExtractWithFlags(buildFlags []string, patterns []string) error { + modEnabled := os.Getenv("GO111MODULE") != "off" + if !modEnabled { + log.Println("Go module mode disabled.") + } + + log.Println("Running packages.Load.") cfg := &packages.Config{ Mode: packages.NeedName | packages.NeedFiles | packages.NeedCompiledGoFiles | @@ -52,12 +58,15 @@ func ExtractWithFlags(buildFlags []string, patterns []string) error { if err != nil { return err } + log.Println("Done running packages.Load.") if len(pkgs) == 0 { - log.Printf("No packages found.") + log.Println("No packages found.") } + log.Println("Extracting universe scope.") extractUniverseScope() + log.Println("Done extracting universe scope.") // a map of package path to package root directory (currently the module root or the source directory) pkgRoots := make(map[string]string) @@ -72,6 +81,8 @@ func ExtractWithFlags(buildFlags []string, patterns []string) error { packages.Visit(pkgs, func(pkg *packages.Package) bool { return true }, func(pkg *packages.Package) { + log.Printf("Processing package %s.", pkg.PkgPath) + if _, ok := pkgRoots[pkg.PkgPath]; !ok { mdir := util.GetModDir(pkg.PkgPath, modFlags...) pdir := util.GetPkgDir(pkg.PkgPath, modFlags...) @@ -84,6 +95,8 @@ func ExtractWithFlags(buildFlags []string, patterns []string) error { pkgDirs[pkg.PkgPath] = pdir } + log.Printf("Extracting types for package %s.", pkg.PkgPath) + tw, err := trap.NewWriter(pkg.PkgPath, pkg) if err != nil { log.Fatal(err) @@ -102,6 +115,7 @@ func ExtractWithFlags(buildFlags []string, patterns []string) error { extractError(tw, err, lbl, i) } } + log.Printf("Done extracting types for package %s.", pkg.PkgPath) }) for _, pkg := range pkgs { @@ -111,6 +125,10 @@ func ExtractWithFlags(buildFlags []string, patterns []string) error { wantedRoots[pkgRoots[pkg.PkgPath]] = true } + log.Println("Done processing dependencies.") + + log.Println("Starting to extract packages.") + // this sets the number of threads that the Go runtime will spawn; this is separate // from the number of goroutines that the program spawns, which are scheduled into // the system threads by the Go runtime scheduler @@ -163,10 +181,15 @@ func ExtractWithFlags(buildFlags []string, patterns []string) error { extractPackage(pkg, &wg, goroutineSem, fdSem) return } + + log.Printf("Skipping dependency package %s.", pkg.PkgPath) }) wg.Wait() + log.Println("Done extracting packages.") + log.Println("Starting to extract go.mod files.") + cwd, err := os.Getwd() if err != nil { log.Printf("Warning: unable to get working directory: %s", err.Error()) @@ -204,6 +227,8 @@ func ExtractWithFlags(buildFlags []string, patterns []string) error { log.Printf("Done extracting %s (%dms)", path, end.Nanoseconds()/1000000) } + log.Println("Done extracting go.mod files.") + return nil } From 7ea3b34e4b8d18a3d77731a03ab30516966a511b Mon Sep 17 00:00:00 2001 From: Sauyon Lee Date: Wed, 23 Sep 2020 04:31:42 -0700 Subject: [PATCH 2/2] extractor: Reorganize code to be in a slightly more sensible order --- extractor/extractor.go | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/extractor/extractor.go b/extractor/extractor.go index 57d45ef2f18..814ed9fe080 100644 --- a/extractor/extractor.go +++ b/extractor/extractor.go @@ -37,6 +37,13 @@ func ExtractWithFlags(buildFlags []string, patterns []string) error { log.Println("Go module mode disabled.") } + modFlags := make([]string, 0, 1) + for _, flag := range buildFlags { + if strings.HasPrefix(flag, "-mod=") { + modFlags = append(modFlags, flag) + } + } + log.Println("Running packages.Load.") cfg := &packages.Config{ Mode: packages.NeedName | packages.NeedFiles | @@ -47,14 +54,6 @@ func ExtractWithFlags(buildFlags []string, patterns []string) error { BuildFlags: buildFlags, } pkgs, err := packages.Load(cfg, patterns...) - - modFlags := make([]string, 0, 1) - for _, flag := range buildFlags { - if strings.HasPrefix(flag, "-mod=") { - modFlags = append(modFlags, flag) - } - } - if err != nil { return err }