3413ca474b
For additional context, see "Codifying Certain Build Options" and "Building on the CI" in the design doc go/skia-bazel Suggested review order: - builder_name_schema.json to see the three required and one optional part of BazelBuild jobs. - jobs.json to see one new BazelBuild job added. In an ideal world, this job would have been named BazelBuild-//modules/canvaskit:canvaskit_wasm-debug-linux_x64 but Buildbucket (?) requires jobs match the regex ^[a-zA-Z0-9\\-_.\\(\\) ]{1,128}$ so we use spaces instead of slashes or colons. - gen_tasks_logic.go; noting the makeBazelLabel function expands most of the spaces to / and the last one to a colon to make a single-target label. If there are three dots, then it is a multi-target label, and we do not need to add a colon. - bazel_build.go; This is a very simple task driver, and I do not anticipate getting too much more complex. The place where we decide which args to augment a build with depend on the host platform and thus should be set in gen_tasks_logic.go. - bazel/buildrc to see some initial configurations set, one of which, "debug", is used by the new job. The "release" version of CanvasKit probably works on 3.1.10 which had a bugfix, but we are still on 3.1.9 - .bazelrc to see a rename of the linux-rbe config to linux_rbe (our configs should have no dashes if we want to specify them verbatim in our Job names). It also imports the Skia-specified build configs from //bazel/buildrc and supports the user-specified //bazel/user/buildrc file if it exists. - All other files in any order. Change-Id: Ib954dd6045100eadcbbf4ffee0888f6fbce65fa7 Reviewed-on: https://skia-review.googlesource.com/c/skia/+/537797 Reviewed-by: Eric Boren <borenet@google.com> Reviewed-by: Jorge Betancourt <jmbetancourt@google.com>
108 lines
5.7 KiB
Plaintext
108 lines
5.7 KiB
Plaintext
# We don't have a great way to test the host system in order to use the right
|
|
# version of the toolchain. So we need to have the user specify what their host is.
|
|
build:clang_linux --crosstool_top=//toolchain:clang_suite_linux
|
|
build:clang_linux --compiler=host_is_linux_amd64
|
|
|
|
build:clang_mac --crosstool_top=//toolchain:clang_suite_mac
|
|
build:clang_mac --compiler=host_is_mac_m1
|
|
|
|
# =============================================================================
|
|
# Alias to build configurations below. This makes configuring things from
|
|
# the command line easier.
|
|
build --flag_alias=fontmgr_factory=//bazel/common_config_settings:fontmgr_factory
|
|
build --flag_alias=gpu_backend=//bazel/common_config_settings:gpu_backend
|
|
build --flag_alias=include_decoder=//bazel/common_config_settings:include_decoder
|
|
build --flag_alias=include_encoder=//bazel/common_config_settings:include_encoder
|
|
build --flag_alias=include_fontmgr=//bazel/common_config_settings:include_fontmgr
|
|
build --flag_alias=shaper_backend=//bazel/common_config_settings:shaper_backend
|
|
build --flag_alias=with_gl_standard=//bazel/common_config_settings:with_gl_standard
|
|
|
|
build --flag_alias=disable_effect_serialization=no//bazel/common_config_settings:enable_effect_serialization
|
|
build --flag_alias=enable_effect_serialization=//bazel/common_config_settings:enable_effect_serialization
|
|
build --flag_alias=disable_skslc=no//bazel/common_config_settings:enable_skslc
|
|
build --flag_alias=enable_skslc=//bazel/common_config_settings:enable_skslc
|
|
build --flag_alias=disable_sksl_tracing=no//bazel/common_config_settings:enable_sksl_tracing
|
|
build --flag_alias=enable_sksl_tracing=//bazel/common_config_settings:enable_sksl_tracing
|
|
build --flag_alias=disable_tracing=no//bazel/common_config_settings:enable_tracing
|
|
build --flag_alias=enable_tracing=//bazel/common_config_settings:enable_tracing
|
|
build --flag_alias=disable_vma=no//bazel/common_config_settings:use_vulkan_memory_allocator
|
|
build --flag_alias=enable_vma=//bazel/common_config_settings:use_vulkan_memory_allocator
|
|
build --flag_alias=with_icu=//bazel/common_config_settings:use_icu
|
|
build --flag_alias=with_no_icu=no//bazel/common_config_settings:use_icu
|
|
|
|
# CanvasKit flags
|
|
build --flag_alias=ck_enable_fonts=//modules/canvaskit:enable_fonts
|
|
build --flag_alias=ck_disable_fonts=no//modules/canvaskit:enable_fonts
|
|
|
|
# =============================================================================
|
|
# REMOTE BUILD EXECUTION
|
|
# =============================================================================
|
|
|
|
# =====
|
|
# The following was copied from https://github.com/bazelbuild/bazel-toolchains/blob/ea243d43269df23de03a797cff2347e1fc3d02bb/bazelrc/bazel-4.1.0.bazelrc
|
|
# We should be free to modify this as we see fit.
|
|
#
|
|
# Depending on how many machines are in the remote execution instance, setting
|
|
# this higher can make builds faster by allowing more jobs to run in parallel.
|
|
# Setting it too high can result in jobs that timeout, however, while waiting
|
|
# for a remote machine to execute them.
|
|
build:remote --jobs=50
|
|
|
|
# Set several flags related to specifying the platform, toolchain and java
|
|
# properties.
|
|
build:remote --java_runtime_version=rbe_jdk
|
|
build:remote --tool_java_runtime_version=rbe_jdk
|
|
|
|
build:remote --action_env=BAZEL_DO_NOT_DETECT_CPP_TOOLCHAIN=1
|
|
# Platform flags:
|
|
# The toolchain container used for execution is defined in the target indicated
|
|
# by "extra_execution_platforms", "host_platform" and "platforms".
|
|
# More about platforms: https://docs.bazel.build/versions/master/platforms.html
|
|
|
|
# Starting with Bazel 0.27.0 strategies do not need to be explicitly
|
|
# defined. See https://github.com/bazelbuild/bazel/issues/7480
|
|
build:remote --define=EXECUTOR=remote
|
|
|
|
# Enable remote execution so actions are performed on the remote systems.
|
|
build:remote --remote_executor=grpcs://remotebuildexecution.googleapis.com
|
|
|
|
# Enforce stricter environment rules, which eliminates some non-hermetic
|
|
# behavior and therefore improves both the remote cache hit rate and the
|
|
# correctness and repeatability of the build.
|
|
build:remote --incompatible_strict_action_env=true
|
|
|
|
# No compile task should take more than 180 seconds. Really long running tasks
|
|
# are probably a result of spinning up new workers.
|
|
build:remote --remote_timeout=180
|
|
|
|
# Enable authentication. This will pick up application default credentials by
|
|
# default. You can use --google_credentials=some_file.json to use a service
|
|
# account credential instead.
|
|
# See https://developers.google.com/remote-build-execution/docs/authentication
|
|
build:remote --google_default_credentials=true
|
|
|
|
# End of the copied RBE settings
|
|
#=====
|
|
|
|
# Use the RBE instance on the skia-rbe GCP project.
|
|
build:remote --remote_instance_name projects/skia-rbe/instances/default_instance
|
|
|
|
# These settings are specific to compiling on our Linux RBE workers. For example,
|
|
# Use the worker pool as specified by the gce_linux_platform platform in
|
|
# //bazel/rbe/BUILD.bazel.
|
|
build:linux_rbe --config=remote
|
|
# Use our hermetic toolchain instead of the clang in the toolchain.
|
|
build:linux_rbe --crosstool_top=//toolchain:clang_suite_linux
|
|
# We want to run on this RBE platform
|
|
build:linux_rbe --extra_execution_platforms=//bazel/rbe:gce_linux_platform
|
|
# On the RBE instances, this Java and C++ toolchain are available
|
|
build:linux_rbe --extra_toolchains=//bazel/rbe/gce_linux/java:all
|
|
build:linux_rbe --extra_toolchains=//bazel/rbe/gce_linux/config:cc-toolchain
|
|
|
|
# Import our specified build configurations
|
|
# https://docs.bazel.build/versions/main/best-practices.html#using-the-bazelrc-file
|
|
# We chose to split our build configurations into their own file to have better organization
|
|
# because we anticipate that file growing large.
|
|
import %workspace%/bazel/buildrc
|
|
# Import User's custom builds if they have defined any
|
|
try-import %workspace%/bazel/user/buildrc |