diff options
| author | 2021-05-27 00:56:52 +0000 | |
|---|---|---|
| committer | 2021-05-27 00:56:52 +0000 | |
| commit | 4ab2dd1afe931b4f557aba2a2272d0cf21328be1 (patch) | |
| tree | 4bbda7e6c4b3834915089c4c3e0a6aa4ffc5b431 | |
| parent | de2dfdea6b08a6b54209df1c6ad6febb1ff08110 (diff) | |
| parent | c33e5216f1eb3f837dee89cc65208eff058e9c5e (diff) | |
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
| -rw-r--r-- | android/apex.go | 4 | ||||
| -rw-r--r-- | apex/apex_test.go | 74 | ||||
| -rw-r--r-- | cc/cc.go | 6 | ||||
| -rw-r--r-- | java/bootclasspath_fragment.go | 6 | ||||
| -rw-r--r-- | java/systemserver_classpath_fragment.go | 7 |
5 files changed, 89 insertions, 8 deletions
diff --git a/android/apex.go b/android/apex.go index 4b744364a..fa50030fa 100644 --- a/android/apex.go +++ b/android/apex.go @@ -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 } }) diff --git a/apex/apex_test.go b/apex/apex_test.go index 364013fbe..4d00944e7 100644 --- a/apex/apex_test.go +++ b/apex/apex_test.go @@ -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()) } @@ -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() diff --git a/java/bootclasspath_fragment.go b/java/bootclasspath_fragment.go index 44803a9ec..792193f9f 100644 --- a/java/bootclasspath_fragment.go +++ b/java/bootclasspath_fragment.go @@ -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 diff --git a/java/systemserver_classpath_fragment.go b/java/systemserver_classpath_fragment.go index f973cf45a..7ffb05602 100644 --- a/java/systemserver_classpath_fragment.go +++ b/java/systemserver_classpath_fragment.go @@ -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{} |