Merge cherrypicks of ['android-review.googlesource.com/3197217', 'android-review.googlesource.com/3203370'] into 24Q3-release.
Change-Id: Ida44fe5e0a853ea8cea1578c548f8d93ced9bce4
This commit is contained in:
commit
3fe78dc9b3
8 changed files with 206 additions and 63 deletions
|
@ -119,7 +119,10 @@ func (a *allApexContributions) DepsMutator(ctx BottomUpMutatorContext) {
|
||||||
func (a *allApexContributions) SetPrebuiltSelectionInfoProvider(ctx BaseModuleContext) {
|
func (a *allApexContributions) SetPrebuiltSelectionInfoProvider(ctx BaseModuleContext) {
|
||||||
addContentsToProvider := func(p *PrebuiltSelectionInfoMap, m *apexContributions) {
|
addContentsToProvider := func(p *PrebuiltSelectionInfoMap, m *apexContributions) {
|
||||||
for _, content := range m.Contents() {
|
for _, content := range m.Contents() {
|
||||||
if !ctx.OtherModuleExists(content) && !ctx.Config().AllowMissingDependencies() {
|
// Verify that the module listed in contents exists in the tree
|
||||||
|
// Remove the prebuilt_ prefix to account for partner worksapces where the source module does not
|
||||||
|
// exist, and PrebuiltRenameMutator renames `prebuilt_foo` to `foo`
|
||||||
|
if !ctx.OtherModuleExists(content) && !ctx.OtherModuleExists(RemoveOptionalPrebuiltPrefix(content)) && !ctx.Config().AllowMissingDependencies() {
|
||||||
ctx.ModuleErrorf("%s listed in apex_contributions %s does not exist\n", content, m.Name())
|
ctx.ModuleErrorf("%s listed in apex_contributions %s does not exist\n", content, m.Name())
|
||||||
}
|
}
|
||||||
pi := &PrebuiltSelectionInfo{
|
pi := &PrebuiltSelectionInfo{
|
||||||
|
|
|
@ -2005,41 +2005,41 @@ func (c *config) UseResourceProcessorByDefault() bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
mainlineApexContributionBuildFlags = []string{
|
mainlineApexContributionBuildFlagsToApexNames = map[string]string{
|
||||||
"RELEASE_APEX_CONTRIBUTIONS_ADBD",
|
"RELEASE_APEX_CONTRIBUTIONS_ADBD": "com.android.adbd",
|
||||||
"RELEASE_APEX_CONTRIBUTIONS_ADSERVICES",
|
"RELEASE_APEX_CONTRIBUTIONS_ADSERVICES": "com.android.adservices",
|
||||||
"RELEASE_APEX_CONTRIBUTIONS_APPSEARCH",
|
"RELEASE_APEX_CONTRIBUTIONS_APPSEARCH": "com.android.appsearch",
|
||||||
"RELEASE_APEX_CONTRIBUTIONS_ART",
|
"RELEASE_APEX_CONTRIBUTIONS_ART": "com.android.art",
|
||||||
"RELEASE_APEX_CONTRIBUTIONS_BLUETOOTH",
|
"RELEASE_APEX_CONTRIBUTIONS_BLUETOOTH": "com.android.btservices",
|
||||||
"RELEASE_APEX_CONTRIBUTIONS_CAPTIVEPORTALLOGIN",
|
"RELEASE_APEX_CONTRIBUTIONS_CAPTIVEPORTALLOGIN": "",
|
||||||
"RELEASE_APEX_CONTRIBUTIONS_CELLBROADCAST",
|
"RELEASE_APEX_CONTRIBUTIONS_CELLBROADCAST": "com.android.cellbroadcast",
|
||||||
"RELEASE_APEX_CONTRIBUTIONS_CONFIGINFRASTRUCTURE",
|
"RELEASE_APEX_CONTRIBUTIONS_CONFIGINFRASTRUCTURE": "com.android.configinfrastructure",
|
||||||
"RELEASE_APEX_CONTRIBUTIONS_CONNECTIVITY",
|
"RELEASE_APEX_CONTRIBUTIONS_CONNECTIVITY": "com.android.tethering",
|
||||||
"RELEASE_APEX_CONTRIBUTIONS_CONSCRYPT",
|
"RELEASE_APEX_CONTRIBUTIONS_CONSCRYPT": "com.android.conscrypt",
|
||||||
"RELEASE_APEX_CONTRIBUTIONS_CRASHRECOVERY",
|
"RELEASE_APEX_CONTRIBUTIONS_CRASHRECOVERY": "",
|
||||||
"RELEASE_APEX_CONTRIBUTIONS_DEVICELOCK",
|
"RELEASE_APEX_CONTRIBUTIONS_DEVICELOCK": "com.android.devicelock",
|
||||||
"RELEASE_APEX_CONTRIBUTIONS_DOCUMENTSUIGOOGLE",
|
"RELEASE_APEX_CONTRIBUTIONS_DOCUMENTSUIGOOGLE": "",
|
||||||
"RELEASE_APEX_CONTRIBUTIONS_EXTSERVICES",
|
"RELEASE_APEX_CONTRIBUTIONS_EXTSERVICES": "com.android.extservices",
|
||||||
"RELEASE_APEX_CONTRIBUTIONS_HEALTHFITNESS",
|
"RELEASE_APEX_CONTRIBUTIONS_HEALTHFITNESS": "com.android.healthfitness",
|
||||||
"RELEASE_APEX_CONTRIBUTIONS_IPSEC",
|
"RELEASE_APEX_CONTRIBUTIONS_IPSEC": "com.android.ipsec",
|
||||||
"RELEASE_APEX_CONTRIBUTIONS_MEDIA",
|
"RELEASE_APEX_CONTRIBUTIONS_MEDIA": "com.android.media",
|
||||||
"RELEASE_APEX_CONTRIBUTIONS_MEDIAPROVIDER",
|
"RELEASE_APEX_CONTRIBUTIONS_MEDIAPROVIDER": "com.android.mediaprovider",
|
||||||
"RELEASE_APEX_CONTRIBUTIONS_MODULE_METADATA",
|
"RELEASE_APEX_CONTRIBUTIONS_MODULE_METADATA": "",
|
||||||
"RELEASE_APEX_CONTRIBUTIONS_NETWORKSTACKGOOGLE",
|
"RELEASE_APEX_CONTRIBUTIONS_NETWORKSTACKGOOGLE": "",
|
||||||
"RELEASE_APEX_CONTRIBUTIONS_NEURALNETWORKS",
|
"RELEASE_APEX_CONTRIBUTIONS_NEURALNETWORKS": "com.android.neuralnetworks",
|
||||||
"RELEASE_APEX_CONTRIBUTIONS_ONDEVICEPERSONALIZATION",
|
"RELEASE_APEX_CONTRIBUTIONS_ONDEVICEPERSONALIZATION": "com.android.ondevicepersonalization",
|
||||||
"RELEASE_APEX_CONTRIBUTIONS_PERMISSION",
|
"RELEASE_APEX_CONTRIBUTIONS_PERMISSION": "com.android.permission",
|
||||||
"RELEASE_APEX_CONTRIBUTIONS_PRIMARY_LIBS",
|
"RELEASE_APEX_CONTRIBUTIONS_PRIMARY_LIBS": "",
|
||||||
"RELEASE_APEX_CONTRIBUTIONS_REMOTEKEYPROVISIONING",
|
"RELEASE_APEX_CONTRIBUTIONS_REMOTEKEYPROVISIONING": "com.android.rkpd",
|
||||||
"RELEASE_APEX_CONTRIBUTIONS_RESOLV",
|
"RELEASE_APEX_CONTRIBUTIONS_RESOLV": "com.android.resolv",
|
||||||
"RELEASE_APEX_CONTRIBUTIONS_SCHEDULING",
|
"RELEASE_APEX_CONTRIBUTIONS_SCHEDULING": "com.android.scheduling",
|
||||||
"RELEASE_APEX_CONTRIBUTIONS_SDKEXTENSIONS",
|
"RELEASE_APEX_CONTRIBUTIONS_SDKEXTENSIONS": "com.android.sdkext",
|
||||||
"RELEASE_APEX_CONTRIBUTIONS_SWCODEC",
|
"RELEASE_APEX_CONTRIBUTIONS_SWCODEC": "com.android.media.swcodec",
|
||||||
"RELEASE_APEX_CONTRIBUTIONS_STATSD",
|
"RELEASE_APEX_CONTRIBUTIONS_STATSD": "com.android.os.statsd",
|
||||||
"RELEASE_APEX_CONTRIBUTIONS_TELEMETRY_TVP",
|
"RELEASE_APEX_CONTRIBUTIONS_TELEMETRY_TVP": "",
|
||||||
"RELEASE_APEX_CONTRIBUTIONS_TZDATA",
|
"RELEASE_APEX_CONTRIBUTIONS_TZDATA": "com.android.tzdata",
|
||||||
"RELEASE_APEX_CONTRIBUTIONS_UWB",
|
"RELEASE_APEX_CONTRIBUTIONS_UWB": "com.android.uwb",
|
||||||
"RELEASE_APEX_CONTRIBUTIONS_WIFI",
|
"RELEASE_APEX_CONTRIBUTIONS_WIFI": "com.android.wifi",
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -2047,7 +2047,7 @@ var (
|
||||||
// Each mainline module will have one entry in the list
|
// Each mainline module will have one entry in the list
|
||||||
func (c *config) AllApexContributions() []string {
|
func (c *config) AllApexContributions() []string {
|
||||||
ret := []string{}
|
ret := []string{}
|
||||||
for _, f := range mainlineApexContributionBuildFlags {
|
for _, f := range SortedKeys(mainlineApexContributionBuildFlagsToApexNames) {
|
||||||
if val, exists := c.GetBuildFlag(f); exists && val != "" {
|
if val, exists := c.GetBuildFlag(f); exists && val != "" {
|
||||||
ret = append(ret, val)
|
ret = append(ret, val)
|
||||||
}
|
}
|
||||||
|
@ -2055,6 +2055,10 @@ func (c *config) AllApexContributions() []string {
|
||||||
return ret
|
return ret
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *config) AllMainlineApexNames() []string {
|
||||||
|
return SortedStringValues(mainlineApexContributionBuildFlagsToApexNames)
|
||||||
|
}
|
||||||
|
|
||||||
func (c *config) BuildIgnoreApexContributionContents() *bool {
|
func (c *config) BuildIgnoreApexContributionContents() *bool {
|
||||||
return c.productVariables.BuildIgnoreApexContributionContents
|
return c.productVariables.BuildIgnoreApexContributionContents
|
||||||
}
|
}
|
||||||
|
|
|
@ -423,15 +423,7 @@ func PrebuiltRenameMutator(ctx BottomUpMutatorContext) {
|
||||||
// The metadata will be used for source vs prebuilts selection
|
// The metadata will be used for source vs prebuilts selection
|
||||||
func PrebuiltSourceDepsMutator(ctx BottomUpMutatorContext) {
|
func PrebuiltSourceDepsMutator(ctx BottomUpMutatorContext) {
|
||||||
m := ctx.Module()
|
m := ctx.Module()
|
||||||
// If this module is a prebuilt, is enabled and has not been renamed to source then add a
|
if p := GetEmbeddedPrebuilt(m); p != nil {
|
||||||
// dependency onto the source if it is present.
|
|
||||||
if p := GetEmbeddedPrebuilt(m); p != nil && m.Enabled(ctx) && !p.properties.PrebuiltRenamedToSource {
|
|
||||||
bmn, _ := m.(baseModuleName)
|
|
||||||
name := bmn.BaseModuleName()
|
|
||||||
if ctx.OtherModuleReverseDependencyVariantExists(name) {
|
|
||||||
ctx.AddReverseDependency(ctx.Module(), PrebuiltDepTag, name)
|
|
||||||
p.properties.SourceExists = true
|
|
||||||
}
|
|
||||||
// Add a dependency from the prebuilt to the `all_apex_contributions`
|
// Add a dependency from the prebuilt to the `all_apex_contributions`
|
||||||
// metadata module
|
// metadata module
|
||||||
// TODO: When all branches contain this singleton module, make this strict
|
// TODO: When all branches contain this singleton module, make this strict
|
||||||
|
@ -439,7 +431,16 @@ func PrebuiltSourceDepsMutator(ctx BottomUpMutatorContext) {
|
||||||
if ctx.OtherModuleExists("all_apex_contributions") {
|
if ctx.OtherModuleExists("all_apex_contributions") {
|
||||||
ctx.AddDependency(m, AcDepTag, "all_apex_contributions")
|
ctx.AddDependency(m, AcDepTag, "all_apex_contributions")
|
||||||
}
|
}
|
||||||
|
if m.Enabled(ctx) && !p.properties.PrebuiltRenamedToSource {
|
||||||
|
// If this module is a prebuilt, is enabled and has not been renamed to source then add a
|
||||||
|
// dependency onto the source if it is present.
|
||||||
|
bmn, _ := m.(baseModuleName)
|
||||||
|
name := bmn.BaseModuleName()
|
||||||
|
if ctx.OtherModuleReverseDependencyVariantExists(name) {
|
||||||
|
ctx.AddReverseDependency(ctx.Module(), PrebuiltDepTag, name)
|
||||||
|
p.properties.SourceExists = true
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -668,12 +669,37 @@ func (p *Prebuilt) variantIsDisabled(ctx BaseMutatorContext, prebuilt Module) bo
|
||||||
return p.srcsSupplier != nil && len(p.srcsSupplier(ctx, prebuilt)) == 0
|
return p.srcsSupplier != nil && len(p.srcsSupplier(ctx, prebuilt)) == 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type apexVariationName interface {
|
||||||
|
ApexVariationName() string
|
||||||
|
}
|
||||||
|
|
||||||
// usePrebuilt returns true if a prebuilt should be used instead of the source module. The prebuilt
|
// usePrebuilt returns true if a prebuilt should be used instead of the source module. The prebuilt
|
||||||
// will be used if it is marked "prefer" or if the source module is disabled.
|
// will be used if it is marked "prefer" or if the source module is disabled.
|
||||||
func (p *Prebuilt) usePrebuilt(ctx BaseMutatorContext, source Module, prebuilt Module) bool {
|
func (p *Prebuilt) usePrebuilt(ctx BaseMutatorContext, source Module, prebuilt Module) bool {
|
||||||
|
isMainlinePrebuilt := func(prebuilt Module) bool {
|
||||||
|
apex, ok := prebuilt.(apexVariationName)
|
||||||
|
if !ok {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
// Prebuilts of aosp apexes in prebuilts/runtime
|
||||||
|
// Used in minimal art branches
|
||||||
|
if prebuilt.base().BaseModuleName() == apex.ApexVariationName() {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return InList(apex.ApexVariationName(), ctx.Config().AllMainlineApexNames())
|
||||||
|
}
|
||||||
|
|
||||||
// Use `all_apex_contributions` for source vs prebuilt selection.
|
// Use `all_apex_contributions` for source vs prebuilt selection.
|
||||||
psi := PrebuiltSelectionInfoMap{}
|
psi := PrebuiltSelectionInfoMap{}
|
||||||
ctx.VisitDirectDepsWithTag(PrebuiltDepTag, func(am Module) {
|
var psiDepTag blueprint.DependencyTag
|
||||||
|
if p := GetEmbeddedPrebuilt(ctx.Module()); p != nil {
|
||||||
|
// This is a prebuilt module, visit all_apex_contributions to get the info
|
||||||
|
psiDepTag = AcDepTag
|
||||||
|
} else {
|
||||||
|
// This is a source module, visit any of its prebuilts to get the info
|
||||||
|
psiDepTag = PrebuiltDepTag
|
||||||
|
}
|
||||||
|
ctx.VisitDirectDepsWithTag(psiDepTag, func(am Module) {
|
||||||
psi, _ = OtherModuleProvider(ctx, am, PrebuiltSelectionInfoProvider)
|
psi, _ = OtherModuleProvider(ctx, am, PrebuiltSelectionInfoProvider)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -686,6 +712,11 @@ func (p *Prebuilt) usePrebuilt(ctx BaseMutatorContext, source Module, prebuilt M
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If this is a mainline prebuilt, but has not been flagged, hide it.
|
||||||
|
if isMainlinePrebuilt(prebuilt) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
// If the baseModuleName could not be found in the metadata module,
|
// If the baseModuleName could not be found in the metadata module,
|
||||||
// fall back to the existing source vs prebuilt selection.
|
// fall back to the existing source vs prebuilt selection.
|
||||||
// TODO: Drop the fallback mechanisms
|
// TODO: Drop the fallback mechanisms
|
||||||
|
|
|
@ -5244,7 +5244,7 @@ func TestBootDexJarsFromSourcesAndPrebuilts(t *testing.T) {
|
||||||
myApex := ctx.ModuleForTests("myapex", "android_common_myapex").Module()
|
myApex := ctx.ModuleForTests("myapex", "android_common_myapex").Module()
|
||||||
|
|
||||||
overrideNames := []string{
|
overrideNames := []string{
|
||||||
"myapex",
|
"",
|
||||||
"myjavalib.myapex",
|
"myjavalib.myapex",
|
||||||
"libfoo.myapex",
|
"libfoo.myapex",
|
||||||
"libbar.myapex",
|
"libbar.myapex",
|
||||||
|
@ -11286,13 +11286,6 @@ func TestBootDexJarsMultipleApexPrebuilts(t *testing.T) {
|
||||||
// Test that product packaging installs the selected mainline module (either source or a specific prebuilt)
|
// Test that product packaging installs the selected mainline module (either source or a specific prebuilt)
|
||||||
// RELEASE_APEX_CONTIRBUTIONS_* build flags will be used to select the correct prebuilt for a specific release config
|
// RELEASE_APEX_CONTIRBUTIONS_* build flags will be used to select the correct prebuilt for a specific release config
|
||||||
func TestInstallationRulesForMultipleApexPrebuilts(t *testing.T) {
|
func TestInstallationRulesForMultipleApexPrebuilts(t *testing.T) {
|
||||||
// check that the LOCAL_MODULE in the generated mk file matches the name used in PRODUCT_PACKAGES
|
|
||||||
// Since the name used in PRODUCT_PACKAGES does not contain prebuilt_ prefix, LOCAL_MODULE should not contain any prefix either
|
|
||||||
checkLocalModuleName := func(t *testing.T, ctx *android.TestContext, soongApexModuleName string, expectedLocalModuleName string) {
|
|
||||||
// Variations are created based on apex_name
|
|
||||||
entries := android.AndroidMkEntriesForTest(t, ctx, ctx.ModuleForTests(soongApexModuleName, "android_common_com.android.foo").Module())
|
|
||||||
android.AssertStringEquals(t, "LOCAL_MODULE of the prebuilt apex must match the name listed in PRODUCT_PACKAGES", expectedLocalModuleName, entries[0].EntryMap["LOCAL_MODULE"][0])
|
|
||||||
}
|
|
||||||
// for a mainline module family, check that only the flagged soong module is visible to make
|
// for a mainline module family, check that only the flagged soong module is visible to make
|
||||||
checkHideFromMake := func(t *testing.T, ctx *android.TestContext, visibleModuleName string, hiddenModuleNames []string) {
|
checkHideFromMake := func(t *testing.T, ctx *android.TestContext, visibleModuleName string, hiddenModuleNames []string) {
|
||||||
variation := func(moduleName string) string {
|
variation := func(moduleName string) string {
|
||||||
|
@ -11347,7 +11340,7 @@ func TestInstallationRulesForMultipleApexPrebuilts(t *testing.T) {
|
||||||
prebuilt_apex {
|
prebuilt_apex {
|
||||||
name: "com.google.android.foo.v2",
|
name: "com.google.android.foo.v2",
|
||||||
apex_name: "com.android.foo",
|
apex_name: "com.android.foo",
|
||||||
source_apex_name: "com.google.android.foo", // source_apex_name becomes LOCAL_MODULE in the generated mk file
|
source_apex_name: "com.google.android.foo",
|
||||||
src: "com.android.foo-arm.apex",
|
src: "com.android.foo-arm.apex",
|
||||||
prefer: true, // prefer is set to true on both the prebuilts to induce an error if flagging is not present
|
prefer: true, // prefer is set to true on both the prebuilts to induce an error if flagging is not present
|
||||||
}
|
}
|
||||||
|
@ -11433,11 +11426,6 @@ func TestInstallationRulesForMultipleApexPrebuilts(t *testing.T) {
|
||||||
}
|
}
|
||||||
ctx := testApex(t, bp, preparer)
|
ctx := testApex(t, bp, preparer)
|
||||||
|
|
||||||
// Check that the LOCAL_MODULE of the two prebuilts is com.android.foo
|
|
||||||
// This ensures that product packaging can pick them for installation if it has been flagged by apex_contributions
|
|
||||||
checkLocalModuleName(t, ctx, "prebuilt_com.google.android.foo", "com.google.android.foo")
|
|
||||||
checkLocalModuleName(t, ctx, "prebuilt_com.google.android.foo.v2", "com.google.android.foo")
|
|
||||||
|
|
||||||
// Check that
|
// Check that
|
||||||
// 1. The contents of the selected apex_contributions are visible to make
|
// 1. The contents of the selected apex_contributions are visible to make
|
||||||
// 2. The rest of the apexes in the mainline module family (source or other prebuilt) is hidden from make
|
// 2. The rest of the apexes in the mainline module family (source or other prebuilt) is hidden from make
|
||||||
|
@ -11445,6 +11433,118 @@ func TestInstallationRulesForMultipleApexPrebuilts(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Test that product packaging installs the selected mainline module in workspaces withtout source mainline module
|
||||||
|
func TestInstallationRulesForMultipleApexPrebuiltsWithoutSource(t *testing.T) {
|
||||||
|
// for a mainline module family, check that only the flagged soong module is visible to make
|
||||||
|
checkHideFromMake := func(t *testing.T, ctx *android.TestContext, visibleModuleNames []string, hiddenModuleNames []string) {
|
||||||
|
variation := func(moduleName string) string {
|
||||||
|
ret := "android_common_com.android.adservices"
|
||||||
|
if moduleName == "com.google.android.foo" {
|
||||||
|
ret = "android_common_com.google.android.foo_com.google.android.foo"
|
||||||
|
}
|
||||||
|
return ret
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, visibleModuleName := range visibleModuleNames {
|
||||||
|
visibleModule := ctx.ModuleForTests(visibleModuleName, variation(visibleModuleName)).Module()
|
||||||
|
android.AssertBoolEquals(t, "Apex "+visibleModuleName+" selected using apex_contributions should be visible to make", false, visibleModule.IsHideFromMake())
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, hiddenModuleName := range hiddenModuleNames {
|
||||||
|
hiddenModule := ctx.ModuleForTests(hiddenModuleName, variation(hiddenModuleName)).Module()
|
||||||
|
android.AssertBoolEquals(t, "Apex "+hiddenModuleName+" not selected using apex_contributions should be hidden from make", true, hiddenModule.IsHideFromMake())
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bp := `
|
||||||
|
apex_key {
|
||||||
|
name: "com.android.adservices.key",
|
||||||
|
public_key: "com.android.adservices.avbpubkey",
|
||||||
|
private_key: "com.android.adservices.pem",
|
||||||
|
}
|
||||||
|
|
||||||
|
// AOSP source apex
|
||||||
|
apex {
|
||||||
|
name: "com.android.adservices",
|
||||||
|
key: "com.android.adservices.key",
|
||||||
|
updatable: false,
|
||||||
|
}
|
||||||
|
|
||||||
|
// Prebuilt Google APEX.
|
||||||
|
|
||||||
|
prebuilt_apex {
|
||||||
|
name: "com.google.android.adservices",
|
||||||
|
apex_name: "com.android.adservices",
|
||||||
|
src: "com.android.foo-arm.apex",
|
||||||
|
}
|
||||||
|
|
||||||
|
// Another Prebuilt Google APEX
|
||||||
|
prebuilt_apex {
|
||||||
|
name: "com.google.android.adservices.v2",
|
||||||
|
apex_name: "com.android.adservices",
|
||||||
|
src: "com.android.foo-arm.apex",
|
||||||
|
}
|
||||||
|
|
||||||
|
// APEX contribution modules
|
||||||
|
|
||||||
|
|
||||||
|
apex_contributions {
|
||||||
|
name: "adservices.prebuilt.contributions",
|
||||||
|
api_domain: "com.android.adservices",
|
||||||
|
contents: ["prebuilt_com.google.android.adservices"],
|
||||||
|
}
|
||||||
|
|
||||||
|
apex_contributions {
|
||||||
|
name: "adservices.prebuilt.v2.contributions",
|
||||||
|
api_domain: "com.android.adservices",
|
||||||
|
contents: ["prebuilt_com.google.android.adservices.v2"],
|
||||||
|
}
|
||||||
|
`
|
||||||
|
|
||||||
|
testCases := []struct {
|
||||||
|
desc string
|
||||||
|
selectedApexContributions string
|
||||||
|
expectedVisibleModuleNames []string
|
||||||
|
expectedHiddenModuleNames []string
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
desc: "No apex contributions selected, source aosp apex should be visible, and mainline prebuilts should be hidden",
|
||||||
|
selectedApexContributions: "",
|
||||||
|
expectedVisibleModuleNames: []string{"com.android.adservices"},
|
||||||
|
expectedHiddenModuleNames: []string{"com.google.android.adservices", "com.google.android.adservices.v2"},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
desc: "Prebuilt apex prebuilt_com.android.foo is selected",
|
||||||
|
selectedApexContributions: "adservices.prebuilt.contributions",
|
||||||
|
expectedVisibleModuleNames: []string{"com.android.adservices", "com.google.android.adservices"},
|
||||||
|
expectedHiddenModuleNames: []string{"com.google.android.adservices.v2"},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
desc: "Prebuilt apex prebuilt_com.android.foo.v2 is selected",
|
||||||
|
selectedApexContributions: "adservices.prebuilt.v2.contributions",
|
||||||
|
expectedVisibleModuleNames: []string{"com.android.adservices", "com.google.android.adservices.v2"},
|
||||||
|
expectedHiddenModuleNames: []string{"com.google.android.adservices"},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, tc := range testCases {
|
||||||
|
preparer := android.GroupFixturePreparers(
|
||||||
|
android.FixtureMergeMockFs(map[string][]byte{
|
||||||
|
"system/sepolicy/apex/com.android.adservices-file_contexts": nil,
|
||||||
|
}),
|
||||||
|
android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) {
|
||||||
|
variables.BuildFlags = map[string]string{
|
||||||
|
"RELEASE_APEX_CONTRIBUTIONS_ADSERVICES": tc.selectedApexContributions,
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
)
|
||||||
|
ctx := testApex(t, bp, preparer)
|
||||||
|
|
||||||
|
checkHideFromMake(t, ctx, tc.expectedVisibleModuleNames, tc.expectedHiddenModuleNames)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestAconfifDeclarationsValidation(t *testing.T) {
|
func TestAconfifDeclarationsValidation(t *testing.T) {
|
||||||
aconfigDeclarationLibraryString := func(moduleNames []string) (ret string) {
|
aconfigDeclarationLibraryString := func(moduleNames []string) (ret string) {
|
||||||
for _, moduleName := range moduleNames {
|
for _, moduleName := range moduleNames {
|
||||||
|
|
|
@ -561,6 +561,7 @@ func TestBootclasspathFragmentInPrebuiltArtApex(t *testing.T) {
|
||||||
result := preparers.RunTestWithBp(t, fmt.Sprintf(bp, "enabled: false,"))
|
result := preparers.RunTestWithBp(t, fmt.Sprintf(bp, "enabled: false,"))
|
||||||
|
|
||||||
java.CheckModuleDependencies(t, result.TestContext, "com.android.art", "android_common_com.android.art", []string{
|
java.CheckModuleDependencies(t, result.TestContext, "com.android.art", "android_common_com.android.art", []string{
|
||||||
|
`all_apex_contributions`,
|
||||||
`dex2oatd`,
|
`dex2oatd`,
|
||||||
`prebuilt_art-bootclasspath-fragment`,
|
`prebuilt_art-bootclasspath-fragment`,
|
||||||
`prebuilt_com.android.art.apex.selector`,
|
`prebuilt_com.android.art.apex.selector`,
|
||||||
|
@ -568,6 +569,7 @@ func TestBootclasspathFragmentInPrebuiltArtApex(t *testing.T) {
|
||||||
})
|
})
|
||||||
|
|
||||||
java.CheckModuleDependencies(t, result.TestContext, "art-bootclasspath-fragment", "android_common_com.android.art", []string{
|
java.CheckModuleDependencies(t, result.TestContext, "art-bootclasspath-fragment", "android_common_com.android.art", []string{
|
||||||
|
`all_apex_contributions`,
|
||||||
`dex2oatd`,
|
`dex2oatd`,
|
||||||
`prebuilt_bar`,
|
`prebuilt_bar`,
|
||||||
`prebuilt_com.android.art.deapexer`,
|
`prebuilt_com.android.art.deapexer`,
|
||||||
|
|
|
@ -246,7 +246,6 @@ func (p *prebuiltCommon) AndroidMkEntries() []android.AndroidMkEntries {
|
||||||
OutputFile: android.OptionalPathForPath(p.outputApex),
|
OutputFile: android.OptionalPathForPath(p.outputApex),
|
||||||
Include: "$(BUILD_PREBUILT)",
|
Include: "$(BUILD_PREBUILT)",
|
||||||
Host_required: p.hostRequired,
|
Host_required: p.hostRequired,
|
||||||
OverrideName: p.BaseModuleName(),
|
|
||||||
ExtraEntries: []android.AndroidMkExtraEntriesFunc{
|
ExtraEntries: []android.AndroidMkExtraEntriesFunc{
|
||||||
func(ctx android.AndroidMkExtraEntriesContext, entries *android.AndroidMkEntries) {
|
func(ctx android.AndroidMkExtraEntriesContext, entries *android.AndroidMkEntries) {
|
||||||
entries.SetString("LOCAL_MODULE_PATH", p.installDir.String())
|
entries.SetString("LOCAL_MODULE_PATH", p.installDir.String())
|
||||||
|
|
|
@ -274,6 +274,7 @@ func TestPrebuiltSystemserverclasspathFragmentContents(t *testing.T) {
|
||||||
ctx := result.TestContext
|
ctx := result.TestContext
|
||||||
|
|
||||||
java.CheckModuleDependencies(t, ctx, "myapex", "android_common_myapex", []string{
|
java.CheckModuleDependencies(t, ctx, "myapex", "android_common_myapex", []string{
|
||||||
|
`all_apex_contributions`,
|
||||||
`dex2oatd`,
|
`dex2oatd`,
|
||||||
`prebuilt_myapex.apex.selector`,
|
`prebuilt_myapex.apex.selector`,
|
||||||
`prebuilt_myapex.deapexer`,
|
`prebuilt_myapex.deapexer`,
|
||||||
|
@ -281,6 +282,7 @@ func TestPrebuiltSystemserverclasspathFragmentContents(t *testing.T) {
|
||||||
})
|
})
|
||||||
|
|
||||||
java.CheckModuleDependencies(t, ctx, "mysystemserverclasspathfragment", "android_common_myapex", []string{
|
java.CheckModuleDependencies(t, ctx, "mysystemserverclasspathfragment", "android_common_myapex", []string{
|
||||||
|
`all_apex_contributions`,
|
||||||
`prebuilt_bar`,
|
`prebuilt_bar`,
|
||||||
`prebuilt_foo`,
|
`prebuilt_foo`,
|
||||||
`prebuilt_myapex.deapexer`,
|
`prebuilt_myapex.deapexer`,
|
||||||
|
@ -432,6 +434,7 @@ func TestPrebuiltStandaloneSystemserverclasspathFragmentContents(t *testing.T) {
|
||||||
ctx := result.TestContext
|
ctx := result.TestContext
|
||||||
|
|
||||||
java.CheckModuleDependencies(t, ctx, "mysystemserverclasspathfragment", "android_common_myapex", []string{
|
java.CheckModuleDependencies(t, ctx, "mysystemserverclasspathfragment", "android_common_myapex", []string{
|
||||||
|
`all_apex_contributions`,
|
||||||
`prebuilt_bar`,
|
`prebuilt_bar`,
|
||||||
`prebuilt_foo`,
|
`prebuilt_foo`,
|
||||||
`prebuilt_myapex.deapexer`,
|
`prebuilt_myapex.deapexer`,
|
||||||
|
|
|
@ -923,6 +923,7 @@ func TestJavaSdkLibraryImport(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
CheckModuleDependencies(t, result.TestContext, "sdklib", "android_common", []string{
|
CheckModuleDependencies(t, result.TestContext, "sdklib", "android_common", []string{
|
||||||
|
`all_apex_contributions`,
|
||||||
`dex2oatd`,
|
`dex2oatd`,
|
||||||
`prebuilt_sdklib.stubs`,
|
`prebuilt_sdklib.stubs`,
|
||||||
`prebuilt_sdklib.stubs.source.test`,
|
`prebuilt_sdklib.stubs.source.test`,
|
||||||
|
|
Loading…
Reference in a new issue