Merge "Add sdk_version:"none" to replace no_standard_libs:true"
am: b11c72b0b8
Change-Id: I4cd6810fa349fa12996f7a9d57644c7ecde0015f
This commit is contained in:
@@ -108,6 +108,9 @@ func createLibcoreRules() []*rule {
|
|||||||
neverallow().
|
neverallow().
|
||||||
notIn(coreLibraryProjects...).
|
notIn(coreLibraryProjects...).
|
||||||
with("no_standard_libs", "true"),
|
with("no_standard_libs", "true"),
|
||||||
|
neverallow().
|
||||||
|
notIn(coreLibraryProjects...).
|
||||||
|
with("sdk_version", "none"),
|
||||||
}
|
}
|
||||||
|
|
||||||
return rules
|
return rules
|
||||||
|
@@ -178,6 +178,37 @@ var neverallowTests = []struct {
|
|||||||
}`),
|
}`),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "sdk_version: \"none\" inside core libraries",
|
||||||
|
fs: map[string][]byte{
|
||||||
|
"libcore/Blueprints": []byte(`
|
||||||
|
java_library {
|
||||||
|
name: "inside_core_libraries",
|
||||||
|
sdk_version: "none",
|
||||||
|
}`),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "sdk_version: \"none\" outside core libraries",
|
||||||
|
fs: map[string][]byte{
|
||||||
|
"Blueprints": []byte(`
|
||||||
|
java_library {
|
||||||
|
name: "outside_core_libraries",
|
||||||
|
sdk_version: "none",
|
||||||
|
}`),
|
||||||
|
},
|
||||||
|
expectedError: "module \"outside_core_libraries\": violates neverallow",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "sdk_version: \"current\"",
|
||||||
|
fs: map[string][]byte{
|
||||||
|
"Blueprints": []byte(`
|
||||||
|
java_library {
|
||||||
|
name: "outside_core_libraries",
|
||||||
|
sdk_version: "current",
|
||||||
|
}`),
|
||||||
|
},
|
||||||
|
},
|
||||||
// java_library_host rule tests
|
// java_library_host rule tests
|
||||||
{
|
{
|
||||||
name: "java_library_host with no_standard_libs: true",
|
name: "java_library_host with no_standard_libs: true",
|
||||||
@@ -266,6 +297,7 @@ func (p *mockCcLibraryModule) GenerateAndroidBuildActions(ModuleContext) {
|
|||||||
type mockJavaLibraryProperties struct {
|
type mockJavaLibraryProperties struct {
|
||||||
Libs []string
|
Libs []string
|
||||||
No_standard_libs *bool
|
No_standard_libs *bool
|
||||||
|
Sdk_version *string
|
||||||
}
|
}
|
||||||
|
|
||||||
type mockJavaLibraryModule struct {
|
type mockJavaLibraryModule struct {
|
||||||
|
@@ -682,7 +682,7 @@ func getLinkType(m *Module, name string) (ret linkType, stubs bool) {
|
|||||||
return javaSdk, true
|
return javaSdk, true
|
||||||
case ver == "current":
|
case ver == "current":
|
||||||
return javaSdk, false
|
return javaSdk, false
|
||||||
case ver == "":
|
case ver == "" || ver == "none":
|
||||||
return javaPlatform, false
|
return javaPlatform, false
|
||||||
default:
|
default:
|
||||||
if _, err := strconv.Atoi(ver); err != nil {
|
if _, err := strconv.Atoi(ver); err != nil {
|
||||||
@@ -860,7 +860,7 @@ func getJavaVersion(ctx android.ModuleContext, javaVersion string, sdkContext sd
|
|||||||
var ret string
|
var ret string
|
||||||
v := sdkContext.sdkVersion()
|
v := sdkContext.sdkVersion()
|
||||||
// For PDK builds, use the latest SDK version instead of "current"
|
// For PDK builds, use the latest SDK version instead of "current"
|
||||||
if ctx.Config().IsPdkBuild() && (v == "" || v == "current") {
|
if ctx.Config().IsPdkBuild() && (v == "" || v == "none" || v == "current") {
|
||||||
sdkVersions := ctx.Config().Get(sdkVersionsKey).([]int)
|
sdkVersions := ctx.Config().Get(sdkVersionsKey).([]int)
|
||||||
latestSdkVersion := 0
|
latestSdkVersion := 0
|
||||||
if len(sdkVersions) > 0 {
|
if len(sdkVersions) > 0 {
|
||||||
@@ -879,7 +879,7 @@ func getJavaVersion(ctx android.ModuleContext, javaVersion string, sdkContext sd
|
|||||||
ret = "1.7"
|
ret = "1.7"
|
||||||
} else if ctx.Device() && sdk <= 29 || !ctx.Config().TargetOpenJDK9() {
|
} else if ctx.Device() && sdk <= 29 || !ctx.Config().TargetOpenJDK9() {
|
||||||
ret = "1.8"
|
ret = "1.8"
|
||||||
} else if ctx.Device() && sdkContext.sdkVersion() != "" && sdk == android.FutureApiLevel {
|
} else if ctx.Device() && sdkContext.sdkVersion() != "" && sdkContext.sdkVersion() != "none" && sdk == android.FutureApiLevel {
|
||||||
// TODO(ccross): once we generate stubs we should be able to use 1.9 for sdk_version: "current"
|
// TODO(ccross): once we generate stubs we should be able to use 1.9 for sdk_version: "current"
|
||||||
ret = "1.8"
|
ret = "1.8"
|
||||||
} else {
|
} else {
|
||||||
|
@@ -842,6 +842,19 @@ func TestExcludeFileGroupInSrcs(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestJavaLibrary(t *testing.T) {
|
||||||
|
config := testConfig(nil)
|
||||||
|
ctx := testContext(config, "", map[string][]byte{
|
||||||
|
"libcore/Android.bp": []byte(`
|
||||||
|
java_library {
|
||||||
|
name: "core",
|
||||||
|
sdk_version: "none",
|
||||||
|
system_modules: "none",
|
||||||
|
}`),
|
||||||
|
})
|
||||||
|
run(t, ctx, config)
|
||||||
|
}
|
||||||
|
|
||||||
func TestJavaSdkLibrary(t *testing.T) {
|
func TestJavaSdkLibrary(t *testing.T) {
|
||||||
ctx := testJava(t, `
|
ctx := testJava(t, `
|
||||||
droiddoc_template {
|
droiddoc_template {
|
||||||
|
10
java/sdk.go
10
java/sdk.go
@@ -54,7 +54,7 @@ type sdkContext interface {
|
|||||||
|
|
||||||
func sdkVersionOrDefault(ctx android.BaseModuleContext, v string) string {
|
func sdkVersionOrDefault(ctx android.BaseModuleContext, v string) string {
|
||||||
switch v {
|
switch v {
|
||||||
case "", "current", "system_current", "test_current", "core_current":
|
case "", "none", "current", "system_current", "test_current", "core_current":
|
||||||
return ctx.Config().DefaultAppTargetSdk()
|
return ctx.Config().DefaultAppTargetSdk()
|
||||||
default:
|
default:
|
||||||
return v
|
return v
|
||||||
@@ -65,7 +65,7 @@ func sdkVersionOrDefault(ctx android.BaseModuleContext, v string) string {
|
|||||||
// it returns android.FutureApiLevel (10000).
|
// it returns android.FutureApiLevel (10000).
|
||||||
func sdkVersionToNumber(ctx android.BaseModuleContext, v string) (int, error) {
|
func sdkVersionToNumber(ctx android.BaseModuleContext, v string) (int, error) {
|
||||||
switch v {
|
switch v {
|
||||||
case "", "current", "test_current", "system_current", "core_current":
|
case "", "none", "current", "test_current", "system_current", "core_current":
|
||||||
return ctx.Config().DefaultAppTargetSdkInt(), nil
|
return ctx.Config().DefaultAppTargetSdkInt(), nil
|
||||||
default:
|
default:
|
||||||
n := android.GetNumericSdkVersion(v)
|
n := android.GetNumericSdkVersion(v)
|
||||||
@@ -187,7 +187,7 @@ func decodeSdkDep(ctx android.BaseModuleContext, sdkContext sdkContext) sdkDep {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ctx.Config().UnbundledBuildUsePrebuiltSdks() && v != "" {
|
if ctx.Config().UnbundledBuildUsePrebuiltSdks() && v != "" && v != "none" {
|
||||||
return toPrebuilt(v)
|
return toPrebuilt(v)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -201,6 +201,10 @@ func decodeSdkDep(ctx android.BaseModuleContext, sdkContext sdkContext) sdkDep {
|
|||||||
noStandardLibs: sdkContext.noStandardLibs(),
|
noStandardLibs: sdkContext.noStandardLibs(),
|
||||||
noFrameworksLibs: sdkContext.noFrameworkLibs(),
|
noFrameworksLibs: sdkContext.noFrameworkLibs(),
|
||||||
}
|
}
|
||||||
|
case "none":
|
||||||
|
return sdkDep{
|
||||||
|
noStandardLibs: true,
|
||||||
|
}
|
||||||
case "current":
|
case "current":
|
||||||
return toModule("android_stubs_current", "framework-res", sdkFrameworkAidlPath(ctx))
|
return toModule("android_stubs_current", "framework-res", sdkFrameworkAidlPath(ctx))
|
||||||
case "system_current":
|
case "system_current":
|
||||||
|
@@ -402,19 +402,22 @@ func (module *SdkLibrary) createStubsLibrary(mctx android.LoadHookContext, apiSc
|
|||||||
}
|
}
|
||||||
}{}
|
}{}
|
||||||
|
|
||||||
|
sdkVersion := module.sdkVersion(apiScope)
|
||||||
sdkDep := decodeSdkDep(mctx, sdkContext(&module.Library))
|
sdkDep := decodeSdkDep(mctx, sdkContext(&module.Library))
|
||||||
|
if !sdkDep.hasStandardLibs() {
|
||||||
|
sdkVersion = "none"
|
||||||
|
}
|
||||||
|
|
||||||
props.Name = proptools.StringPtr(module.stubsName(apiScope))
|
props.Name = proptools.StringPtr(module.stubsName(apiScope))
|
||||||
// sources are generated from the droiddoc
|
// sources are generated from the droiddoc
|
||||||
props.Srcs = []string{":" + module.docsName(apiScope)}
|
props.Srcs = []string{":" + module.docsName(apiScope)}
|
||||||
props.Sdk_version = proptools.StringPtr(module.sdkVersion(apiScope))
|
props.Sdk_version = proptools.StringPtr(sdkVersion)
|
||||||
props.Libs = module.sdkLibraryProperties.Stub_only_libs
|
props.Libs = module.sdkLibraryProperties.Stub_only_libs
|
||||||
// Unbundled apps will use the prebult one from /prebuilts/sdk
|
// Unbundled apps will use the prebult one from /prebuilts/sdk
|
||||||
if mctx.Config().UnbundledBuildUsePrebuiltSdks() {
|
if mctx.Config().UnbundledBuildUsePrebuiltSdks() {
|
||||||
props.Product_variables.Unbundled_build.Enabled = proptools.BoolPtr(false)
|
props.Product_variables.Unbundled_build.Enabled = proptools.BoolPtr(false)
|
||||||
}
|
}
|
||||||
props.Product_variables.Pdk.Enabled = proptools.BoolPtr(false)
|
props.Product_variables.Pdk.Enabled = proptools.BoolPtr(false)
|
||||||
props.No_standard_libs = proptools.BoolPtr(!sdkDep.hasStandardLibs())
|
|
||||||
props.System_modules = module.Library.Module.deviceProperties.System_modules
|
props.System_modules = module.Library.Module.deviceProperties.System_modules
|
||||||
props.Openjdk9.Srcs = module.Library.Module.properties.Openjdk9.Srcs
|
props.Openjdk9.Srcs = module.Library.Module.properties.Openjdk9.Srcs
|
||||||
props.Openjdk9.Javacflags = module.Library.Module.properties.Openjdk9.Javacflags
|
props.Openjdk9.Javacflags = module.Library.Module.properties.Openjdk9.Javacflags
|
||||||
@@ -444,13 +447,13 @@ func (module *SdkLibrary) createDocs(mctx android.LoadHookContext, apiScope apiS
|
|||||||
Srcs_lib *string
|
Srcs_lib *string
|
||||||
Srcs_lib_whitelist_dirs []string
|
Srcs_lib_whitelist_dirs []string
|
||||||
Srcs_lib_whitelist_pkgs []string
|
Srcs_lib_whitelist_pkgs []string
|
||||||
|
Sdk_version *string
|
||||||
Libs []string
|
Libs []string
|
||||||
Arg_files []string
|
Arg_files []string
|
||||||
Args *string
|
Args *string
|
||||||
Api_tag_name *string
|
Api_tag_name *string
|
||||||
Api_filename *string
|
Api_filename *string
|
||||||
Removed_api_filename *string
|
Removed_api_filename *string
|
||||||
No_standard_libs *bool
|
|
||||||
Java_version *string
|
Java_version *string
|
||||||
Merge_annotations_dirs []string
|
Merge_annotations_dirs []string
|
||||||
Merge_inclusion_annotations_dirs []string
|
Merge_inclusion_annotations_dirs []string
|
||||||
@@ -466,10 +469,15 @@ func (module *SdkLibrary) createDocs(mctx android.LoadHookContext, apiScope apiS
|
|||||||
}{}
|
}{}
|
||||||
|
|
||||||
sdkDep := decodeSdkDep(mctx, sdkContext(&module.Library))
|
sdkDep := decodeSdkDep(mctx, sdkContext(&module.Library))
|
||||||
|
sdkVersion := ""
|
||||||
|
if !sdkDep.hasStandardLibs() {
|
||||||
|
sdkVersion = "none"
|
||||||
|
}
|
||||||
|
|
||||||
props.Name = proptools.StringPtr(module.docsName(apiScope))
|
props.Name = proptools.StringPtr(module.docsName(apiScope))
|
||||||
props.Srcs = append(props.Srcs, module.Library.Module.properties.Srcs...)
|
props.Srcs = append(props.Srcs, module.Library.Module.properties.Srcs...)
|
||||||
props.Srcs = append(props.Srcs, module.sdkLibraryProperties.Api_srcs...)
|
props.Srcs = append(props.Srcs, module.sdkLibraryProperties.Api_srcs...)
|
||||||
|
props.Sdk_version = proptools.StringPtr(sdkVersion)
|
||||||
props.Installable = proptools.BoolPtr(false)
|
props.Installable = proptools.BoolPtr(false)
|
||||||
// A droiddoc module has only one Libs property and doesn't distinguish between
|
// A droiddoc module has only one Libs property and doesn't distinguish between
|
||||||
// shared libs and static libs. So we need to add both of these libs to Libs property.
|
// shared libs and static libs. So we need to add both of these libs to Libs property.
|
||||||
@@ -477,7 +485,6 @@ func (module *SdkLibrary) createDocs(mctx android.LoadHookContext, apiScope apiS
|
|||||||
props.Libs = append(props.Libs, module.Library.Module.properties.Static_libs...)
|
props.Libs = append(props.Libs, module.Library.Module.properties.Static_libs...)
|
||||||
props.Aidl.Include_dirs = module.Library.Module.deviceProperties.Aidl.Include_dirs
|
props.Aidl.Include_dirs = module.Library.Module.deviceProperties.Aidl.Include_dirs
|
||||||
props.Aidl.Local_include_dirs = module.Library.Module.deviceProperties.Aidl.Local_include_dirs
|
props.Aidl.Local_include_dirs = module.Library.Module.deviceProperties.Aidl.Local_include_dirs
|
||||||
props.No_standard_libs = proptools.BoolPtr(!sdkDep.hasStandardLibs())
|
|
||||||
props.Java_version = module.Library.Module.properties.Java_version
|
props.Java_version = module.Library.Module.properties.Java_version
|
||||||
|
|
||||||
props.Merge_annotations_dirs = module.sdkLibraryProperties.Merge_annotations_dirs
|
props.Merge_annotations_dirs = module.sdkLibraryProperties.Merge_annotations_dirs
|
||||||
@@ -598,7 +605,7 @@ func (module *SdkLibrary) createXmlFile(mctx android.LoadHookContext) {
|
|||||||
|
|
||||||
func (module *SdkLibrary) PrebuiltJars(ctx android.BaseModuleContext, sdkVersion string) android.Paths {
|
func (module *SdkLibrary) PrebuiltJars(ctx android.BaseModuleContext, sdkVersion string) android.Paths {
|
||||||
var api, v string
|
var api, v string
|
||||||
if sdkVersion == "" {
|
if sdkVersion == "" || sdkVersion == "none" {
|
||||||
api = "system"
|
api = "system"
|
||||||
v = "current"
|
v = "current"
|
||||||
} else if strings.Contains(sdkVersion, "_") {
|
} else if strings.Contains(sdkVersion, "_") {
|
||||||
|
@@ -113,7 +113,7 @@ func TestClasspath(t *testing.T) {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
||||||
name: "nostdlib",
|
name: "nostdlib - no_standard_libs: true",
|
||||||
properties: `no_standard_libs: true, system_modules: "none"`,
|
properties: `no_standard_libs: true, system_modules: "none"`,
|
||||||
system: "none",
|
system: "none",
|
||||||
bootclasspath: []string{`""`},
|
bootclasspath: []string{`""`},
|
||||||
@@ -121,12 +121,28 @@ func TestClasspath(t *testing.T) {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
||||||
name: "nostdlib system_modules",
|
name: "nostdlib",
|
||||||
|
properties: `sdk_version: "none", system_modules: "none"`,
|
||||||
|
system: "none",
|
||||||
|
bootclasspath: []string{`""`},
|
||||||
|
classpath: []string{},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
|
||||||
|
name: "nostdlib system_modules - no_standard_libs: true",
|
||||||
properties: `no_standard_libs: true, system_modules: "core-platform-api-stubs-system-modules"`,
|
properties: `no_standard_libs: true, system_modules: "core-platform-api-stubs-system-modules"`,
|
||||||
system: "core-platform-api-stubs-system-modules",
|
system: "core-platform-api-stubs-system-modules",
|
||||||
bootclasspath: []string{`""`},
|
bootclasspath: []string{`""`},
|
||||||
classpath: []string{},
|
classpath: []string{},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
|
||||||
|
name: "nostdlib system_modules",
|
||||||
|
properties: `sdk_version: "none", system_modules: "core-platform-api-stubs-system-modules"`,
|
||||||
|
system: "core-platform-api-stubs-system-modules",
|
||||||
|
bootclasspath: []string{`""`},
|
||||||
|
classpath: []string{},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
|
|
||||||
name: "host default",
|
name: "host default",
|
||||||
@@ -145,11 +161,17 @@ func TestClasspath(t *testing.T) {
|
|||||||
bootclasspath: []string{"jdk8/jre/lib/jce.jar", "jdk8/jre/lib/rt.jar"},
|
bootclasspath: []string{"jdk8/jre/lib/jce.jar", "jdk8/jre/lib/rt.jar"},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "host supported nostdlib",
|
name: "host supported nostdlib - no_standard_libs: true",
|
||||||
host: android.Host,
|
host: android.Host,
|
||||||
properties: `host_supported: true, no_standard_libs: true, system_modules: "none"`,
|
properties: `host_supported: true, no_standard_libs: true, system_modules: "none"`,
|
||||||
classpath: []string{},
|
classpath: []string{},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "host supported nostdlib",
|
||||||
|
host: android.Host,
|
||||||
|
properties: `host_supported: true, sdk_version: "none", system_modules: "none"`,
|
||||||
|
classpath: []string{},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
|
|
||||||
name: "unbundled sdk v25",
|
name: "unbundled sdk v25",
|
||||||
|
@@ -54,7 +54,7 @@ func GatherRequiredDepsForTest() string {
|
|||||||
java_library {
|
java_library {
|
||||||
name: "%s",
|
name: "%s",
|
||||||
srcs: ["a.java"],
|
srcs: ["a.java"],
|
||||||
no_standard_libs: true,
|
sdk_version: "none",
|
||||||
system_modules: "core-platform-api-stubs-system-modules",
|
system_modules: "core-platform-api-stubs-system-modules",
|
||||||
}
|
}
|
||||||
`, extra)
|
`, extra)
|
||||||
|
Reference in New Issue
Block a user