aboutsummaryrefslogtreecommitdiff
path: root/provider.go
diff options
context:
space:
mode:
authorCole Faust <colefaust@google.com>2024-01-31 01:31:41 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2024-01-31 01:31:41 +0000
commit689b3e5ce422aa6f5fe9ee6f2375ed0db0c3da85 (patch)
tree663d34c4720a76711376162a805205fc5bd76dbe /provider.go
parent1236187824466a4d040ce8ef014a86dc98c7220f (diff)
parent7add62142d6d75bdef9eb788ecb59bae9bb04421 (diff)
downloadblueprint-689b3e5ce422aa6f5fe9ee6f2375ed0db0c3da85.tar.gz
Enforce that providers are not changed am: 7add62142d
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/2928138 Change-Id: I9509cd10e21d24b9792f35a1a208b755adae08c2 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
Diffstat (limited to 'provider.go')
-rw-r--r--provider.go13
1 files changed, 13 insertions, 0 deletions
diff --git a/provider.go b/provider.go
index 48527b1..297861e 100644
--- a/provider.go
+++ b/provider.go
@@ -16,6 +16,8 @@ package blueprint
import (
"fmt"
+
+ "github.com/google/blueprint/proptools"
)
// This file implements Providers, modelled after Bazel
@@ -151,6 +153,17 @@ func (c *Context) setProvider(m *moduleInfo, provider *providerKey, value any) {
}
m.providers[provider.id] = value
+
+ if c.verifyProvidersAreUnchanged {
+ if m.providerInitialValueHashes == nil {
+ m.providerInitialValueHashes = make([]uint64, len(providerRegistry))
+ }
+ hash, err := proptools.HashProvider(value)
+ if err != nil {
+ panic(fmt.Sprintf("Can't set value of provider %s: %s", provider.typ, err.Error()))
+ }
+ m.providerInitialValueHashes[provider.id] = hash
+ }
}
// provider returns the value, if any, for a given provider for a module. Verifies that it is