Loading cmd/soong_ui/main.go +8 −1 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import ( "android/soong/ui/build" "android/soong/ui/logger" "android/soong/ui/metrics" "android/soong/ui/status" "android/soong/ui/terminal" "android/soong/ui/tracer" Loading Loading @@ -73,6 +74,8 @@ func main() { trace := tracer.New(log) defer trace.Close() met := metrics.New() stat := &status.Status{} defer stat.Finish() stat.AddOutput(terminal.NewStatusOutput(writer, os.Getenv("NINJA_STATUS"))) Loading @@ -87,6 +90,7 @@ func main() { buildCtx := build.Context{ContextImpl: &build.ContextImpl{ Context: ctx, Logger: log, Metrics: met, Tracer: trace, Writer: writer, Status: stat, Loading @@ -100,6 +104,9 @@ func main() { build.SetupOutDir(buildCtx, config) metricsPath := filepath.Join(config.OutDir(), "build_metrics") defer met.Dump(metricsPath) logsDir := config.OutDir() if config.Dist() { logsDir = filepath.Join(config.DistDir(), "logs") Loading @@ -116,7 +123,7 @@ func main() { if start_time, err := strconv.ParseUint(start, 10, 64); err == nil { log.Verbosef("Took %dms to start up.", time.Since(time.Unix(0, int64(start_time))).Nanoseconds()/time.Millisecond.Nanoseconds()) buildCtx.CompleteTrace("startup", start_time, uint64(time.Now().UnixNano())) buildCtx.CompleteTrace(metrics.RunSetupTool, "startup", start_time, uint64(time.Now().UnixNano())) } } Loading ui/build/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ bootstrap_go_package { deps: [ "soong-ui-build-paths", "soong-ui-logger", "soong-ui-metrics", "soong-ui-status", "soong-ui-terminal", "soong-ui-tracer", Loading ui/build/cleanbuild.go +3 −1 Original line number Diff line number Diff line Loading @@ -20,6 +20,8 @@ import ( "os" "path/filepath" "strings" "android/soong/ui/metrics" ) func removeGlobs(ctx Context, globs ...string) { Loading Loading @@ -158,7 +160,7 @@ func installCleanIfNecessary(ctx Context, config Config) { return } ctx.BeginTrace("installclean") ctx.BeginTrace(metrics.PrimaryNinja, "installclean") defer ctx.EndTrace() prevConfig := strings.TrimPrefix(strings.TrimSuffix(string(prev), suffix), prefix) Loading ui/build/config.go +3 −0 Original line number Diff line number Diff line Loading @@ -217,6 +217,9 @@ func NewConfig(ctx Context, args ...string) Config { } else { content = strconv.FormatInt(time.Now().Unix(), 10) } if ctx.Metrics != nil { ctx.Metrics.SetBuildDateTime(content) } err := ioutil.WriteFile(buildDateTimeFile, []byte(content), 0777) if err != nil { ctx.Fatalln("Failed to write BUILD_DATETIME to file:", err) Loading ui/build/context.go +23 −4 Original line number Diff line number Diff line Loading @@ -18,6 +18,8 @@ import ( "context" "android/soong/ui/logger" "android/soong/ui/metrics" "android/soong/ui/metrics/metrics_proto" "android/soong/ui/status" "android/soong/ui/terminal" "android/soong/ui/tracer" Loading @@ -31,6 +33,8 @@ type ContextImpl struct { context.Context logger.Logger Metrics *metrics.Metrics Writer terminal.Writer Status *status.Status Loading @@ -39,9 +43,12 @@ type ContextImpl struct { } // BeginTrace starts a new Duration Event. func (c ContextImpl) BeginTrace(name string) { func (c ContextImpl) BeginTrace(name, desc string) { if c.Tracer != nil { c.Tracer.Begin(name, c.Thread) c.Tracer.Begin(desc, c.Thread) } if c.Metrics != nil { c.Metrics.TimeTracer.Begin(name, desc, c.Thread) } } Loading @@ -50,11 +57,23 @@ func (c ContextImpl) EndTrace() { if c.Tracer != nil { c.Tracer.End(c.Thread) } if c.Metrics != nil { c.Metrics.SetTimeMetrics(c.Metrics.TimeTracer.End(c.Thread)) } } // CompleteTrace writes a trace with a beginning and end times. func (c ContextImpl) CompleteTrace(name string, begin, end uint64) { func (c ContextImpl) CompleteTrace(name, desc string, begin, end uint64) { if c.Tracer != nil { c.Tracer.Complete(name, c.Thread, begin, end) c.Tracer.Complete(desc, c.Thread, begin, end) } if c.Metrics != nil { realTime := end - begin c.Metrics.SetTimeMetrics( metrics_proto.PerfInfo{ Desc: &desc, Name: &name, StartTime: &begin, RealTime: &realTime}) } } Loading
cmd/soong_ui/main.go +8 −1 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import ( "android/soong/ui/build" "android/soong/ui/logger" "android/soong/ui/metrics" "android/soong/ui/status" "android/soong/ui/terminal" "android/soong/ui/tracer" Loading Loading @@ -73,6 +74,8 @@ func main() { trace := tracer.New(log) defer trace.Close() met := metrics.New() stat := &status.Status{} defer stat.Finish() stat.AddOutput(terminal.NewStatusOutput(writer, os.Getenv("NINJA_STATUS"))) Loading @@ -87,6 +90,7 @@ func main() { buildCtx := build.Context{ContextImpl: &build.ContextImpl{ Context: ctx, Logger: log, Metrics: met, Tracer: trace, Writer: writer, Status: stat, Loading @@ -100,6 +104,9 @@ func main() { build.SetupOutDir(buildCtx, config) metricsPath := filepath.Join(config.OutDir(), "build_metrics") defer met.Dump(metricsPath) logsDir := config.OutDir() if config.Dist() { logsDir = filepath.Join(config.DistDir(), "logs") Loading @@ -116,7 +123,7 @@ func main() { if start_time, err := strconv.ParseUint(start, 10, 64); err == nil { log.Verbosef("Took %dms to start up.", time.Since(time.Unix(0, int64(start_time))).Nanoseconds()/time.Millisecond.Nanoseconds()) buildCtx.CompleteTrace("startup", start_time, uint64(time.Now().UnixNano())) buildCtx.CompleteTrace(metrics.RunSetupTool, "startup", start_time, uint64(time.Now().UnixNano())) } } Loading
ui/build/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ bootstrap_go_package { deps: [ "soong-ui-build-paths", "soong-ui-logger", "soong-ui-metrics", "soong-ui-status", "soong-ui-terminal", "soong-ui-tracer", Loading
ui/build/cleanbuild.go +3 −1 Original line number Diff line number Diff line Loading @@ -20,6 +20,8 @@ import ( "os" "path/filepath" "strings" "android/soong/ui/metrics" ) func removeGlobs(ctx Context, globs ...string) { Loading Loading @@ -158,7 +160,7 @@ func installCleanIfNecessary(ctx Context, config Config) { return } ctx.BeginTrace("installclean") ctx.BeginTrace(metrics.PrimaryNinja, "installclean") defer ctx.EndTrace() prevConfig := strings.TrimPrefix(strings.TrimSuffix(string(prev), suffix), prefix) Loading
ui/build/config.go +3 −0 Original line number Diff line number Diff line Loading @@ -217,6 +217,9 @@ func NewConfig(ctx Context, args ...string) Config { } else { content = strconv.FormatInt(time.Now().Unix(), 10) } if ctx.Metrics != nil { ctx.Metrics.SetBuildDateTime(content) } err := ioutil.WriteFile(buildDateTimeFile, []byte(content), 0777) if err != nil { ctx.Fatalln("Failed to write BUILD_DATETIME to file:", err) Loading
ui/build/context.go +23 −4 Original line number Diff line number Diff line Loading @@ -18,6 +18,8 @@ import ( "context" "android/soong/ui/logger" "android/soong/ui/metrics" "android/soong/ui/metrics/metrics_proto" "android/soong/ui/status" "android/soong/ui/terminal" "android/soong/ui/tracer" Loading @@ -31,6 +33,8 @@ type ContextImpl struct { context.Context logger.Logger Metrics *metrics.Metrics Writer terminal.Writer Status *status.Status Loading @@ -39,9 +43,12 @@ type ContextImpl struct { } // BeginTrace starts a new Duration Event. func (c ContextImpl) BeginTrace(name string) { func (c ContextImpl) BeginTrace(name, desc string) { if c.Tracer != nil { c.Tracer.Begin(name, c.Thread) c.Tracer.Begin(desc, c.Thread) } if c.Metrics != nil { c.Metrics.TimeTracer.Begin(name, desc, c.Thread) } } Loading @@ -50,11 +57,23 @@ func (c ContextImpl) EndTrace() { if c.Tracer != nil { c.Tracer.End(c.Thread) } if c.Metrics != nil { c.Metrics.SetTimeMetrics(c.Metrics.TimeTracer.End(c.Thread)) } } // CompleteTrace writes a trace with a beginning and end times. func (c ContextImpl) CompleteTrace(name string, begin, end uint64) { func (c ContextImpl) CompleteTrace(name, desc string, begin, end uint64) { if c.Tracer != nil { c.Tracer.Complete(name, c.Thread, begin, end) c.Tracer.Complete(desc, c.Thread, begin, end) } if c.Metrics != nil { realTime := end - begin c.Metrics.SetTimeMetrics( metrics_proto.PerfInfo{ Desc: &desc, Name: &name, StartTime: &begin, RealTime: &realTime}) } }