Change visibility of module sdk prebuilts to //visibility:public

To reduce pains introduced by visiblity skew between source
and prebuilts, mark them with //visibility:public

Bug: 239189932
Test: go test ./sdk
Change-Id: I47dd63bd03337bc9ec6fa364bbdcdfdfcd70b0d9
This commit is contained in:
Spandan Das
2024-08-30 18:56:39 +00:00
parent b11c99d084
commit 2c20726d44
2 changed files with 19 additions and 50 deletions

View File

@@ -131,11 +131,7 @@ apex_contributions_defaults {
java_import { java_import {
name: "myjavalib", name: "myjavalib",
prefer: false, prefer: false,
visibility: [ visibility: ["//visibility:public"],
"//other/foo",
"//package",
"//prebuilts/mysdk",
],
apex_available: ["//apex_available:platform"], apex_available: ["//apex_available:platform"],
jars: ["java/myjavalib.jar"], jars: ["java/myjavalib.jar"],
} }
@@ -151,11 +147,7 @@ java_import {
java_import { java_import {
name: "mydefaultedjavalib", name: "mydefaultedjavalib",
prefer: false, prefer: false,
visibility: [ visibility: ["//visibility:public"],
"//other/bar",
"//package",
"//prebuilts/mysdk",
],
apex_available: ["//apex_available:platform"], apex_available: ["//apex_available:platform"],
jars: ["java/mydefaultedjavalib.jar"], jars: ["java/mydefaultedjavalib.jar"],
} }
@@ -163,10 +155,7 @@ java_import {
java_import { java_import {
name: "myprivatejavalib", name: "myprivatejavalib",
prefer: false, prefer: false,
visibility: [ visibility: ["//visibility:public"],
"//package",
"//prebuilts/mysdk",
],
apex_available: ["//apex_available:platform"], apex_available: ["//apex_available:platform"],
jars: ["java/myprivatejavalib.jar"], jars: ["java/myprivatejavalib.jar"],
} }
@@ -185,28 +174,6 @@ func TestPrebuiltVisibilityProperty_IsValidated(t *testing.T) {
`) `)
} }
func TestPrebuiltVisibilityProperty_AddPrivate(t *testing.T) {
testSdkError(t, `prebuilt_visibility: "//visibility:private" does not widen the visibility`, `
sdk {
name: "mysdk",
prebuilt_visibility: [
"//visibility:private",
],
java_header_libs: [
"myjavalib",
],
}
java_library {
name: "myjavalib",
// Uses package default visibility
srcs: ["Test.java"],
system_modules: "none",
sdk_version: "none",
}
`)
}
func TestSdkInstall(t *testing.T) { func TestSdkInstall(t *testing.T) {
sdk := ` sdk := `
sdk { sdk {

View File

@@ -1109,20 +1109,22 @@ func (s *snapshotBuilder) AddPrebuiltModule(member android.SdkMember, moduleType
// same package so can be marked as private. // same package so can be marked as private.
m.AddProperty("visibility", []string{"//visibility:private"}) m.AddProperty("visibility", []string{"//visibility:private"})
} else { } else {
// Extract visibility information from a member variant. All variants have the same // Change the visibility of the module SDK prebuilts to public.
// visibility so it doesn't matter which one is used. // This includes
visibilityRules := android.EffectiveVisibilityRules(s.ctx, variant) // 1. Stub libraries of `sdk` modules
// 2. Binaries and libraries of `module_exports` modules
// Add any additional visibility rules needed for the prebuilts to reference each other. //
err := visibilityRules.Widen(s.sdk.properties.Prebuilt_visibility) // This is a workaround to improve maintainlibility of the module SDK.
if err != nil { // Since module sdks are generated from release branches and dropped to development
s.ctx.PropertyErrorf("prebuilt_visibility", "%s", err) // branches, there might be a visibility skew between the sources and prebuilts
} // of a specific module.
// To reconcile this potential skew, change the visibility to public
visibility := visibilityRules.Strings() //
if len(visibility) != 0 { // This is safe for (1) since these are stub libraries.
m.AddProperty("visibility", visibility) // This is ok for (2) since these are host and test exports and are intended for
} // ART development.
// TODO (b/361303067): This can be removed if ART uses full manifests.
m.AddProperty("visibility", []string{"//visibility:public"})
} }
// Where available copy apex_available properties from the member. // Where available copy apex_available properties from the member.