Merge changes I0116f5f4,I950c9b54,I967f5c42
* changes: Treat java libraries in classpath fragments as directly in apex Make CopyDirectlyInAnyApex match the documentation Remove unused cc.copyDirectlyInAnyApexDependencyTag
This commit is contained in:
commit
4ab2dd1afe
5 changed files with 89 additions and 8 deletions
|
@ -669,8 +669,8 @@ func UpdateDirectlyInAnyApex(mctx BottomUpMutatorContext, am ApexModule) {
|
|||
mctx.VisitDirectDeps(func(dep Module) {
|
||||
if _, ok := mctx.OtherModuleDependencyTag(dep).(CopyDirectlyInAnyApexTag); ok {
|
||||
depBase := dep.(ApexModule).apexModuleBase()
|
||||
base.ApexProperties.DirectlyInAnyApex = depBase.ApexProperties.DirectlyInAnyApex
|
||||
base.ApexProperties.InAnyApex = depBase.ApexProperties.InAnyApex
|
||||
depBase.ApexProperties.DirectlyInAnyApex = base.ApexProperties.DirectlyInAnyApex
|
||||
depBase.ApexProperties.InAnyApex = base.ApexProperties.InAnyApex
|
||||
}
|
||||
})
|
||||
|
||||
|
|
|
@ -7611,6 +7611,80 @@ func TestHostApexInHostOnlyBuild(t *testing.T) {
|
|||
}))
|
||||
}
|
||||
|
||||
func TestApexJavaCoverage(t *testing.T) {
|
||||
bp := `
|
||||
apex {
|
||||
name: "myapex",
|
||||
key: "myapex.key",
|
||||
java_libs: ["mylib"],
|
||||
bootclasspath_fragments: ["mybootclasspathfragment"],
|
||||
systemserverclasspath_fragments: ["mysystemserverclasspathfragment"],
|
||||
updatable: false,
|
||||
}
|
||||
|
||||
apex_key {
|
||||
name: "myapex.key",
|
||||
public_key: "testkey.avbpubkey",
|
||||
private_key: "testkey.pem",
|
||||
}
|
||||
|
||||
java_library {
|
||||
name: "mylib",
|
||||
srcs: ["mylib.java"],
|
||||
apex_available: ["myapex"],
|
||||
compile_dex: true,
|
||||
}
|
||||
|
||||
bootclasspath_fragment {
|
||||
name: "mybootclasspathfragment",
|
||||
contents: ["mybootclasspathlib"],
|
||||
apex_available: ["myapex"],
|
||||
}
|
||||
|
||||
java_library {
|
||||
name: "mybootclasspathlib",
|
||||
srcs: ["mybootclasspathlib.java"],
|
||||
apex_available: ["myapex"],
|
||||
compile_dex: true,
|
||||
}
|
||||
|
||||
systemserverclasspath_fragment {
|
||||
name: "mysystemserverclasspathfragment",
|
||||
contents: ["mysystemserverclasspathlib"],
|
||||
apex_available: ["myapex"],
|
||||
}
|
||||
|
||||
java_library {
|
||||
name: "mysystemserverclasspathlib",
|
||||
srcs: ["mysystemserverclasspathlib.java"],
|
||||
apex_available: ["myapex"],
|
||||
compile_dex: true,
|
||||
}
|
||||
`
|
||||
|
||||
result := android.GroupFixturePreparers(
|
||||
PrepareForTestWithApexBuildComponents,
|
||||
prepareForTestWithMyapex,
|
||||
java.PrepareForTestWithJavaDefaultModules,
|
||||
android.PrepareForTestWithAndroidBuildComponents,
|
||||
android.FixtureWithRootAndroidBp(bp),
|
||||
android.FixtureMergeEnv(map[string]string{
|
||||
"EMMA_INSTRUMENT": "true",
|
||||
}),
|
||||
).RunTest(t)
|
||||
|
||||
// Make sure jacoco ran on both mylib and mybootclasspathlib
|
||||
if result.ModuleForTests("mylib", "android_common_apex10000").MaybeRule("jacoco").Rule == nil {
|
||||
t.Errorf("Failed to find jacoco rule for mylib")
|
||||
}
|
||||
if result.ModuleForTests("mybootclasspathlib", "android_common_apex10000").MaybeRule("jacoco").Rule == nil {
|
||||
t.Errorf("Failed to find jacoco rule for mybootclasspathlib")
|
||||
}
|
||||
if result.ModuleForTests("mysystemserverclasspathlib", "android_common_apex10000").MaybeRule("jacoco").Rule == nil {
|
||||
t.Errorf("Failed to find jacoco rule for mysystemserverclasspathlib")
|
||||
}
|
||||
}
|
||||
|
||||
func TestMain(m *testing.M) {
|
||||
os.Exit(m.Run())
|
||||
}
|
||||
|
|
6
cc/cc.go
6
cc/cc.go
|
@ -729,12 +729,6 @@ var (
|
|||
llndkStubDepTag = dependencyTag{name: "llndk stub"}
|
||||
)
|
||||
|
||||
type copyDirectlyInAnyApexDependencyTag dependencyTag
|
||||
|
||||
func (copyDirectlyInAnyApexDependencyTag) CopyDirectlyInAnyApex() {}
|
||||
|
||||
var _ android.CopyDirectlyInAnyApexTag = copyDirectlyInAnyApexDependencyTag{}
|
||||
|
||||
func IsSharedDepTag(depTag blueprint.DependencyTag) bool {
|
||||
ccLibDepTag, ok := depTag.(libraryDependencyTag)
|
||||
return ok && ccLibDepTag.shared()
|
||||
|
|
|
@ -22,6 +22,7 @@ import (
|
|||
|
||||
"android/soong/android"
|
||||
"android/soong/dexpreopt"
|
||||
|
||||
"github.com/google/blueprint/proptools"
|
||||
|
||||
"github.com/google/blueprint"
|
||||
|
@ -76,12 +77,17 @@ func (b bootclasspathFragmentContentDependencyTag) ExportMember() bool {
|
|||
return true
|
||||
}
|
||||
|
||||
// Contents of bootclasspath fragments in an apex are considered to be directly in the apex, as if
|
||||
// they were listed in java_libs.
|
||||
func (b bootclasspathFragmentContentDependencyTag) CopyDirectlyInAnyApex() {}
|
||||
|
||||
// The tag used for the dependency between the bootclasspath_fragment module and its contents.
|
||||
var bootclasspathFragmentContentDepTag = bootclasspathFragmentContentDependencyTag{}
|
||||
|
||||
var _ android.ExcludeFromVisibilityEnforcementTag = bootclasspathFragmentContentDepTag
|
||||
var _ android.ReplaceSourceWithPrebuilt = bootclasspathFragmentContentDepTag
|
||||
var _ android.SdkMemberTypeDependencyTag = bootclasspathFragmentContentDepTag
|
||||
var _ android.CopyDirectlyInAnyApexTag = bootclasspathFragmentContentDepTag
|
||||
|
||||
func IsBootclasspathFragmentContentDepTag(tag blueprint.DependencyTag) bool {
|
||||
return tag == bootclasspathFragmentContentDepTag
|
||||
|
|
|
@ -17,6 +17,7 @@ package java
|
|||
import (
|
||||
"android/soong/android"
|
||||
"android/soong/dexpreopt"
|
||||
|
||||
"github.com/google/blueprint"
|
||||
)
|
||||
|
||||
|
@ -118,6 +119,12 @@ type systemServerClasspathFragmentContentDependencyTag struct {
|
|||
blueprint.BaseDependencyTag
|
||||
}
|
||||
|
||||
// Contents of system server fragments in an apex are considered to be directly in the apex, as if
|
||||
// they were listed in java_libs.
|
||||
func (systemServerClasspathFragmentContentDependencyTag) CopyDirectlyInAnyApex() {}
|
||||
|
||||
var _ android.CopyDirectlyInAnyApexTag = systemServerClasspathFragmentContentDepTag
|
||||
|
||||
// The tag used for the dependency between the systemserverclasspath_fragment module and its contents.
|
||||
var systemServerClasspathFragmentContentDepTag = systemServerClasspathFragmentContentDependencyTag{}
|
||||
|
||||
|
|
Loading…
Reference in a new issue