load("@prelude//platforms:defs.bzl", "host_configuration") load(":defs.bzl", "execution_platform") # Where every action runs: locally, against the BuildBuddy cache. Registered by # `[build] execution_platforms` in .buckconfig — and, because a toolchain is # itself a target in the prelude cell, by `[parser] target_platform_detector_spec` # there too. Setting only the first leaves every rustc action on the prelude's # uncached default. execution_platform( name = "cache", cpu_configuration = host_configuration.cpu, os_configuration = host_configuration.os, use_windows_path_separators = host_info().os.is_windows, visibility = ["PUBLIC"], ) # The same platform, allowed to dispatch. The properties name the worker to run # on; BuildBuddy matches an action against its executor pool by these. execution_platform( name = "remote", cpu_configuration = host_configuration.cpu, os_configuration = host_configuration.os, remote_enabled = True, remote_execution_properties = { "OSFamily": "Linux", # 24.04, not 22.04: a build script compiled against this machine's glibc # has to *run* on the worker, and 22.04's is 2.35 — old enough that # thiserror's build script died with "GLIBC_2.39 not found" before a # single crate was compiled. frq hit the same floor from the other side # (jolt itself needs 2.38) and moved for the same reason. "container-image": "docker://gcr.io/flame-public/rbe-ubuntu24-04:latest", }, use_windows_path_separators = host_info().os.is_windows, visibility = ["PUBLIC"], ) # A *target* platform, unlike the two above: this is what a graph is built # for, not where the building runs. Naming it on a configured_alias moves the # target configuration and leaves the execution platform alone, so build # scripts and proc macros still compile and run on the host. platform( name = "android-arm64", constraint_values = [ "prelude//os/constraints:os[android]", "prelude//cpu/constraints:cpu[arm64]", ], visibility = ["PUBLIC"], )