| # Copyright 2016 The Bazel Authors. All rights reserved. | 
 | # | 
 | # Licensed under the Apache License, Version 2.0 (the "License"); | 
 | # you may not use this file except in compliance with the License. | 
 | # You may obtain a copy of the License at | 
 | # | 
 | #    http://www.apache.org/licenses/LICENSE-2.0 | 
 | # | 
 | # Unless required by applicable law or agreed to in writing, software | 
 | # distributed under the License is distributed on an "AS IS" BASIS, | 
 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
 | # See the License for the specific language governing permissions and | 
 | # limitations under the License. | 
 |  | 
 | # If we prefix the directories with an underscore then they get ignored by Go tools. | 
 | # We are forced to do this until https://github.com/golang/go/issues/42965 is fixed. | 
 | build --symlink_prefix=_bazel_ | 
 |  | 
 | # test inherits from build, so do not add test flags because that | 
 | # ends up invalidating the cache. https://github.com/bazelbuild/bazel/issues/13186 | 
 | # test  --symlink_prefix=_bazel_ | 
 |  | 
 | build --workspace_status_command=bazel/get_workspace_status.sh | 
 |  | 
 | # Tags such as no-remote and no-cache have no effect without this. See | 
 | # https://github.com/bazelbuild/bazel/issues/8830. | 
 | build --experimental_allow_tags_propagation | 
 |  | 
 | # Pipe through the host system's *_EMULATOR_HOST environment variables to Bazel tests. | 
 | # | 
 | # We unset said environment variables under RBE because emulator tests under RBE spin up their own | 
 | # emulator instances. | 
 | build --test_env=BIGTABLE_EMULATOR_HOST | 
 | build --test_env=COCKROACHDB_EMULATOR_HOST | 
 | build --test_env=DATASTORE_EMULATOR_HOST | 
 | build --test_env=FIRESTORE_EMULATOR_HOST | 
 | build --test_env=PUBSUB_EMULATOR_HOST | 
 | build:remote --test_env=BIGTABLE_EMULATOR_HOST= | 
 | build:remote --test_env=COCKROACHDB_EMULATOR_HOST= | 
 | build:remote --test_env=DATASTORE_EMULATOR_HOST= | 
 | build:remote --test_env=FIRESTORE_EMULATOR_HOST= | 
 | build:remote --test_env=PUBSUB_EMULATOR_HOST= | 
 |  | 
 | # Pipe through GOOGLE_APPLICATION_CREDENTIALS for local tests. This breaks test hermeticity, so use | 
 | # judiciously. Most tests that depend on this variable should probably tagged with "no-remote". | 
 | # | 
 | # We clear this variable under build:remote because if set, it will most likely contain a path to a | 
 | # file in the host system, which could potentially point to a nonexisting file within the RBE | 
 | # container when Bazel is invoked with --config=remote. | 
 | build --test_env=GOOGLE_APPLICATION_CREDENTIALS | 
 | build:remote --test_env=GOOGLE_APPLICATION_CREDENTIALS= | 
 |  | 
 | # RBE-only environment variable for tests to detect whether they're running locally or on RBE. | 
 | build:remote --test_env=BAZEL_REMOTE=true | 
 |  | 
 | # Update the PATH environment variable under RBE to include the locations of various binaries | 
 | # installed in our custom RBE container toolchain image. | 
 | build:remote --test_env=PATH=/bin:/usr/bin:/usr/local/bin:/usr/local/go/bin | 
 |  | 
 | # Sass compilation errors are not correctly reported unless "bazel build" is invoked with this flag. | 
 | # This is due to a known issue with sass_binary. | 
 | # | 
 | # For more details please see https://github.com/bazelbuild/rules_sass/issues/96. | 
 | build --strategy=SassCompiler=sandboxed | 
 |  | 
 | # Rough equivalent of CGO_ENABLED=0 under Bazel. Produces statically-linked Go binaries, and | 
 | # filters out cgo code. | 
 | # | 
 | # See https://github.com/bazelbuild/rules_go/blob/master/go/modes.rst#id6. | 
 | # | 
 | # This prevents errors due to missing dynamic libraries, e.g. when running Bazel-built binaries | 
 | # inside Docker containers based on the gcr.io/skia-public/basealpine image. | 
 | build --@io_bazel_rules_go//go/config:pure | 
 |  | 
 | # 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. | 
 | # These flags should only be used as is for the rbe-ubuntu16-04 container | 
 | # and need to be adapted to work with other toolchain containers. | 
 | build:remote --host_javabase=//bazel/rbe/generated/java:jdk | 
 | build:remote --javabase=//bazel/rbe/generated/java:jdk | 
 | build:remote --host_java_toolchain=@bazel_tools//tools/jdk:toolchain_hostjdk8 | 
 | build:remote --java_toolchain=@bazel_tools//tools/jdk:toolchain_hostjdk8 | 
 | build:remote --crosstool_top=//bazel/rbe/generated/cc:toolchain | 
 | 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 | 
 | build:remote --extra_toolchains=//bazel/rbe/generated/config:cc-toolchain | 
 | build:remote --extra_execution_platforms=//:rbe_custom_platform | 
 | build:remote --host_platform=//:rbe_custom_platform | 
 | build:remote --platforms=//:rbe_custom_platform | 
 |  | 
 | # 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. | 
 | build:remote --google_default_credentials=true | 
 |  | 
 | # Use the RBE instance on the skia-infra-rbe GCP project. | 
 | build:remote --remote_instance_name projects/skia-infra-rbe/instances/default_instance | 
 |  | 
 | # Skip building the runfiles tree on the local system when building on RBE. This can be very slow, | 
 | # and is unnecessary for RBE builds because remote build actions will generate their own runfile | 
 | # tree anyway. See b/111951625. | 
 | build:remote --nobuild_runfile_links | 
 |  | 
 | # Note that running remote builds requires a service account key with the correct permissions. See | 
 | # instructions in //BAZEL_CHEATSHEET.md. | 
 |  | 
 | # Alias to build configurations below. This makes configuring things from | 
 | # the command line easier. | 
 | build --flag_alias=with_local_debugger=no//debugger-app/wasm_libs:use_debugger_from_container | 
 | build --flag_alias=with_local_wasm=no//jsfiddle/wasm_libs:use_libraries_from_container | 
 | build --flag_alias=shaders_local_canvaskit=no//shaders/wasm_libs:use_canvaskit_from_container | 
 | build --flag_alias=skottie_local_canvaskit=no//skottie/wasm_libs:use_canvaskit_from_container | 
 |  | 
 | # Import user-specific Bazel configuration file if it exists. This file is gitignored. | 
 | # | 
 | # One of the purposes of this file is to override the "mayberemote" configuration so that it | 
 | # actually produces remote builds on RBE. See below for more on the "mayberemote" configuration. | 
 | try-import %workspace%/bazel/user/bazelrc | 
 |  | 
 | # The "mayberemote" config is used for scripted actions that *may* perform RBE builds with Bazel. | 
 | # For example, take the following Makefile: | 
 | # | 
 | #     .PHONY: foo | 
 | #     foo: | 
 | #         bazel build --config=mayberemote //path/to:foo | 
 | # | 
 | # By default, --config=mayberemote does nothing, i.e. the above Makefile is equivalent to: | 
 | # | 
 | #     .PHONY: foo | 
 | #     foo: | 
 | #         bazel build //path/to:foo | 
 | # | 
 | # If you want --config=mayberemote to be equivalent to --config=remote, please add the following | 
 | # line to your //bazel/user/bazelrc file: | 
 | # | 
 | #     build:mayberemote --config=remote | 
 | # | 
 | # Then, the above Makefile will be equivalent to: | 
 | # | 
 | #     .PHONY: foo | 
 | #     foo: | 
 | #         bazel build --config=remote //path/to:foo | 
 | # | 
 | # Some good example uses of --config=mayberemote are the "gazelle" and "buildifier" Make targets | 
 | # defined in //Makefile, which some Skia Infrastructure engineers use on an almost daily basis. | 
 | # | 
 | # Rationale: | 
 | # | 
 | #  - Makefiles, or any other scripted action, should never use --config=remote directly, as such | 
 | #    Bazel invocations are impossible to run for users without RBE credentials, users working | 
 | #    offline (e.g. on an airplane without WiFi), etc. | 
 | # | 
 | #  - Scripted actions should not force local builds either (unless absolutely necessary), as that | 
 | #    causes Bazel to discard its analysis cache if the user normally runs remote builds, which | 
 | #    makes Bazel take longer. | 
 | # | 
 | #  - As an alternative, a user could make all builds remote by default by adding a line such as | 
 | #    "build --config=remote" to their //bazel/user/bazelrc file. However, this is limiting because | 
 | #    there might be legitimate cases where one would want to run a local build. | 
 | # | 
 | # Bazel complains if --config=mayberemote is undefined, so a default "no-op" definition is needed. | 
 | build:mayberemote --color=auto # Does nothing: --color is "auto" by default. |