Only register mutators once

Mutators are registered into a global variable, and then into the
context when it is created.  Only call registerMutators once so that the
same mutator is not listed multiple times in the global variable when
multiple contexts are created.

Test: go test -v android/soong/android
Change-Id: Ie9e3ed09a89b848462b898476cdfb81a90c64bd3
This commit is contained in:
Colin Cross 2016-10-13 14:18:27 -07:00
parent fc754581fc
commit 4498afc55b
1 changed files with 8 additions and 2 deletions

View File

@ -14,7 +14,11 @@
package android package android
import "github.com/google/blueprint" import (
"sync"
"github.com/google/blueprint"
)
type moduleType struct { type moduleType struct {
name string name string
@ -47,6 +51,8 @@ func RegisterSingletonType(name string, factory blueprint.SingletonFactory) {
singletons = append(singletons, singleton{name, factory}) singletons = append(singletons, singleton{name, factory})
} }
var registerMutatorsOnce sync.Once
func NewContext() *blueprint.Context { func NewContext() *blueprint.Context {
ctx := blueprint.NewContext() ctx := blueprint.NewContext()
@ -58,7 +64,7 @@ func NewContext() *blueprint.Context {
ctx.RegisterSingletonType(t.name, t.factory) ctx.RegisterSingletonType(t.name, t.factory)
} }
registerMutators() registerMutatorsOnce.Do(registerMutators)
for _, t := range mutators { for _, t := range mutators {
var handle blueprint.MutatorHandle var handle blueprint.MutatorHandle