spidermonkey.py (3557B)
1 # This Source Code Form is subject to the terms of the Mozilla Public 2 # License, v. 2.0. If a copy of the MPL was not distributed with this 3 # file, You can obtain one at http://mozilla.org/MPL/2.0/. 4 """ 5 Support for running spidermonkey jobs via dedicated scripts 6 """ 7 8 from taskgraph.util.schema import Schema 9 from voluptuous import Any, Optional, Required 10 11 from gecko_taskgraph.transforms.job import configure_taskdesc_for_run, run_job_using 12 from gecko_taskgraph.transforms.job.common import ( 13 docker_worker_add_artifacts, 14 generic_worker_add_artifacts, 15 ) 16 17 sm_run_schema = Schema({ 18 Required("using"): Any( 19 "spidermonkey", 20 "spidermonkey-package", 21 ), 22 # SPIDERMONKEY_VARIANT and SPIDERMONKEY_PLATFORM 23 Required("spidermonkey-variant"): str, 24 Optional("spidermonkey-platform"): str, 25 # Base work directory used to set up the task. 26 Optional("workdir"): str, 27 Required("tooltool-downloads"): Any( 28 False, 29 "public", 30 "internal", 31 ), 32 }) 33 34 35 @run_job_using("docker-worker", "spidermonkey", schema=sm_run_schema) 36 @run_job_using("docker-worker", "spidermonkey-package", schema=sm_run_schema) 37 def docker_worker_spidermonkey(config, job, taskdesc): 38 run = job["run"] 39 40 worker = taskdesc["worker"] = job["worker"] 41 worker.setdefault("artifacts", []) 42 43 docker_worker_add_artifacts(config, job, taskdesc) 44 45 env = worker.setdefault("env", {}) 46 env.update({ 47 "MOZHARNESS_DISABLE": "true", 48 "SPIDERMONKEY_VARIANT": run.pop("spidermonkey-variant"), 49 "MOZ_BUILD_DATE": config.params["moz_build_date"], 50 "MOZ_SCM_LEVEL": config.params["level"], 51 }) 52 if "spidermonkey-platform" in run: 53 env["SPIDERMONKEY_PLATFORM"] = run.pop("spidermonkey-platform") 54 55 script = "build-sm.sh" 56 if run["using"] == "spidermonkey-package": 57 script = "build-sm-package.sh" 58 59 run["using"] = "run-task" 60 run["cwd"] = run["workdir"] 61 run["command"] = [f"./checkouts/gecko/taskcluster/scripts/builder/{script}"] 62 63 configure_taskdesc_for_run(config, job, taskdesc, worker["implementation"]) 64 65 66 @run_job_using("generic-worker", "spidermonkey", schema=sm_run_schema) 67 def generic_worker_spidermonkey(config, job, taskdesc): 68 assert job["worker"]["os"] == "windows", "only supports windows right now" 69 70 run = job["run"] 71 72 worker = taskdesc["worker"] = job["worker"] 73 74 generic_worker_add_artifacts(config, job, taskdesc) 75 76 env = worker.setdefault("env", {}) 77 env.update({ 78 "MOZHARNESS_DISABLE": "true", 79 "SPIDERMONKEY_VARIANT": run.pop("spidermonkey-variant"), 80 "MOZ_BUILD_DATE": config.params["moz_build_date"], 81 "MOZ_SCM_LEVEL": config.params["level"], 82 "SCCACHE_DISABLE": "1", 83 "WORK": ".", # Override the defaults in build scripts 84 "GECKO_PATH": "./src", # with values suiteable for windows generic worker 85 "UPLOAD_DIR": "./public/build", 86 }) 87 if "spidermonkey-platform" in run: 88 env["SPIDERMONKEY_PLATFORM"] = run.pop("spidermonkey-platform") 89 90 script = "build-sm.sh" 91 if run["using"] == "spidermonkey-package": 92 script = "build-sm-package.sh" 93 # Don't allow untested configurations yet 94 raise Exception("spidermonkey-package is not a supported configuration") 95 96 run["using"] = "run-task" 97 run["command"] = [ 98 "c:\\mozilla-build\\msys2\\usr\\bin\\bash.exe " # string concat 99 '"./src/taskcluster/scripts/builder/%s"' % script 100 ] 101 102 configure_taskdesc_for_run(config, job, taskdesc, worker["implementation"])