blob: eec1f9d910d45191ef392f7b6d19f9e65030be71 [file] [log] [blame]
commit 07d43c2655c595b4a6fb6eab685c9a9a052ddee6
Author: Tiago Quelhas <tjgq@google.com>
Date: Mon Sep 16 15:12:33 2024 +0200
fix: avoid using deprecated ctx.resolve_tools
See https://github.com/bazelbuild/bazel/issues/22249 for context.
Signed-off-by: Tiago Quelhas <tjgq@google.com>
diff --git a/internal/native_image/rules.bzl b/internal/native_image/rules.bzl
index 0d0a2ce..ca84a91 100644
--- a/internal/native_image/rules.bzl
+++ b/internal/native_image/rules.bzl
@@ -37,41 +37,28 @@ def _build_action_message(ctx):
return (_mode_label[ctx.attr.optimization_mode or "default"])
def _graal_binary_implementation(ctx):
- graal_attr = ctx.attr.native_image_tool
- extra_tool_deps = []
- gvm_toolchain = None
+ graal_attr = ctx.executable.native_image_tool
+
classpath_depset = depset(transitive = [
dep[JavaInfo].transitive_runtime_jars
for dep in ctx.attr.deps
])
- graal = None
direct_inputs = []
transitive_inputs = [classpath_depset]
# resolve via toolchains
- info = ctx.toolchains[_GVM_TOOLCHAIN_TYPE].graalvm
-
- # but fall back to explicitly-provided tool, which should override, with the
- # remainder of the resolved toolchain present
- resolved_graal = graal_attr or info.native_image_bin
- gvm_toolchain = info
- extra_tool_deps.append(info.gvm_files)
+ gvm_toolchain = ctx.toolchains[_GVM_TOOLCHAIN_TYPE].graalvm
- graal_inputs, _ = ctx.resolve_tools(tools = [
- resolved_graal,
- ] + extra_tool_deps)
-
- graal = graal_inputs.to_list()[0]
+ # if a native-image tool is explicitly provided, it should override the one
+ # provided by the toolchain, but not the rest of the files it provides
+ graal = graal_attr or gvm_toolchain.native_image_bin.files_to_run
# add toolchain files to transitive inputs
transitive_inputs.append(gvm_toolchain.gvm_files[DefaultInfo].files)
- # if we're using an explicit tool, add it to the direct inputs
- if graal:
- direct_inputs.append(graal)
- else:
- # still failed to resolve: cannot resolve via either toolchains or attributes.
+ if not graal:
+ # cannot resolve via either toolchains or attributes.
fail("""
No `native-image` tool found. Please either define a `native_image_tool` in your target,
or install a GraalVM `native-image` toolchain.