diff options
author | Cole Faust <colefaust@google.com> | 2024-01-31 01:31:41 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2024-01-31 01:31:41 +0000 |
commit | 689b3e5ce422aa6f5fe9ee6f2375ed0db0c3da85 (patch) | |
tree | 663d34c4720a76711376162a805205fc5bd76dbe /provider.go | |
parent | 1236187824466a4d040ce8ef014a86dc98c7220f (diff) | |
parent | 7add62142d6d75bdef9eb788ecb59bae9bb04421 (diff) | |
download | blueprint-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.go | 13 |
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 |