| 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. |