1
+ load ("@bazel_features//:features.bzl" , "bazel_features" )
1
2
load ("@io_bazel_rules_scala//scala:jars_to_labels.bzl" , "JarsToLabelsInfo" )
2
3
load ("//scala/settings:stamp_settings.bzl" , "StampScalaImport" )
3
4
load (
@@ -68,7 +69,7 @@ def _scala_import_impl(ctx):
68
69
]
69
70
70
71
def _new_java_info (ctx , jar , stamped_jar ):
71
- return JavaInfo (
72
+ kwargs = dict (
72
73
output_jar = jar ,
73
74
compile_jar = stamped_jar ,
74
75
exports = [target [JavaInfo ] for target in ctx .attr .exports ],
@@ -78,6 +79,13 @@ def _new_java_info(ctx, jar, stamped_jar):
78
79
neverlink = ctx .attr .neverlink ,
79
80
)
80
81
82
+ # The JavaInfo constructor's add_exports and add_opens flags were added in Bazel 7:
83
+ # https://github.com/bazelbuild/bazel/issues/20033
84
+ if bazel_features .java .java_info_constructor_module_flags :
85
+ kwargs ["add_exports" ] = ctx .attr .add_exports
86
+ kwargs ["add_opens" ] = ctx .attr .add_opens
87
+ return JavaInfo (** kwargs )
88
+
81
89
def _add_labels_of_current_code_jars (code_jars , label , jars2labels ):
82
90
for jar in code_jars .to_list ():
83
91
jars2labels [jar .path ] = label
@@ -148,6 +156,9 @@ scala_import = rule(
148
156
"java_compile_toolchain" : attr .label (
149
157
default = Label ("@bazel_tools//tools/jdk:current_java_toolchain" ),
150
158
),
151
- },
159
+ } | ({
160
+ "add_exports" : attr .string_list (),
161
+ "add_opens" : attr .string_list (),
162
+ } if bazel_features .java .java_info_constructor_module_flags else {}),
152
163
toolchains = ["@bazel_tools//tools/jdk:toolchain_type" ],
153
164
)
0 commit comments