Merge "Export non-apex variants of modules to make" am: f42c21d5f8

Original change: https://android-review.googlesource.com/c/platform/build/soong/+/2462194

Change-Id: I9e0170a7c44dd1cd966132948c23ecd16a7a45aa
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Cole Faust
2023-03-10 07:03:35 +00:00
committed by Automerger Merge Worker
9 changed files with 49 additions and 42 deletions

View File

@@ -560,6 +560,8 @@ func (a *AndroidMkEntries) fillInEntries(ctx fillInEntriesContext, mod blueprint
a.SetPaths("LOCAL_SOONG_INSTALL_SYMLINKS", base.katiSymlinks.InstallPaths().Paths())
}
a.SetBoolIfTrue("LOCAL_UNINSTALLABLE_MODULE", base.commonProperties.SkipInstall)
if am, ok := mod.(ApexModule); ok {
a.SetBoolIfTrue("LOCAL_NOT_AVAILABLE_FOR_PLATFORM", am.NotAvailableForPlatform())
}

View File

@@ -603,7 +603,7 @@ func CreateApexVariations(mctx BottomUpMutatorContext, module ApexModule) []Modu
// Do not install the module for platform, but still allow it to output
// uninstallable AndroidMk entries in certain cases when they have side
// effects. TODO(jiyong): move this routine to somewhere else
mod.MakeUninstallable()
mod.SkipInstall()
}
if !platformVariation {
mctx.SetVariationProvider(mod, ApexInfoProvider, apexInfos[i-1])

View File

@@ -505,8 +505,8 @@ type Module interface {
PartitionTag(DeviceConfig) string
HideFromMake()
IsHideFromMake() bool
SkipInstall()
IsSkipInstall() bool
MakeUninstallable()
ReplacedByPrebuilt()
IsReplacedByPrebuilt() bool
ExportedToMake() bool
@@ -1964,15 +1964,6 @@ func (m *ModuleBase) IsSkipInstall() bool {
return m.commonProperties.SkipInstall
}
// Similar to HideFromMake, but if the AndroidMk entry would set
// LOCAL_UNINSTALLABLE_MODULE then this variant may still output that entry
// rather than leaving it out altogether. That happens in cases where it would
// have other side effects, in particular when it adds a NOTICE file target,
// which other install targets might depend on.
func (m *ModuleBase) MakeUninstallable() {
m.HideFromMake()
}
func (m *ModuleBase) ReplacedByPrebuilt() {
m.commonProperties.ReplacedByPrebuilt = true
m.HideFromMake()

View File

@@ -15,6 +15,7 @@
package android
import (
"strings"
"testing"
"github.com/google/blueprint"
@@ -28,6 +29,8 @@ type componentTestModule struct {
Deps []string
Skip_install *bool
}
builtFile Path
}
// dep tag used in this test. All dependencies are considered as installable.
@@ -48,13 +51,21 @@ func (m *componentTestModule) DepsMutator(ctx BottomUpMutatorContext) {
}
func (m *componentTestModule) GenerateAndroidBuildActions(ctx ModuleContext) {
builtFile := PathForModuleOut(ctx, m.Name())
m.builtFile = PathForModuleOut(ctx, m.Name())
dir := ctx.Target().Arch.ArchType.Multilib
installDir := PathForModuleInstall(ctx, dir)
if proptools.Bool(m.props.Skip_install) {
m.SkipInstall()
}
ctx.InstallFile(installDir, m.Name(), builtFile)
ctx.InstallFile(installDir, m.Name(), m.builtFile)
}
func (m *componentTestModule) AndroidMkEntries() []AndroidMkEntries {
return []AndroidMkEntries{
{
OutputFile: OptionalPathForPath(m.builtFile),
},
}
}
// Module that itself is a package
@@ -251,6 +262,35 @@ func TestPackagingBaseMultiTarget(t *testing.T) {
`, []string{"lib32/foo", "lib64/foo", "lib64/bar"})
}
func TestSkipInstallProducesLocalUninstallableModule(t *testing.T) {
result := GroupFixturePreparers(
PrepareForTestWithArchMutator,
FixtureRegisterWithContext(func(ctx RegistrationContext) {
ctx.RegisterModuleType("component", componentTestModuleFactory)
ctx.RegisterModuleType("package_module", packageTestModuleFactory)
}),
FixtureWithRootAndroidBp(`
component {
name: "foo",
skip_install: true,
}
package_module {
name: "package",
deps: ["foo"],
}
`),
).RunTest(t)
module := result.ModuleForTests("foo", "android_arm64_armv8-a").Module().(*componentTestModule)
entries := AndroidMkEntriesForTest(t, result.TestContext, module)
builder := &strings.Builder{}
entries[0].write(builder)
androidMkString := builder.String()
if !strings.Contains(androidMkString, "LOCAL_UNINSTALLABLE_MODULE := true") {
t.Errorf("Expected android mk entries to contain \"LOCAL_UNINSTALLABLE_MODULE := true\", got: \n%s", androidMkString)
}
}
func TestPackagingBaseSingleTarget(t *testing.T) {
multiTarget := false
runPackagingTest(t, multiTarget,