summaryrefslogtreecommitdiff
path: root/mesonbuild/build.py
diff options
context:
space:
mode:
authorNirbheek Chauhan <nirbheek@centricular.com>2019-04-13 11:25:58 +0530
committerNirbheek Chauhan <nirbheek@centricular.com>2019-04-13 11:25:58 +0530
commit26cb9bb8df0d1a759d4d62abf0877e5fe3fd6bf6 (patch)
tree0bc1389fc92ce3e5f3e11f1da8951b236d0e768a /mesonbuild/build.py
parenteaed4aecbe218018feed73192e6fc25e54034d53 (diff)
downloadmeson-warn-env-ops-dont-stack.tar.gz
interpreter: Warn when environment() ops are overridenwarn-env-ops-dont-stack
Warn when someone tries to use append() or prepend() on an env var which already has an operation set on it. People seem to think that multiple append/prepend operations stack, but they don't. Closes https://github.com/mesonbuild/meson/issues/5087
Diffstat (limited to 'mesonbuild/build.py')
-rw-r--r--mesonbuild/build.py9
1 files changed, 9 insertions, 0 deletions
diff --git a/mesonbuild/build.py b/mesonbuild/build.py
index 020c47b58..dae94b6ed 100644
--- a/mesonbuild/build.py
+++ b/mesonbuild/build.py
@@ -296,11 +296,20 @@ class ExtractedObjects:
class EnvironmentVariables:
def __init__(self):
self.envvars = []
+ # The set of all env vars we have operations for. Only used for self.has_name()
+ self.varnames = set()
def __repr__(self):
repr_str = "<{0}: {1}>"
return repr_str.format(self.__class__.__name__, self.envvars)
+ def add_var(self, method, name, args, kwargs):
+ self.varnames.add(name)
+ self.envvars.append((method, name, args, kwargs))
+
+ def has_name(self, name):
+ return name in self.varnames
+
def get_value(self, values, kwargs):
separator = kwargs.get('separator', os.pathsep)