Extend paths command to take input source files. am: 842527aad0
Original change: https://android-review.googlesource.com/c/platform/tools/treble/+/2239058
Change-Id: I319a96fd415a9d23cbf4f0dff4d5dc38772935ba
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/build/treble_build/cmd/main.go b/build/treble_build/cmd/main.go
index b89fe9e..cced51d 100644
--- a/build/treble_build/cmd/main.go
+++ b/build/treble_build/cmd/main.go
@@ -80,6 +80,7 @@
jsonPtr = flag.Bool("json", false, "Print json data")
verbosePtr = flag.Bool("v", false, "Print verbose text data")
outputPtr = flag.String("o", "", "Output to file")
+ projsPtr = flag.Bool("projects", false, "Include project repo data")
hostFlags = flag.NewFlagSet("host", flag.ExitOnError)
queryFlags = flag.NewFlagSet("query", flag.ExitOnError)
@@ -106,10 +107,10 @@
Report *app.Report `json:"report,omitempty"`
// Subcommand data
- Query *app.QueryResponse `json:"query,omitempty"`
- Paths []*app.BuildPath `json:"build_paths,omitempty"`
- Host *app.HostReport `json:"host,omitempty"`
-
+ Query *app.QueryResponse `json:"query,omitempty"`
+ Paths []*app.BuildPath `json:"build_paths,omitempty"`
+ Host *app.HostReport `json:"host,omitempty"`
+ Projects map[string]*app.GitProject `json:"projects,omitempty"`
// Profile data
Profile []*profTime `json:"profile"`
}
@@ -136,10 +137,6 @@
}
subArgs := flag.Args()
- if len(subArgs) < 1 {
- // Nothing to do
- return
- }
defBuildTarget := "droid"
log.SetFlags(log.LstdFlags | log.Llongfile)
@@ -152,7 +149,7 @@
ninjaServ.Start(ctx)
}()
- if err := ninja.WaitForServer(ctx, 60); err != nil {
+ if err := ninja.WaitForServer(ctx, int(ninjaTimeout.Seconds())); err != nil {
log.Fatalf("Failed to connect to server")
}
}
@@ -167,37 +164,46 @@
var subcommand tool
var commits repoFlags
+ if len(subArgs) > 0 {
+ switch subArgs[0] {
+ case "host":
+ hostToolPathPtr := hostFlags.String("hostbin", local.DefHostBinPath(), "Set the output directory for host tools")
+ hostFlags.Parse(subArgs[1:])
- switch subArgs[0] {
- case "host":
- hostToolPathPtr := hostFlags.String("hostbin", local.DefHostBinPath(), "Set the output directory for host tools")
- hostFlags.Parse(subArgs[1:])
+ subcommand = &hostReport{toolPath: *hostToolPathPtr}
+ rsp.Targets = hostFlags.Args()
- subcommand = &hostReport{toolPath: *hostToolPathPtr}
- rsp.Targets = hostFlags.Args()
+ case "query":
+ queryFlags.Var(&commits, "repo", "Repo:SHA to query")
+ queryFlags.Parse(subArgs[1:])
+ subcommand = &queryReport{}
+ rsp.Targets = queryFlags.Args()
- case "query":
- queryFlags.Var(&commits, "repo", "Repo:SHA to query")
- queryFlags.Parse(subArgs[1:])
- subcommand = &queryReport{}
- rsp.Targets = queryFlags.Args()
+ case "paths":
+ pathsFlags.Var(&commits, "repo", "Repo:SHA to build")
+ singlePathPtr := pathsFlags.Bool("1", false, "Get single path to output target")
+ pathsFlags.Parse(subArgs[1:])
- case "paths":
- pathsFlags.Var(&commits, "repo", "Repo:SHA to build")
- singlePathPtr := pathsFlags.Bool("1", false, "Get single path to output target")
- pathsFlags.Parse(subArgs[1:])
+ subcommand = &pathsReport{build_target: defBuildTarget, single: *singlePathPtr}
- subcommand = &pathsReport{build_target: defBuildTarget, single: *singlePathPtr}
+ rsp.Inputs = pathsFlags.Args()
- rsp.Targets = pathsFlags.Args()
-
- default:
- rsp.Targets = subArgs
+ default:
+ rsp.Targets = subArgs
+ }
}
addProfileData("Init")
rtx.ResolveProjectMap(ctx, *manifestPtr, *upstreamPtr)
addProfileData("Project Map")
+ // Add project to output if requested
+ if *projsPtr == true {
+ rsp.Projects = make(map[string]*app.GitProject)
+ for k, p := range rtx.Info.ProjMap {
+ rsp.Projects[k] = p.GitProj
+ }
+ }
+
// Resolve any commits
if len(commits) > 0 {
log.Printf("Resolving %s", commits.String())
@@ -226,9 +232,11 @@
buildErrors := 0
if *buildPtr {
+ // Only support default builder (non server-client)
+ builder := local.NewNinjaCli(local.DefNinjaExc(), *ninjaDbPtr, ninjaTimeout, buildTimeout, false /*clientMode*/)
for _, t := range rsp.Targets {
log.Printf("Building %s\n", t)
- res := ninja.Build(ctx, t)
+ res := builder.Build(ctx, t)
addProfileData(fmt.Sprintf("Build %s", t))
log.Printf("%s\n", res.Output)
if res.Success != true {