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:
@@ -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 {
|
||||||
|
@@ -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.
|
||||||
|
Reference in New Issue
Block a user