Allow stubs implementation to be omitted
When defining a stubs library, allow specifying that the implementation library does not need to be installed. This allows for cases where the implementation is deployed in some non-standard way - e.g. inside a Microdroid virtual machine. Without this, we get build errors like: "TARGET module com.android.compos requires non-existent TARGET module: libvm_payload". Default behavior is unchanged. The change is protected by an allowlist to limit usage to the immediate use case. Bug: 243512108 Test: builds; soong tests pass Test: Remove allowlist, see build failure Change-Id: Iaae75f2e93b842f5944a7518cc95069d62c5a638
This commit is contained in:
@@ -59,6 +59,7 @@ func init() {
|
||||
AddNeverAllowRules(createInitFirstStageRules()...)
|
||||
AddNeverAllowRules(createProhibitFrameworkAccessRules()...)
|
||||
AddNeverAllowRules(createBp2BuildRule())
|
||||
AddNeverAllowRules(createCcStubsRule())
|
||||
}
|
||||
|
||||
// Add a NeverAllow rule to the set of rules to apply.
|
||||
@@ -214,6 +215,17 @@ func createCcSdkVariantRules() []Rule {
|
||||
}
|
||||
}
|
||||
|
||||
func createCcStubsRule() Rule {
|
||||
ccStubsImplementationInstallableProjectsAllowedList := []string{
|
||||
"packages/modules/Virtualization/vm_payload",
|
||||
}
|
||||
|
||||
return NeverAllow().
|
||||
NotIn(ccStubsImplementationInstallableProjectsAllowedList...).
|
||||
WithMatcher("stubs.implementation_installable", isSetMatcherInstance).
|
||||
Because("implementation_installable can only be used in allowed projects.")
|
||||
}
|
||||
|
||||
func createUncompressDexRules() []Rule {
|
||||
return []Rule{
|
||||
NeverAllow().
|
||||
|
Reference in New Issue
Block a user