Ship the build log and trace on the build servers
Test: m -j; m -j dist
Change-Id: I4718e7a0cda6719bbab4243038ea2666c212cf19
diff --git a/cmd/multiproduct_kati/main.go b/cmd/multiproduct_kati/main.go
index 2ff19ce..21d8383 100644
--- a/cmd/multiproduct_kati/main.go
+++ b/cmd/multiproduct_kati/main.go
@@ -102,7 +102,7 @@
log.Println("Output directory:", *outDir)
build.SetupOutDir(buildCtx, config)
- log.SetOutput(filepath.Join(config.OutDir(), "build.log"))
+ log.SetOutput(filepath.Join(config.OutDir(), "soong.log"))
trace.SetOutput(filepath.Join(config.OutDir(), "build.trace"))
vars, err := build.DumpMakeVars(buildCtx, config, nil, nil, []string{"all_named_products"})
@@ -137,7 +137,7 @@
}
productLog := logger.New(&bytes.Buffer{})
- productLog.SetOutput(filepath.Join(productOutDir, "build.log"))
+ productLog.SetOutput(filepath.Join(productOutDir, "soong.log"))
productCtx := build.Context{&build.ContextImpl{
Context: ctx,
diff --git a/cmd/soong_ui/main.go b/cmd/soong_ui/main.go
index de941f4..06a601e 100644
--- a/cmd/soong_ui/main.go
+++ b/cmd/soong_ui/main.go
@@ -70,8 +70,15 @@
log.SetVerbose(config.IsVerbose())
build.SetupOutDir(buildCtx, config)
- log.SetOutput(filepath.Join(config.OutDir(), "build.log"))
- trace.SetOutput(filepath.Join(config.OutDir(), "build.trace"))
+
+ if config.Dist() {
+ os.MkdirAll(config.DistDir(), 0777)
+ log.SetOutput(filepath.Join(config.DistDir(), "logs", "soong.log"))
+ trace.SetOutput(filepath.Join(config.DistDir(), "logs", "build.trace"))
+ } else {
+ log.SetOutput(filepath.Join(config.OutDir(), "soong.log"))
+ trace.SetOutput(filepath.Join(config.OutDir(), "build.trace"))
+ }
if start, ok := os.LookupEnv("TRACE_BEGIN_SOONG"); ok {
if !strings.HasSuffix(start, "N") {
diff --git a/ui/build/config.go b/ui/build/config.go
index 35c5213..4853643 100644
--- a/ui/build/config.go
+++ b/ui/build/config.go
@@ -35,6 +35,7 @@
parallel int
keepGoing int
verbose bool
+ dist bool
// From the product config
katiArgs []string
@@ -90,6 +91,8 @@
} else if arg == "showcommands" {
ret.verbose = true
continue
+ } else if arg == "dist" {
+ ret.dist = true
}
if arg[0] == '-' {
var err error
@@ -183,6 +186,13 @@
return "out"
}
+func (c *configImpl) DistDir() string {
+ if distDir, ok := c.environ.Get("DIST_DIR"); ok {
+ return distDir
+ }
+ return filepath.Join(c.OutDir(), "dist")
+}
+
func (c *configImpl) NinjaArgs() []string {
return c.ninjaArgs
}
@@ -198,6 +208,10 @@
panic("SetKatiSuffix has not been called")
}
+func (c *configImpl) Dist() bool {
+ return c.dist
+}
+
func (c *configImpl) IsVerbose() bool {
return c.verbose
}