Bug 1278415 - Also write a mozinfo for js standalone builds. r=gps
authorMike Hommey <mh+mozilla@glandium.org>
Tue, 07 Jun 2016 13:49:14 +0900
changeset 341978 08093ab05dd463215a7ab14c73fa0905a7ef3ff9
parent 341962 8cef6292102420b8a144c2752ddd96c906b6c7be
child 341979 ba333bc43814a887e1ef6e74a5f2dfae5620d942
push id6389
push userraliiev@mozilla.com
push dateMon, 19 Sep 2016 13:38:22 +0000
treeherdermozilla-beta@01d67bfe6c81 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersgps
bugs1278415
milestone50.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 1278415 - Also write a mozinfo for js standalone builds. r=gps Historically, a mozinfo for js standalone build has not been necessary, but with the move towards a) having things work with mach and b) buildconfig using the MozbuildObject.from_environment in next patch, mozinfo becomes necessary (it's required for MozbuildObject.from_environment to find the directory is an objdir). Interestingly, hazard builds do both a js standalone build and a desktop Firefox build at the same time, both of which are done with MOZCONFIG set in the environment... with the Firefox mozconfig. The result of now writing a mozinfo for js standalone builds is that in that case, they end up with a reference to the mozconfig, which the build system then reads, and finds a MOZ_OBJDIR, which then doesn't match the js standalone build objdir. So for those builds, reset MOZCONFIG.
config/tests/test_mozbuild_reading.py
configure.py
python/mozbuild/mozbuild/mozinfo.py
taskcluster/scripts/builder/hazard-analysis.sh
--- a/config/tests/test_mozbuild_reading.py
+++ b/config/tests/test_mozbuild_reading.py
@@ -77,16 +77,19 @@ class TestMozbuildReading(unittest.TestC
 
         try:
             config = mb.config_environment
         except Exception as e:
             if e.message == 'config.status not available. Run configure.':
                 raise unittest.SkipTest('failing without config.status')
             raise
 
+        if config.substs['MOZ_BUILD_APP'] == 'js':
+            raise unittest.SkipTest('failing in Spidermonkey builds')
+
         reader = BuildReader(config)
         all_paths = self._mozbuilds(reader)
         _, contexts = reader.read_relevant_mozbuilds(all_paths)
 
         finder = FileFinder(config.topsrcdir, find_executables=False,
                             ignore=['obj*'])
 
         def pattern_exists(pat):
--- a/configure.py
+++ b/configure.py
@@ -77,18 +77,17 @@ if __name__ == '__main__':
     from mozbuild.config_status import config_status
     config_status(**args)
 ''')
 
     # Other things than us are going to run this file, so we need to give it
     # executable permissions.
     os.chmod('config.status', 0755)
     if config.get('MOZ_BUILD_APP') != 'js' or config.get('JS_STANDALONE'):
-        if not config.get('JS_STANDALONE'):
-            os.environ['WRITE_MOZINFO'] = '1'
+        os.environ['WRITE_MOZINFO'] = '1'
         # Until we have access to the virtualenv from this script, execute
         # config.status externally, with the virtualenv python.
         return subprocess.call([config['PYTHON'], 'config.status'])
     return 0
 
 
 if __name__ == '__main__':
     sys.exit(main(sys.argv))
--- a/python/mozbuild/mozbuild/mozinfo.py
+++ b/python/mozbuild/mozbuild/mozinfo.py
@@ -15,17 +15,17 @@ import mozbuild.mozconfig as mozconfig
 def build_dict(config, env=os.environ):
     """
     Build a dict containing data about the build configuration from
     the environment.
     """
     substs = config.substs
 
     # Check that all required variables are present first.
-    required = ["TARGET_CPU", "OS_TARGET", "MOZ_WIDGET_TOOLKIT"]
+    required = ["TARGET_CPU", "OS_TARGET"]
     missing = [r for r in required if r not in substs]
     if missing:
         raise Exception("Missing required environment variables: %s" %
                         ', '.join(missing))
 
     d = {}
     d['topsrcdir'] = config.topsrcdir
 
@@ -33,25 +33,25 @@ def build_dict(config, env=os.environ):
     if the_mozconfig:
         d['mozconfig'] = the_mozconfig
 
     # os
     o = substs["OS_TARGET"]
     known_os = {"Linux": "linux",
                 "WINNT": "win",
                 "Darwin": "mac",
-                "Android": "b2g" if substs["MOZ_WIDGET_TOOLKIT"] == "gonk" else "android"}
+                "Android": "b2g" if substs.get("MOZ_WIDGET_TOOLKIT") == "gonk" else "android"}
     if o in known_os:
         d["os"] = known_os[o]
     else:
         # Allow unknown values, just lowercase them.
         d["os"] = o.lower()
 
     # Widget toolkit, just pass the value directly through.
-    d["toolkit"] = substs["MOZ_WIDGET_TOOLKIT"]
+    d["toolkit"] = substs.get("MOZ_WIDGET_TOOLKIT")
 
     # Application name
     if 'MOZ_APP_NAME' in substs:
         d["appname"] = substs["MOZ_APP_NAME"]
 
     # Build app name
     if 'MOZ_MULET' in substs and substs.get('MOZ_MULET') == "1":
         d["buildapp"] = "mulet"
--- a/taskcluster/scripts/builder/hazard-analysis.sh
+++ b/taskcluster/scripts/builder/hazard-analysis.sh
@@ -31,18 +31,20 @@ fi
 
 function build_js_shell () {
     ( cd $JS_SRCDIR; autoconf-2.13 )
     if [[ -z "$HAZ_DEP" ]]; then
         [ -d $HAZARD_SHELL_OBJDIR ] && rm -rf $HAZARD_SHELL_OBJDIR
     fi
     mkdir -p $HAZARD_SHELL_OBJDIR || true
     cd $HAZARD_SHELL_OBJDIR
-    $JS_SRCDIR/configure --enable-optimize --disable-debug --enable-ctypes --enable-nspr-build --without-intl-api --with-ccache
-    make -j4
+    ( export MOZCONFIG=
+      $JS_SRCDIR/configure --enable-optimize --disable-debug --enable-ctypes --enable-nspr-build --without-intl-api --with-ccache
+      make -j4
+    )
 }
 
 function configure_analysis () {
     local analysis_dir
     analysis_dir="$1"
 
     if [[ -z "$HAZ_DEP" ]]; then
         [ -d "$analysis_dir" ] && rm -rf "$analysis_dir"