1
hermetic_cc_toolchain/patches/rules_docker/transitions.patch
2021-04-09 15:05:01 -07:00

150 lines
5.2 KiB
Diff

diff --git a/lang/image.bzl b/lang/image.bzl
index c2db8f4..16a1f57 100644
--- a/lang/image.bzl
+++ b/lang/image.bzl
@@ -34,8 +34,8 @@ def _binary_name(ctx):
# /app/foo/bar/baz/blah
return "/".join([
ctx.attr.directory,
- ctx.attr.binary.label.package,
- ctx.attr.binary.label.name,
+ ctx.attr.binary[0].label.package,
+ ctx.attr.binary[0].label.name,
])
def _runfiles_dir(ctx):
@@ -148,7 +148,7 @@ def _app_layer_impl(ctx, runfiles = None, emptyfiles = None):
parent_parts = _get_layers(ctx, ctx.attr.name, ctx.attr.base)
filepath = _final_file_path if ctx.attr.binary else layer_file_path
emptyfilepath = _final_emptyfile_path if ctx.attr.binary else _layer_emptyfile_path
- dep = ctx.attr.dep or ctx.attr.binary
+ dep = (ctx.attr.dep or ctx.attr.binary)[0]
top_layer = ctx.attr.binary and not ctx.attr.dep
if ctx.attr.create_empty_workspace_dir:
@@ -239,6 +239,18 @@ def _app_layer_impl(ctx, runfiles = None, emptyfiles = None):
null_cmd = args == [],
)
+def _container_transition_impl(settings, attr):
+ _ignore = (settings, attr)
+ return {
+ "//command_line_option:platforms": "@io_bazel_rules_docker//platforms:linux_amd64",
+ }
+
+container_transition = transition(
+ implementation = _container_transition_impl,
+ inputs = [],
+ outputs = ["//command_line_option:platforms"],
+)
+
image = struct(
attrs = dicts.add(_container.image.attrs, {
# The base image on which to overlay the dependency layers.
@@ -250,7 +262,7 @@ image = struct(
# the runfiles dir.
"binary": attr.label(
executable = True,
- cfg = "target",
+ cfg = container_transition,
),
# Set this to true to create an empty workspace directory under the
# app directory specified as the 'directory' attribute.
@@ -263,11 +275,14 @@ image = struct(
# The dependency whose runfiles we're appending.
# If not specified, then the layer will be treated as the top layer,
# and all remaining deps of "binary" will be added under runfiles.
- "dep": attr.label(),
+ "dep": attr.label(cfg = container_transition),
"directory": attr.string(default = "/app"),
"entrypoint": attr.string_list(default = []),
"legacy_run_behavior": attr.bool(default = False),
"workdir": attr.string(default = ""),
+ "_whitelist_function_transition": attr.label(
+ default = "//tools/whitelists/function_transition_whitelist",
+ ),
}),
outputs = _container.image.outputs,
toolchains = ["@io_bazel_rules_docker//toolchains/docker:toolchain_type"],
diff --git a/platforms/BUILD b/platforms/BUILD
index 50b8593..b4f25c9 100644
--- a/platforms/BUILD
+++ b/platforms/BUILD
@@ -56,3 +56,11 @@ platform(
],
parents = ["@buildkite_config//config:platform"],
)
+
+platform(
+ name = "linux_amd64",
+ constraint_values = [
+ "@platforms//os:linux",
+ "@platforms//cpu:x86_64",
+ ],
+)
diff --git a/toolchains/BUILD b/toolchains/BUILD
index 55f7560..bf56cd0 100644
--- a/toolchains/BUILD
+++ b/toolchains/BUILD
@@ -56,13 +56,13 @@ toolchain(
name = "rbe_container_cc_toolchain",
exec_compatible_with = [
"@io_bazel_rules_docker//platforms:run_in_container",
- "@bazel_tools//platforms:x86_64",
- "@bazel_tools//platforms:linux",
+ "@platforms//cpu:x86_64",
+ "@platforms//os:linux",
"@bazel_tools//tools/cpp:clang",
],
target_compatible_with = [
- "@bazel_tools//platforms:linux",
- "@bazel_tools//platforms:x86_64",
+ "@platforms//os:linux",
+ "@platforms//cpu:x86_64",
],
toolchain = "@buildkite_config//cc:cc-compiler-k8",
toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
diff --git a/toolchains/docker/BUILD b/toolchains/docker/BUILD
index 42e83e1..b7c9c5f 100644
--- a/toolchains/docker/BUILD
+++ b/toolchains/docker/BUILD
@@ -42,7 +42,7 @@ docker_toolchain(
toolchain(
name = "default_linux_toolchain",
target_compatible_with = [
- "@bazel_tools//platforms:linux",
+ "@platforms//os:linux",
],
toolchain = "@docker_config//:toolchain",
toolchain_type = ":toolchain_type",
@@ -51,7 +51,7 @@ toolchain(
toolchain(
name = "default_windows_toolchain",
target_compatible_with = [
- "@bazel_tools//platforms:windows",
+ "@platforms//os:windows",
],
toolchain = "@docker_config//:toolchain",
toolchain_type = ":toolchain_type",
@@ -60,7 +60,7 @@ toolchain(
toolchain(
name = "default_osx_toolchain",
target_compatible_with = [
- "@bazel_tools//platforms:osx",
+ "@platforms//os:osx",
],
toolchain = "@docker_config//:toolchain",
toolchain_type = ":toolchain_type",
diff --git a/tools/whitelists/function_transition_whitelist/BUILD b/tools/whitelists/function_transition_whitelist/BUILD
new file mode 100644
index 0000000..640d44f
--- /dev/null
+++ b/tools/whitelists/function_transition_whitelist/BUILD
@@ -0,0 +1,6 @@
+package_group(
+ name = "function_transition_whitelist",
+ packages = [
+ "//lang/...",
+ ],
+)