aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTreehugger Robot <treehugger-gerrit@google.com>2018-07-03 04:29:25 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2018-07-03 04:29:25 +0000
commitb1f0f1aecd64ed81d319255ab051e6c338052627 (patch)
tree1923dadb944ecedcd969fe90657ac8b53fb0e7fb
parentc4151163332b6d87ed8ac370d9d19967cbd26c66 (diff)
parent27eecb99d22b7d8aa1e345f0bbcd37f839c8a92f (diff)
downloadbuild_soong-b1f0f1aecd64ed81d319255ab051e6c338052627.tar.gz
build_soong-b1f0f1aecd64ed81d319255ab051e6c338052627.tar.bz2
build_soong-b1f0f1aecd64ed81d319255ab051e6c338052627.zip
Merge "Add api_dirs property and use module name as prefix"
-rw-r--r--java/java_test.go2
-rw-r--r--java/prebuilt_apis.go33
2 files changed, 19 insertions, 16 deletions
diff --git a/java/java_test.go b/java/java_test.go
index 96bf2243..572db2f7 100644
--- a/java/java_test.go
+++ b/java/java_test.go
@@ -188,7 +188,7 @@ func testContext(config android.Config, bp string,
"prebuilts/sdk/28/system/api/bar-removed.txt": nil,
"prebuilts/sdk/28/test/api/bar-removed.txt": nil,
"prebuilts/sdk/tools/core-lambda-stubs.jar": nil,
- "prebuilts/sdk/Android.bp": []byte(`prebuilt_apis { name: "prebuilt_apis",}`),
+ "prebuilts/sdk/Android.bp": []byte(`prebuilt_apis { name: "sdk", api_dirs: ["14", "28", "current"],}`),
// For framework-res, which is an implicit dependency for framework
"AndroidManifest.xml": nil,
diff --git a/java/prebuilt_apis.go b/java/prebuilt_apis.go
index 3f4b076b..59b2092d 100644
--- a/java/prebuilt_apis.go
+++ b/java/prebuilt_apis.go
@@ -38,8 +38,14 @@ func init() {
})
}
+type prebuiltApisProperties struct {
+ // list of api version directories
+ Api_dirs []string
+}
+
type prebuiltApis struct {
android.ModuleBase
+ properties prebuiltApisProperties
}
func (module *prebuiltApis) DepsMutator(ctx android.BottomUpMutatorContext) {
@@ -55,10 +61,6 @@ func parseJarPath(ctx android.BaseModuleContext, path string) (module string, ap
apiver = elements[0]
scope = elements[1]
- if scope != "public" && scope != "system" && scope != "test" && scope != "core" {
- // scope must be public, system or test
- return
- }
module = strings.TrimSuffix(elements[2], ".jar")
return
@@ -91,7 +93,7 @@ func createImport(mctx android.TopDownMutatorContext, module string, scope strin
Sdk_version *string
Installable *bool
}{}
- props.Name = proptools.StringPtr("sdk_" + scope + "_" + apiver + "_" + module)
+ props.Name = proptools.StringPtr(mctx.ModuleName() + "_" + scope + "_" + apiver + "_" + module)
props.Jars = append(props.Jars, path)
// TODO(hansson): change to scope after migration is done.
props.Sdk_version = proptools.StringPtr("current")
@@ -114,22 +116,22 @@ func createFilegroup(mctx android.TopDownMutatorContext, module string, scope st
func prebuiltSdkStubs(mctx android.TopDownMutatorContext) {
mydir := mctx.ModuleDir() + "/"
// <apiver>/<scope>/<module>.jar
- files, err := mctx.GlobWithDeps(mydir+"*/*/*.jar", nil)
- if err != nil {
- mctx.ModuleErrorf("failed to glob jar files under %q: %s", mydir, err)
- }
- if len(files) == 0 {
- mctx.ModuleErrorf("no jar file found under %q", mydir)
+ var files []string
+ for _, apiver := range mctx.Module().(*prebuiltApis).properties.Api_dirs {
+ for _, scope := range []string{"public", "system", "test", "core"} {
+ vfiles, err := mctx.GlobWithDeps(mydir+apiver+"/"+scope+"*/*.jar", nil)
+ if err != nil {
+ mctx.ModuleErrorf("failed to glob jar files under %q: %s", mydir+apiver+"/"+scope, err)
+ }
+ files = append(files, vfiles...)
+ }
}
for _, f := range files {
// create a Import module for each jar file
localPath := strings.TrimPrefix(f, mydir)
module, apiver, scope := parseJarPath(mctx, localPath)
-
- if len(module) != 0 {
- createImport(mctx, module, scope, apiver, localPath)
- }
+ createImport(mctx, module, scope, apiver, localPath)
}
}
@@ -192,6 +194,7 @@ func prebuiltApisMutator(mctx android.TopDownMutatorContext) {
func prebuiltApisFactory() android.Module {
module := &prebuiltApis{}
+ module.AddProperties(&module.properties)
android.InitAndroidModule(module)
return module
}