910e62b5创建于 1月15日历史提交
# Copyright 2021 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Definitions of builders in the chromium.clang builder group."""

load("@chromium-luci//args.star", "args")
load("@chromium-luci//branches.star", "branches")
load("@chromium-luci//builder_config.star", "builder_config")
load("@chromium-luci//builder_health_indicators.star", "health_spec")
load("@chromium-luci//builders.star", "builders", "cpu", "os")
load("@chromium-luci//ci.star", "ci")
load("@chromium-luci//consoles.star", "consoles")
load("@chromium-luci//gn_args.star", "gn_args")
load("@chromium-luci//html.star", "linkify_builder")
load("@chromium-luci//targets.star", "targets")
load("//lib/ci_constants.star", "ci_constants")
load("//lib/gardener_rotations.star", "gardener_rotations")
load("//lib/siso.star", "siso")
load("//lib/xcode.star", "xcode")

ci.defaults.set(
    executable = ci_constants.DEFAULT_EXECUTABLE,
    builder_group = "chromium.clang",
    pool = ci_constants.DEFAULT_POOL,
    builderless = True,
    cores = 32,
    os = os.LINUX_DEFAULT,
    gardener_rotations = gardener_rotations.CHROMIUM_CLANG,
    # Because these run ToT Clang, reclient is not used.
    # Naturally the runtime will be ~4-8h on average for basic builds.
    # Complex (e.g. sanitizer), CFI builds can take much longer.
    execution_timeout = 16 * time.hour,
    experiments = {
        "chromium_tests.resultdb_module": 100,
    },
    health_spec = health_spec.modified_default({
        "Unhealthy": health_spec.unhealthy_thresholds(
            fail_rate = struct(),
        ),
        "Low Value": health_spec.low_value_thresholds(
            fail_rate = struct(),
        ),
    }),
    properties = {
        "perf_dashboard_machine_group": "ChromiumClang",
        "$build/chromium": {
            "fail_build_on_clang_warnings": True,
        },
    },
    service_account = ci_constants.DEFAULT_SERVICE_ACCOUNT,
    shadow_service_account = ci_constants.DEFAULT_SHADOW_SERVICE_ACCOUNT,
    siso_project = siso.project.DEFAULT_TRUSTED,
)

targets.builder_defaults.set(
    mixins = [
        "chromium-tester-service-account",
    ],
)

consoles.console_view(
    name = "chromium.clang",
    ordering = {
        None: [
            "ToT Linux",
            "ToT Android",
            "ToT Mac",
            "ToT Windows",
            "ToT Code Coverage",
            "Rust ToT",
        ],
        "ToT Linux": consoles.ordering(
            short_names = ["rel", "ofi", "dbg", "asn", "fuz", "msn", "tsn"],
        ),
        "ToT Android": consoles.ordering(short_names = ["rel", "dbg", "x64"]),
        "ToT Mac": consoles.ordering(short_names = ["rel", "ofi", "dbg"]),
        "ToT Windows": consoles.ordering(
            categories = ["x64"],
            short_names = ["rel", "ofi"],
        ),
        "ToT Windows|x64": consoles.ordering(short_names = ["rel"]),
        "CFI|Win": consoles.ordering(short_names = ["x86", "x64"]),
        "iOS": ["public"],
        "iOS|public": consoles.ordering(short_names = ["sim", "dev"]),
    },
)

[branches.console_view_entry(
    console_view = "chromium.clang",
    builder = "chrome:ci/{}".format(name),
    category = category,
    short_name = short_name,
) for name, category, short_name in (
    ("ToTLinuxOfficial", "ToT Linux", "ofi"),
    ("ToTMacOfficial", "ToT Mac", "ofi"),
    ("ToTWinOfficial", "ToT Windows", "ofi"),
    ("ToTWinOfficial64", "ToT Windows|x64", "ofi"),
    ("clang-tot-device", "iOS|internal", "dev"),
)]

def tot_mac_builder(*, name, is_rust = False, **kwargs):
    if "gn_args" in kwargs:
        kwargs["gn_args"].configs.append("mac")
    desc_tool = "Rust" if is_rust else "Clang"
    return ci.builder(
        name = name,
        os = os.MAC_DEFAULT,
        ssd = True,
        cores = None,
        cpu = cpu.ARM64,
        properties = {
            # The Chromium build doesn't need system Xcode, but the ToT
            # bots also build clang and llvm and that build does need system
            # Xcode.
            "xcode_build_version": "14c18",
        },
        contact_team_email = "lexan@google.com",
        description_html = "Builder that builds ToT " + desc_tool + " and uses it to build Chromium",
        **kwargs
    )

def clang_tot_linux_builder(short_name, category = "ToT Linux", **kwargs):
    if "gn_args" in kwargs:
        kwargs["gn_args"].configs.append("linux")
    ci.builder(
        console_view_entry = consoles.console_view_entry(
            category = category,
            short_name = short_name,
        ),
        notifies = [luci.notifier(
            name = "ToT Linux notifier",
            notify_emails = ["thomasanderson@chromium.org"],
            on_new_status = ["FAILURE"],
        )],
        contact_team_email = "lexan@google.com",
        **kwargs
    )

ci.builder(
    name = "CFI Linux CF",
    builder_spec = builder_config.builder_spec(
        gclient_config = builder_config.gclient_config(config = "chromium"),
        chromium_config = builder_config.chromium_config(
            config = "chromium",
            apply_configs = ["mb"],
            build_config = builder_config.build_config.RELEASE,
            target_bits = 64,
            target_platform = builder_config.target_platform.LINUX,
        ),
        clusterfuzz_archive = builder_config.clusterfuzz_archive(
            archive_name_prefix = "cfi",
            gs_acl = "public-read",
            gs_bucket = "chromium-browser-cfi",
        ),
    ),
    gn_args = gn_args.config(
        configs = [
            "cfi_full",
            "cfi_icall",
            "cfi_diag",
            "cfi_recover",
            "thin_lto",
            "release_builder",
            "remoteexec",
            "linux",
            "x64",
        ],
    ),
    targets = targets.bundle(
        additional_compile_targets = [
            "chromium_builder_asan",
        ],
    ),
    console_view_entry = consoles.console_view_entry(
        category = "CFI|Linux",
        short_name = "CF",
    ),
    contact_team_email = "lexan@google.com",
    notifies = ["CFI Linux"],
)

ci.builder(
    name = "CFI Linux ToT",
    builder_spec = builder_config.builder_spec(
        gclient_config = builder_config.gclient_config(
            config = "chromium",
            apply_configs = ["clang_tot"],
        ),
        chromium_config = builder_config.chromium_config(
            config = "clang_tot_linux",
            apply_configs = ["mb"],
            build_config = builder_config.build_config.RELEASE,
            target_bits = 64,
            target_platform = builder_config.target_platform.LINUX,
        ),
    ),
    gn_args = gn_args.config(
        configs = [
            "clang_tot_gn",
            "no_treat_warnings_as_errors",
            "cfi_full",
            "cfi_icall",
            "cfi_diag",
            "thin_lto",
            "release_builder",
            "dcheck_always_on",
            "linux",
            "x64",
        ],
    ),
    targets = targets.bundle(
        targets = [
            "clang_tot_gtests",
        ],
        mixins = [
            "linux-jammy",
        ],
    ),
    console_view_entry = consoles.console_view_entry(
        category = "CFI|Linux",
        short_name = "ToT",
    ),
    contact_team_email = "lexan@google.com",
    notifies = ["CFI Linux"],
)

ci.builder(
    name = "CrWinAsan",
    builder_spec = builder_config.builder_spec(
        gclient_config = builder_config.gclient_config(
            config = "chromium",
            apply_configs = ["clang_tot"],
        ),
        chromium_config = builder_config.chromium_config(
            config = "chromium_win_clang_asan_tot",
            apply_configs = ["mb"],
            build_config = builder_config.build_config.RELEASE,
            target_bits = 32,
            target_platform = builder_config.target_platform.WIN,
        ),
    ),
    gn_args = gn_args.config(
        configs = [
            "asan",
            "clang_tot_gn",
            "no_treat_warnings_as_errors",
            "fuzzer",
            "release_builder",
            "v8_heap",
            "minimal_symbols",
            "win",
            "x64",
        ],
    ),
    targets = targets.bundle(
        targets = [
            "clang_tot_gtests",
        ],
        additional_compile_targets = [
            "chromium_builder_asan",
        ],
        mixins = [
            "x86-64",
            "win10",
        ],
    ),
    cores = "64",
    os = os.WINDOWS_DEFAULT,
    free_space = builders.free_space.high,
    console_view_entry = consoles.console_view_entry(
        category = "ToT Windows|Asan",
        short_name = "asn",
    ),
    contact_team_email = "lexan@google.com",
)

ci.builder(
    name = "CrWinAsan(dll)",
    builder_spec = builder_config.builder_spec(
        gclient_config = builder_config.gclient_config(
            config = "chromium",
            apply_configs = ["clang_tot"],
        ),
        chromium_config = builder_config.chromium_config(
            config = "chromium_win_clang_asan_tot",
            apply_configs = ["mb"],
            build_config = builder_config.build_config.RELEASE,
            target_bits = 32,
            target_platform = builder_config.target_platform.WIN,
        ),
    ),
    gn_args = gn_args.config(
        configs = [
            "asan",
            "clang_tot_gn",
            "no_treat_warnings_as_errors",
            "shared",
            "release",
            "v8_heap",
            "minimal_symbols",
            "win",
            "x64",
        ],
    ),
    targets = targets.bundle(
        targets = [
            "clang_tot_gtests",
        ],
        additional_compile_targets = [
            "chromium_builder_asan",
        ],
        mixins = [
            "x86-64",
            "win10",
        ],
    ),
    cores = "64",
    os = os.WINDOWS_DEFAULT,
    free_space = builders.free_space.high,
    console_view_entry = consoles.console_view_entry(
        category = "ToT Windows|Asan",
        short_name = "dll",
    ),
    contact_team_email = "lexan@google.com",
)

ci.builder(
    name = "ToTAndroid",
    builder_spec = builder_config.builder_spec(
        gclient_config = builder_config.gclient_config(
            config = "chromium",
            apply_configs = [
                "clang_tot",
                "android",
            ],
        ),
        chromium_config = builder_config.chromium_config(
            config = "clang_tot_android",
            apply_configs = ["mb"],
            build_config = builder_config.build_config.RELEASE,
            target_arch = builder_config.target_arch.ARM,
            target_bits = 32,
            target_platform = builder_config.target_platform.ANDROID,
        ),
        android_config = builder_config.android_config(config = "base_config"),
    ),
    gn_args = gn_args.config(
        configs = [
            "android_builder",
            "android_with_static_analysis",
            "release_builder",
            "minimal_symbols",
            "strip_debug_info",
            "clang_tot_gn",
            "no_treat_warnings_as_errors",
            "arm",
            "remoteexec",
        ],
    ),
    targets = targets.bundle(
        targets = [
            "clang_tot_gtests",
        ],
        additional_compile_targets = [
            "all",
        ],
        mixins = [
            "chromium_pixel_2_q",
            "has_native_resultdb_integration",
        ],
        per_test_modifications = {
            "base_unittests": targets.mixin(
                args = [
                    "--test-launcher-filter-file=../../testing/buildbot/filters/android.device_10.tot.base_unittests.filter",
                ],
            ),
        },
    ),
    targets_settings = targets.settings(
        os_type = targets.os_type.ANDROID,
    ),
    console_view_entry = consoles.console_view_entry(
        category = "ToT Android",
        short_name = "rel",
    ),
    contact_team_email = "lexan@google.com",
)

ci.builder(
    name = "ToTAndroid (dbg)",
    builder_spec = builder_config.builder_spec(
        gclient_config = builder_config.gclient_config(
            config = "chromium",
            apply_configs = [
                "clang_tot",
                "android",
            ],
        ),
        chromium_config = builder_config.chromium_config(
            config = "clang_tot_android",
            apply_configs = ["mb"],
            build_config = builder_config.build_config.DEBUG,
            target_arch = builder_config.target_arch.ARM,
            target_bits = 32,
            target_platform = builder_config.target_platform.ANDROID,
        ),
        android_config = builder_config.android_config(config = "base_config"),
    ),
    gn_args = gn_args.config(
        configs = [
            "android_builder_without_codecs",
            "android_with_static_analysis",
            "clang_tot_gn",
            "no_treat_warnings_as_errors",
            "shared",
            "debug",
            "arm",
            "remoteexec",
        ],
    ),
    targets = targets.bundle(
        additional_compile_targets = [
            "all",
        ],
    ),
    console_view_entry = consoles.console_view_entry(
        category = "ToT Android",
        short_name = "dbg",
    ),
    contact_team_email = "lexan@google.com",
)

ci.builder(
    name = "ToTAndroid x64",
    builder_spec = builder_config.builder_spec(
        gclient_config = builder_config.gclient_config(
            config = "chromium",
            apply_configs = [
                "clang_tot",
                "android",
            ],
        ),
        chromium_config = builder_config.chromium_config(
            config = "clang_tot_android",
            apply_configs = ["mb"],
            build_config = builder_config.build_config.RELEASE,
            target_arch = builder_config.target_arch.INTEL,
            target_bits = 64,
            target_platform = builder_config.target_platform.ANDROID,
        ),
        android_config = builder_config.android_config(config = "base_config"),
    ),
    gn_args = gn_args.config(
        configs = [
            "android_builder_without_codecs",
            "android_with_static_analysis",
            "clang_tot_gn",
            "no_treat_warnings_as_errors",
            "shared",
            "release",
            "x64",
            "dcheck_always_on",
            "remoteexec",
        ],
    ),
    # TODO(crbug.com/41368235): Re-enable tests once there are devices to run them on.
    targets = targets.bundle(
        additional_compile_targets = [
            "all",
        ],
        mixins = [
            targets.mixin(
                swarming = targets.swarming(
                    dimensions = {
                        "device_type": "coho",
                        "os": "Android",
                    },
                ),
            ),
        ],
    ),
    console_view_entry = consoles.console_view_entry(
        category = "ToT Android",
        short_name = "x64",
    ),
    contact_team_email = "lexan@google.com",
)

ci.builder(
    name = "ToTAndroid x86",
    builder_spec = builder_config.builder_spec(
        gclient_config = builder_config.gclient_config(
            config = "chromium",
            apply_configs = [
                "clang_tot",
                "android",
            ],
        ),
        chromium_config = builder_config.chromium_config(
            config = "clang_tot_android",
            apply_configs = ["mb"],
            build_config = builder_config.build_config.RELEASE,
            target_arch = builder_config.target_arch.INTEL,
            target_bits = 32,
            target_platform = builder_config.target_platform.ANDROID,
        ),
        android_config = builder_config.android_config(config = "base_config"),
    ),
    gn_args = gn_args.config(
        configs = [
            "android_builder_without_codecs",
            "android_with_static_analysis",
            "clang_tot_gn",
            "no_treat_warnings_as_errors",
            "shared",
            "release",
            "x86",
            "dcheck_always_on",
            "remoteexec",
        ],
    ),
    targets = targets.bundle(
        additional_compile_targets = [
            "all",
        ],
    ),
    console_view_entry = consoles.console_view_entry(
        category = "ToT Android",
        short_name = "x86",
    ),
    contact_team_email = "lexan@google.com",
)

ci.builder(
    name = "ToTAndroidCoverage x86",
    builder_spec = builder_config.builder_spec(
        gclient_config = builder_config.gclient_config(
            config = "chromium",
            apply_configs = [
                "clang_tot",
                "android",
            ],
        ),
        chromium_config = builder_config.chromium_config(
            config = "clang_tot_android",
            apply_configs = ["mb"],
            build_config = builder_config.build_config.RELEASE,
            target_arch = builder_config.target_arch.INTEL,
            target_bits = 32,
            target_platform = builder_config.target_platform.ANDROID,
        ),
        android_config = builder_config.android_config(config = "base_config"),
    ),
    gn_args = gn_args.config(
        configs = [
            "android_builder_without_codecs",
            "android_with_static_analysis",
            "clang_tot_gn",
            "no_treat_warnings_as_errors",
            "shared",
            "release",
            "x86",
            "dcheck_always_on",
            "use_clang_coverage",
            "remoteexec",
        ],
    ),
    targets = targets.bundle(
        additional_compile_targets = [
            "all",
        ],
    ),
    console_view_entry = consoles.console_view_entry(
        category = "ToT Code Coverage",
        short_name = "and",
    ),
    contact_team_email = "lexan@google.com",
)

ci.builder(
    name = "ToTAndroid64",
    builder_spec = builder_config.builder_spec(
        gclient_config = builder_config.gclient_config(
            config = "chromium",
            apply_configs = [
                "clang_tot",
                "android",
            ],
        ),
        chromium_config = builder_config.chromium_config(
            config = "clang_tot_android",
            apply_configs = ["mb"],
            build_config = builder_config.build_config.RELEASE,
            target_arch = builder_config.target_arch.ARM,
            target_bits = 64,
            target_platform = builder_config.target_platform.ANDROID,
        ),
        android_config = builder_config.android_config(config = "base_config"),
    ),
    gn_args = gn_args.config(
        configs = [
            "android_builder_without_codecs",
            "android_with_static_analysis",
            "clang_tot_gn",
            "no_treat_warnings_as_errors",
            "release",
            "arm64",
            "remoteexec",
        ],
    ),
    targets = targets.bundle(
        targets = [
            "chrome_sizes_android",
        ],
        additional_compile_targets = [
            "all",
        ],
    ),
    console_view_entry = consoles.console_view_entry(
        category = "ToT Android",
        short_name = "a64",
    ),
    contact_team_email = "lexan@google.com",
)

ci.builder(
    name = "ToTAndroidOfficial",
    builder_spec = builder_config.builder_spec(
        gclient_config = builder_config.gclient_config(
            config = "chromium",
            apply_configs = [
                "checkout_pgo_profiles",
                "clang_tot",
                "android",
            ],
        ),
        chromium_config = builder_config.chromium_config(
            config = "clang_tot_android",
            apply_configs = ["mb"],
            build_config = builder_config.build_config.RELEASE,
            target_arch = builder_config.target_arch.ARM,
            target_bits = 32,
            target_platform = builder_config.target_platform.ANDROID,
        ),
        android_config = builder_config.android_config(config = "base_config"),
    ),
    gn_args = gn_args.config(
        configs = [
            "android_builder",
            "release_builder",
            "minimal_symbols",
            "official_optimize",
            "clang_tot_gn",
            "no_treat_warnings_as_errors",
            "arm64",
            "remoteexec",
        ],
    ),
    targets = targets.bundle(
        targets = [
            "chrome_sizes_android",
        ],
        additional_compile_targets = [
            "all",
        ],
    ),
    console_view_entry = consoles.console_view_entry(
        category = "ToT Android",
        short_name = "off",
    ),
    contact_team_email = "lexan@google.com",
)

ci.builder(
    name = "ToTChromeOS",
    builder_spec = builder_config.builder_spec(
        gclient_config = builder_config.gclient_config(
            config = "chromium",
            apply_configs = [
                "clang_tot",
                "chromeos",
            ],
        ),
        chromium_config = builder_config.chromium_config(
            config = "clang_tot_chromeos",
            apply_configs = ["mb"],
            build_config = builder_config.build_config.RELEASE,
            target_bits = 64,
            target_platform = builder_config.target_platform.CHROMEOS,
        ),
    ),
    gn_args = gn_args.config(
        configs = [
            "chromeos_on_linux",
            "release",
            "clang_tot_gn",
            "no_treat_warnings_as_errors",
            "x64",
            "remoteexec",
        ],
    ),
    targets = targets.bundle(
        additional_compile_targets = [
            "all",
        ],
    ),
    console_view_entry = consoles.console_view_entry(
        category = "ToT ChromeOS",
        short_name = "rel",
    ),
    contact_team_email = "lexan@google.com",
)

ci.builder(
    name = "ToTChromeOS (dbg)",
    builder_spec = builder_config.builder_spec(
        gclient_config = builder_config.gclient_config(
            config = "chromium",
            apply_configs = [
                "clang_tot",
                "chromeos",
            ],
        ),
        chromium_config = builder_config.chromium_config(
            config = "clang_tot_chromeos",
            apply_configs = ["mb"],
            build_config = builder_config.build_config.DEBUG,
            target_bits = 64,
            target_platform = builder_config.target_platform.CHROMEOS,
        ),
    ),
    gn_args = gn_args.config(
        configs = [
            "chromeos_on_linux",
            "debug",
            "clang_tot_gn",
            "no_treat_warnings_as_errors",
            "x64",
            "remoteexec",
        ],
    ),
    targets = targets.bundle(
        additional_compile_targets = [
            "all",
        ],
    ),
    console_view_entry = consoles.console_view_entry(
        category = "ToT ChromeOS",
        short_name = "dbg",
    ),
    contact_team_email = "lexan@google.com",
)

ci.builder(
    name = "ToTFuchsia x64",
    builder_spec = builder_config.builder_spec(
        gclient_config = builder_config.gclient_config(
            config = "chromium",
            apply_configs = [
                "clang_tot",
                "fuchsia_x64",
                "fuchsia_no_hooks",
            ],
        ),
        chromium_config = builder_config.chromium_config(
            config = "clang_tot_fuchsia",
            apply_configs = ["mb"],
            build_config = builder_config.build_config.RELEASE,
            target_bits = 64,
            target_platform = builder_config.target_platform.FUCHSIA,
        ),
        run_tests_serially = True,
    ),
    gn_args = gn_args.config(
        configs = [
            "fuchsia",
            "release_builder",
            "clang_tot_gn",
            "no_treat_warnings_as_errors",
            "cast_receiver_size_optimized",
            "x64",
            "dcheck_always_on",
            "remoteexec",
        ],
    ),
    targets = targets.bundle(
        targets = [
            "clang_tot_gtests",
            targets.bundle(
                targets = "fuchsia_isolated_scripts",
                mixins = "expand-as-isolated-script",
            ),
        ],
        additional_compile_targets = [
            "all",
        ],
        mixins = [
            targets.mixin(
                swarming = targets.swarming(
                    dimensions = {
                        "kvm": "1",
                    },
                ),
            ),
            "linux-jammy",
        ],
        per_test_modifications = {
            "blink_web_tests": targets.mixin(
                args = [
                    "--platform=fuchsia",
                ],
                swarming = targets.swarming(
                    shards = 1,
                ),
            ),
            "blink_wpt_tests": targets.mixin(
                args = [
                    "--platform=fuchsia",
                ],
                swarming = targets.swarming(
                    shards = 1,
                ),
            ),
            "chrome_wpt_tests": targets.remove(
                reason = "Wptrunner does not work on Fuchsia",
            ),
            "headless_shell_wpt_tests": targets.remove(
                reason = "Wptrunner does not work on Fuchsia",
            ),
        },
    ),
    targets_settings = targets.settings(
        browser_config = targets.browser_config.WEB_ENGINE_SHELL,
        os_type = targets.os_type.FUCHSIA,
    ),
    console_view_entry = [
        consoles.console_view_entry(
            category = "ToT Fuchsia",
            short_name = "x64",
        ),
    ],
    contact_team_email = "lexan@google.com",
)

ci.builder(
    name = "ToTFuchsiaOfficial arm64",
    builder_spec = builder_config.builder_spec(
        gclient_config = builder_config.gclient_config(
            config = "chromium",
            apply_configs = [
                "checkout_pgo_profiles",
                "clang_tot",
                "fuchsia_arm64",
                "fuchsia_arm64_host",
                "fuchsia_no_hooks",
            ],
        ),
        chromium_config = builder_config.chromium_config(
            config = "clang_tot_fuchsia",
            apply_configs = ["mb"],
            build_config = builder_config.build_config.RELEASE,
            target_bits = 64,
            target_platform = builder_config.target_platform.FUCHSIA,
        ),
        run_tests_serially = True,
    ),
    gn_args = gn_args.config(
        configs = [
            "official_optimize",
            "fuchsia",
            "arm64",
            "clang_tot_gn",
            "no_treat_warnings_as_errors",
            "static",
            "arm64_host",
            "cast_receiver_size_optimized",
            "dcheck_always_on",
            "remoteexec",
        ],
    ),
    targets = targets.bundle(
        targets = [
            "clang_tot_gtests",
            targets.bundle(
                targets = "fuchsia_arm64_isolated_scripts",
                mixins = "expand-as-isolated-script",
            ),
        ],
        mixins = [
            "arm64",
            "docker",
            "linux-jammy",
        ],
    ),
    console_view_entry = [
        consoles.console_view_entry(
            category = "ToT Fuchsia",
            short_name = "off",
        ),
    ],
    contact_team_email = "lexan@google.com",
)

clang_tot_linux_builder(
    name = "ToTLinux",
    builder_spec = builder_config.builder_spec(
        gclient_config = builder_config.gclient_config(
            config = "chromium",
            apply_configs = ["clang_tot"],
        ),
        chromium_config = builder_config.chromium_config(
            config = "clang_tot_linux",
            apply_configs = ["mb"],
            build_config = builder_config.build_config.RELEASE,
            target_arch = builder_config.target_arch.INTEL,
            target_bits = 64,
            target_platform = builder_config.target_platform.LINUX,
        ),
    ),
    gn_args = gn_args.config(
        # Enable debug info, as on official builders, to catch issues with
        # optimized debug info.
        configs = [
            "clang_tot_gn",
            "no_treat_warnings_as_errors",
            "full_symbols",
            "shared",
            "release",
            "x64",
            "remoteexec",
        ],
    ),
    targets = targets.bundle(
        targets = [
            "clang_tot_gtests",
        ],
        additional_compile_targets = [
            "all",
        ],
        mixins = [
            "linux-jammy",
        ],
    ),
    short_name = "rel",
)

clang_tot_linux_builder(
    name = "ToTLinux (dbg)",
    builder_spec = builder_config.builder_spec(
        gclient_config = builder_config.gclient_config(
            config = "chromium",
            apply_configs = ["clang_tot"],
        ),
        chromium_config = builder_config.chromium_config(
            config = "clang_tot_linux",
            apply_configs = ["mb"],
            build_config = builder_config.build_config.DEBUG,
            target_arch = builder_config.target_arch.INTEL,
            target_bits = 64,
            target_platform = builder_config.target_platform.LINUX,
        ),
    ),
    gn_args = gn_args.config(
        configs = [
            "clang_tot_gn",
            "no_treat_warnings_as_errors",
            "shared",
            "debug",
            "x64",
            "remoteexec",
        ],
    ),
    targets = targets.bundle(
        targets = [
        ],
        additional_compile_targets = [
            "all",
        ],
        mixins = [
            "linux-jammy",
        ],
    ),
    short_name = "dbg",
    siso_remote_jobs = siso.remote_jobs.HIGH_JOBS_FOR_CI,
)

clang_tot_linux_builder(
    name = "ToTLinuxASan",
    builder_spec = builder_config.builder_spec(
        gclient_config = builder_config.gclient_config(
            config = "chromium",
            apply_configs = ["clang_tot"],
        ),
        chromium_config = builder_config.chromium_config(
            config = "clang_tot_linux_asan",
            apply_configs = ["mb"],
            build_config = builder_config.build_config.RELEASE,
            target_arch = builder_config.target_arch.INTEL,
            target_bits = 64,
            target_platform = builder_config.target_platform.LINUX,
        ),
    ),
    gn_args = gn_args.config(
        configs = [
            "clang_tot_gn",
            "no_treat_warnings_as_errors",
            "asan",
            "lsan",
            "release_builder",
            "x64",
            "remoteexec",
        ],
    ),
    targets = targets.bundle(
        targets = [
            "clang_tot_gtests",
        ],
        additional_compile_targets = [
            "all",
        ],
        mixins = [
            targets.mixin(
                args = [
                    "--test-launcher-print-test-stdio=always",
                ],
            ),
            "linux-jammy",
        ],
    ),
    short_name = "asn",
)

clang_tot_linux_builder(
    name = "ToTLinuxASanLibfuzzer",
    builder_spec = builder_config.builder_spec(
        gclient_config = builder_config.gclient_config(
            config = "chromium",
            apply_configs = ["clang_tot"],
        ),
        chromium_config = builder_config.chromium_config(
            config = "clang_tot_linux_asan",
            apply_configs = ["mb"],
            build_config = builder_config.build_config.RELEASE,
            target_arch = builder_config.target_arch.INTEL,
            target_bits = 64,
            target_platform = builder_config.target_platform.LINUX,
        ),
    ),
    gn_args = gn_args.config(
        configs = [
            "libfuzzer",
            "asan",
            "remoteexec",
            "clang_tot_gn",
            "no_treat_warnings_as_errors",
            "shared",
            "release",
            "chromeos_codecs",
            "pdf_xfa",
            "optimize_for_fuzzing",
            "mojo_fuzzer",
            "x64",
        ],
    ),
    targets = targets.bundle(
        targets = [
        ],
        additional_compile_targets = [
            "all",
        ],
        mixins = [
            "linux-jammy",
        ],
    ),
    # Requires a large disk, so has a machine specifically devoted to it
    builderless = False,
    short_name = "fuz",
)

clang_tot_linux_builder(
    name = "ToTLinuxCoverage",
    executable = "recipe:chromium_clang_coverage_tot",
    gn_args = gn_args.config(
        configs = [
            "clang_tot_gn",
            "no_treat_warnings_as_errors",
            "use_clang_coverage",
            "minimal_symbols",
            "release",
            "x64",
            "remoteexec",
        ],
    ),
    category = "ToT Code Coverage",
    short_name = "linux",
)

clang_tot_linux_builder(
    name = "ToTLinuxMSan",
    builder_spec = builder_config.builder_spec(
        gclient_config = builder_config.gclient_config(
            config = "chromium",
            apply_configs = ["clang_tot"],
        ),
        chromium_config = builder_config.chromium_config(
            config = "clang_tot_linux",
            apply_configs = ["mb"],
            build_config = builder_config.build_config.RELEASE,
            target_arch = builder_config.target_arch.INTEL,
            target_bits = 64,
            target_platform = builder_config.target_platform.LINUX,
        ),
    ),
    gn_args = gn_args.config(
        configs = [
            "clang_tot_gn",
            "no_treat_warnings_as_errors",
            "msan",
            "release",
            "x64",
            # TODO(crbug.com/450862240) enable "remoteexec" here
        ],
    ),
    targets = targets.bundle(
        targets = [
            "clang_tot_gtests",
        ],
        additional_compile_targets = [
            "all",
        ],
        mixins = [
            "linux-jammy",
        ],
    ),
    builderless = False,
    ssd = True,
    short_name = "msn",
)

clang_tot_linux_builder(
    name = "ToTLinuxPGO",
    builder_spec = builder_config.builder_spec(
        gclient_config = builder_config.gclient_config(
            config = "chromium",
            apply_configs = ["clang_tot"],
        ),
        chromium_config = builder_config.chromium_config(
            config = "clang_tot_linux",
            apply_configs = ["mb"],
            build_config = builder_config.build_config.RELEASE,
            target_arch = builder_config.target_arch.INTEL,
            target_bits = 64,
            target_platform = builder_config.target_platform.LINUX,
        ),
    ),
    gn_args = gn_args.config(
        configs = [
            "clang_tot_gn",
            "no_treat_warnings_as_errors",
            "official_optimize",
            "no_symbols",
            "pgo_phase_1",
            "x64",
            "remoteexec",
        ],
    ),
    targets = targets.bundle(
        targets = [
            "clang_tot_gtests",
        ],
        additional_compile_targets = [
            "all",
        ],
        mixins = [
            "linux-jammy",
        ],
    ),
    short_name = "pgo",
)

clang_tot_linux_builder(
    name = "ToTLinuxTSan",
    builder_spec = builder_config.builder_spec(
        gclient_config = builder_config.gclient_config(
            config = "chromium",
            apply_configs = ["clang_tot"],
        ),
        chromium_config = builder_config.chromium_config(
            config = "clang_tot_linux",
            apply_configs = ["mb"],
            build_config = builder_config.build_config.RELEASE,
            target_arch = builder_config.target_arch.INTEL,
            target_bits = 64,
            target_platform = builder_config.target_platform.LINUX,
        ),
    ),
    gn_args = gn_args.config(
        configs = [
            "clang_tot_gn",
            "no_treat_warnings_as_errors",
            "tsan",
            "release",
            "x64",
            "remoteexec",
        ],
    ),
    targets = targets.bundle(
        targets = [
            "clang_tot_gtests",
        ],
        additional_compile_targets = [
            "all",
        ],
        mixins = [
            "linux-jammy",
        ],
    ),
    short_name = "tsn",
)

clang_tot_linux_builder(
    name = "ToTLinuxUBSanVptr",
    builder_spec = builder_config.builder_spec(
        gclient_config = builder_config.gclient_config(
            config = "chromium",
            apply_configs = ["clang_tot"],
        ),
        chromium_config = builder_config.chromium_config(
            config = "clang_tot_linux_ubsan_vptr",
            apply_configs = ["mb"],
            build_config = builder_config.build_config.RELEASE,
            target_arch = builder_config.target_arch.INTEL,
            target_bits = 64,
            target_platform = builder_config.target_platform.LINUX,
        ),
    ),
    gn_args = gn_args.config(
        configs = [
            "clang_tot_gn",
            "no_treat_warnings_as_errors",
            "ubsan_vptr_no_recover_hack",
            "release_builder",
            "x64",
            "remoteexec",
        ],
    ),
    targets = targets.bundle(
        targets = [
            "clang_tot_gtests",
        ],
        additional_compile_targets = [
            "all",
        ],
        mixins = [
            "linux-jammy",
        ],
    ),
    short_name = "usn",
)

ci.builder(
    name = "ToTWin",
    builder_spec = builder_config.builder_spec(
        gclient_config = builder_config.gclient_config(
            config = "chromium",
            apply_configs = ["clang_tot"],
        ),
        chromium_config = builder_config.chromium_config(
            config = "chromium_win_clang_tot",
            apply_configs = ["mb"],
            build_config = builder_config.build_config.RELEASE,
            target_bits = 32,
            target_platform = builder_config.target_platform.WIN,
        ),
    ),
    gn_args = gn_args.config(
        configs = [
            "clang_tot_gn",
            "no_treat_warnings_as_errors",
            "minimal_symbols",
            "release_builder",
            "x86",
            "win",
        ],
    ),
    targets = targets.bundle(
        targets = [
            "clang_tot_gtests",
            "win_specific_isolated_scripts_and_sizes",
        ],
        additional_compile_targets = [
            "all",
        ],
        mixins = [
            "win10",
        ],
    ),
    cores = "64",
    os = os.WINDOWS_DEFAULT,
    free_space = builders.free_space.high,
    console_view_entry = consoles.console_view_entry(
        category = "ToT Windows",
        short_name = "rel",
    ),
    contact_team_email = "lexan@google.com",
    # Clang ToT Win compiles get timeouts often.
    siso_configs = [
        "builder",
        "no-remote-timeout",
    ],
)

ci.builder(
    name = "ToTWin(dbg)",
    builder_spec = builder_config.builder_spec(
        gclient_config = builder_config.gclient_config(
            config = "chromium",
            apply_configs = ["clang_tot"],
        ),
        chromium_config = builder_config.chromium_config(
            config = "chromium_win_clang_tot",
            apply_configs = ["mb"],
            build_config = builder_config.build_config.DEBUG,
            target_bits = 32,
            target_platform = builder_config.target_platform.WIN,
        ),
    ),
    gn_args = gn_args.config(
        configs = [
            "clang_tot_gn",
            "no_treat_warnings_as_errors",
            "shared",
            "debug",
            "x86",
            "win",
        ],
    ),
    targets = targets.bundle(
        targets = [
            "clang_tot_gtests",
            # Doesn't run win_specific_isolated_scripts because the mini
            # installer isn't hooked up in 32-bit debug builds.
        ],
        additional_compile_targets = [
            "all",
        ],
        mixins = [
            "win10",
        ],
    ),
    cores = "64",
    os = os.WINDOWS_DEFAULT,
    free_space = builders.free_space.high,
    console_view_entry = consoles.console_view_entry(
        category = "ToT Windows",
        short_name = "dbg",
    ),
    contact_team_email = "lexan@google.com",
)

ci.builder(
    name = "ToTWin(dll)",
    builder_spec = builder_config.builder_spec(
        gclient_config = builder_config.gclient_config(
            config = "chromium",
            apply_configs = ["clang_tot"],
        ),
        chromium_config = builder_config.chromium_config(
            config = "chromium_win_clang_tot",
            apply_configs = ["mb"],
            build_config = builder_config.build_config.RELEASE,
            target_bits = 32,
            target_platform = builder_config.target_platform.WIN,
        ),
    ),
    gn_args = gn_args.config(
        configs = [
            "clang_tot_gn",
            "no_treat_warnings_as_errors",
            "minimal_symbols",
            "shared",
            "release",
            "x86",
            "dcheck_always_on",
            "win",
        ],
    ),
    targets = targets.bundle(
        targets = [
            "clang_tot_gtests",
            "win_specific_isolated_scripts_and_sizes",
        ],
        additional_compile_targets = [
            "all",
        ],
        mixins = [
            "win10",
        ],
    ),
    cores = "64",
    os = os.WINDOWS_DEFAULT,
    free_space = builders.free_space.high,
    console_view_entry = consoles.console_view_entry(
        category = "ToT Windows",
        short_name = "dll",
    ),
    contact_team_email = "lexan@google.com",
)

ci.builder(
    name = "ToTWin64",
    builder_spec = builder_config.builder_spec(
        gclient_config = builder_config.gclient_config(
            config = "chromium",
            apply_configs = ["clang_tot"],
        ),
        chromium_config = builder_config.chromium_config(
            config = "chromium_win_clang_tot",
            apply_configs = ["mb"],
            build_config = builder_config.build_config.RELEASE,
            target_bits = 64,
            target_platform = builder_config.target_platform.WIN,
        ),
    ),
    gn_args = gn_args.config(
        configs = [
            "clang_tot_gn",
            "no_treat_warnings_as_errors",
            "minimal_symbols",
            "release_builder",
            "win",
            "x64",
        ],
    ),
    targets = targets.bundle(
        targets = [
            "clang_tot_gtests",
            "win_specific_isolated_scripts_and_sizes",
        ],
        additional_compile_targets = [
            "all",
        ],
        mixins = [
            "x86-64",
            "win10",
        ],
    ),
    cores = "64",
    os = os.WINDOWS_DEFAULT,
    free_space = builders.free_space.high,
    console_view_entry = consoles.console_view_entry(
        category = "ToT Windows|x64",
        short_name = "rel",
    ),
    contact_team_email = "lexan@google.com",
)

ci.builder(
    name = "ToTWin64(dbg)",
    builder_spec = builder_config.builder_spec(
        gclient_config = builder_config.gclient_config(
            config = "chromium",
            apply_configs = ["clang_tot"],
        ),
        chromium_config = builder_config.chromium_config(
            config = "chromium_win_clang_tot",
            apply_configs = ["mb"],
            build_config = builder_config.build_config.DEBUG,
            target_bits = 64,
            target_platform = builder_config.target_platform.WIN,
        ),
    ),
    gn_args = gn_args.config(
        configs = [
            "clang_tot_gn",
            "no_treat_warnings_as_errors",
            "shared",
            "debug",
            "win",
            "x64",
        ],
    ),
    targets = targets.bundle(
        targets = [
            "clang_tot_gtests",
            "win_specific_isolated_scripts_and_sizes",
        ],
        additional_compile_targets = [
            "all",
        ],
        mixins = [
            "x86-64",
            "win10",
        ],
    ),
    cores = "64",
    os = os.WINDOWS_DEFAULT,
    free_space = builders.free_space.high,
    console_view_entry = consoles.console_view_entry(
        category = "ToT Windows|x64",
        short_name = "dbg",
    ),
    contact_team_email = "lexan@google.com",
)

ci.builder(
    name = "ToTWin64(dll)",
    builder_spec = builder_config.builder_spec(
        gclient_config = builder_config.gclient_config(
            config = "chromium",
            apply_configs = ["clang_tot"],
        ),
        chromium_config = builder_config.chromium_config(
            config = "chromium_win_clang_tot",
            apply_configs = ["mb"],
            build_config = builder_config.build_config.RELEASE,
            target_bits = 64,
            target_platform = builder_config.target_platform.WIN,
        ),
    ),
    gn_args = gn_args.config(
        configs = [
            "clang_tot_gn",
            "no_treat_warnings_as_errors",
            "shared",
            "release",
            "dcheck_always_on",
            "win",
            "x64",
        ],
    ),
    targets = targets.bundle(
        targets = [
            "clang_tot_gtests",
            "win_specific_isolated_scripts_and_sizes",
        ],
        additional_compile_targets = [
            "all",
        ],
        mixins = [
            "x86-64",
            "win10",
        ],
    ),
    cores = "64",
    os = os.WINDOWS_DEFAULT,
    free_space = builders.free_space.high,
    console_view_entry = consoles.console_view_entry(
        category = "ToT Windows|x64",
        short_name = "dll",
    ),
    contact_team_email = "lexan@google.com",
)

ci.builder(
    name = "ToTWinASanLibfuzzer",
    builder_spec = builder_config.builder_spec(
        gclient_config = builder_config.gclient_config(
            config = "chromium",
            apply_configs = ["clang_tot"],
        ),
        chromium_config = builder_config.chromium_config(
            config = "chromium_win_clang_asan_tot",
            apply_configs = ["mb"],
            build_config = builder_config.build_config.RELEASE,
            target_bits = 64,
            target_platform = builder_config.target_platform.WIN,
        ),
    ),
    gn_args = gn_args.config(
        configs = [
            "libfuzzer",
            "asan",
            "clang_tot_gn",
            "no_treat_warnings_as_errors",
            "release",
            "chrome_with_codecs",
            "pdf_xfa",
            "minimal_symbols",
            "win",
            "x64",
        ],
    ),
    targets = targets.bundle(
        additional_compile_targets = [
            "all",
        ],
        mixins = [
            "win10",
        ],
    ),
    cores = "64",
    os = os.WINDOWS_DEFAULT,
    free_space = builders.free_space.high,
    console_view_entry = consoles.console_view_entry(
        category = "ToT Windows|Asan",
        short_name = "fuz",
    ),
    contact_team_email = "lexan@google.com",
)

ci.builder(
    name = "ToTWinArm64PGO",
    builder_spec = builder_config.builder_spec(
        gclient_config = builder_config.gclient_config(
            config = "chromium",
            apply_configs = [
                "clang_tot",
            ],
        ),
        chromium_config = builder_config.chromium_config(
            config = "chromium_win_clang_tot",
            apply_configs = [
                "mb",
            ],
            build_config = builder_config.build_config.RELEASE,
            target_arch = builder_config.target_arch.ARM,
            target_bits = 64,
            target_platform = builder_config.target_platform.WIN,
        ),
    ),
    gn_args = gn_args.config(
        configs = [
            "clang_tot_gn",
            "no_treat_warnings_as_errors",
            "official_optimize",
            "no_symbols",
            "pgo_phase_1",
            "arm64",
            "win",
        ],
    ),
    targets = targets.bundle(
        additional_compile_targets = [
            "all",
        ],
        mixins = [
            "arm64",
            "win11",
        ],
    ),
    cores = "64",
    os = os.WINDOWS_DEFAULT,
    free_space = builders.free_space.high,
    gardener_rotations = args.ignore_default(None),
    console_view_entry = consoles.console_view_entry(
        category = "ToT Windows",
        short_name = "pgo-arm",
    ),
    contact_team_email = "lexan@google.com",
)

ci.builder(
    name = "ToTWindowsCoverage",
    executable = "recipe:chromium_clang_coverage_tot",
    gn_args = gn_args.config(
        configs = [
            "clang_tot_gn",
            "no_treat_warnings_as_errors",
            "use_clang_coverage",
            "minimal_symbols",
            "release",
            "win",
            "x64",
        ],
    ),
    cores = "64",
    os = os.WINDOWS_DEFAULT,
    free_space = builders.free_space.high,
    console_view_entry = consoles.console_view_entry(
        category = "ToT Code Coverage",
        short_name = "win",
    ),
    contact_team_email = "lexan@google.com",
)

ci.builder(
    name = "ToTWin64PGO",
    builder_spec = builder_config.builder_spec(
        gclient_config = builder_config.gclient_config(
            config = "chromium",
            apply_configs = ["clang_tot"],
        ),
        chromium_config = builder_config.chromium_config(
            config = "chromium_win_clang_tot",
            apply_configs = ["mb"],
            build_config = builder_config.build_config.RELEASE,
            target_bits = 64,
            target_platform = builder_config.target_platform.WIN,
        ),
    ),
    gn_args = gn_args.config(
        configs = [
            "clang_tot_gn",
            "no_treat_warnings_as_errors",
            "official_optimize",
            "no_symbols",
            "pgo_phase_1",
            "win",
            "x64",
        ],
    ),
    targets = targets.bundle(
        targets = [
            "clang_tot_gtests",
        ],
        additional_compile_targets = [
            "all",
        ],
        mixins = [
            "x86-64",
            "win10",
        ],
    ),
    cores = "64",
    os = os.WINDOWS_DEFAULT,
    free_space = builders.free_space.high,
    console_view_entry = consoles.console_view_entry(
        category = "ToT Windows|x64",
        short_name = "pgo",
    ),
    contact_team_email = "lexan@google.com",
)

ci.builder(
    name = "linux-win-cross-clang-tot-rel",
    description_html = "Linux to Windows cross compile with Clang ToT. " +
                       "Previously at {}.".format(
                           linkify_builder("ci", "linux-win_cross-rel"),
                       ),
    builder_spec = builder_config.builder_spec(
        gclient_config = builder_config.gclient_config(
            config = "chromium",
            apply_configs = [
                "clang_tot",
                "win",
            ],
        ),
        chromium_config = builder_config.chromium_config(
            config = "chromium_win_clang_tot",
            apply_configs = ["mb"],
            build_config = builder_config.build_config.RELEASE,
            target_bits = 64,
            target_platform = builder_config.target_platform.WIN,
            host_platform = builder_config.host_platform.LINUX,
        ),
    ),
    gn_args = gn_args.config(
        configs = [
            "clang_tot_gn",
            "no_treat_warnings_as_errors",
            "win_cross",
            "minimal_symbols",
            "shared",
            "release",
            "dcheck_always_on",
            "x64",
        ],
    ),
    targets = targets.bundle(
        targets = [
            "clang_tot_gtests",
        ],
        additional_compile_targets = [
            "all",
        ],
        mixins = [
            "win10",
        ],
    ),
    console_view_entry = consoles.console_view_entry(
        category = "ToT Windows",
        short_name = "lxw",
    ),
    contact_team_email = "lexan@google.com",
)

ci.builder(
    name = "ToTiOS",
    builder_spec = builder_config.builder_spec(
        gclient_config = builder_config.gclient_config(
            config = "ios",
            apply_configs = ["clang_tot"],
        ),
        chromium_config = builder_config.chromium_config(
            config = "clang_tot_ios",
            apply_configs = [
                "mb",
                "mac_toolchain",
            ],
            build_config = builder_config.build_config.RELEASE,
            target_bits = 64,
            target_platform = builder_config.target_platform.IOS,
        ),
    ),
    gn_args = gn_args.config(
        configs = [
            "clang_tot_gn",
            "no_treat_warnings_as_errors",
            "ios_simulator",
            "arm64",
            "ios_disable_code_signing",
            "release_builder",
            "xctest",
        ],
    ),
    targets = targets.bundle(
        targets = [
            "ios_clang_tot_sim_tests",
        ],
        additional_compile_targets = [
            "all",
        ],
        mixins = [
            "expand-as-isolated-script",
            "has_native_resultdb_integration",
            "mac_default_arm64",
            "mac_toolchain",
            "out_dir_arg",
            "xcode_26_main",
            "xctest",
        ],
    ),
    builderless = False,
    cores = None,
    os = os.MAC_DEFAULT,
    cpu = cpu.ARM64,
    ssd = True,
    console_view_entry = consoles.console_view_entry(
        category = "iOS|public",
        short_name = "sim",
    ),
    contact_team_email = "lexan@google.com",
    xcode = xcode.xcode_default,
)

ci.builder(
    name = "ToTiOSDevice",
    builder_spec = builder_config.builder_spec(
        gclient_config = builder_config.gclient_config(
            config = "ios",
            apply_configs = ["clang_tot"],
        ),
        chromium_config = builder_config.chromium_config(
            config = "clang_tot_ios",
            apply_configs = [
                "mb",
                "mac_toolchain",
            ],
            build_config = builder_config.build_config.RELEASE,
            target_bits = 64,
            target_platform = builder_config.target_platform.IOS,
        ),
    ),
    gn_args = gn_args.config(
        configs = [
            "clang_tot_gn",
            "no_treat_warnings_as_errors",
            "ios_device",
            "arm64",
            "release",
            "xctest",
        ],
    ),
    targets = targets.bundle(
        targets = [
            "ios_clang_tot_device_tests",
        ],
        additional_compile_targets = [
            "base_unittests",
            "boringssl_crypto_tests",
            "boringssl_ssl_tests",
            "components_unittests",
            "crypto_unittests",
            "gfx_unittests",
            "google_apis_unittests",
            "ios_chrome_unittests",
            "ios_credential_provider_extension_unittests",
            "ios_net_unittests",
            "ios_web_inttests",
            "ios_web_unittests",
            "ios_web_view_inttests",
            "net_unittests",
            "skia_unittests",
            "sql_unittests",
            "ui_base_unittests",
            "url_unittests",
        ],
        mixins = [
            "expand-as-isolated-script",
            "has_native_resultdb_integration",
            "ios_restart_device",
            "limited_capacity_bot",
            "mac_toolchain",
            "out_dir_arg",
            "xcode_26_main",
            "xctest",
        ],
    ),
    builderless = False,
    cores = None,
    os = os.MAC_DEFAULT,
    cpu = cpu.ARM64,
    ssd = True,
    console_view_entry = consoles.console_view_entry(
        category = "iOS|public",
        short_name = "dev",
    ),
    contact_team_email = "lexan@google.com",
    xcode = xcode.xcode_default,
)

tot_mac_builder(
    name = "ToTMac",
    builder_spec = builder_config.builder_spec(
        gclient_config = builder_config.gclient_config(
            config = "chromium",
            apply_configs = [
                "clang_tot",
                # This is necessary due to this builder running the
                # telemetry_perf_unittests suite.
                "chromium_with_telemetry_dependencies",
            ],
        ),
        chromium_config = builder_config.chromium_config(
            config = "clang_tot_mac",
            apply_configs = ["mb"],
            build_config = builder_config.build_config.RELEASE,
            target_bits = 64,
            target_platform = builder_config.target_platform.MAC,
        ),
    ),
    gn_args = gn_args.config(
        configs = [
            "clang_tot_gn",
            "no_treat_warnings_as_errors",
            "minimal_symbols",
            "shared",
            "release",
            "x64",
        ],
    ),
    targets = targets.bundle(
        targets = [
            "clang_tot_gtests",
        ],
        additional_compile_targets = [
            "all",
        ],
        mixins = [
            "mac_default_x64",
        ],
    ),
    console_view_entry = consoles.console_view_entry(
        category = "ToT Mac",
        short_name = "rel",
    ),
    execution_timeout = 20 * time.hour,
)

tot_mac_builder(
    name = "ToTMac (dbg)",
    builder_spec = builder_config.builder_spec(
        gclient_config = builder_config.gclient_config(
            config = "chromium",
            apply_configs = ["clang_tot"],
        ),
        chromium_config = builder_config.chromium_config(
            config = "clang_tot_mac",
            apply_configs = ["mb"],
            build_config = builder_config.build_config.DEBUG,
            target_bits = 64,
            target_platform = builder_config.target_platform.MAC,
        ),
    ),
    gn_args = gn_args.config(
        configs = [
            "clang_tot_gn",
            "no_treat_warnings_as_errors",
            "shared",
            "debug",
            "x64",
        ],
    ),
    targets = targets.bundle(
        additional_compile_targets = [
            "all",
        ],
        mixins = [
            "mac_default_x64",
        ],
    ),
    console_view_entry = consoles.console_view_entry(
        category = "ToT Mac",
        short_name = "dbg",
    ),
    execution_timeout = 20 * time.hour,
)

tot_mac_builder(
    name = "ToTMacASan",
    builder_spec = builder_config.builder_spec(
        gclient_config = builder_config.gclient_config(
            config = "chromium",
            apply_configs = ["clang_tot"],
        ),
        chromium_config = builder_config.chromium_config(
            config = "clang_tot_mac_asan",
            apply_configs = ["mb"],
            build_config = builder_config.build_config.RELEASE,
            target_bits = 64,
            target_platform = builder_config.target_platform.MAC,
        ),
    ),
    gn_args = gn_args.config(
        configs = [
            "asan",
            "clang_tot_gn",
            "no_treat_warnings_as_errors",
            "minimal_symbols",
            "release_builder",
            "x64",
        ],
    ),
    targets = targets.bundle(
        targets = [
            "clang_tot_gtests",
        ],
        additional_compile_targets = [
            "chromium_builder_asan",
        ],
        mixins = [
            targets.mixin(
                args = [
                    "--test-launcher-print-test-stdio=always",
                ],
            ),
            "mac_default_x64",
        ],
    ),
    console_view_entry = consoles.console_view_entry(
        category = "ToT Mac",
        short_name = "asn",
    ),
    execution_timeout = 20 * time.hour,
)

tot_mac_builder(
    name = "ToTMacPGO",
    builder_spec = builder_config.builder_spec(
        gclient_config = builder_config.gclient_config(
            config = "chromium",
            apply_configs = [
                "clang_tot",
            ],
        ),
        chromium_config = builder_config.chromium_config(
            config = "clang_tot_mac",
            apply_configs = ["mb"],
            build_config = builder_config.build_config.RELEASE,
            target_bits = 64,
            target_platform = builder_config.target_platform.MAC,
        ),
    ),
    gn_args = gn_args.config(
        configs = [
            "clang_tot_gn",
            "no_treat_warnings_as_errors",
            "official_optimize",
            "no_symbols",
            "pgo_phase_1",
            "x64",
        ],
    ),
    targets = targets.bundle(
        targets = [
            "clang_tot_gtests",
        ],
        additional_compile_targets = [
            "all",
        ],
        mixins = [
            "mac_default_x64",
        ],
    ),
    console_view_entry = consoles.console_view_entry(
        category = "ToT Mac",
        short_name = "pgo",
    ),
)

tot_mac_builder(
    name = "ToTMacArm64PGO",
    builder_spec = builder_config.builder_spec(
        gclient_config = builder_config.gclient_config(
            config = "chromium",
            apply_configs = [
                "clang_tot",
            ],
        ),
        chromium_config = builder_config.chromium_config(
            config = "clang_tot_mac",
            apply_configs = ["mb"],
            build_config = builder_config.build_config.RELEASE,
            target_arch = builder_config.target_arch.ARM,
            target_bits = 64,
            target_platform = builder_config.target_platform.MAC,
        ),
    ),
    gn_args = gn_args.config(
        configs = [
            "clang_tot_gn",
            "no_treat_warnings_as_errors",
            "official_optimize",
            "no_symbols",
            "pgo_phase_1",
            "arm64",
        ],
    ),
    targets = targets.bundle(
        additional_compile_targets = [
            "all",
        ],
        mixins = [
            "mac_default_x64",
        ],
    ),
    console_view_entry = consoles.console_view_entry(
        category = "ToT Mac",
        short_name = "pgo-arm",
    ),
)

tot_mac_builder(
    name = "ToTMacArm64",
    builder_spec = builder_config.builder_spec(
        gclient_config = builder_config.gclient_config(
            config = "chromium",
            apply_configs = [
                "clang_tot",
            ],
        ),
        chromium_config = builder_config.chromium_config(
            config = "clang_tot_mac",
            apply_configs = ["mb"],
            build_config = builder_config.build_config.RELEASE,
            target_arch = builder_config.target_arch.ARM,
            target_bits = 64,
            target_platform = builder_config.target_platform.MAC,
        ),
    ),
    gn_args = gn_args.config(
        configs = [
            "clang_tot_gn",
            "no_treat_warnings_as_errors",
            "minimal_symbols",
            "arm64",
            "release",
        ],
    ),
    targets = targets.bundle(
        additional_compile_targets = [
            "all",
        ],
        mixins = [
            "mac_default_x64",
        ],
    ),
    console_view_entry = consoles.console_view_entry(
        category = "ToT Mac",
        short_name = "arm",
    ),
)

tot_mac_builder(
    name = "ToTMacCoverage",
    executable = "recipe:chromium_clang_coverage_tot",
    gn_args = gn_args.config(
        configs = [
            "clang_tot_gn",
            "no_treat_warnings_as_errors",
            "use_clang_coverage",
            "minimal_symbols",
            "release",
            "arm64",
        ],
    ),
    console_view_entry = consoles.console_view_entry(
        category = "ToT Code Coverage",
        short_name = "mac",
    ),
)

### Rust builders: These are also on the clang/lexan waterfall and watched by
### the same gardening rotation

ci.builder(
    name = "ToTRustLinux(dbg)",
    description_html = "Builder that builds and tests chromium using ToT Rust," +
                       "built against ToT LLVM, on linux in debug mode.",
    builder_spec = builder_config.builder_spec(
        gclient_config = builder_config.gclient_config(
            config = "chromium",
            apply_configs = ["rust_tot"],
        ),
        chromium_config = builder_config.chromium_config(
            config = "rust_tot_linux",
            apply_configs = ["mb"],
            build_config = builder_config.build_config.DEBUG,
            target_arch = builder_config.target_arch.INTEL,
            target_bits = 64,
            target_platform = builder_config.target_platform.LINUX,
        ),
    ),
    gn_args = gn_args.config(
        configs = [
            "rust_tot_gn",
            "no_treat_warnings_as_errors",
            "shared",
            "debug",
            "x64",
            "linux",
            "remoteexec",
        ],
    ),
    targets = targets.bundle(
        targets = [
        ],
        additional_compile_targets = [
            "all",
        ],
        mixins = [
            "linux-jammy",
        ],
    ),
    console_view_entry = consoles.console_view_entry(
        category = "Rust ToT",
        short_name = "lin",
    ),
    contact_team_email = "lexan@google.com",
)

ci.builder(
    name = "ToTRustWin(dbg)",
    description_html = "Builder that builds and tests chromium using ToT Rust," +
                       "built against ToT LLVM, on windows in debug mode.",
    builder_spec = builder_config.builder_spec(
        gclient_config = builder_config.gclient_config(
            config = "chromium",
            apply_configs = ["rust_tot"],
        ),
        chromium_config = builder_config.chromium_config(
            config = "chromium_win_rust_tot",
            apply_configs = ["mb"],
            build_config = builder_config.build_config.DEBUG,
            target_bits = 32,
            target_platform = builder_config.target_platform.WIN,
        ),
    ),
    gn_args = gn_args.config(
        configs = [
            "rust_tot_gn",
            "no_treat_warnings_as_errors",
            "shared",
            "debug",
            "x86",
            "win",
        ],
    ),
    targets = targets.bundle(
        targets = [
            "clang_tot_gtests",
            # Doesn't run win_specific_isolated_scripts because the mini
            # installer isn't hooked up in 32-bit debug builds.
        ],
        additional_compile_targets = [
            "all",
        ],
        mixins = [
            "win10",
        ],
    ),
    cores = "64",
    os = os.WINDOWS_DEFAULT,
    free_space = builders.free_space.high,
    console_view_entry = consoles.console_view_entry(
        category = "Rust ToT",
        short_name = "win",
    ),
    contact_team_email = "lexan@google.com",
)

tot_mac_builder(
    name = "ToTRustMac(dbg)",
    builder_spec = builder_config.builder_spec(
        gclient_config = builder_config.gclient_config(
            config = "chromium",
            apply_configs = ["rust_tot"],
        ),
        chromium_config = builder_config.chromium_config(
            config = "rust_tot_mac",
            apply_configs = ["mb"],
            build_config = builder_config.build_config.DEBUG,
            target_bits = 64,
            target_platform = builder_config.target_platform.MAC,
        ),
    ),
    gn_args = gn_args.config(
        configs = [
            "rust_tot_gn",
            "no_treat_warnings_as_errors",
            "shared",
            "debug",
            "x64",
        ],  # "mac" is added automatically since this is a `tot_mac_builder` call
    ),
    targets = targets.bundle(
        additional_compile_targets = [
            "all",
        ],
        mixins = [
            "mac_default_x64",
        ],
    ),
    console_view_entry = consoles.console_view_entry(
        category = "Rust ToT",
        short_name = "mac",
    ),
    execution_timeout = 20 * time.hour,
    is_rust = True,
)