Prevent systemserverclasspath_fragment from depending on prebuilts

When TARGET_BUILD_APPS is set then TARGET_BUILD_USE_PREBUILT_SDKS=true
which causes all java_sdk_library_import modules to be treated as
prefer:true.

That breaks the build when the systemserverclasspath_fragment's content
property references a source java_sdk_library module that has a
corresponding java_sdk_library_import prebuilt module.

This fixes the issue by marking the dependency from the
systemserverclasspath_fragment to the source module as one that must
not be replaced with a reference to the prebuilt module.

Test: - update art prebuilts to include service-art
      m TARGET_BUILD_APPS=Calendar apps_only
      - fails before, works afterwards
Bug: 199116972
Change-Id: Ia2d8ce7bb7e644336a42c901f7fb8ea50fd67909
This commit is contained in:
Paul Duffin
2021-09-07 14:52:48 +01:00
parent 05732954c6
commit 25322e4d98

View File

@@ -123,10 +123,16 @@ type systemServerClasspathFragmentContentDependencyTag struct {
blueprint.BaseDependencyTag blueprint.BaseDependencyTag
} }
// The systemserverclasspath_fragment contents must never depend on prebuilts.
func (systemServerClasspathFragmentContentDependencyTag) ReplaceSourceWithPrebuilt() bool {
return false
}
// Contents of system server fragments in an apex are considered to be directly in the apex, as if // Contents of system server fragments in an apex are considered to be directly in the apex, as if
// they were listed in java_libs. // they were listed in java_libs.
func (systemServerClasspathFragmentContentDependencyTag) CopyDirectlyInAnyApex() {} func (systemServerClasspathFragmentContentDependencyTag) CopyDirectlyInAnyApex() {}
var _ android.ReplaceSourceWithPrebuilt = systemServerClasspathFragmentContentDepTag
var _ android.CopyDirectlyInAnyApexTag = systemServerClasspathFragmentContentDepTag var _ android.CopyDirectlyInAnyApexTag = systemServerClasspathFragmentContentDepTag
// The tag used for the dependency between the systemserverclasspath_fragment module and its contents. // The tag used for the dependency between the systemserverclasspath_fragment module and its contents.