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