Bug 1449623 - Rework exports in the tup backend; r?Build
In some cases we need to export other environment variables, so make it
easier to track them.
MozReview-Commit-ID: 82OOlRTdhH0
--- a/python/mozbuild/mozbuild/backend/tup.py
+++ b/python/mozbuild/mozbuild/backend/tup.py
@@ -57,29 +57,29 @@ class BackendTupfile(object):
def __init__(self, objdir, environment, topsrcdir, topobjdir):
self.topsrcdir = topsrcdir
self.objdir = objdir
self.relobjdir = mozpath.relpath(objdir, topobjdir)
self.environment = environment
self.name = mozpath.join(objdir, 'Tupfile')
self.rules_included = False
- self.shell_exported = False
self.defines = []
self.host_defines = []
self.delayed_generated_files = []
self.delayed_installed_files = []
self.per_source_flags = defaultdict(list)
self.local_flags = defaultdict(list)
self.sources = defaultdict(list)
self.host_sources = defaultdict(list)
self.variables = {}
self.static_lib = None
self.shared_lib = None
self.program = None
+ self.exports = set()
self.fh = FileAvoidWrite(self.name, capture_diff=True)
self.fh.write('# THIS FILE WAS AUTOMATICALLY GENERATED. DO NOT EDIT.\n')
self.fh.write('\n')
def write(self, buf):
self.fh.write(buf)
@@ -152,23 +152,26 @@ class BackendTupfile(object):
self.rule(
cmd=cmd,
inputs=[src],
extra_inputs=extra_inputs,
outputs=[prefix + '%B.o'],
display='%s %%f' % compiler,
)
+ def export(self, env):
+ for var in env:
+ if var not in self.exports:
+ self.exports.add(var)
+ self.write('export %s\n' % var)
+
def export_shell(self):
- if not self.shell_exported:
- # These are used by mach/mixin/process.py to determine the current
- # shell.
- for var in ('SHELL', 'MOZILLABUILD', 'COMSPEC'):
- self.write('export %s\n' % var)
- self.shell_exported = True
+ # These are used by mach/mixin/process.py to determine the current
+ # shell.
+ self.export(['SHELL', 'MOZILLABUILD', 'COMSPEC'])
def close(self):
return self.fh.close()
@property
def diff(self):
return self.fh.diff