github.com/johnnyeven/libtools@v0.0.0-20191126065708-61829c1adf46/third_party/toolchains/remote/configure.bzl (about)

     1  """Repository rule for remote GPU autoconfiguration.
     2  
     3  This rule creates the starlark file
     4  //third_party/toolchains/remote:execution.bzl
     5  providing the function `gpu_test_tags`.
     6  
     7  `gpu_test_tags` will return:
     8  
     9    * `local`: if `REMOTE_GPU_TESTING` is false, allowing CPU tests to run
    10      remotely and GPU tests to run locally in the same bazel invocation.
    11    * `remote-gpu`: if `REMOTE_GPU_TESTING` is true; this allows rules to
    12      set an execution requirement that enables a GPU-enabled remote platform.
    13  """
    14  
    15  _REMOTE_GPU_TESTING = "REMOTE_GPU_TESTING"
    16  
    17  def _flag_enabled(repository_ctx, flag_name):
    18      if flag_name not in repository_ctx.os.environ:
    19          return False
    20      return repository_ctx.os.environ[flag_name].strip() == "1"
    21  
    22  def _remote_execution_configure(repository_ctx):
    23      # If we do not support remote gpu test execution, mark them as local, so we
    24      # can combine remote builds with local gpu tests.
    25      gpu_test_tags = "\"local\""
    26      if _flag_enabled(repository_ctx, _REMOTE_GPU_TESTING):
    27          gpu_test_tags = "\"remote-gpu\""
    28      repository_ctx.template(
    29          "remote_execution.bzl",
    30          Label("//third_party/toolchains/remote:execution.bzl.tpl"),
    31          {
    32              "%{gpu_test_tags}": gpu_test_tags,
    33          },
    34      )
    35      repository_ctx.template(
    36          "BUILD",
    37          Label("//third_party/toolchains/remote:BUILD.tpl"),
    38      )
    39  
    40  remote_execution_configure = repository_rule(
    41      implementation = _remote_execution_configure,
    42      environ = [_REMOTE_GPU_TESTING],
    43  )