| # Copyright 2016 The Chromium Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| DEPS = [ |
| 'build', |
| 'chromium', |
| 'depot_tools/bot_update', |
| 'depot_tools/depot_tools', |
| 'depot_tools/gclient', |
| 'goma', |
| 'recipe_engine/context', |
| 'recipe_engine/json', |
| 'recipe_engine/path', |
| 'recipe_engine/properties', |
| 'recipe_engine/python', |
| 'recipe_engine/step', |
| ] |
| |
| def build_with_goma_module(api): |
| # chromedriver compile with goma module step |
| build_target_dir = str(api.path["checkout"].join("out", "Default")) |
| api.goma.build_with_goma( |
| name='compile', |
| ninja_command=[str(api.depot_tools.ninja_path), |
| '-C', build_target_dir, |
| '-j', api.goma.recommended_goma_jobs, |
| 'chromedriver', |
| 'chromedriver_tests', |
| 'chromedriver_unittests'], |
| ninja_log_outdir=build_target_dir, |
| ninja_log_compiler='goma') |
| |
| |
| def Linux32_steps(api): |
| # update scripts step; implicitly run by recipe engine. |
| # bot_update step |
| src_cfg = api.gclient.make_config() |
| soln = src_cfg.solutions.add() |
| soln.name = "src" |
| soln.url = "https://chromium.googlesource.com/chromium/src.git" |
| soln.custom_deps = {'src/chrome/test/chromedriver/third_party/java_tests': |
| 'https://chromium.googlesource.com/chromium/deps/webdriver'} |
| soln = src_cfg.solutions.add() |
| soln.name = "src-internal" |
| soln.url = "https://chrome-internal.googlesource.com/chrome/src-internal.git" |
| soln.custom_deps = {'src/chrome/test/data/firefox2_searchplugins': None, |
| 'src/tools/grit/grit/test/data': None, |
| 'src/chrome/test/data/firefox3_searchplugins': None, |
| 'src/webkit/data/test_shell/plugins': None, |
| 'src/data/page_cycler': None, |
| 'src/data/mozilla_js_tests': None, |
| 'src/chrome/test/data/firefox2_profile/searchplugins': None, |
| 'src/data/esctf': None, |
| 'src/data/memory_test': None, |
| 'src/data/mach_ports': None, |
| 'src/webkit/data/xbm_decoder': None, |
| 'src/webkit/data/ico_decoder': None, |
| 'src/data/selenium_core': None, |
| 'src/chrome/test/data/ssl/certs': None, |
| 'src/chrome/test/data/osdd': None, |
| 'src/webkit/data/bmp_decoder': None, |
| 'src/chrome/test/data/firefox3_profile/searchplugins': None, |
| 'src/data/autodiscovery': None} |
| src_cfg.got_revision_mapping.update({'src': 'got_revision', |
| 'src/third_party/WebKit': 'got_webkit_revision', |
| 'src/tools/swarming_client': 'got_swarming_client_revision', |
| 'src/v8': 'got_v8_revision'}) |
| api.gclient.c = src_cfg |
| result = api.bot_update.ensure_checkout() |
| build_properties = api.properties.legacy() |
| build_properties.update(result.json.output.get('properties', {})) |
| # gclient update step; made unnecessary by bot_update |
| # gclient runhooks wrapper step |
| env = {'LANDMINES_VERBOSE': '1', 'DEPOT_TOOLS_UPDATE': '0'} |
| with api.context(env=env): |
| api.build.python("gclient runhooks wrapper", |
| api.package_repo_resource("scripts", "slave", "runhooks_wrapper.py")) |
| # meta build step |
| goma_dir = api.goma.ensure_goma() |
| api.python("meta build", api.path["checkout"].join("tools", "mb", "mb.py"), |
| args=["gen", "-m", "chromium.chromedriver", "-b", |
| build_properties.get('buildername'), "--goma-dir", goma_dir, |
| "//out/Default"]) |
| |
| build_with_goma_module(api) |
| |
| # strip binary |
| api.m.step('strip', cmd=['strip', str(api.path['checkout'].join( |
| 'out', 'Default', 'chromedriver'))]) |
| |
| # annotated_steps step |
| annotated_steps(api, build_properties.get('got_revision')) |
| |
| |
| def Mac_10_6_steps(api): |
| # update scripts step; implicitly run by recipe engine. |
| # bot_update step |
| src_cfg = api.gclient.make_config() |
| soln = src_cfg.solutions.add() |
| soln.name = "src" |
| soln.url = "https://chromium.googlesource.com/chromium/src.git" |
| soln.custom_deps = {'src/chrome/test/chromedriver/third_party/java_tests': |
| 'https://chromium.googlesource.com/chromium/deps/webdriver'} |
| soln = src_cfg.solutions.add() |
| soln.name = "src-internal" |
| soln.url = "https://chrome-internal.googlesource.com/chrome/src-internal.git" |
| soln.custom_deps = {'src/chrome/test/data/firefox2_searchplugins': None, |
| 'src/tools/grit/grit/test/data': None, |
| 'src/chrome/test/data/firefox3_searchplugins': None, |
| 'src/webkit/data/test_shell/plugins': None, |
| 'src/data/page_cycler': None, |
| 'src/data/mozilla_js_tests': None, |
| 'src/chrome/test/data/firefox2_profile/searchplugins': None, |
| 'src/data/esctf': None, |
| 'src/data/memory_test': None, |
| 'src/data/mach_ports': None, |
| 'src/webkit/data/xbm_decoder': None, |
| 'src/webkit/data/ico_decoder': None, |
| 'src/data/selenium_core': None, |
| 'src/chrome/test/data/ssl/certs': None, |
| 'src/chrome/test/data/osdd': None, |
| 'src/webkit/data/bmp_decoder': None, |
| 'src/chrome/test/data/firefox3_profile/searchplugins': None, |
| 'src/data/autodiscovery': None} |
| src_cfg.got_revision_mapping.update({'src': 'got_revision', |
| 'src/third_party/WebKit': 'got_webkit_revision', |
| 'src/tools/swarming_client': 'got_swarming_client_revision', |
| 'src/v8': 'got_v8_revision'}) |
| api.gclient.c = src_cfg |
| result = api.bot_update.ensure_checkout() |
| build_properties = api.properties.legacy() |
| build_properties.update(result.json.output.get('properties', {})) |
| # gclient update step; made unnecessary by bot_update |
| # gclient runhooks wrapper step |
| env = {'LANDMINES_VERBOSE': '1', 'DEPOT_TOOLS_UPDATE': '0'} |
| with api.context(env=env): |
| api.build.python("gclient runhooks wrapper", |
| api.package_repo_resource("scripts", "slave", "runhooks_wrapper.py")) |
| # meta build step |
| goma_dir = api.goma.ensure_goma() |
| api.python("meta build", api.path["checkout"].join("tools", "mb", "mb.py"), |
| args=["gen", "-m", "chromium.chromedriver", "-b", |
| build_properties.get('buildername'), "--goma-dir", goma_dir, |
| "//out/Default"]) |
| |
| build_with_goma_module(api) |
| |
| # strip binary |
| api.m.step('strip', cmd=['strip', str(api.path['checkout'].join( |
| 'out', 'Default', 'chromedriver'))]) |
| |
| # annotated_steps step |
| annotated_steps(api, build_properties.get('got_revision')) |
| |
| |
| def Win7_steps(api): |
| # update scripts step; implicitly run by recipe engine. |
| # taskkill step |
| api.build.python("taskkill", api.package_repo_resource("scripts", "slave", |
| "kill_processes.py")) |
| # bot_update step |
| src_cfg = api.gclient.make_config() |
| soln = src_cfg.solutions.add() |
| soln.name = "src" |
| soln.url = "https://chromium.googlesource.com/chromium/src.git" |
| soln.custom_deps = {'src/chrome/test/chromedriver/third_party/java_tests': |
| 'https://chromium.googlesource.com/chromium/deps/webdriver'} |
| soln = src_cfg.solutions.add() |
| soln.name = "src-internal" |
| soln.url = "https://chrome-internal.googlesource.com/chrome/src-internal.git" |
| soln.custom_deps = {'src/chrome/test/data/firefox2_searchplugins': None, |
| 'src/tools/grit/grit/test/data': None, |
| 'src/chrome/test/data/firefox3_searchplugins': None, |
| 'src/webkit/data/test_shell/plugins': None, |
| 'src/data/page_cycler': None, |
| 'src/data/mozilla_js_tests': None, |
| 'src/chrome/test/data/firefox2_profile/searchplugins': None, |
| 'src/data/esctf': None, |
| 'src/data/memory_test': None, |
| 'src/data/mach_ports': None, |
| 'src/webkit/data/xbm_decoder': None, |
| 'src/webkit/data/ico_decoder': None, |
| 'src/data/selenium_core': None, |
| 'src/chrome/test/data/ssl/certs': None, |
| 'src/chrome/test/data/osdd': None, |
| 'src/webkit/data/bmp_decoder': None, |
| 'src/chrome/test/data/firefox3_profile/searchplugins': None, |
| 'src/data/autodiscovery': None} |
| src_cfg.got_revision_mapping.update({'src': 'got_revision', |
| 'src/third_party/WebKit': 'got_webkit_revision', |
| 'src/tools/swarming_client': 'got_swarming_client_revision', |
| 'src/v8': 'got_v8_revision'}) |
| api.gclient.c = src_cfg |
| result = api.bot_update.ensure_checkout() |
| build_properties = api.properties.legacy() |
| build_properties.update(result.json.output.get('properties', {})) |
| # gclient update step; made unnecessary by bot_update |
| # gclient runhooks wrapper step |
| env = {'LANDMINES_VERBOSE': '1', 'DEPOT_TOOLS_UPDATE': '0'} |
| with api.context(env=env): |
| api.build.python("gclient runhooks wrapper", |
| api.package_repo_resource("scripts", "slave", "runhooks_wrapper.py")) |
| # meta build step |
| goma_dir = api.goma.ensure_goma() |
| api.python("meta build", api.path["checkout"].join("tools", "mb", "mb.py"), |
| args=["gen", "-m", "chromium.chromedriver", "-b", |
| build_properties.get('buildername'), "--goma-dir", goma_dir, |
| "//out/Default"]) |
| |
| build_with_goma_module(api) |
| |
| # annotated_steps step |
| annotated_steps(api, build_properties.get('got_revision')) |
| |
| |
| def Linux_steps(api): |
| # update scripts step; implicitly run by recipe engine. |
| # bot_update step |
| src_cfg = api.gclient.make_config() |
| soln = src_cfg.solutions.add() |
| soln.name = "src" |
| soln.url = "https://chromium.googlesource.com/chromium/src.git" |
| soln.custom_deps = {'src/chrome/test/chromedriver/third_party/java_tests': |
| 'https://chromium.googlesource.com/chromium/deps/webdriver'} |
| soln = src_cfg.solutions.add() |
| soln.name = "src-internal" |
| soln.url = "https://chrome-internal.googlesource.com/chrome/src-internal.git" |
| soln.custom_deps = {'src/chrome/test/data/firefox2_searchplugins': None, |
| 'src/tools/grit/grit/test/data': None, |
| 'src/chrome/test/data/firefox3_searchplugins': None, |
| 'src/webkit/data/test_shell/plugins': None, |
| 'src/data/page_cycler': None, |
| 'src/data/mozilla_js_tests': None, |
| 'src/chrome/test/data/firefox2_profile/searchplugins': None, |
| 'src/data/esctf': None, |
| 'src/data/memory_test': None, |
| 'src/data/mach_ports': None, |
| 'src/webkit/data/xbm_decoder': None, |
| 'src/webkit/data/ico_decoder': None, |
| 'src/data/selenium_core': None, |
| 'src/chrome/test/data/ssl/certs': None, |
| 'src/chrome/test/data/osdd': None, |
| 'src/webkit/data/bmp_decoder': None, |
| 'src/chrome/test/data/firefox3_profile/searchplugins': None, |
| 'src/data/autodiscovery': None} |
| src_cfg.got_revision_mapping.update({'src': 'got_revision', |
| 'src/third_party/WebKit': 'got_webkit_revision', |
| 'src/tools/swarming_client': 'got_swarming_client_revision', |
| 'src/v8': 'got_v8_revision'}) |
| api.gclient.c = src_cfg |
| result = api.bot_update.ensure_checkout() |
| build_properties = api.properties.legacy() |
| build_properties.update(result.json.output.get('properties', {})) |
| # gclient update step; made unnecessary by bot_update |
| # gclient runhooks wrapper step |
| env = {'LANDMINES_VERBOSE': '1', 'DEPOT_TOOLS_UPDATE': '0'} |
| with api.context(env=env): |
| api.build.python("gclient runhooks wrapper", |
| api.package_repo_resource("scripts", "slave", "runhooks_wrapper.py")) |
| # meta build step |
| goma_dir = api.goma.ensure_goma() |
| api.python("meta build", api.path["checkout"].join("tools", "mb", "mb.py"), |
| args=["gen", "-m", "chromium.chromedriver", "-b", |
| build_properties.get('buildername'), "--goma-dir", goma_dir, |
| "//out/Default"]) |
| |
| build_with_goma_module(api) |
| |
| # strip binary |
| api.m.step('strip', cmd=['strip', str(api.path['checkout'].join( |
| 'out', 'Default', 'chromedriver'))]) |
| |
| # annotated_steps step |
| annotated_steps(api, build_properties.get('got_revision')) |
| |
| |
| dispatch_directory = { |
| 'Linux32': Linux32_steps, |
| 'Mac 10.6': Mac_10_6_steps, |
| 'Win7': Win7_steps, |
| 'Linux': Linux_steps, |
| } |
| |
| |
| def annotated_steps(api, got_revision): |
| api.build.python('chromedriver buildbot steps', |
| api.package_repo_resource('scripts', 'tools', 'runit.py'), |
| args=[ |
| '-s', |
| 'python', |
| api.package_repo_resource('scripts', 'slave', 'runtest.py'), |
| '--run-python-script', |
| api.path['checkout'].join('chrome', 'test', 'chromedriver', |
| 'run_buildbot_steps.py'), |
| '--revision', got_revision |
| ], |
| allow_subannotations=True) |
| |
| |
| def RunSteps(api): |
| if api.properties["buildername"] not in dispatch_directory: |
| raise api.step.StepFailure("Builder unsupported by recipe.") |
| else: |
| dispatch_directory[api.properties["buildername"]](api) |
| |
| def GenTests(api): |
| yield (api.test('Linux32') + |
| api.properties(mastername='chromium.chromedriver') + |
| api.properties(buildername='Linux32') + |
| api.properties(bot_id='TestSlave') |
| ) |
| yield (api.test('Mac_10_6') + |
| api.properties(mastername='chromium.chromedriver') + |
| api.properties(buildername='Mac 10.6') + |
| api.properties(bot_id='TestSlave') |
| ) |
| yield (api.test('Win7') + |
| api.properties(mastername='chromium.chromedriver') + |
| api.properties(buildername='Win7') + |
| api.properties(bot_id='TestSlave') |
| ) |
| yield (api.test('Linux') + |
| api.properties(mastername='chromium.chromedriver') + |
| api.properties(buildername='Linux') + |
| api.properties(bot_id='TestSlave') |
| ) |
| yield (api.test('builder_not_in_dispatch_directory') + |
| api.properties(mastername='chromium.chromedriver') + |
| api.properties(buildername='nonexistent_builder') + |
| api.properties(bot_id='TestSlave') |
| ) |