Merge "transitive r8 flags for installable {android,java}_libraries" into main am: d9569528bd
am: 0b74fbb608
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/2812555 Change-Id: I1456be6b3d86fa9e55787112c5fa239a21b025cf Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
11
java/aar.go
11
java/aar.go
@@ -811,8 +811,11 @@ func (a *AndroidLibrary) GenerateAndroidBuildActions(ctx android.ModuleContext)
|
|||||||
a.linter.manifest = a.aapt.manifestPath
|
a.linter.manifest = a.aapt.manifestPath
|
||||||
a.linter.resources = a.aapt.resourceFiles
|
a.linter.resources = a.aapt.resourceFiles
|
||||||
|
|
||||||
a.Module.extraProguardFlagFiles = append(a.Module.extraProguardFlagFiles,
|
proguardSpecInfo := a.collectProguardSpecInfo(ctx)
|
||||||
a.proguardOptionsFile)
|
ctx.SetProvider(ProguardSpecInfoProvider, proguardSpecInfo)
|
||||||
|
a.exportedProguardFlagFiles = proguardSpecInfo.ProguardFlagsFiles.ToList()
|
||||||
|
a.extraProguardFlagFiles = append(a.extraProguardFlagFiles, a.exportedProguardFlagFiles...)
|
||||||
|
a.extraProguardFlagFiles = append(a.extraProguardFlagFiles, a.proguardOptionsFile)
|
||||||
|
|
||||||
var extraSrcJars android.Paths
|
var extraSrcJars android.Paths
|
||||||
var extraCombinedJars android.Paths
|
var extraCombinedJars android.Paths
|
||||||
@@ -838,10 +841,6 @@ func (a *AndroidLibrary) GenerateAndroidBuildActions(ctx android.ModuleContext)
|
|||||||
ctx.CheckbuildFile(a.aarFile)
|
ctx.CheckbuildFile(a.aarFile)
|
||||||
}
|
}
|
||||||
|
|
||||||
proguardSpecInfo := a.collectProguardSpecInfo(ctx)
|
|
||||||
ctx.SetProvider(ProguardSpecInfoProvider, proguardSpecInfo)
|
|
||||||
a.exportedProguardFlagFiles = proguardSpecInfo.ProguardFlagsFiles.ToList()
|
|
||||||
|
|
||||||
prebuiltJniPackages := android.Paths{}
|
prebuiltJniPackages := android.Paths{}
|
||||||
ctx.VisitDirectDeps(func(module android.Module) {
|
ctx.VisitDirectDeps(func(module android.Module) {
|
||||||
if info, ok := ctx.OtherModuleProvider(module, JniPackageProvider).(JniPackageInfo); ok {
|
if info, ok := ctx.OtherModuleProvider(module, JniPackageProvider).(JniPackageInfo); ok {
|
||||||
|
@@ -300,6 +300,8 @@ func (d *dexer) r8Flags(ctx android.ModuleContext, flags javaBuilderFlags) (r8Fl
|
|||||||
|
|
||||||
flagFiles = append(flagFiles, android.PathsForModuleSrc(ctx, opt.Proguard_flags_files)...)
|
flagFiles = append(flagFiles, android.PathsForModuleSrc(ctx, opt.Proguard_flags_files)...)
|
||||||
|
|
||||||
|
flagFiles = android.FirstUniquePaths(flagFiles)
|
||||||
|
|
||||||
r8Flags = append(r8Flags, android.JoinWithPrefix(flagFiles.Strings(), "-include "))
|
r8Flags = append(r8Flags, android.JoinWithPrefix(flagFiles.Strings(), "-include "))
|
||||||
r8Deps = append(r8Deps, flagFiles...)
|
r8Deps = append(r8Deps, flagFiles...)
|
||||||
|
|
||||||
|
130
java/dex_test.go
130
java/dex_test.go
@@ -385,13 +385,53 @@ func TestProguardFlagsInheritanceStatic(t *testing.T) {
|
|||||||
func TestProguardFlagsInheritance(t *testing.T) {
|
func TestProguardFlagsInheritance(t *testing.T) {
|
||||||
directDepFlagsFileName := "direct_dep.flags"
|
directDepFlagsFileName := "direct_dep.flags"
|
||||||
transitiveDepFlagsFileName := "transitive_dep.flags"
|
transitiveDepFlagsFileName := "transitive_dep.flags"
|
||||||
bp := `
|
|
||||||
android_app {
|
|
||||||
name: "app",
|
|
||||||
static_libs: ["androidlib"], // this must be static_libs to initate dexing
|
|
||||||
platform_apis: true,
|
|
||||||
}
|
|
||||||
|
|
||||||
|
topLevelModules := []struct {
|
||||||
|
name string
|
||||||
|
definition string
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
name: "android_app",
|
||||||
|
definition: `
|
||||||
|
android_app {
|
||||||
|
name: "app",
|
||||||
|
static_libs: ["androidlib"], // this must be static_libs to initate dexing
|
||||||
|
platform_apis: true,
|
||||||
|
}
|
||||||
|
`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "android_library",
|
||||||
|
definition: `
|
||||||
|
android_library {
|
||||||
|
name: "app",
|
||||||
|
static_libs: ["androidlib"], // this must be static_libs to initate dexing
|
||||||
|
installable: true,
|
||||||
|
optimize: {
|
||||||
|
enabled: true,
|
||||||
|
shrink: true,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "java_library",
|
||||||
|
definition: `
|
||||||
|
java_library {
|
||||||
|
name: "app",
|
||||||
|
static_libs: ["androidlib"], // this must be static_libs to initate dexing
|
||||||
|
srcs: ["Foo.java"],
|
||||||
|
installable: true,
|
||||||
|
optimize: {
|
||||||
|
enabled: true,
|
||||||
|
shrink: true,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
`,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
bp := `
|
||||||
android_library {
|
android_library {
|
||||||
name: "androidlib",
|
name: "androidlib",
|
||||||
static_libs: ["app_dep"],
|
static_libs: ["app_dep"],
|
||||||
@@ -558,43 +598,46 @@ func TestProguardFlagsInheritance(t *testing.T) {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, tc := range testcases {
|
for _, topLevelModuleDef := range topLevelModules {
|
||||||
t.Run(tc.name, func(t *testing.T) {
|
for _, tc := range testcases {
|
||||||
result := android.GroupFixturePreparers(
|
t.Run(topLevelModuleDef.name+"-"+tc.name, func(t *testing.T) {
|
||||||
PrepareForTestWithJavaDefaultModules,
|
result := android.GroupFixturePreparers(
|
||||||
android.FixtureMergeMockFs(android.MockFS{
|
PrepareForTestWithJavaDefaultModules,
|
||||||
directDepFlagsFileName: nil,
|
android.FixtureMergeMockFs(android.MockFS{
|
||||||
transitiveDepFlagsFileName: nil,
|
directDepFlagsFileName: nil,
|
||||||
}),
|
transitiveDepFlagsFileName: nil,
|
||||||
).RunTestWithBp(t,
|
}),
|
||||||
fmt.Sprintf(
|
).RunTestWithBp(t,
|
||||||
bp,
|
topLevelModuleDef.definition+
|
||||||
tc.depType,
|
fmt.Sprintf(
|
||||||
tc.transitiveDepType,
|
bp,
|
||||||
tc.depExportsFlagsFiles,
|
tc.depType,
|
||||||
tc.transitiveDepExportsFlagsFiles,
|
tc.transitiveDepType,
|
||||||
),
|
tc.depExportsFlagsFiles,
|
||||||
)
|
tc.transitiveDepExportsFlagsFiles,
|
||||||
appR8 := result.ModuleForTests("app", "android_common").Rule("r8")
|
),
|
||||||
|
)
|
||||||
|
appR8 := result.ModuleForTests("app", "android_common").Rule("r8")
|
||||||
|
|
||||||
shouldHaveDepFlags := android.InList(directDepFlagsFileName, tc.expectedFlagsFiles)
|
shouldHaveDepFlags := android.InList(directDepFlagsFileName, tc.expectedFlagsFiles)
|
||||||
if shouldHaveDepFlags {
|
if shouldHaveDepFlags {
|
||||||
android.AssertStringDoesContain(t, "expected deps's proguard flags",
|
android.AssertStringDoesContain(t, "expected deps's proguard flags",
|
||||||
appR8.Args["r8Flags"], directDepFlagsFileName)
|
appR8.Args["r8Flags"], directDepFlagsFileName)
|
||||||
} else {
|
} else {
|
||||||
android.AssertStringDoesNotContain(t, "app did not expect deps's proguard flags",
|
android.AssertStringDoesNotContain(t, "app did not expect deps's proguard flags",
|
||||||
appR8.Args["r8Flags"], directDepFlagsFileName)
|
appR8.Args["r8Flags"], directDepFlagsFileName)
|
||||||
}
|
}
|
||||||
|
|
||||||
shouldHaveTransitiveDepFlags := android.InList(transitiveDepFlagsFileName, tc.expectedFlagsFiles)
|
shouldHaveTransitiveDepFlags := android.InList(transitiveDepFlagsFileName, tc.expectedFlagsFiles)
|
||||||
if shouldHaveTransitiveDepFlags {
|
if shouldHaveTransitiveDepFlags {
|
||||||
android.AssertStringDoesContain(t, "expected transitive deps's proguard flags",
|
android.AssertStringDoesContain(t, "expected transitive deps's proguard flags",
|
||||||
appR8.Args["r8Flags"], transitiveDepFlagsFileName)
|
appR8.Args["r8Flags"], transitiveDepFlagsFileName)
|
||||||
} else {
|
} else {
|
||||||
android.AssertStringDoesNotContain(t, "app did not expect transitive deps's proguard flags",
|
android.AssertStringDoesNotContain(t, "app did not expect transitive deps's proguard flags",
|
||||||
appR8.Args["r8Flags"], transitiveDepFlagsFileName)
|
appR8.Args["r8Flags"], transitiveDepFlagsFileName)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -606,11 +649,6 @@ func TestProguardFlagsInheritanceAppImport(t *testing.T) {
|
|||||||
platform_apis: true,
|
platform_apis: true,
|
||||||
}
|
}
|
||||||
|
|
||||||
android_library {
|
|
||||||
name: "androidlib",
|
|
||||||
static_libs: ["aarimport"],
|
|
||||||
}
|
|
||||||
|
|
||||||
android_library_import {
|
android_library_import {
|
||||||
name: "aarimport",
|
name: "aarimport",
|
||||||
aars: ["import.aar"],
|
aars: ["import.aar"],
|
||||||
|
@@ -697,6 +697,11 @@ func (j *Library) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
|||||||
|
|
||||||
j.stem = proptools.StringDefault(j.overridableDeviceProperties.Stem, ctx.ModuleName())
|
j.stem = proptools.StringDefault(j.overridableDeviceProperties.Stem, ctx.ModuleName())
|
||||||
|
|
||||||
|
proguardSpecInfo := j.collectProguardSpecInfo(ctx)
|
||||||
|
ctx.SetProvider(ProguardSpecInfoProvider, proguardSpecInfo)
|
||||||
|
j.exportedProguardFlagFiles = proguardSpecInfo.ProguardFlagsFiles.ToList()
|
||||||
|
j.extraProguardFlagFiles = append(j.extraProguardFlagFiles, j.exportedProguardFlagFiles...)
|
||||||
|
|
||||||
apexInfo := ctx.Provider(android.ApexInfoProvider).(android.ApexInfo)
|
apexInfo := ctx.Provider(android.ApexInfoProvider).(android.ApexInfo)
|
||||||
if !apexInfo.IsForPlatform() {
|
if !apexInfo.IsForPlatform() {
|
||||||
j.hideApexVariantFromMake = true
|
j.hideApexVariantFromMake = true
|
||||||
@@ -741,10 +746,6 @@ func (j *Library) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
|||||||
}
|
}
|
||||||
j.installFile = ctx.InstallFile(installDir, j.Stem()+".jar", j.outputFile, extraInstallDeps...)
|
j.installFile = ctx.InstallFile(installDir, j.Stem()+".jar", j.outputFile, extraInstallDeps...)
|
||||||
}
|
}
|
||||||
|
|
||||||
proguardSpecInfo := j.collectProguardSpecInfo(ctx)
|
|
||||||
ctx.SetProvider(ProguardSpecInfoProvider, proguardSpecInfo)
|
|
||||||
j.exportedProguardFlagFiles = proguardSpecInfo.ProguardFlagsFiles.ToList()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (j *Library) DepsMutator(ctx android.BottomUpMutatorContext) {
|
func (j *Library) DepsMutator(ctx android.BottomUpMutatorContext) {
|
||||||
|
Reference in New Issue
Block a user