Merge "Translate java libraries to java_library"

am: 5e48b1d183

Change-Id: Ieece3e42538a19f01bde82cf453afcbe072f3e1b
This commit is contained in:
Colin Cross 2018-07-11 12:13:24 -07:00 committed by android-build-merger
commit c376617cb5
4 changed files with 161 additions and 7 deletions

View file

@ -747,8 +747,8 @@ var moduleTypes = map[string]string{
"BUILD_NATIVE_BENCHMARK": "cc_benchmark", "BUILD_NATIVE_BENCHMARK": "cc_benchmark",
"BUILD_HOST_NATIVE_BENCHMARK": "cc_benchmark_host", "BUILD_HOST_NATIVE_BENCHMARK": "cc_benchmark_host",
"BUILD_JAVA_LIBRARY": "java_library", "BUILD_JAVA_LIBRARY": "java_library_installable", // will be rewritten to java_library by bpfix
"BUILD_STATIC_JAVA_LIBRARY": "java_library_static", "BUILD_STATIC_JAVA_LIBRARY": "java_library",
"BUILD_HOST_JAVA_LIBRARY": "java_library_host", "BUILD_HOST_JAVA_LIBRARY": "java_library_host",
"BUILD_HOST_DALVIK_JAVA_LIBRARY": "java_library_host_dalvik", "BUILD_HOST_DALVIK_JAVA_LIBRARY": "java_library_host_dalvik",
"BUILD_PACKAGE": "android_app", "BUILD_PACKAGE": "android_app",

View file

@ -512,7 +512,7 @@ include $(call all-makefiles-under,$(LOCAL_PATH))
LOCAL_PROGUARD_ENABLED := obfuscation optimization LOCAL_PROGUARD_ENABLED := obfuscation optimization
# Custom # Custom
LOCAL_PROGUARD_ENABLED := custom LOCAL_PROGUARD_ENABLED := custom
include $(BUILD_JAVA_LIBRARY) include $(BUILD_STATIC_JAVA_LIBRARY)
`, `,
expected: ` expected: `
java_library { java_library {
@ -534,12 +534,54 @@ include $(call all-makefiles-under,$(LOCAL_PATH))
} }
`, `,
}, },
{
desc: "java library",
in: `
include $(CLEAR_VARS)
LOCAL_SRC_FILES := a.java
include $(BUILD_STATIC_JAVA_LIBRARY)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := b.java
include $(BUILD_JAVA_LIBRARY)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := c.java
LOCAL_UNINSTALLABLE_MODULE := true
include $(BUILD_JAVA_LIBRARY)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := d.java
LOCAL_UNINSTALLABLE_MODULE := false
include $(BUILD_JAVA_LIBRARY)
`,
expected: `
java_library {
srcs: ["a.java"],
}
java_library {
installable: true,
srcs: ["b.java"],
}
java_library {
installable: false,
srcs: ["c.java"],
}
java_library {
installable: true,
srcs: ["d.java"],
}
`,
},
{ {
desc: "errorprone options for java library", desc: "errorprone options for java library",
in: ` in: `
include $(CLEAR_VARS) include $(CLEAR_VARS)
LOCAL_ERROR_PRONE_FLAGS := -Xep:AsyncCallableReturnsNull:ERROR -Xep:AsyncFunctionReturnsNull:ERROR LOCAL_ERROR_PRONE_FLAGS := -Xep:AsyncCallableReturnsNull:ERROR -Xep:AsyncFunctionReturnsNull:ERROR
include $(BUILD_JAVA_LIBRARY) include $(BUILD_STATIC_JAVA_LIBRARY)
`, `,
expected: ` expected: `
java_library { java_library {
@ -631,7 +673,7 @@ include $(call all-makefiles-under,$(LOCAL_PATH))
], ],
} }
java_library_static { java_library {
srcs: ["test.java"], srcs: ["test.java"],
static_libs: [], static_libs: [],
} }

View file

@ -70,6 +70,14 @@ var fixSteps = []fixStep{
name: "rewriteTestModuleTypes", name: "rewriteTestModuleTypes",
fix: rewriteTestModuleTypes, fix: rewriteTestModuleTypes,
}, },
{
name: "rewriteAndroidmkJavaLibs",
fix: rewriteAndroidmkJavaLibs,
},
{
name: "rewriteJavaStaticLibs",
fix: rewriteJavaStaticLibs,
},
{ {
name: "mergeMatchingModuleProperties", name: "mergeMatchingModuleProperties",
fix: runPatchListMod(mergeMatchingModuleProperties), fix: runPatchListMod(mergeMatchingModuleProperties),
@ -241,7 +249,7 @@ func rewriteIncorrectAndroidmkAndroidLibraries(f *Fixer) error {
hasResourceDirs := hasNonEmptyLiteralListProperty(mod, "resource_dirs") hasResourceDirs := hasNonEmptyLiteralListProperty(mod, "resource_dirs")
if hasAndroidLibraries || hasStaticAndroidLibraries || hasResourceDirs { if hasAndroidLibraries || hasStaticAndroidLibraries || hasResourceDirs {
if mod.Type == "java_library_static" { if mod.Type == "java_library_static" || mod.Type == "java_library" {
mod.Type = "android_library" mod.Type = "android_library"
} }
} }
@ -289,7 +297,7 @@ func rewriteTestModuleTypes(f *Fixer) error {
switch mod.Type { switch mod.Type {
case "android_app": case "android_app":
mod.Type = "android_test" mod.Type = "android_test"
case "java_library": case "java_library", "java_library_installable":
mod.Type = "java_test" mod.Type = "java_test"
case "java_library_host": case "java_library_host":
mod.Type = "java_test_host" mod.Type = "java_test_host"
@ -300,6 +308,51 @@ func rewriteTestModuleTypes(f *Fixer) error {
return nil return nil
} }
// rewriteJavaStaticLibs rewrites java_library_static into java_library
func rewriteJavaStaticLibs(f *Fixer) error {
for _, def := range f.tree.Defs {
mod, ok := def.(*parser.Module)
if !ok {
continue
}
if mod.Type == "java_library_static" {
mod.Type = "java_library"
}
}
return nil
}
// rewriteAndroidmkJavaLibs rewrites java_library_installable into java_library plus installable: true
func rewriteAndroidmkJavaLibs(f *Fixer) error {
for _, def := range f.tree.Defs {
mod, ok := def.(*parser.Module)
if !ok {
continue
}
if mod.Type != "java_library_installable" {
continue
}
mod.Type = "java_library"
_, hasInstallable := mod.GetProperty("installable")
if !hasInstallable {
prop := &parser.Property{
Name: "installable",
Value: &parser.Bool{
Value: true,
},
}
mod.Properties = append(mod.Properties, prop)
}
}
return nil
}
func runPatchListMod(modFunc func(mod *parser.Module, buf []byte, patchlist *parser.PatchList) error) func(*Fixer) error { func runPatchListMod(modFunc func(mod *parser.Module, buf []byte, patchlist *parser.PatchList) error) func(*Fixer) error {
return func(f *Fixer) error { return func(f *Fixer) error {
// Make sure all the offsets are accurate // Make sure all the offsets are accurate
@ -346,6 +399,7 @@ var commonPropertyPriorities = []string{
"defaults", "defaults",
"device_supported", "device_supported",
"host_supported", "host_supported",
"installable",
} }
func reorderCommonProperties(mod *parser.Module, buf []byte, patchlist *parser.PatchList) error { func reorderCommonProperties(mod *parser.Module, buf []byte, patchlist *parser.PatchList) error {

View file

@ -497,3 +497,61 @@ func TestRemoveMatchingModuleListProperties(t *testing.T) {
}) })
} }
} }
func TestReplaceJavaStaticLibs(t *testing.T) {
tests := []struct {
name string
in string
out string
}{
{
name: "static lib",
in: `
java_library_static {
name: "foo",
}
`,
out: `
java_library {
name: "foo",
}
`,
},
{
name: "java lib",
in: `
java_library {
name: "foo",
}
`,
out: `
java_library {
name: "foo",
}
`,
},
{
name: "java installable lib",
in: `
java_library {
name: "foo",
installable: true,
}
`,
out: `
java_library {
name: "foo",
installable: true,
}
`,
},
}
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
runPass(t, test.in, test.out, func(fixer *Fixer) error {
return rewriteJavaStaticLibs(fixer)
})
})
}
}