|  | #!/usr/bin/env lucicfg | 
|  |  | 
|  | """ | 
|  | lucicfg definitions for BoringSSL's CI and CQ. | 
|  | """ | 
|  |  | 
|  | lucicfg.check_version("1.30.9") | 
|  |  | 
|  | # Use LUCI Scheduler BBv2 names and add Scheduler realms configs. | 
|  | lucicfg.enable_experiment("crbug.com/1182002") | 
|  |  | 
|  | lucicfg.config( | 
|  | lint_checks = ["default"], | 
|  | ) | 
|  |  | 
|  | REPO_URL = "https://boringssl.googlesource.com/boringssl" | 
|  |  | 
|  | # The default recipe is "boringssl.py" | 
|  | RECIPE_BUNDLE = "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build" | 
|  |  | 
|  | luci.project( | 
|  | name = "boringssl", | 
|  | buildbucket = "cr-buildbucket.appspot.com", | 
|  | logdog = "luci-logdog.appspot.com", | 
|  | milo = "luci-milo.appspot.com", | 
|  | notify = "luci-notify.appspot.com", | 
|  | scheduler = "luci-scheduler.appspot.com", | 
|  | swarming = "chromium-swarm.appspot.com", | 
|  | acls = [ | 
|  | acl.entry( | 
|  | roles = [ | 
|  | acl.BUILDBUCKET_READER, | 
|  | acl.LOGDOG_READER, | 
|  | acl.PROJECT_CONFIGS_READER, | 
|  | acl.SCHEDULER_READER, | 
|  | ], | 
|  | groups = "all", | 
|  | ), | 
|  | acl.entry( | 
|  | roles = acl.CQ_COMMITTER, | 
|  | groups = "project-boringssl-committers", | 
|  | ), | 
|  | acl.entry( | 
|  | roles = acl.CQ_DRY_RUNNER, | 
|  | groups = "project-boringssl-tryjob-access", | 
|  | ), | 
|  | acl.entry( | 
|  | roles = acl.SCHEDULER_OWNER, | 
|  | groups = "project-boringssl-admins", | 
|  | ), | 
|  | acl.entry( | 
|  | roles = acl.LOGDOG_WRITER, | 
|  | groups = "luci-logdog-chromium-writers", | 
|  | ), | 
|  | ], | 
|  | ) | 
|  |  | 
|  | luci.bucket(name = "ci") | 
|  |  | 
|  | luci.bucket( | 
|  | name = "try", | 
|  | acls = [ | 
|  | # Allow launching tryjobs directly (in addition to doing it through CQ). | 
|  | acl.entry( | 
|  | roles = acl.BUILDBUCKET_TRIGGERER, | 
|  | groups = [ | 
|  | "project-boringssl-tryjob-access", | 
|  | "service-account-cq", | 
|  | ], | 
|  | ), | 
|  | ], | 
|  | ) | 
|  |  | 
|  | luci.milo( | 
|  | logo = "https://storage.googleapis.com/chrome-infra/boringssl-logo.png", | 
|  | ) | 
|  |  | 
|  | console_view = luci.console_view( | 
|  | name = "main", | 
|  | repo = REPO_URL, | 
|  | refs = ["refs/heads/main"], | 
|  | title = "BoringSSL Main Console", | 
|  | ) | 
|  |  | 
|  | luci.cq( | 
|  | submit_max_burst = 4, | 
|  | submit_burst_delay = 480 * time.second, | 
|  | # TODO(davidben): Can this be removed? It is marked as optional and | 
|  | # deprecated. It was included as part of porting over from commit-queue.cfg. | 
|  | status_host = "chromium-cq-status.appspot.com", | 
|  | honor_gerrit_linked_accounts = True, | 
|  | ) | 
|  |  | 
|  | cq_group = luci.cq_group( | 
|  | name = "main-cq", | 
|  | watch = cq.refset(REPO_URL, refs = ["refs/heads/.+"]), | 
|  | retry_config = cq.RETRY_ALL_FAILURES, | 
|  | ) | 
|  |  | 
|  | poller = luci.gitiles_poller( | 
|  | name = "main-gitiles-trigger", | 
|  | bucket = "ci", | 
|  | repo = REPO_URL, | 
|  | refs = ["refs/heads/main"], | 
|  | ) | 
|  |  | 
|  | luci.logdog( | 
|  | gs_bucket = "chromium-luci-logdog", | 
|  | ) | 
|  |  | 
|  | notifier = luci.notifier( | 
|  | name = "all", | 
|  | on_occurrence = ["FAILURE", "INFRA_FAILURE"], | 
|  | on_new_status = ["SUCCESS"], | 
|  | notify_emails = ["boringssl@google.com"], | 
|  | ) | 
|  |  | 
|  | DEFAULT_TIMEOUT = 30 * time.minute | 
|  |  | 
|  | def ci_builder( | 
|  | name, | 
|  | host, | 
|  | *, | 
|  | recipe = "boringssl", | 
|  | category = None, | 
|  | short_name = None, | 
|  | execution_timeout = None, | 
|  | properties = {}): | 
|  | dimensions = dict(host["dimensions"]) | 
|  | dimensions["pool"] = "luci.flex.ci" | 
|  | caches = [swarming.cache("gocache"), swarming.cache("gopath")] | 
|  | if "caches" in host: | 
|  | caches += host["caches"] | 
|  | properties = dict(properties) | 
|  | properties["$gatekeeper"] = {"group": "client.boringssl"} | 
|  | if execution_timeout == None: | 
|  | execution_timeout = host.get("execution_timeout", DEFAULT_TIMEOUT) | 
|  | builder = luci.builder( | 
|  | name = name, | 
|  | bucket = "ci", | 
|  | executable = luci.recipe( | 
|  | name = recipe, | 
|  | cipd_package = RECIPE_BUNDLE, | 
|  | use_python3 = True, | 
|  | ), | 
|  | service_account = "boringssl-ci-builder@chops-service-accounts.iam.gserviceaccount.com", | 
|  | dimensions = dimensions, | 
|  | execution_timeout = execution_timeout, | 
|  | caches = caches, | 
|  | notifies = [notifier], | 
|  | triggered_by = [poller], | 
|  | properties = properties, | 
|  | ) | 
|  | luci.console_view_entry( | 
|  | builder = builder, | 
|  | console_view = console_view, | 
|  | category = category, | 
|  | short_name = short_name, | 
|  | ) | 
|  |  | 
|  | def cq_builder( | 
|  | name, | 
|  | host, | 
|  | *, | 
|  | recipe = "boringssl", | 
|  | cq_enabled = True, | 
|  | execution_timeout = None, | 
|  | properties = {}): | 
|  | dimensions = dict(host["dimensions"]) | 
|  | dimensions["pool"] = "luci.flex.try" | 
|  | if execution_timeout == None: | 
|  | execution_timeout = host.get("execution_timeout", DEFAULT_TIMEOUT) | 
|  | builder = luci.builder( | 
|  | name = name, | 
|  | bucket = "try", | 
|  | executable = luci.recipe( | 
|  | name = recipe, | 
|  | cipd_package = RECIPE_BUNDLE, | 
|  | use_python3 = True, | 
|  | ), | 
|  | service_account = "boringssl-try-builder@chops-service-accounts.iam.gserviceaccount.com", | 
|  | dimensions = dimensions, | 
|  | execution_timeout = host.get("execution_timeout", DEFAULT_TIMEOUT), | 
|  | caches = host.get("caches"), | 
|  | properties = properties, | 
|  | ) | 
|  | luci.cq_tryjob_verifier( | 
|  | builder = builder, | 
|  | cq_group = cq_group, | 
|  | includable_only = not cq_enabled, | 
|  | ) | 
|  |  | 
|  | def both_builders( | 
|  | name, | 
|  | host, | 
|  | *, | 
|  | recipe = "boringssl", | 
|  | category = None, | 
|  | short_name = None, | 
|  | cq_enabled = True, | 
|  | cq_compile_only = None, | 
|  | execution_timeout = None, | 
|  | properties = {}): | 
|  | ci_builder( | 
|  | name, | 
|  | host, | 
|  | recipe = recipe, | 
|  | category = category, | 
|  | short_name = short_name, | 
|  | execution_timeout = execution_timeout, | 
|  | properties = properties, | 
|  | ) | 
|  |  | 
|  | # If cq_compile_only is specified, we generate both a disabled builder that | 
|  | # matches the CI builder, and a compile-only builder. The compile-only | 
|  | # builder is controlled by cq_enabled. cq_compile_only also specifies the | 
|  | # host to run on, because the compile-only builder usually has weaker | 
|  | # requirements. | 
|  | cq_builder( | 
|  | name, | 
|  | host, | 
|  | recipe = recipe, | 
|  | cq_enabled = cq_enabled and not cq_compile_only, | 
|  | execution_timeout = execution_timeout, | 
|  | properties = properties, | 
|  | ) | 
|  | if cq_compile_only: | 
|  | compile_properties = dict(properties) | 
|  | compile_properties["run_unit_tests"] = False | 
|  | compile_properties["run_ssl_tests"] = False | 
|  | cq_builder( | 
|  | name + "_compile", | 
|  | cq_compile_only, | 
|  | recipe = recipe, | 
|  | cq_enabled = cq_enabled, | 
|  | execution_timeout = execution_timeout, | 
|  | properties = compile_properties, | 
|  | ) | 
|  |  | 
|  | LINUX_HOST = { | 
|  | "dimensions": { | 
|  | "os": "Ubuntu-22.04", | 
|  | "cpu": "x86-64", | 
|  | }, | 
|  | } | 
|  |  | 
|  | MAC_ARM64_HOST = { | 
|  | "dimensions": { | 
|  | "os": "Mac", | 
|  | "cpu": "arm64", | 
|  | }, | 
|  | "caches": [swarming.cache("osx_sdk")], | 
|  | # xcode installation can take a while, particularly when running | 
|  | # concurrently on multiple VMs on the same host. See crbug.com/1063870 | 
|  | # for more context. | 
|  | "execution_timeout": 60 * time.minute, | 
|  | } | 
|  |  | 
|  | MAC_X86_64_HOST = { | 
|  | "dimensions": { | 
|  | "os": "Mac-10.15|Mac-11", | 
|  | "cpu": "x86-64", | 
|  | }, | 
|  | "caches": [swarming.cache("osx_sdk")], | 
|  | # xcode installation can take a while, particularly when running | 
|  | # concurrently on multiple VMs on the same host. See crbug.com/1063870 | 
|  | # for more context. | 
|  | "execution_timeout": 60 * time.minute, | 
|  | } | 
|  |  | 
|  | WIN_HOST = { | 
|  | "dimensions": { | 
|  | "os": "Windows-10", | 
|  | "cpu": "x86-64", | 
|  | }, | 
|  | "caches": [swarming.cache("win_toolchain")], | 
|  | } | 
|  |  | 
|  | # The Android tests take longer to run. See https://crbug.com/900953. | 
|  | ANDROID_TIMEOUT = 60 * time.minute | 
|  |  | 
|  | WALLEYE_HOST = { | 
|  | "dimensions": { | 
|  | "device_type": "walleye",  # Pixel 2 | 
|  | }, | 
|  | "execution_timeout": ANDROID_TIMEOUT, | 
|  | } | 
|  |  | 
|  | # SDE tests take longer to run. | 
|  | SDE_TIMEOUT = 3 * 60 * time.minute | 
|  |  | 
|  | # TODO(davidben): Switch the BoringSSL recipe to specify most flags in | 
|  | # properties rather than parsing names. Then we can add new configurations | 
|  | # without having to touch multiple repositories. | 
|  |  | 
|  | both_builders( | 
|  | "android_aarch64", | 
|  | WALLEYE_HOST, | 
|  | category = "android|aarch64", | 
|  | short_name = "dbg", | 
|  | cq_compile_only = LINUX_HOST, | 
|  | properties = { | 
|  | "android": True, | 
|  | "cmake_args": { | 
|  | "ANDROID_ABI": "arm64-v8a", | 
|  | "ANDROID_PLATFORM": "android-21", | 
|  | }, | 
|  | }, | 
|  | ) | 
|  | both_builders( | 
|  | "android_aarch64_rel", | 
|  | WALLEYE_HOST, | 
|  | category = "android|aarch64", | 
|  | short_name = "rel", | 
|  | cq_compile_only = LINUX_HOST, | 
|  | cq_enabled = False, | 
|  | properties = { | 
|  | "android": True, | 
|  | "cmake_args": { | 
|  | "ANDROID_ABI": "arm64-v8a", | 
|  | "ANDROID_PLATFORM": "android-21", | 
|  | "CMAKE_BUILD_TYPE": "Release", | 
|  | }, | 
|  | }, | 
|  | ) | 
|  | both_builders( | 
|  | "android_aarch64_fips", | 
|  | # The Android FIPS configuration requires a newer device. | 
|  | WALLEYE_HOST, | 
|  | category = "android|aarch64", | 
|  | short_name = "fips", | 
|  | cq_compile_only = LINUX_HOST, | 
|  | properties = { | 
|  | "android": True, | 
|  | "cmake_args": { | 
|  | "ANDROID_ABI": "arm64-v8a", | 
|  | "ANDROID_PLATFORM": "android-21", | 
|  | # FIPS mode on Android uses shared libraries. | 
|  | "BUILD_SHARED_LIBS": "1", | 
|  | "FIPS": "1", | 
|  | }, | 
|  | }, | 
|  | ) | 
|  |  | 
|  | both_builders( | 
|  | "android_aarch64_fips_noasm", | 
|  | # The Android FIPS configuration requires a newer device. | 
|  | WALLEYE_HOST, | 
|  | category = "android|aarch64", | 
|  | short_name = "fips3", | 
|  | cq_compile_only = LINUX_HOST, | 
|  | properties = { | 
|  | "android": True, | 
|  | "cmake_args": { | 
|  | "OPENSSL_NO_ASM": "1", | 
|  | "ANDROID_ABI": "arm64-v8a", | 
|  | "ANDROID_PLATFORM": "android-21", | 
|  | # FIPS mode on Android uses shared libraries. | 
|  | "BUILD_SHARED_LIBS": "1", | 
|  | "FIPS": "1", | 
|  | }, | 
|  | }, | 
|  | ) | 
|  |  | 
|  |  | 
|  | # delocate works on aarch64. Test this by also building the static library mode | 
|  | # for android_aarch64_fips. Additionally, urandom_test doesn't work in shared | 
|  | # library builds, so this gives Android FIPS coverage for urandom_test. | 
|  | both_builders( | 
|  | "android_aarch64_fips_static", | 
|  | # The Android FIPS configuration requires a newer device. | 
|  | WALLEYE_HOST, | 
|  | category = "android|aarch64", | 
|  | short_name = "fips2", | 
|  | cq_compile_only = LINUX_HOST, | 
|  | properties = { | 
|  | "android": True, | 
|  | "cmake_args": { | 
|  | "ANDROID_ABI": "arm64-v8a", | 
|  | "ANDROID_PLATFORM": "android-21", | 
|  | "FIPS": "1", | 
|  | }, | 
|  | }, | 
|  | ) | 
|  |  | 
|  | both_builders( | 
|  | "android_arm", | 
|  | WALLEYE_HOST, | 
|  | category = "android|thumb", | 
|  | short_name = "dbg", | 
|  | cq_compile_only = LINUX_HOST, | 
|  | properties = { | 
|  | "android": True, | 
|  | "cmake_args": { | 
|  | "ANDROID_ABI": "armeabi-v7a", | 
|  | # Newer versions of the Android NDK make NEON-only builds by | 
|  | # default. We rely on making NEON-optional builds for some of our | 
|  | # test coverage, but see https://crbug.com/boringssl/454. | 
|  | "ANDROID_ARM_NEON": "FALSE", | 
|  | "ANDROID_PLATFORM": "android-18", | 
|  | }, | 
|  | }, | 
|  | ) | 
|  | both_builders( | 
|  | "android_arm_rel", | 
|  | WALLEYE_HOST, | 
|  | category = "android|thumb", | 
|  | short_name = "rel", | 
|  | cq_compile_only = LINUX_HOST, | 
|  | cq_enabled = False, | 
|  | properties = { | 
|  | "android": True, | 
|  | "cmake_args": { | 
|  | "ANDROID_ABI": "armeabi-v7a", | 
|  | # Newer versions of the Android NDK make NEON-only builds by | 
|  | # default. We rely on making NEON-optional builds for some of our | 
|  | # test coverage, but see https://crbug.com/boringssl/454. | 
|  | "ANDROID_ARM_NEON": "FALSE", | 
|  | "ANDROID_PLATFORM": "android-18", | 
|  | "CMAKE_BUILD_TYPE": "Release", | 
|  | }, | 
|  | }, | 
|  | ) | 
|  | both_builders( | 
|  | "android_arm_fips", | 
|  | # The Android FIPS configuration requires a newer device. | 
|  | WALLEYE_HOST, | 
|  | category = "android|thumb", | 
|  | short_name = "fips", | 
|  | cq_compile_only = LINUX_HOST, | 
|  | properties = { | 
|  | "android": True, | 
|  | "cmake_args": { | 
|  | "ANDROID_ABI": "armeabi-v7a", | 
|  | "ANDROID_PLATFORM": "android-21", | 
|  | # FIPS mode on Android uses shared libraries. | 
|  | "BUILD_SHARED_LIBS": "1", | 
|  | "FIPS": "1", | 
|  | }, | 
|  | }, | 
|  | ) | 
|  | both_builders( | 
|  | "android_arm_armmode_rel", | 
|  | WALLEYE_HOST, | 
|  | category = "android|arm", | 
|  | short_name = "rel", | 
|  | cq_compile_only = LINUX_HOST, | 
|  | properties = { | 
|  | "android": True, | 
|  | "cmake_args": { | 
|  | "ANDROID_ABI": "armeabi-v7a", | 
|  | "ANDROID_ARM_MODE": "arm", | 
|  | # Newer versions of the Android NDK make NEON-only builds by | 
|  | # default. We rely on making NEON-optional builds for some of our | 
|  | # test coverage, but see https://crbug.com/boringssl/454. | 
|  | "ANDROID_ARM_NEON": "FALSE", | 
|  | "ANDROID_PLATFORM": "android-18", | 
|  | "CMAKE_BUILD_TYPE": "Release", | 
|  | }, | 
|  | }, | 
|  | ) | 
|  | both_builders( | 
|  | "android_riscv64_compile_only", | 
|  | LINUX_HOST, | 
|  | category = "android|riscv64", | 
|  | short_name = "rel", | 
|  | properties = { | 
|  | "android": True, | 
|  | "cmake_args": { | 
|  | "ANDROID_ABI": "riscv64", | 
|  | "ANDROID_PLATFORM": "android-35", | 
|  | "CMAKE_BUILD_TYPE": "Release", | 
|  | }, | 
|  | # The default Android NDK cannot be updated until https://crbug.com/boringssl/454 is fixed. | 
|  | # Meanwhile, RISC-V support requires a newer NDK, thus we override for this builder. | 
|  | "gclient_vars": { | 
|  | "android_ndk_revision": "wC8sJjVPRDPTbaZFlki_qXTC1lWJNbJi8glUO0woJ1MC", | 
|  | }, | 
|  | "run_unit_tests": False, | 
|  | "run_ssl_tests": False, | 
|  | }, | 
|  | ) | 
|  |  | 
|  | both_builders("docs", LINUX_HOST, recipe = "boringssl_docs", short_name = "doc") | 
|  |  | 
|  | # For now, we use x86_64 Macs to build iOS because there are far more of them | 
|  | # in luci.flex.ci and luci.flex.try pools. When this changes, switch to | 
|  | # MAC_ARM64_HOST. | 
|  | both_builders( | 
|  | "ios64_compile", | 
|  | MAC_X86_64_HOST, | 
|  | category = "ios", | 
|  | short_name = "64", | 
|  | properties = { | 
|  | "cmake_args": { | 
|  | "CMAKE_OSX_ARCHITECTURES": "arm64", | 
|  | "CMAKE_OSX_SYSROOT": "iphoneos", | 
|  | }, | 
|  | "run_unit_tests": False, | 
|  | "run_ssl_tests": False, | 
|  | }, | 
|  | ) | 
|  | both_builders( | 
|  | "linux", | 
|  | LINUX_HOST, | 
|  | category = "linux", | 
|  | short_name = "dbg", | 
|  | properties = { | 
|  | "check_stack": True, | 
|  | "cmake_args": { | 
|  | # Pick one builder to build with the C++ runtime allowed. The default | 
|  | # configuration does not check pure virtuals | 
|  | "BORINGSSL_ALLOW_CXX_RUNTIME": "1", | 
|  | }, | 
|  | }, | 
|  | ) | 
|  | both_builders( | 
|  | "linux_rel", | 
|  | LINUX_HOST, | 
|  | category = "linux", | 
|  | short_name = "rel", | 
|  | properties = { | 
|  | "cmake_args": { | 
|  | "CMAKE_BUILD_TYPE": "Release", | 
|  | }, | 
|  | }, | 
|  | ) | 
|  | both_builders( | 
|  | "linux32", | 
|  | LINUX_HOST, | 
|  | category = "linux|32", | 
|  | short_name = "dbg", | 
|  | properties = { | 
|  | "check_stack": True, | 
|  | "cmake_args": { | 
|  | # 32-bit x86 is cross-compiled on the 64-bit bots. | 
|  | "CMAKE_SYSTEM_NAME": "Linux", | 
|  | "CMAKE_SYSTEM_PROCESSOR": "x86", | 
|  | "CMAKE_ASM_FLAGS": "-m32 -msse2", | 
|  | "CMAKE_CXX_FLAGS": "-m32 -msse2", | 
|  | "CMAKE_C_FLAGS": "-m32 -msse2", | 
|  | }, | 
|  | }, | 
|  | ) | 
|  | both_builders( | 
|  | "linux32_rel", | 
|  | LINUX_HOST, | 
|  | category = "linux|32", | 
|  | short_name = "rel", | 
|  | properties = { | 
|  | "cmake_args": { | 
|  | "CMAKE_BUILD_TYPE": "Release", | 
|  | # 32-bit x86 is cross-compiled on the 64-bit bots. | 
|  | "CMAKE_SYSTEM_NAME": "Linux", | 
|  | "CMAKE_SYSTEM_PROCESSOR": "x86", | 
|  | "CMAKE_ASM_FLAGS": "-m32 -msse2", | 
|  | "CMAKE_C_FLAGS": "-m32 -msse2", | 
|  | "CMAKE_CXX_FLAGS": "-m32 -msse2", | 
|  | }, | 
|  | }, | 
|  | ) | 
|  | both_builders( | 
|  | "linux32_sde", | 
|  | LINUX_HOST, | 
|  | category = "linux|32", | 
|  | short_name = "sde", | 
|  | cq_enabled = False, | 
|  | execution_timeout = SDE_TIMEOUT, | 
|  | properties = { | 
|  | "cmake_args": { | 
|  | "CMAKE_BUILD_TYPE": "RelWithAsserts", | 
|  | # 32-bit x86 is cross-compiled on the 64-bit bots. | 
|  | "CMAKE_SYSTEM_NAME": "Linux", | 
|  | "CMAKE_SYSTEM_PROCESSOR": "x86", | 
|  | "CMAKE_ASM_FLAGS": "-m32 -msse2", | 
|  | "CMAKE_C_FLAGS": "-m32 -msse2", | 
|  | "CMAKE_CXX_FLAGS": "-m32 -msse2", | 
|  | }, | 
|  | "run_ssl_tests": False, | 
|  | "sde": True, | 
|  | }, | 
|  | ) | 
|  | both_builders( | 
|  | "linux32_nosse2_noasm", | 
|  | LINUX_HOST, | 
|  | category = "linux|32", | 
|  | short_name = "nosse2", | 
|  | properties = { | 
|  | "cmake_args": { | 
|  | "OPENSSL_NO_ASM": "1", | 
|  | "OPENSSL_NO_SSE2_FOR_TESTING": "1", | 
|  | # 32-bit x86 is cross-compiled on the 64-bit bots. | 
|  | "CMAKE_SYSTEM_NAME": "Linux", | 
|  | "CMAKE_SYSTEM_PROCESSOR": "x86", | 
|  | "CMAKE_ASM_FLAGS": "-m32 -msse2", | 
|  | "CMAKE_C_FLAGS": "-m32 -msse2", | 
|  | "CMAKE_CXX_FLAGS": "-m32 -msse2", | 
|  | }, | 
|  | }, | 
|  | ) | 
|  | both_builders( | 
|  | "linux_clang_cfi", | 
|  | LINUX_HOST, | 
|  | category = "linux|clang", | 
|  | short_name = "cfi", | 
|  | cq_enabled = False, | 
|  | properties = { | 
|  | "clang": True, | 
|  | "cmake_args": { | 
|  | "CFI": "1", | 
|  | }, | 
|  | }, | 
|  | ) | 
|  | both_builders( | 
|  | "linux_clang_rel", | 
|  | LINUX_HOST, | 
|  | category = "linux|clang", | 
|  | short_name = "rel", | 
|  | properties = { | 
|  | "clang": True, | 
|  | "cmake_args": { | 
|  | "CMAKE_BUILD_TYPE": "Release", | 
|  | }, | 
|  | }, | 
|  | ) | 
|  | both_builders( | 
|  | "linux_clang_rel_msan", | 
|  | LINUX_HOST, | 
|  | category = "linux|clang", | 
|  | short_name = "msan", | 
|  | properties = { | 
|  | "clang": True, | 
|  | "cmake_args": { | 
|  | # TODO(davidben): Should this be RelWithAsserts? | 
|  | "CMAKE_BUILD_TYPE": "Release", | 
|  | "MSAN": "1", | 
|  | "USE_CUSTOM_LIBCXX": "1", | 
|  | }, | 
|  | "gclient_vars": { | 
|  | "checkout_libcxx": True, | 
|  | }, | 
|  | }, | 
|  | ) | 
|  | both_builders( | 
|  | "linux_clang_rel_tsan", | 
|  | LINUX_HOST, | 
|  | category = "linux|clang", | 
|  | short_name = "tsan", | 
|  | cq_enabled = False, | 
|  | properties = { | 
|  | "clang": True, | 
|  | "cmake_args": { | 
|  | # TODO(davidben): Should this be RelWithAsserts? | 
|  | "CMAKE_BUILD_TYPE": "Release", | 
|  | "TSAN": "1", | 
|  | "USE_CUSTOM_LIBCXX": "1", | 
|  | }, | 
|  | "gclient_vars": { | 
|  | "checkout_libcxx": True, | 
|  | }, | 
|  | # SSL tests are all single-threaded, so running them under TSan is a | 
|  | # waste of time. | 
|  | "run_ssl_tests": False, | 
|  | }, | 
|  | ) | 
|  | both_builders( | 
|  | "linux_clang_ubsan", | 
|  | LINUX_HOST, | 
|  | category = "linux|clang", | 
|  | short_name = "ubsan", | 
|  | cq_enabled = True, | 
|  | properties = { | 
|  | "clang": True, | 
|  | "cmake_args": { | 
|  | "CMAKE_BUILD_TYPE": "RelWithAsserts", | 
|  | "UBSAN": "1", | 
|  | }, | 
|  | }, | 
|  | ) | 
|  | both_builders( | 
|  | "linux_fips", | 
|  | LINUX_HOST, | 
|  | category = "linux|fips", | 
|  | short_name = "dbg", | 
|  | properties = { | 
|  | "cmake_args": { | 
|  | "FIPS": "1", | 
|  | }, | 
|  | }, | 
|  | ) | 
|  | both_builders( | 
|  | "linux_fips_rel", | 
|  | LINUX_HOST, | 
|  | category = "linux|fips", | 
|  | short_name = "rel", | 
|  | properties = { | 
|  | "cmake_args": { | 
|  | "CMAKE_BUILD_TYPE": "Release", | 
|  | "FIPS": "1", | 
|  | }, | 
|  | }, | 
|  | ) | 
|  | both_builders( | 
|  | "linux_fips_clang", | 
|  | LINUX_HOST, | 
|  | category = "linux|fips|clang", | 
|  | short_name = "dbg", | 
|  | properties = { | 
|  | "clang": True, | 
|  | "cmake_args": { | 
|  | "FIPS": "1", | 
|  | }, | 
|  | }, | 
|  | ) | 
|  | both_builders( | 
|  | "linux_fips_clang_rel", | 
|  | LINUX_HOST, | 
|  | category = "linux|fips|clang", | 
|  | short_name = "rel", | 
|  | properties = { | 
|  | "clang": True, | 
|  | "cmake_args": { | 
|  | "CMAKE_BUILD_TYPE": "Release", | 
|  | "FIPS": "1", | 
|  | }, | 
|  | }, | 
|  | ) | 
|  | both_builders( | 
|  | "linux_fips_noasm_asan", | 
|  | LINUX_HOST, | 
|  | category = "linux|fips", | 
|  | short_name = "asan", | 
|  | properties = { | 
|  | "clang": True, | 
|  | "cmake_args": { | 
|  | "ASAN": "1", | 
|  | "FIPS": "1", | 
|  | "OPENSSL_NO_ASM": "1", | 
|  | }, | 
|  | }, | 
|  | ) | 
|  | both_builders( | 
|  | "linux_fuzz", | 
|  | LINUX_HOST, | 
|  | category = "linux", | 
|  | short_name = "fuzz", | 
|  | properties = { | 
|  | "clang": True, | 
|  | "cmake_args": { | 
|  | "FUZZ": "1", | 
|  | "LIBFUZZER_FROM_DEPS": "1", | 
|  | }, | 
|  | "gclient_vars": { | 
|  | "checkout_fuzzer": True, | 
|  | }, | 
|  | }, | 
|  | ) | 
|  | both_builders( | 
|  | "linux_noasm_asan", | 
|  | LINUX_HOST, | 
|  | category = "linux", | 
|  | short_name = "asan", | 
|  | properties = { | 
|  | "clang": True, | 
|  | "cmake_args": { | 
|  | "ASAN": "1", | 
|  | "OPENSSL_NO_ASM": "1", | 
|  | }, | 
|  | }, | 
|  | ) | 
|  |  | 
|  | both_builders( | 
|  | "linux_nothreads", | 
|  | LINUX_HOST, | 
|  | category = "linux", | 
|  | short_name = "not", | 
|  | properties = { | 
|  | "cmake_args": { | 
|  | "CMAKE_C_FLAGS": "-DOPENSSL_NO_THREADS_CORRUPT_MEMORY_AND_LEAK_SECRETS_IF_THREADED=1", | 
|  | "CMAKE_CXX_FLAGS": "-DOPENSSL_NO_THREADS_CORRUPT_MEMORY_AND_LEAK_SECRETS_IF_THREADED=1", | 
|  | }, | 
|  | }, | 
|  | ) | 
|  | both_builders( | 
|  | "linux_sde", | 
|  | LINUX_HOST, | 
|  | category = "linux", | 
|  | short_name = "sde", | 
|  | cq_enabled = False, | 
|  | execution_timeout = SDE_TIMEOUT, | 
|  | properties = { | 
|  | "cmake_args": { | 
|  | "CMAKE_BUILD_TYPE": "RelWithAsserts", | 
|  | }, | 
|  | "run_ssl_tests": False, | 
|  | "sde": True, | 
|  | }, | 
|  | ) | 
|  | both_builders( | 
|  | "linux_shared", | 
|  | LINUX_HOST, | 
|  | category = "linux", | 
|  | short_name = "sh", | 
|  | properties = { | 
|  | "cmake_args": { | 
|  | "BUILD_SHARED_LIBS": "1", | 
|  | }, | 
|  | # The default Linux build may not depend on the C++ runtime. This is | 
|  | # easy to check when building shared libraries. | 
|  | "check_imported_libraries": True, | 
|  | }, | 
|  | ) | 
|  | both_builders( | 
|  | "linux_small", | 
|  | LINUX_HOST, | 
|  | category = "linux", | 
|  | short_name = "sm", | 
|  | properties = { | 
|  | "cmake_args": { | 
|  | "CMAKE_C_FLAGS": "-DOPENSSL_SMALL=1", | 
|  | "CMAKE_CXX_FLAGS": "-DOPENSSL_SMALL=1", | 
|  | }, | 
|  | }, | 
|  | ) | 
|  | both_builders( | 
|  | "linux_nosse2_noasm", | 
|  | LINUX_HOST, | 
|  | category = "linux", | 
|  | short_name = "nosse2", | 
|  | properties = { | 
|  | "cmake_args": { | 
|  | "OPENSSL_NO_ASM": "1", | 
|  | "OPENSSL_NO_SSE2_FOR_TESTING": "1", | 
|  | }, | 
|  | }, | 
|  | ) | 
|  | both_builders( | 
|  | "linux_bazel", | 
|  | LINUX_HOST, | 
|  | category = "linux", | 
|  | short_name = "bzl", | 
|  | recipe = "boringssl_bazel", | 
|  | ) | 
|  | both_builders("mac", MAC_X86_64_HOST, category = "mac", short_name = "dbg") | 
|  | both_builders( | 
|  | "mac_rel", | 
|  | MAC_X86_64_HOST, | 
|  | category = "mac", | 
|  | short_name = "rel", | 
|  | properties = { | 
|  | "cmake_args": { | 
|  | "CMAKE_BUILD_TYPE": "Release", | 
|  | }, | 
|  | }, | 
|  | ) | 
|  | both_builders( | 
|  | "mac_small", | 
|  | MAC_X86_64_HOST, | 
|  | category = "mac", | 
|  | short_name = "sm", | 
|  | properties = { | 
|  | "cmake_args": { | 
|  | "CMAKE_C_FLAGS": "-DOPENSSL_SMALL=1", | 
|  | "CMAKE_CXX_FLAGS": "-DOPENSSL_SMALL=1", | 
|  | }, | 
|  | }, | 
|  | ) | 
|  | both_builders("mac_arm64", MAC_ARM64_HOST, category = "mac", short_name = "arm64") | 
|  | both_builders( | 
|  | "mac_arm64_bazel", | 
|  | MAC_ARM64_HOST, | 
|  | category = "mac", | 
|  | short_name = "bzl", | 
|  | recipe = "boringssl_bazel", | 
|  | ) | 
|  | both_builders( | 
|  | "win32", | 
|  | WIN_HOST, | 
|  | category = "win|x86", | 
|  | short_name = "dbg", | 
|  | cq_compile_only = WIN_HOST,  # Reduce CQ cycle times. | 
|  | properties = { | 
|  | "msvc_target": "x86", | 
|  | }, | 
|  | ) | 
|  | both_builders( | 
|  | "win32_rel", | 
|  | WIN_HOST, | 
|  | category = "win|x86", | 
|  | short_name = "rel", | 
|  | properties = { | 
|  | "cmake_args": { | 
|  | "CMAKE_BUILD_TYPE": "Release", | 
|  | }, | 
|  | "msvc_target": "x86", | 
|  | }, | 
|  | ) | 
|  | both_builders( | 
|  | "win32_sde", | 
|  | WIN_HOST, | 
|  | category = "win|x86", | 
|  | short_name = "sde", | 
|  | cq_enabled = False, | 
|  | execution_timeout = SDE_TIMEOUT, | 
|  | properties = { | 
|  | "cmake_args": { | 
|  | "CMAKE_BUILD_TYPE": "RelWithAsserts", | 
|  | }, | 
|  | "msvc_target": "x86", | 
|  | "run_ssl_tests": False, | 
|  | "sde": True, | 
|  | }, | 
|  | ) | 
|  | both_builders( | 
|  | "win32_small", | 
|  | WIN_HOST, | 
|  | category = "win|x86", | 
|  | short_name = "sm", | 
|  | properties = { | 
|  | "cmake_args": { | 
|  | "CMAKE_C_FLAGS": "-DOPENSSL_SMALL=1", | 
|  | "CMAKE_CXX_FLAGS": "-DOPENSSL_SMALL=1", | 
|  | }, | 
|  | "msvc_target": "x86", | 
|  | }, | 
|  | ) | 
|  |  | 
|  | both_builders( | 
|  | "win32_clang", | 
|  | WIN_HOST, | 
|  | category = "win|x86", | 
|  | short_name = "clang", | 
|  | cq_compile_only = WIN_HOST,  # Reduce CQ cycle times. | 
|  | properties = { | 
|  | "clang": True, | 
|  | "msvc_target": "x86", | 
|  | "cmake_args": { | 
|  | # Clang doesn't pick up 32-bit x86 from msvc_target. Specify it as a | 
|  | # cross-compile. | 
|  | "CMAKE_SYSTEM_NAME": "Windows", | 
|  | "CMAKE_SYSTEM_PROCESSOR": "x86", | 
|  | "CMAKE_ASM_FLAGS": "-m32 -msse2", | 
|  | "CMAKE_C_FLAGS": "-m32 -msse2", | 
|  | "CMAKE_CXX_FLAGS": "-m32 -msse2", | 
|  | }, | 
|  | }, | 
|  | ) | 
|  |  | 
|  | both_builders( | 
|  | "win64", | 
|  | WIN_HOST, | 
|  | category = "win|x64", | 
|  | short_name = "dbg", | 
|  | cq_compile_only = WIN_HOST,  # Reduce CQ cycle times. | 
|  | properties = { | 
|  | "msvc_target": "x64", | 
|  | }, | 
|  | ) | 
|  | both_builders( | 
|  | "win64_rel", | 
|  | WIN_HOST, | 
|  | category = "win|x64", | 
|  | short_name = "rel", | 
|  | properties = { | 
|  | "cmake_args": { | 
|  | "CMAKE_BUILD_TYPE": "Release", | 
|  | }, | 
|  | "msvc_target": "x64", | 
|  | }, | 
|  | ) | 
|  | both_builders( | 
|  | "win64_sde", | 
|  | WIN_HOST, | 
|  | category = "win|x64", | 
|  | short_name = "sde", | 
|  | cq_enabled = False, | 
|  | execution_timeout = SDE_TIMEOUT, | 
|  | properties = { | 
|  | "cmake_args": { | 
|  | "CMAKE_BUILD_TYPE": "RelWithAsserts", | 
|  | }, | 
|  | "msvc_target": "x64", | 
|  | "run_ssl_tests": False, | 
|  | "sde": True, | 
|  | }, | 
|  | ) | 
|  | both_builders( | 
|  | "win64_small", | 
|  | WIN_HOST, | 
|  | category = "win|x64", | 
|  | short_name = "sm", | 
|  | properties = { | 
|  | "cmake_args": { | 
|  | "CMAKE_C_FLAGS": "-DOPENSSL_SMALL=1", | 
|  | "CMAKE_CXX_FLAGS": "-DOPENSSL_SMALL=1", | 
|  | }, | 
|  | "msvc_target": "x64", | 
|  | }, | 
|  | ) | 
|  |  | 
|  | both_builders( | 
|  | "win64_clang", | 
|  | WIN_HOST, | 
|  | category = "win|x64", | 
|  | short_name = "clg", | 
|  | cq_compile_only = WIN_HOST,  # Reduce CQ cycle times. | 
|  | properties = { | 
|  | "clang": True, | 
|  | "msvc_target": "x64", | 
|  | }, | 
|  | ) | 
|  |  | 
|  | both_builders( | 
|  | "win_arm64_compile", | 
|  | WIN_HOST, | 
|  | category = "win|arm64", | 
|  | short_name = "clang", | 
|  | properties = { | 
|  | "clang": True, | 
|  | "cmake_args": { | 
|  | # Clang doesn't pick up arm64 from msvc_target. Specify it as a | 
|  | # cross-compile. | 
|  | "CMAKE_SYSTEM_NAME": "Windows", | 
|  | "CMAKE_SYSTEM_PROCESSOR": "arm64", | 
|  | "CMAKE_ASM_FLAGS": "--target=arm64-windows", | 
|  | "CMAKE_C_FLAGS": "--target=arm64-windows", | 
|  | "CMAKE_CXX_FLAGS": "--target=arm64-windows", | 
|  | }, | 
|  | "gclient_vars": { | 
|  | "checkout_nasm": False, | 
|  | }, | 
|  | "msvc_target": "arm64", | 
|  | "run_unit_tests": False, | 
|  | "run_ssl_tests": False, | 
|  | }, | 
|  | ) | 
|  |  | 
|  | both_builders( | 
|  | "win_arm64_msvc_compile", | 
|  | WIN_HOST, | 
|  | category = "win|arm64", | 
|  | short_name = "msvc", | 
|  | properties = { | 
|  | "cmake_args": { | 
|  | # This is a cross-compile, so CMake needs to be told the processor. | 
|  | # MSVC will pick up the architecture from msvc_target. | 
|  | "CMAKE_SYSTEM_NAME": "Windows", | 
|  | "CMAKE_SYSTEM_PROCESSOR": "arm64", | 
|  | # We do not currently support Windows arm64 assembly with MSVC. | 
|  | "OPENSSL_NO_ASM": "1", | 
|  | }, | 
|  | "gclient_vars": { | 
|  | "checkout_nasm": False, | 
|  | }, | 
|  | "msvc_target": "arm64", | 
|  | "run_unit_tests": False, | 
|  | "run_ssl_tests": False, | 
|  | }, | 
|  | ) |