bazelbuild / rules_scala

Scala rules for Bazel
Apache License 2.0
360 stars 273 forks source link

Bazel 7 - scala_proto_aspect rule must declare '@@bazel_tools//tools/jdk:toolchain_type' toolchain in order to use java_common #1535

Closed amybzhao closed 7 months ago

amybzhao commented 8 months ago

Hi! I'm trying to upgrade a project to use Bazel 7 and I'm hitting this error for usages of scala_proto_library:

ERROR: /Users/amyzhao/bazel7_rulesscala_repro/BUILD:8:14: in @@io_bazel_rules_scala//scala_proto/private:scala_proto.bzl%scala_proto_aspect aspect on proto_library rule //:compression_proto:
Traceback (most recent call last):
    File "/private/var/tmp/_bazel_amyzhao/c82b0e05e300610aef22bff1e91debae/external/io_bazel_rules_scala/scala_proto/private/scala_proto_aspect.bzl", line 188, column 29, in _scala_proto_aspect_impl
        return run_aspect_phases(
    File "/private/var/tmp/_bazel_amyzhao/c82b0e05e300610aef22bff1e91debae/external/io_bazel_rules_scala/scala/private/phases/api.bzl", line 48, column 23, in run_aspect_phases
        return _run_phases(ctx, builtin_customizable_phases, target)
    File "/private/var/tmp/_bazel_amyzhao/c82b0e05e300610aef22bff1e91debae/external/io_bazel_rules_scala/scala/private/phases/api.bzl", line 77, column 32, in _run_phases
        new_provider = function(ctx, current_provider)
    File "/private/var/tmp/_bazel_amyzhao/c82b0e05e300610aef22bff1e91debae/external/io_bazel_rules_scala/scala_proto/private/scala_proto_aspect.bzl", line 155, column 37, in _phase_generate_and_compile
        java_info = _compile_sources(ctx, toolchain, proto, src_jars, deps, scalacopts, stamp_label)
    File "/private/var/tmp/_bazel_amyzhao/c82b0e05e300610aef22bff1e91debae/external/io_bazel_rules_scala/scala_proto/private/scala_proto_aspect.bzl", line 129, column 35, in _compile_sources
        source_jar = _pack_sources(ctx, src_jars),
    File "/private/var/tmp/_bazel_amyzhao/c82b0e05e300610aef22bff1e91debae/external/io_bazel_rules_scala/scala_proto/private/scala_proto_aspect.bzl", line 50, column 36, in _pack_sources
        return java_common.pack_sources(
    File "/virtual_builtins_bzl/common/java/java_common.bzl", line 156, column 68, in _pack_sources
Error in _check_java_toolchain_is_declared_on_rule: Rule 'proto_library' in '/Users/amyzhao/bazel7_rulesscala_repro/BUILD:8:14' must declare '@@bazel_tools//tools/jdk:toolchain_type' toolchain in order to use java_common. See https://github.com/bazelbuild/bazel/issues/18970.

you should be able to repro by cloning https://github.com/amybzhao/bazel7_rulesscala_repro and running bazel build //:protobuf (with bazel 7)

I've also included a patch that seems to fix the issue (using it is currently commented out in the WORKSPACE file)

liucijus commented 7 months ago

Fixed with #1534