aboutsummaryrefslogtreecommitdiffstats
path: root/common
diff options
context:
space:
mode:
authorDan Willemsen <dwillemsen@google.com>2015-09-11 17:06:19 -0700
committerDan Willemsen <dwillemsen@google.com>2015-09-15 20:30:03 +0000
commite7680babe2f768de10d1babaf90ba5b1f24d1a99 (patch)
tree031fe8d30b22754a4bfb8b5b62cf7a8c2430c4ac /common
parent98b26c576a9e96b31dbb0263baa1866e5d0ab2ef (diff)
downloadbuild_soong-e7680babe2f768de10d1babaf90ba5b1f24d1a99.tar.gz
build_soong-e7680babe2f768de10d1babaf90ba5b1f24d1a99.tar.bz2
build_soong-e7680babe2f768de10d1babaf90ba5b1f24d1a99.zip
Freeze environment reading after saving deps
Any reads after the deps are saved won't show up as dependencies later. So panic if new environment variables are read after saving deps. Change-Id: Ia51deaf750804d3b99e69c001939a104c2d8c9f2
Diffstat (limited to 'common')
-rw-r--r--common/config.go11
1 files changed, 9 insertions, 2 deletions
diff --git a/common/config.go b/common/config.go
index 348d0dbb..f8231f07 100644
--- a/common/config.go
+++ b/common/config.go
@@ -48,8 +48,9 @@ type config struct {
srcDir string // the path of the root source directory
- envLock sync.Mutex
- envDeps map[string]string
+ envLock sync.Mutex
+ envDeps map[string]string
+ envFrozen bool
}
type jsonConfigurable interface {
@@ -178,6 +179,9 @@ func (c *config) Getenv(key string) string {
var exists bool
c.envLock.Lock()
if val, exists = c.envDeps[key]; !exists {
+ if c.envFrozen {
+ panic("Cannot access new environment variables after envdeps are frozen")
+ }
val = os.Getenv(key)
c.envDeps[key] = val
}
@@ -186,6 +190,9 @@ func (c *config) Getenv(key string) string {
}
func (c *config) EnvDeps() map[string]string {
+ c.envLock.Lock()
+ c.envFrozen = true
+ c.envLock.Unlock()
return c.envDeps
}