Bug 1304998 - enable tc win pgo; r=dustin
authorRob Thijssen <rthijssen@mozilla.com>
Thu, 29 Sep 2016 07:49:30 +0100
changeset 360850 f0aae2c2bdd0d43f346eb7ff741c04d3453e96af
parent 360849 d271311721bbfad7128b6ce73e23569059deae03
child 360851 7c71ddd0c30fa3f9de28f00297097a9a4b7de89a
push id1369
push userjlorenzo@mozilla.com
push dateMon, 27 Feb 2017 14:59:41 +0000
treeherdermozilla-release@d75a1dba431f [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersdustin
bugs1304998
milestone52.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 1304998 - enable tc win pgo; r=dustin MozReview-Commit-ID: 8X9aj19Kp13
build/mozconfig.cache
taskcluster/ci/build/windows.yml
taskcluster/taskgraph/transforms/gecko_v2_whitelist.py
taskcluster/taskgraph/transforms/job/mozharness.py
--- a/build/mozconfig.cache
+++ b/build/mozconfig.cache
@@ -77,18 +77,21 @@ elif test -z "$CCACHE_DIR" -a -z "$SCCAC
                 master=dummy.usw1.mozilla.com
                 ;;
             us-west-2)
                 master=dummy.usw2.mozilla.com
                 ;;
             esac
         fi
     fi
+fi
 
-
+# if platform hasn't been determined from buildprops, and we're on windows,
+# it must be set to prevent adding ac_add_options --with-ccache below
+if test -z "$platform"; then
     # set platform based on the SYSTEMROOT env var
     case "${SYSTEMROOT}" in
     *Windows)
         platform=windows
         ;;
     esac
 fi
 
--- a/taskcluster/ci/build/windows.yml
+++ b/taskcluster/ci/build/windows.yml
@@ -33,16 +33,37 @@ win32/opt:
         implementation: generic-worker
         max-run-time: 7200
     run:
         using: mozharness
         script: mozharness/scripts/fx_desktop_build.py
         config:
             - builds/taskcluster_firefox_win32_opt.py
 
+win32/pgo:
+    description: "Win32 Opt PGO"
+    index:
+        product: firefox
+        job-name:
+            gecko-v2: win32-pgo
+    treeherder:
+        platform: windows2012-32/pgo
+        symbol: tc(B)
+        tier: 2
+    worker-type: aws-provisioner-v1/gecko-{level}-b-win2012
+    worker:
+        implementation: generic-worker
+        max-run-time: 7200
+    run:
+        using: mozharness
+        options: [enable-pgo]
+        script: mozharness/scripts/fx_desktop_build.py
+        config:
+            - builds/taskcluster_firefox_win32_opt.py
+
 win64/debug:
     description: "Win64 Debug"
     index:
         product: firefox
         job-name:
             gecko-v2: win64-debug
     treeherder:
         platform: windows2012-64/debug
@@ -73,8 +94,29 @@ win64/opt:
         implementation: generic-worker
         max-run-time: 7200
     run:
         using: mozharness
         script: mozharness/scripts/fx_desktop_build.py
         config:
             - builds/taskcluster_firefox_win64_opt.py
 
+win64/pgo:
+    description: "Win64 Opt PGO"
+    index:
+        product: firefox
+        job-name:
+            gecko-v2: win64-pgo
+    treeherder:
+        platform: windows2012-64/opt
+        symbol: tc(B)
+        tier: 2
+    worker-type: aws-provisioner-v1/gecko-{level}-b-win2012
+    worker:
+        implementation: generic-worker
+        max-run-time: 7200
+    run:
+        using: mozharness
+        options: [enable-pgo]
+        script: mozharness/scripts/fx_desktop_build.py
+        config:
+            - builds/taskcluster_firefox_win64_opt.py
+
--- a/taskcluster/taskgraph/transforms/gecko_v2_whitelist.py
+++ b/taskcluster/taskgraph/transforms/gecko_v2_whitelist.py
@@ -59,18 +59,20 @@ JOB_NAME_WHITELIST = set([
     'sm-nonunified-debug',
     'sm-package-opt',
     'sm-plaindebug-debug',
     'sm-plain-opt',
     'sm-rootanalysis-debug',
     'sm-tsan-opt',
     'win32-debug',
     'win32-opt',
+    'win32-pgo',
     'win64-debug',
     'win64-opt',
+    'win64-pgo',
 ])
 
 JOB_NAME_WHITELIST_ERROR = """\
 The gecko-v2 job name {} is not in the whitelist in __file__.
 If this job runs on Buildbot, please ensure that the job names match between
 Buildbot and TaskCluster, then add the job name to the whitelist.  If this is a
 new job, there is nothing to check -- just add the job to the whitelist.
 """
--- a/taskcluster/taskgraph/transforms/job/mozharness.py
+++ b/taskcluster/taskgraph/transforms/job/mozharness.py
@@ -148,17 +148,17 @@ def mozharness_on_docker_worker_setup(co
 
 # We use the generic worker to run tasks on Windows
 @run_job_using("generic-worker", "mozharness", schema=mozharness_run_schema)
 def mozharness_on_windows(config, job, taskdesc):
     run = job['run']
 
     # fail if invalid run options are included
     invalid = []
-    for prop in ['actions', 'options', 'custom-build-variant-cfg',
+    for prop in ['actions', 'custom-build-variant-cfg',
                  'tooltool-downloads', 'secrets', 'taskcluster-proxy',
                  'need-xvfb']:
         if prop in run and run[prop]:
             invalid.append(prop)
     if not run.get('keep-artifacts', True):
         invalid.append('keep-artifacts')
     if invalid:
         raise Exception("Jobs run using mozharness on Windows do not support properties " +
@@ -182,15 +182,17 @@ def mozharness_on_windows(config, job, t
     })
 
     mh_command = [r'c:\mozilla-build\python\python.exe']
     mh_command.append('\\'.join([r'.\build\src\testing', run['script'].replace('/', '\\')]))
     for cfg in run['config']:
         mh_command.append('--config ' + cfg.replace('/', '\\'))
     mh_command.append('--branch ' + config.params['project'])
     mh_command.append(r'--skip-buildbot-actions --work-dir %cd:Z:=z:%\build')
+    for option in run.get('options', []):
+        mh_command.append('--' + option)
     hg = r'c:\Program Files\Mercurial\hg.exe'
     worker['command'] = [
         r'mkdir .\build\src',
         r'"{}" share c:\builds\hg-shared\mozilla-central .\build\src'.format(hg),
         r'"{}" pull -u -R .\build\src --rev %GECKO_HEAD_REV% %GECKO_HEAD_REPOSITORY%'.format(hg),
         ' '.join(mh_command),
     ]