...

Text file src/github.com/bazelbuild/rules_go/go/private/rules/go_bin_for_host.bzl

Documentation: github.com/bazelbuild/rules_go/go/private/rules

     1# Copyright 2023 The Bazel Authors. All rights reserved.
     2#
     3# Licensed under the Apache License, Version 2.0 (the "License");
     4# you may not use this file except in compliance with the License.
     5# You may obtain a copy of the License at
     6#
     7#    http://www.apache.org/licenses/LICENSE-2.0
     8#
     9# Unless required by applicable law or agreed to in writing, software
    10# distributed under the License is distributed on an "AS IS" BASIS,
    11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    12# See the License for the specific language governing permissions and
    13# limitations under the License.
    14
    15load("@local_config_platform//:constraints.bzl", "HOST_CONSTRAINTS")
    16load("//go/private:common.bzl", "GO_TOOLCHAIN")
    17
    18def _ensure_target_cfg(ctx):
    19    # A target is assumed to be built in the target configuration if it is neither in the exec nor
    20    # the host configuration (the latter has been removed in Bazel 6). Since there is no API for
    21    # this, use the output directory to determine the configuration, which is a common pattern.
    22    if "-exec-" in ctx.bin_dir.path or "/host/" in ctx.bin_dir.path:
    23        fail("//go is only meant to be used with 'bazel run', not as a tool. " +
    24             "If you need to use it as a tool (e.g. in a genrule), please " +
    25             "open an issue at " +
    26             "https://github.com/bazelbuild/rules_go/issues/new explaining " +
    27             "your use case.")
    28
    29def _go_bin_for_host_impl(ctx):
    30    """Exposes the go binary of the current Go toolchain for the host."""
    31    _ensure_target_cfg(ctx)
    32
    33    sdk = ctx.toolchains[GO_TOOLCHAIN].sdk
    34    sdk_files = ctx.runfiles([sdk.go] + sdk.headers + sdk.libs + sdk.srcs + sdk.tools)
    35
    36    return [
    37        DefaultInfo(
    38            files = depset([sdk.go]),
    39            runfiles = sdk_files,
    40        ),
    41    ]
    42
    43go_bin_for_host = rule(
    44    implementation = _go_bin_for_host_impl,
    45    toolchains = [GO_TOOLCHAIN],
    46    # Resolve a toolchain that runs on the host platform.
    47    exec_compatible_with = HOST_CONSTRAINTS,
    48)

View as plain text