summaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
author Keyi Gui <kgui@google.com> 2022-01-11 04:37:36 +0000
committer Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> 2022-01-11 04:37:36 +0000
commitef93fb88fabf81c5adaf25e2ae7c93172f352814 (patch)
treea3ab660873cc68c05c7adc2ab728e5c25f5b40b8 /java
parent045e13f6243e669e3e5f3ffdeaa3d1605d3d42b4 (diff)
parent9deb64462b57a71f7d9322edade8c27b7fb36f18 (diff)
Merge "Update droidstubs to support putting action inputs/outputs into the module-graph.json." am: f4bf09feba am: 23b9e124ee am: 9deb64462b
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1940894 Change-Id: Ie3ded1577cc19bab2b0b4374a8f75f95691d8a78
Diffstat (limited to 'java')
-rw-r--r--java/droidstubs.go17
-rw-r--r--java/droidstubs_test.go26
2 files changed, 42 insertions, 1 deletions
diff --git a/java/droidstubs.go b/java/droidstubs.go
index 7ad316fcf..5a84e051c 100644
--- a/java/droidstubs.go
+++ b/java/droidstubs.go
@@ -19,6 +19,7 @@ import (
"path/filepath"
"strings"
+ "github.com/google/blueprint"
"github.com/google/blueprint/proptools"
"android/soong/android"
@@ -806,7 +807,8 @@ type PrebuiltStubsSources struct {
properties PrebuiltStubsSourcesProperties
- stubsSrcJar android.Path
+ stubsSrcJar android.Path
+ jsonDataActions []blueprint.JSONDataAction
}
func (p *PrebuiltStubsSources) OutputFiles(tag string) (android.Paths, error) {
@@ -822,6 +824,13 @@ func (d *PrebuiltStubsSources) StubsSrcJar() android.Path {
return d.stubsSrcJar
}
+// AddJSONData is a temporary solution for droidstubs module to put action
+// related data into the module json graph.
+func (p *PrebuiltStubsSources) AddJSONData(d *map[string]interface{}) {
+ p.ModuleBase.AddJSONData(d)
+ (*d)["Actions"] = blueprint.FormatJSONDataActions(p.jsonDataActions)
+}
+
func (p *PrebuiltStubsSources) GenerateAndroidBuildActions(ctx android.ModuleContext) {
if len(p.properties.Srcs) != 1 {
ctx.PropertyErrorf("srcs", "must only specify one directory path or srcjar, contains %d paths", len(p.properties.Srcs))
@@ -829,9 +838,12 @@ func (p *PrebuiltStubsSources) GenerateAndroidBuildActions(ctx android.ModuleCon
}
src := p.properties.Srcs[0]
+ var jsonDataAction blueprint.JSONDataAction
if filepath.Ext(src) == ".srcjar" {
// This is a srcjar. We can use it directly.
p.stubsSrcJar = android.PathForModuleSrc(ctx, src)
+ jsonDataAction.Inputs = []string{src}
+ jsonDataAction.Outputs = []string{src}
} else {
outPath := android.PathForModuleOut(ctx, ctx.ModuleName()+"-"+"stubs.srcjar")
@@ -855,7 +867,10 @@ func (p *PrebuiltStubsSources) GenerateAndroidBuildActions(ctx android.ModuleCon
rule.Restat()
rule.Build("zip src", "Create srcjar from prebuilt source")
p.stubsSrcJar = outPath
+ jsonDataAction.Inputs = srcPaths.Strings()
+ jsonDataAction.Outputs = []string{outPath.String()}
}
+ p.jsonDataActions = []blueprint.JSONDataAction{jsonDataAction}
}
func (p *PrebuiltStubsSources) Prebuilt() *android.Prebuilt {
diff --git a/java/droidstubs_test.go b/java/droidstubs_test.go
index 10d99f3a5..573821749 100644
--- a/java/droidstubs_test.go
+++ b/java/droidstubs_test.go
@@ -21,6 +21,8 @@ import (
"strings"
"testing"
+ "github.com/google/blueprint"
+
"android/soong/android"
)
@@ -232,6 +234,30 @@ func TestDroidstubsWithSystemModules(t *testing.T) {
checkSystemModulesUseByDroidstubs(t, ctx, "stubs-prebuilt-system-modules", "prebuilt-jar.jar")
}
+func TestAddJSONData(t *testing.T) {
+ prebuiltStubsSources := PrebuiltStubsSources{}
+ prebuiltStubsSources.jsonDataActions = []blueprint.JSONDataAction{
+ blueprint.JSONDataAction{
+ Inputs: []string{},
+ Outputs: []string{},
+ },
+ }
+ jsonData := map[string]interface{}{}
+ prebuiltStubsSources.AddJSONData(&jsonData)
+ if fmt.Sprint(jsonData) != fmt.Sprint(
+ map[string]interface{}{
+ "Android": map[string]interface{}{},
+ "Actions": []map[string]interface{}{
+ map[string]interface{}{
+ "Inputs": []string{},
+ "Outputs": []string{},
+ },
+ },
+ }) {
+ t.Errorf("The JSON data map isn't as expected %s.", jsonData)
+ }
+}
+
func checkSystemModulesUseByDroidstubs(t *testing.T, ctx *android.TestContext, moduleName string, systemJar string) {
metalavaRule := ctx.ModuleForTests(moduleName, "android_common").Rule("metalava")
var systemJars []string