Exclude source->prebuilt deps from visibility enforcement
When both prebuilt and source versions of a module are present in the build an implicit dependency is added from source -> prebuilt. This change excludes that dependency from visibility enforcement as it provides no value and would otherwise require an sdk snapshot to rewrite the visibility of the generated prebuilt modules which would be complicated. The rewriting would include: * Detecting //visibility:public and just passing that straight through. * Detecting //visibility:private and replacing that with the location of the source. * Otherwise, adding the location of the source to the visibility property. This adds a general mechanism to allow any dependency to be excluded from visibility enforcement by simply using a tag that implements the ExcludeFromVisibilityEnforcementTag interface. Bug: 142940300 Test: m nothing Change-Id: I0668ff5aa798152d17faf3aac1bb8eff8d6350c3
This commit is contained in:
@@ -36,6 +36,9 @@ type prebuiltDependencyTag struct {
|
||||
|
||||
var PrebuiltDepTag prebuiltDependencyTag
|
||||
|
||||
// Mark this tag so dependencies that use it are excluded from visibility enforcement.
|
||||
func (t prebuiltDependencyTag) ExcludeFromVisibilityEnforcement() {}
|
||||
|
||||
type PrebuiltProperties struct {
|
||||
// When prefer is set to true the prebuilt will be used instead of any source module with
|
||||
// a matching name.
|
||||
|
Reference in New Issue
Block a user