Bug 1258618 - Serialize substs/configs and defines bools as '1' or '' in config.status. r=nalexander
authorMike Hommey <mh+mozilla@glandium.org>
Tue, 22 Mar 2016 14:03:26 +0900
changeset 329800 aa4bcd9eadcb994886c14fd96d53aabeffe3f31c
parent 329799 f3431739c79d3fdc7bff53be2600c5bb7dd9fc6a
child 329801 fa9a23bf9e17c37c06c131c1b713af32c4bf0957
push id1146
push userCallek@gmail.com
push dateMon, 25 Jul 2016 16:35:44 +0000
treeherdermozilla-release@a55778f9cd5a [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersnalexander
bugs1258618
milestone48.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1258618 - Serialize substs/configs and defines bools as '1' or '' in config.status. r=nalexander This allows to use True and False as values given to set_config/set_define in moz.configure files, while postponing having to deal with the long tail of things depending on the values from substs and defines. Ideally, everything would handle the bools just fine, but there are too many things involved to deal with this right now: scripts using buildconfig.{substs,defines}, scripts using ConfigEnvironment (e.g. process_define_files.py), ConfigEnvironment itself, etc.
configure.py
--- a/configure.py
+++ b/configure.py
@@ -24,22 +24,34 @@ def main(argv):
     if sandbox._help:
         return 0
 
     return config_status(config)
 
 
 def config_status(config):
     # Sanitize config data to feed config.status
+    # Ideally, all the backend and frontend code would handle the booleans, but
+    # there are so many things involved, that it's easier to keep config.status
+    # untouched for now.
+    def sanitized_bools(v):
+        if v is True:
+            return '1'
+        if v is False:
+            return ''
+        return v
+
     sanitized_config = {}
     sanitized_config['substs'] = {
-        k: v for k, v in config.iteritems()
+        k: sanitized_bools(v) for k, v in config.iteritems()
         if k not in ('DEFINES', 'non_global_defines', 'TOPSRCDIR', 'TOPOBJDIR')
     }
-    sanitized_config['defines'] = config['DEFINES']
+    sanitized_config['defines'] = {
+        k: sanitized_bools(v) for k, v in config['DEFINES'].iteritems()
+    }
     sanitized_config['non_global_defines'] = config['non_global_defines']
     sanitized_config['topsrcdir'] = config['TOPSRCDIR']
     sanitized_config['topobjdir'] = config['TOPOBJDIR']
 
     # Create config.status. Eventually, we'll want to just do the work it does
     # here, when we're able to skip configure tests/use cached results/not rely
     # on autoconf.
     print("Creating config.status", file=sys.stderr)