c40158ab98
The toolchain now uses extract_ar from https://skia-review.googlesource.com/c/buildbot/+/524764 which is a static executable to extract the .deb files. This was necessary because the llvm-ar that had previously been used requires glibc 2.31+ to run, but our Debian10 machines on Swarming have an older version (2.28). A longer-term fix is to have Bazel support .ar files, which I plan to attempt to contribute this week. The RBE task will be added as an experimental CQ job, to see how it handles the load of running often. With the remote execution cache, I hope it performs well, once the toolchains are cached on both the Swarming machines and in the RBE workers. Note: We had to add several files to the CAS spec (see compile_cas.go) which are required for Bazel to work. Change-Id: Ie70c70d5f33768c957760f9eeb7835025109b487 Bug: skia:12541 Reviewed-on: https://skia-review.googlesource.com/c/skia/+/524759 Reviewed-by: Joe Gregorio <jcgregorio@google.com>
92 lines
4.5 KiB
Plaintext
92 lines
4.5 KiB
Plaintext
build:clang --crosstool_top=//toolchain:clang_suite
|
|
build:clang --compiler=clang
|
|
|
|
# Use the default Bazel C++ toolchain to build the tools used during the build.
|
|
build:clang --host_crosstool_top=@bazel_tools//tools/cpp:toolchain
|
|
|
|
# =============================================================================
|
|
# 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=with_icu=//bazel/common_config_settings:use_icu
|
|
build --flag_alias=with_no_icu=no//bazel/common_config_settings:use_icu
|
|
build --flag_alias=disable_tracing=//bazel/common_config_settings:disable_tracing
|
|
build --flag_alias=enable_tracing=no//bazel/common_config_settings:disable_tracing
|
|
build --flag_alias=disable_effect_serialization=//bazel/common_config_settings:disable_effect_serialization
|
|
build --flag_alias=enable_effect_serialization=no//bazel/common_config_settings:disable_effect_serialization
|
|
|
|
# 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
|
|
|
|
# Set a higher timeout value, just in case.
|
|
build:remote --remote_timeout=3600
|
|
|
|
# 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
|
|
build:linux-rbe --extra_execution_platforms=//bazel/rbe:gce_linux_platform
|
|
build:linux-rbe --host_platform=//bazel/rbe:gce_linux_platform
|
|
build:linux-rbe --platforms=//bazel/rbe:gce_linux_platform
|
|
build:linux-rbe --extra_toolchains=//bazel/rbe/gce_linux/java:all
|
|
build:linux-rbe --extra_toolchains=//bazel/rbe/gce_linux/config:cc-toolchain
|