Loading cmd/multiproduct_kati/main.go +73 −13 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import ( "flag" "fmt" "io" "io/ioutil" "log" "os" "os/exec" Loading Loading @@ -76,6 +77,36 @@ func (m *multipleStringArg) Set(s string) error { return nil } const errorLeadingLines = 20 const errorTrailingLines = 20 func errMsgFromLog(filename string) string { if filename == "" { return "" } data, err := ioutil.ReadFile(filename) if err != nil { return "" } lines := strings.Split(strings.TrimSpace(string(data)), "\n") if len(lines) > errorLeadingLines+errorTrailingLines+1 { lines[errorLeadingLines] = fmt.Sprintf("... skipping %d lines ...", len(lines)-errorLeadingLines-errorTrailingLines) lines = append(lines[:errorLeadingLines+1], lines[len(lines)-errorTrailingLines:]...) } var buf strings.Builder for _, line := range lines { buf.WriteString("> ") buf.WriteString(line) buf.WriteString("\n") } return buf.String() } // TODO(b/70370883): This tool uses a lot of open files -- over the default // soft limit of 1024 on some systems. So bump up to the hard limit until I fix // the algorithm. Loading Loading @@ -170,6 +201,23 @@ func ensureEmptyFileExists(file string, log logger.Logger) { } } func outDirBase() string { outDirBase := os.Getenv("OUT_DIR") if outDirBase == "" { return "out" } else { return outDirBase } } func distDir(outDir string) string { if distDir := os.Getenv("DIST_DIR"); distDir != "" { return filepath.Clean(distDir) } else { return filepath.Join(outDir, "dist") } } func main() { stdio := terminal.StdioImpl{} Loading @@ -177,6 +225,12 @@ func main() { log := logger.New(output) defer log.Cleanup() for _, v := range os.Environ() { log.Println("Environment: " + v) } log.Printf("Argv: %v\n", os.Args) flag.Parse() _, cancel := context.WithCancel(context.Background()) Loading Loading @@ -208,13 +262,7 @@ func main() { if !*incremental { name += "-" + time.Now().Format("20060102150405") } outDirBase := os.Getenv("OUT_DIR") if outDirBase == "" { outDirBase = "out" } outputDir = filepath.Join(outDirBase, name) outputDir = filepath.Join(outDirBase(), name) } log.Println("Output directory:", outputDir) Loading @@ -231,11 +279,13 @@ func main() { var configLogsDir string if *alternateResultDir { configLogsDir = filepath.Join(outputDir, "dist/logs") configLogsDir = filepath.Join(distDir(outDirBase()), "logs") } else { configLogsDir = outputDir } log.Println("Logs dir: " + configLogsDir) os.MkdirAll(configLogsDir, 0777) log.SetOutput(filepath.Join(configLogsDir, "soong.log")) trace.SetOutput(filepath.Join(configLogsDir, "build.trace")) Loading Loading @@ -348,10 +398,11 @@ func main() { FileArgs: []zip.FileArg{ {GlobDir: logsDir, SourcePrefixToStrip: logsDir}, }, OutputFilePath: filepath.Join(outputDir, "dist/logs.zip"), OutputFilePath: filepath.Join(distDir(outDirBase()), "logs.zip"), NumParallelJobs: runtime.NumCPU(), CompressionLevel: 5, } log.Printf("Logs zip: %v\n", args.OutputFilePath) if err := zip.Zip(args); err != nil { log.Fatalf("Error zipping logs: %v", err) } Loading Loading @@ -424,10 +475,6 @@ func runSoongUiForProduct(mpctx *mpContext, product string) { args = append(args, "--soong-only") } if *alternateResultDir { args = append(args, "dist") } cmd := exec.Command(mpctx.SoongUi, args...) cmd.Stdout = consoleLogWriter cmd.Stderr = consoleLogWriter Loading @@ -439,6 +486,11 @@ func runSoongUiForProduct(mpctx *mpContext, product string) { "TARGET_BUILD_APPS=", "TARGET_BUILD_UNBUNDLED=") if *alternateResultDir { cmd.Env = append(cmd.Env, "DIST_DIR="+filepath.Join(distDir(outDirBase()), "products/"+product)) } action := &status.Action{ Description: product, Outputs: []string{product}, Loading @@ -459,9 +511,17 @@ func runSoongUiForProduct(mpctx *mpContext, product string) { } } } var errOutput string if err == nil { errOutput = "" } else { errOutput = errMsgFromLog(consoleLogPath) } mpctx.Status.FinishAction(status.ActionResult{ Action: action, Error: err, Output: errOutput, }) } Loading Loading
cmd/multiproduct_kati/main.go +73 −13 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import ( "flag" "fmt" "io" "io/ioutil" "log" "os" "os/exec" Loading Loading @@ -76,6 +77,36 @@ func (m *multipleStringArg) Set(s string) error { return nil } const errorLeadingLines = 20 const errorTrailingLines = 20 func errMsgFromLog(filename string) string { if filename == "" { return "" } data, err := ioutil.ReadFile(filename) if err != nil { return "" } lines := strings.Split(strings.TrimSpace(string(data)), "\n") if len(lines) > errorLeadingLines+errorTrailingLines+1 { lines[errorLeadingLines] = fmt.Sprintf("... skipping %d lines ...", len(lines)-errorLeadingLines-errorTrailingLines) lines = append(lines[:errorLeadingLines+1], lines[len(lines)-errorTrailingLines:]...) } var buf strings.Builder for _, line := range lines { buf.WriteString("> ") buf.WriteString(line) buf.WriteString("\n") } return buf.String() } // TODO(b/70370883): This tool uses a lot of open files -- over the default // soft limit of 1024 on some systems. So bump up to the hard limit until I fix // the algorithm. Loading Loading @@ -170,6 +201,23 @@ func ensureEmptyFileExists(file string, log logger.Logger) { } } func outDirBase() string { outDirBase := os.Getenv("OUT_DIR") if outDirBase == "" { return "out" } else { return outDirBase } } func distDir(outDir string) string { if distDir := os.Getenv("DIST_DIR"); distDir != "" { return filepath.Clean(distDir) } else { return filepath.Join(outDir, "dist") } } func main() { stdio := terminal.StdioImpl{} Loading @@ -177,6 +225,12 @@ func main() { log := logger.New(output) defer log.Cleanup() for _, v := range os.Environ() { log.Println("Environment: " + v) } log.Printf("Argv: %v\n", os.Args) flag.Parse() _, cancel := context.WithCancel(context.Background()) Loading Loading @@ -208,13 +262,7 @@ func main() { if !*incremental { name += "-" + time.Now().Format("20060102150405") } outDirBase := os.Getenv("OUT_DIR") if outDirBase == "" { outDirBase = "out" } outputDir = filepath.Join(outDirBase, name) outputDir = filepath.Join(outDirBase(), name) } log.Println("Output directory:", outputDir) Loading @@ -231,11 +279,13 @@ func main() { var configLogsDir string if *alternateResultDir { configLogsDir = filepath.Join(outputDir, "dist/logs") configLogsDir = filepath.Join(distDir(outDirBase()), "logs") } else { configLogsDir = outputDir } log.Println("Logs dir: " + configLogsDir) os.MkdirAll(configLogsDir, 0777) log.SetOutput(filepath.Join(configLogsDir, "soong.log")) trace.SetOutput(filepath.Join(configLogsDir, "build.trace")) Loading Loading @@ -348,10 +398,11 @@ func main() { FileArgs: []zip.FileArg{ {GlobDir: logsDir, SourcePrefixToStrip: logsDir}, }, OutputFilePath: filepath.Join(outputDir, "dist/logs.zip"), OutputFilePath: filepath.Join(distDir(outDirBase()), "logs.zip"), NumParallelJobs: runtime.NumCPU(), CompressionLevel: 5, } log.Printf("Logs zip: %v\n", args.OutputFilePath) if err := zip.Zip(args); err != nil { log.Fatalf("Error zipping logs: %v", err) } Loading Loading @@ -424,10 +475,6 @@ func runSoongUiForProduct(mpctx *mpContext, product string) { args = append(args, "--soong-only") } if *alternateResultDir { args = append(args, "dist") } cmd := exec.Command(mpctx.SoongUi, args...) cmd.Stdout = consoleLogWriter cmd.Stderr = consoleLogWriter Loading @@ -439,6 +486,11 @@ func runSoongUiForProduct(mpctx *mpContext, product string) { "TARGET_BUILD_APPS=", "TARGET_BUILD_UNBUNDLED=") if *alternateResultDir { cmd.Env = append(cmd.Env, "DIST_DIR="+filepath.Join(distDir(outDirBase()), "products/"+product)) } action := &status.Action{ Description: product, Outputs: []string{product}, Loading @@ -459,9 +511,17 @@ func runSoongUiForProduct(mpctx *mpContext, product string) { } } } var errOutput string if err == nil { errOutput = "" } else { errOutput = errMsgFromLog(consoleLogPath) } mpctx.Status.FinishAction(status.ActionResult{ Action: action, Error: err, Output: errOutput, }) } Loading