Add api_dirs property and use module name as prefix
The soong connect the prebuilt library according to LOCAL_SDK_VERSION. But some sdk libraries has diffrent version policy with LOCAL_SDK_VERSION. For this, we need to support direct link to the prebuilt library instead of creating a new LOCAL_XXX_SDK_VERSION. So, The base module name is used as the prefix for the prebuilt module name. Remove the empty file check to support the absence of a prebuilt library and add api_dirs property Bug:77577799 Test: make -j Change-Id: I1086977d26e4ddfd62e290637126d44e1b248bac
This commit is contained in:
parent
297d9bceda
commit
27eecb99d2
|
@ -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,
|
||||
|
|
|
@ -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,23 +116,23 @@ 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)
|
||||
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, err)
|
||||
mctx.ModuleErrorf("failed to glob jar files under %q: %s", mydir+apiver+"/"+scope, err)
|
||||
}
|
||||
files = append(files, vfiles...)
|
||||
}
|
||||
if len(files) == 0 {
|
||||
mctx.ModuleErrorf("no jar file found under %q", mydir)
|
||||
}
|
||||
|
||||
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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func prebuiltApiFiles(mctx android.TopDownMutatorContext) {
|
||||
|
@ -192,6 +194,7 @@ func prebuiltApisMutator(mctx android.TopDownMutatorContext) {
|
|||
|
||||
func prebuiltApisFactory() android.Module {
|
||||
module := &prebuiltApis{}
|
||||
module.AddProperties(&module.properties)
|
||||
android.InitAndroidModule(module)
|
||||
return module
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue