summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Cole Faust <colefaust@google.com> 2024-09-11 13:26:20 -0700
committer Cole Faust <colefaust@google.com> 2024-09-11 14:48:50 -0700
commit4e2bf9fb2d3ede98da38a6574a17a6ec2d6bb84e (patch)
treefa8d381aefa64c98631867ccb1374da6c30221ca
parente8a8783154dc31f3e09e3bb98a8b11233358097d (diff)
Add HasMutatorFinished
To enforce that selects are only evaluated after a certain point in a followup cl. Bug: 323382414 Test: m nothing --no-skip-soong-tests Change-Id: Ib215fedb904aa2e5f4d65cfd26a23f527eb4983e
-rw-r--r--android/androidmk.go1
-rw-r--r--android/base_module_context.go8
-rw-r--r--android/paths.go1
-rw-r--r--android/sdk.go2
-rw-r--r--android/singleton.go8
-rw-r--r--android/testing.go4
-rw-r--r--cc/binary_sdk_member.go2
-rw-r--r--cc/library_sdk_member.go2
-rw-r--r--sdk/update.go8
9 files changed, 24 insertions, 12 deletions
diff --git a/android/androidmk.go b/android/androidmk.go
index 98f8bb111..c175bec7d 100644
--- a/android/androidmk.go
+++ b/android/androidmk.go
@@ -502,6 +502,7 @@ type fillInEntriesContext interface {
otherModuleProvider(module blueprint.Module, provider blueprint.AnyProviderKey) (any, bool)
ModuleType(module blueprint.Module) string
OtherModulePropertyErrorf(module Module, property string, fmt string, args ...interface{})
+ HasMutatorFinished(mutatorName string) bool
}
func (a *AndroidMkEntries) fillInEntries(ctx fillInEntriesContext, mod blueprint.Module) {
diff --git a/android/base_module_context.go b/android/base_module_context.go
index 550600052..bb8137720 100644
--- a/android/base_module_context.go
+++ b/android/base_module_context.go
@@ -220,6 +220,10 @@ type BaseModuleContext interface {
// EvaluateConfiguration makes ModuleContext a valid proptools.ConfigurableEvaluator, so this context
// can be used to evaluate the final value of Configurable properties.
EvaluateConfiguration(condition proptools.ConfigurableCondition, property string) proptools.ConfigurableValue
+
+ // HasMutatorFinished returns true if the given mutator has finished running.
+ // It will panic if given an invalid mutator name.
+ HasMutatorFinished(mutatorName string) bool
}
type baseModuleContext struct {
@@ -270,6 +274,10 @@ func (b *baseModuleContext) setProvider(provider blueprint.AnyProviderKey, value
b.bp.SetProvider(provider, value)
}
+func (b *baseModuleContext) HasMutatorFinished(mutatorName string) bool {
+ return b.bp.HasMutatorFinished(mutatorName)
+}
+
func (b *baseModuleContext) GetDirectDepWithTag(name string, tag blueprint.DependencyTag) blueprint.Module {
return b.bp.GetDirectDepWithTag(name, tag)
}
diff --git a/android/paths.go b/android/paths.go
index e45795989..6322f7566 100644
--- a/android/paths.go
+++ b/android/paths.go
@@ -94,6 +94,7 @@ type ModuleWithDepsPathContext interface {
EarlyModulePathContext
VisitDirectDepsBlueprint(visit func(blueprint.Module))
OtherModuleDependencyTag(m blueprint.Module) blueprint.DependencyTag
+ HasMutatorFinished(mutatorName string) bool
}
// ModuleMissingDepsPathContext is a subset of *ModuleContext methods required by
diff --git a/android/sdk.go b/android/sdk.go
index fb1ac24d4..ab9a91ccb 100644
--- a/android/sdk.go
+++ b/android/sdk.go
@@ -813,8 +813,6 @@ type SdkMemberProperties interface {
// SdkMemberContext provides access to information common to a specific member.
type SdkMemberContext interface {
- ConfigurableEvaluatorContext
-
// SdkModuleContext returns the module context of the sdk common os variant which is creating the
// snapshot.
//
diff --git a/android/singleton.go b/android/singleton.go
index 8542bd9e6..913bf6a56 100644
--- a/android/singleton.go
+++ b/android/singleton.go
@@ -90,6 +90,10 @@ type SingletonContext interface {
// OtherModulePropertyErrorf reports an error on the line number of the given property of the given module
OtherModulePropertyErrorf(module Module, property string, format string, args ...interface{})
+
+ // HasMutatorFinished returns true if the given mutator has finished running.
+ // It will panic if given an invalid mutator name.
+ HasMutatorFinished(mutatorName string) bool
}
type singletonAdaptor struct {
@@ -286,3 +290,7 @@ func (s *singletonContextAdaptor) otherModuleProvider(module blueprint.Module, p
func (s *singletonContextAdaptor) OtherModulePropertyErrorf(module Module, property string, format string, args ...interface{}) {
s.blueprintSingletonContext().OtherModulePropertyErrorf(module, property, format, args...)
}
+
+func (s *singletonContextAdaptor) HasMutatorFinished(mutatorName string) bool {
+ return s.blueprintSingletonContext().HasMutatorFinished(mutatorName)
+}
diff --git a/android/testing.go b/android/testing.go
index 42cd1ebbe..1ee6e4cdb 100644
--- a/android/testing.go
+++ b/android/testing.go
@@ -1326,6 +1326,10 @@ func (ctx *panickingConfigAndErrorContext) Config() Config {
return ctx.ctx.Config()
}
+func (ctx *panickingConfigAndErrorContext) HasMutatorFinished(mutatorName string) bool {
+ return ctx.ctx.HasMutatorFinished(mutatorName)
+}
+
func PanickingConfigAndErrorContext(ctx *TestContext) ConfigurableEvaluatorContext {
return &panickingConfigAndErrorContext{
ctx: ctx,
diff --git a/cc/binary_sdk_member.go b/cc/binary_sdk_member.go
index 8a7ea8845..4063714ab 100644
--- a/cc/binary_sdk_member.go
+++ b/cc/binary_sdk_member.go
@@ -132,7 +132,7 @@ func (p *nativeBinaryInfoProperties) PopulateFromVariant(ctx android.SdkMemberCo
if ccModule.linker != nil {
specifiedDeps := specifiedDeps{}
- specifiedDeps = ccModule.linker.linkerSpecifiedDeps(ctx, ccModule, specifiedDeps)
+ specifiedDeps = ccModule.linker.linkerSpecifiedDeps(ctx.SdkModuleContext(), ccModule, specifiedDeps)
p.SharedLibs = specifiedDeps.sharedLibs
p.SystemSharedLibs = specifiedDeps.systemSharedLibs
diff --git a/cc/library_sdk_member.go b/cc/library_sdk_member.go
index 053c46069..af3658d58 100644
--- a/cc/library_sdk_member.go
+++ b/cc/library_sdk_member.go
@@ -543,7 +543,7 @@ func (p *nativeLibInfoProperties) PopulateFromVariant(ctx android.SdkMemberConte
p.ExportedFlags = exportedInfo.Flags
if ccModule.linker != nil {
specifiedDeps := specifiedDeps{}
- specifiedDeps = ccModule.linker.linkerSpecifiedDeps(ctx, ccModule, specifiedDeps)
+ specifiedDeps = ccModule.linker.linkerSpecifiedDeps(ctx.SdkModuleContext(), ccModule, specifiedDeps)
if lib := ccModule.library; lib != nil {
if !lib.hasStubsVariants() {
diff --git a/sdk/update.go b/sdk/update.go
index 93bb861e9..ec87a75d9 100644
--- a/sdk/update.go
+++ b/sdk/update.go
@@ -1993,14 +1993,6 @@ func (m *memberContext) IsTargetBuildBeforeTiramisu() bool {
return m.builder.targetBuildRelease.EarlierThan(buildReleaseT)
}
-func (m *memberContext) Config() android.Config {
- return m.sdkMemberContext.Config()
-}
-
-func (m *memberContext) OtherModulePropertyErrorf(module android.Module, property string, fmt string, args ...interface{}) {
- m.sdkMemberContext.OtherModulePropertyErrorf(module, property, fmt, args)
-}
-
var _ android.SdkMemberContext = (*memberContext)(nil)
func (s *sdk) createMemberSnapshot(ctx *memberContext, member *sdkMember, bpModule *bpModule) {