| # Copyright (c) 2012 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. |
| |
| from master import gitiles_poller |
| from master import master_config |
| from master.factory import annotator_factory |
| from master.factory import chromium_factory |
| |
| import master_site_config |
| |
| ActiveMaster = master_site_config.ChromiumLKGR |
| |
| defaults = {} |
| |
| helper = master_config.Helper(defaults) |
| B = helper.Builder |
| F = helper.Factory |
| S = helper.Scheduler |
| |
| def win_out(): return chromium_factory.ChromiumFactory('src/out', 'win32') |
| def linux(): return chromium_factory.ChromiumFactory('src/build', 'linux2') |
| def mac(): return chromium_factory.ChromiumFactory('src/build', 'darwin') |
| |
| m_annotator = annotator_factory.AnnotatorFactory() |
| |
| defaults['category'] = '1lkgr' |
| |
| # Global scheduler |
| S(name='chromium_lkgr', branch='lkgr') |
| |
| ################################################################################ |
| ## Windows |
| ################################################################################ |
| |
| # ASan/Win supports neither the component build nor NaCL at the moment. |
| asan_win_gyp = ('asan=1 component=static_library enable_ipc_fuzzer=1 ' |
| 'v8_enable_verify_heap=1') |
| |
| # Clang is not stable enough on Windows to use a gatekeeper yet. |
| B('Win ASan Release', 'win_asan_rel', scheduler='chromium_lkgr') |
| F('win_asan_rel', win_out().ChromiumASANFactory( |
| compile_timeout=8*3600, # We currently use a VM, which is extremely slow. |
| clobber=True, |
| options=['--build-tool=ninja', '--', 'chromium_builder_asan'], |
| factory_properties={ |
| 'cf_archive_build': ActiveMaster.is_production_host, |
| 'cf_archive_name': 'asan', |
| 'gs_bucket': 'gs://chromium-browser-asan', |
| 'gs_acl': 'public-read', |
| 'gclient_env': {'GYP_DEFINES': asan_win_gyp}})) |
| |
| # ASan/Win coverage bot. |
| B('Win ASan Release Coverage', 'win_asan_rel_cov', scheduler='chromium_lkgr') |
| F('win_asan_rel_cov', win_out().ChromiumASANFactory( |
| compile_timeout=8*3600, # We currently use a VM, which is extremely slow. |
| clobber=True, |
| options=['--build-tool=ninja', '--', 'chromium_builder_asan'], |
| factory_properties={ |
| 'cf_archive_build': ActiveMaster.is_production_host, |
| 'cf_archive_name': 'asan-coverage', |
| 'gs_bucket': 'gs://chromium-browser-asan', |
| 'gs_acl': 'public-read', |
| 'gclient_env': { |
| 'GYP_DEFINES': asan_win_gyp + ' sanitizer_coverage=edge'}})) |
| |
| |
| # ASan/Win supports neither the component build nor NaCL at the moment. |
| media_gyp = (' proprietary_codecs=1 ffmpeg_branding=Chrome') |
| asan_win_media_gyp = asan_win_gyp + media_gyp |
| |
| # Clang is not stable enough on Windows to use a gatekeeper yet. |
| B('Win ASan Release Media', 'win_asan_rel_media', |
| scheduler='chromium_lkgr') |
| F('win_asan_rel_media', win_out().ChromiumASANFactory( |
| compile_timeout=8*3600, # We currently use a VM, which is extremely slow. |
| clobber=True, |
| options=['--build-tool=ninja', '--', 'chromium_builder_asan'], |
| factory_properties={ |
| 'cf_archive_build': ActiveMaster.is_production_host, |
| 'cf_archive_name': 'asan', |
| 'gs_bucket': 'gs://chrome-test-builds/media', |
| 'gclient_env': {'GYP_DEFINES': asan_win_media_gyp}})) |
| |
| # Win SyzyASan bot. |
| B('Win SyzyASAN LKGR', 'win_syzyasan_lkgr', 'compile', 'chromium_lkgr') |
| F('win_syzyasan_lkgr', m_annotator.BaseFactory(recipe='chromium', timeout=7200)) |
| |
| ################################################################################ |
| ## Mac |
| ################################################################################ |
| |
| asan_mac_gyp = 'asan=1 v8_enable_verify_heap=1 ' |
| |
| B('Mac ASAN Release', 'mac_asan_rel', 'compile', 'chromium_lkgr') |
| F('mac_asan_rel', linux().ChromiumASANFactory( |
| clobber=True, |
| options=['--compiler=goma-clang', '--', '-target', 'chromium_builder_asan'], |
| factory_properties={ |
| 'cf_archive_build': ActiveMaster.is_production_host, |
| 'cf_archive_name': 'asan', |
| 'gs_bucket': 'gs://chromium-browser-asan', |
| 'gs_acl': 'public-read', |
| 'gclient_env': {'GYP_DEFINES': asan_mac_gyp}})) |
| |
| B('Mac ASAN Release Media', 'mac_asan_rel_media', 'compile', 'chromium_lkgr') |
| F('mac_asan_rel_media', linux().ChromiumASANFactory( |
| clobber=True, |
| options=['--compiler=goma-clang', '--', '-target', 'chromium_builder_asan'], |
| factory_properties={ |
| 'cf_archive_build': ActiveMaster.is_production_host, |
| 'cf_archive_name': 'asan', |
| 'gs_bucket': 'gs://chrome-test-builds/media', |
| 'gclient_env': {'GYP_DEFINES': asan_mac_gyp + media_gyp}})) |
| |
| B('Mac ASAN Debug', 'mac_asan_dbg', 'compile', 'chromium_lkgr') |
| F('mac_asan_dbg', linux().ChromiumASANFactory( |
| clobber=True, |
| target='Debug', |
| options=['--compiler=goma-clang', '--', '-target', 'chromium_builder_asan'], |
| factory_properties={ |
| 'cf_archive_build': ActiveMaster.is_production_host, |
| 'cf_archive_name': 'asan', |
| 'gs_bucket': 'gs://chromium-browser-asan', |
| 'gs_acl': 'public-read', |
| 'gclient_env': {'GYP_DEFINES': asan_mac_gyp + |
| ' component=static_library '}})) |
| |
| ################################################################################ |
| ## Linux |
| ################################################################################ |
| |
| asan_rel_gyp = ('asan=1 lsan=1 sanitizer_coverage=edge ' |
| 'v8_enable_verify_heap=1 enable_ipc_fuzzer=1 ') |
| |
| B('ASAN Release', 'linux_asan_rel', 'compile', 'chromium_lkgr') |
| F('linux_asan_rel', linux().ChromiumASANFactory( |
| compile_timeout=2400, # We started seeing 29 minute links, bug 360158 |
| clobber=True, |
| options=['--compiler=goma-clang', 'chromium_builder_asan'], |
| factory_properties={ |
| 'cf_archive_build': ActiveMaster.is_production_host, |
| 'cf_archive_name': 'asan', |
| 'gs_bucket': 'gs://chromium-browser-asan', |
| 'gs_acl': 'public-read', |
| 'gclient_env': {'GYP_DEFINES': asan_rel_gyp}})) |
| |
| linux_media_gyp = (' proprietary_codecs=1 ffmpeg_branding=ChromeOS') |
| B('ASAN Release Media', 'linux_asan_rel_media', |
| 'compile', 'chromium_lkgr') |
| F('linux_asan_rel_media', linux().ChromiumASANFactory( |
| compile_timeout=2400, # We started seeing 29 minute links, bug 360158 |
| clobber=True, |
| options=['--compiler=goma-clang', 'chromium_builder_asan'], |
| factory_properties={ |
| 'cf_archive_build': ActiveMaster.is_production_host, |
| 'cf_archive_name': 'asan', |
| 'gs_bucket': 'gs://chrome-test-builds/media', |
| 'gclient_env': {'GYP_DEFINES': asan_rel_gyp + |
| linux_media_gyp}})) |
| |
| asan_rel_sym_gyp = ('asan=1 lsan=1 sanitizer_coverage=edge ' |
| 'v8_enable_verify_heap=1 enable_ipc_fuzzer=1 ' |
| 'release_extra_cflags="-O1 -fno-inline-functions ' |
| '-fno-inline" ') |
| |
| B('ASAN Release (symbolized)', 'linux_asan_rel_sym', 'compile', 'chromium_lkgr') |
| F('linux_asan_rel_sym', linux().ChromiumASANFactory( |
| clobber=True, |
| options=['--compiler=goma-clang', 'chromium_builder_asan'], |
| factory_properties={ |
| 'cf_archive_build': ActiveMaster.is_production_host, |
| 'cf_archive_name': 'asan-symbolized', |
| 'gs_bucket': 'gs://chromium-browser-asan', |
| 'gs_acl': 'public-read', |
| 'gclient_env': {'GYP_DEFINES': asan_rel_sym_gyp}})) |
| |
| asan_debug_gyp = ('asan=1 lsan=1 sanitizer_coverage=edge enable_ipc_fuzzer=1 ') |
| |
| B('ASAN Debug', 'linux_asan_dbg', 'compile', 'chromium_lkgr') |
| F('linux_asan_dbg', linux().ChromiumASANFactory( |
| clobber=True, |
| target='Debug', |
| options=['--compiler=goma-clang', 'chromium_builder_asan'], |
| factory_properties={ |
| 'cf_archive_build': ActiveMaster.is_production_host, |
| 'cf_archive_name': 'asan', |
| 'gs_bucket': 'gs://chromium-browser-asan', |
| 'gs_acl': 'public-read', |
| 'gclient_env': {'GYP_DEFINES': asan_debug_gyp}})) |
| |
| asan_chromiumos_rel_gyp = ('%s chromeos=1' % asan_rel_gyp) |
| |
| B('ChromiumOS ASAN Release', 'linux_chromiumos_asan_rel', 'compile', |
| 'chromium_lkgr') |
| F('linux_chromiumos_asan_rel', linux().ChromiumASANFactory( |
| compile_timeout=2400, # We started seeing 29 minute links, bug 360158 |
| clobber=True, |
| options=['--compiler=goma-clang', 'chromium_builder_asan'], |
| factory_properties={ |
| 'cf_archive_build': ActiveMaster.is_production_host, |
| 'cf_archive_name': 'asan', |
| 'cf_archive_subdir_suffix': 'chromeos', |
| 'gs_bucket': 'gs://chromium-browser-asan', |
| 'gs_acl': 'public-read', |
| 'gclient_env': {'GYP_DEFINES': asan_chromiumos_rel_gyp}})) |
| |
| asan_ia32_v8_arm = ('asan=1 sanitizer_coverage=edge disable_nacl=1 ' |
| 'v8_target_arch=arm host_arch=x86_64 target_arch=ia32 ' |
| 'v8_enable_verify_heap=1 enable_ipc_fuzzer=1 ') |
| |
| asan_ia32_v8_arm_rel_sym = ('%s release_extra_cflags="-O1 ' |
| '-fno-inline-functions -fno-inline"' % |
| asan_ia32_v8_arm) |
| asan_ia32_v8_arm_rel = asan_ia32_v8_arm |
| |
| # The build process is described at |
| # https://sites.google.com/a/chromium.org/dev/developers/testing/addresssanitizer#TOC-Building-with-v8_target_arch-arm |
| B('ASan Debug (32-bit x86 with V8-ARM)', |
| 'linux_asan_dbg_ia32_v8_arm', |
| 'compile', 'chromium_lkgr') |
| F('linux_asan_dbg_ia32_v8_arm', linux().ChromiumASANFactory( |
| clobber=True, |
| target='Debug', |
| options=['--compiler=goma-clang', 'chromium_builder_asan'], |
| factory_properties={ |
| 'cf_archive_build': ActiveMaster.is_production_host, |
| 'cf_archive_subdir_suffix': 'v8-arm', |
| 'cf_archive_name': 'asan-v8-arm', |
| 'gs_bucket': 'gs://chromium-browser-asan', |
| 'gs_acl': 'public-read', |
| 'gclient_env': {'GYP_DEFINES': asan_ia32_v8_arm}})) |
| |
| B('ASan Release (32-bit x86 with V8-ARM)', |
| 'linux_asan_rel_ia32_v8_arm', |
| 'compile', 'chromium_lkgr') |
| F('linux_asan_rel_ia32_v8_arm', linux().ChromiumASANFactory( |
| clobber=True, |
| options=['--compiler=goma-clang', 'chromium_builder_asan'], |
| factory_properties={ |
| 'cf_archive_build': ActiveMaster.is_production_host, |
| 'cf_archive_subdir_suffix': 'v8-arm', |
| 'cf_archive_name': 'asan-v8-arm', |
| 'gs_bucket': 'gs://chromium-browser-asan', |
| 'gs_acl': 'public-read', |
| 'gclient_env': {'GYP_DEFINES': asan_ia32_v8_arm_rel}})) |
| |
| B('ASan Release Media (32-bit x86 with V8-ARM)', |
| 'linux_asan_rel_media_ia32_v8_arm', |
| 'compile', 'chromium_lkgr') |
| F('linux_asan_rel_media_ia32_v8_arm', linux().ChromiumASANFactory( |
| clobber=True, |
| options=['--compiler=goma-clang', 'chromium_builder_asan'], |
| factory_properties={ |
| 'cf_archive_build': ActiveMaster.is_production_host, |
| 'cf_archive_subdir_suffix': 'v8-arm', |
| 'cf_archive_name': 'asan-v8-arm', |
| 'gs_bucket': 'gs://chrome-test-builds/media', |
| 'gclient_env': {'GYP_DEFINES': asan_ia32_v8_arm_rel + linux_media_gyp}})) |
| |
| B('ASan Release (32-bit x86 with V8-ARM, symbolized)', |
| 'linux_asan_rel_sym_ia32_v8_arm', |
| 'compile', 'chromium_lkgr') |
| F('linux_asan_rel_sym_ia32_v8_arm', linux().ChromiumASANFactory( |
| clobber=True, |
| options=['--compiler=goma-clang', 'chromium_builder_asan'], |
| factory_properties={ |
| 'cf_archive_build': ActiveMaster.is_production_host, |
| 'cf_archive_subdir_suffix': 'v8-arm', |
| 'cf_archive_name': 'asan-symbolized-v8-arm', |
| 'gs_bucket': 'gs://chromium-browser-asan', |
| 'gs_acl': 'public-read', |
| 'gclient_env': {'GYP_DEFINES': asan_ia32_v8_arm_rel_sym}})) |
| |
| # The build process for TSan is described at |
| # http://dev.chromium.org/developers/testing/threadsanitizer-tsan-v2 |
| tsan_gyp = ('tsan=1 disable_nacl=1 ' |
| 'debug_extra_cflags="-gline-tables-only" ') |
| |
| B('TSAN Release', 'linux_tsan_rel', 'compile', 'chromium_lkgr') |
| F('linux_tsan_rel', linux().ChromiumFactory( |
| clobber=True, |
| options=['--compiler=goma-clang', 'chromium_builder_asan'], |
| factory_properties={ |
| 'cf_archive_build': ActiveMaster.is_production_host, |
| 'cf_archive_name': 'tsan', |
| 'gs_bucket': 'gs://chromium-browser-tsan', |
| 'gs_acl': 'public-read', |
| 'tsan': True, |
| 'gclient_env': {'GYP_DEFINES': tsan_gyp}})) |
| |
| B('TSAN Debug', 'linux_tsan_dbg', 'compile', 'chromium_lkgr') |
| F('linux_tsan_dbg', linux().ChromiumFactory( |
| clobber=True, |
| target='Debug', |
| options=['--compiler=goma-clang', 'chromium_builder_asan'], |
| factory_properties={ |
| 'cf_archive_build': ActiveMaster.is_production_host, |
| 'cf_archive_name': 'tsan', |
| 'gs_bucket': 'gs://chromium-browser-tsan', |
| 'gs_acl': 'public-read', |
| 'tsan': True, |
| 'gclient_env': {'GYP_DEFINES': tsan_gyp}})) |
| |
| # The build process for MSan is described at |
| # http://dev.chromium.org/developers/testing/memorysanitizer |
| msan_gyp = ('msan=1 sanitizer_coverage=edge ' |
| 'use_prebuilt_instrumented_libraries=1 ') |
| |
| B('MSAN Release (no origins)', 'linux_msan_rel_no_origins', 'compile', |
| 'chromium_lkgr') |
| F('linux_msan_rel_no_origins', linux().ChromiumFactory( |
| clobber=True, |
| target='Release', |
| options=['--compiler=goma-clang', 'chromium_builder_asan'], |
| factory_properties={ |
| 'cf_archive_build': ActiveMaster.is_production_host, |
| 'cf_archive_name': 'msan-no-origins', |
| 'gs_bucket': 'gs://chromium-browser-msan', |
| 'gs_acl': 'public-read', |
| 'gclient_env': {'GYP_DEFINES': msan_gyp + 'msan_track_origins=0 '}})) |
| |
| B('MSAN Release (chained origins)', 'linux_msan_rel_chained_origins', 'compile', |
| 'chromium_lkgr') |
| F('linux_msan_rel_chained_origins', linux().ChromiumFactory( |
| clobber=True, |
| target='Release', |
| options=['--compiler=goma-clang', 'chromium_builder_asan'], |
| factory_properties={ |
| 'cf_archive_build': ActiveMaster.is_production_host, |
| 'cf_archive_name': 'msan-chained-origins', |
| 'gs_bucket': 'gs://chromium-browser-msan', |
| 'gs_acl': 'public-read', |
| 'gclient_env': {'GYP_DEFINES': msan_gyp + 'msan_track_origins=2 '}})) |
| |
| # This is a bot that uploads LKGR telemetry harnesses to Google Storage. |
| B('Telemetry Harness Upload', 'telemetry_harness_upload', None, 'chromium_lkgr') |
| F('telemetry_harness_upload', |
| m_annotator.BaseFactory('perf/telemetry_harness_upload')) |
| |
| # The build process for UBSan vptr is described at |
| # http://dev.chromium.org/developers/testing/undefinedbehaviorsanitizer |
| ubsan_gyp = ('ubsan=1 ') |
| |
| B('UBSan Release', 'linux_ubsan_rel', 'compile', 'chromium_lkgr') |
| F('linux_ubsan_rel', linux().ChromiumFactory( |
| clobber=True, |
| compile_timeout=5400, # UBSan builds very slowly with edge level coverage |
| target='Release', |
| options=['--compiler=goma-clang', 'chromium_builder_asan'], |
| factory_properties={ |
| 'cf_archive_build': ActiveMaster.is_production_host, |
| 'cf_archive_name': 'ubsan', |
| 'gs_bucket': 'gs://chromium-browser-ubsan', |
| 'gs_acl': 'public-read', |
| 'gclient_env': {'GYP_DEFINES': ubsan_gyp}})) |
| |
| ubsan_vptr_gyp = ('ubsan_vptr=1 sanitizer_coverage=edge ') |
| |
| B('UBSan vptr Release', 'linux_ubsan_vptr_rel', 'compile', 'chromium_lkgr') |
| F('linux_ubsan_vptr_rel', linux().ChromiumFactory( |
| clobber=True, |
| target='Release', |
| options=['--compiler=goma-clang', 'chromium_builder_asan'], |
| factory_properties={ |
| 'cf_archive_build': ActiveMaster.is_production_host, |
| 'cf_archive_subdir_suffix': 'vptr', |
| 'cf_archive_name': 'ubsan-vptr', |
| 'gs_bucket': 'gs://chromium-browser-ubsan', |
| 'gs_acl': 'public-read', |
| 'gclient_env': {'GYP_DEFINES': ubsan_vptr_gyp}})) |
| |
| def Update(_config, active_master, c): |
| lkgr_poller = gitiles_poller.GitilesPoller( |
| 'https://chromium.googlesource.com/chromium/src', |
| branches=['lkgr']) |
| c['change_source'].append(lkgr_poller) |
| return helper.Update(c) |