blob: 6cc8284a9332a38d851d1e23259c6d826af88102 [file] [log] [blame]
"""Helper rule to test extending compile time jdeps"""
load("//java/common:java_common.bzl", "java_common")
load("//java/common:java_info.bzl", "JavaInfo")
load("//java/common:java_semantics.bzl", "semantics")
CompileJdepsInfo = provider("Provider to testing compile jdeps", fields = ["before", "after"])
def _compile_time_jdeps(info):
return depset([outputs.compile_jdeps for outputs in info.java_outputs if outputs.compile_jdeps != None])
def _impl(ctx):
output_jar = ctx.actions.declare_file("lib" + ctx.label.name + ".jar")
info = java_common.compile(
ctx,
source_files = ctx.files.srcs,
output = output_jar,
deps = [d[JavaInfo] for d in ctx.attr.deps],
exports = [e[JavaInfo] for e in ctx.attr.exports],
java_toolchain = semantics.find_java_toolchain(ctx),
)
jdeps_info = JavaInfo(
output_jar = output_jar,
compile_jar = None,
compile_jdeps = ctx.file.extra_jdeps,
)
extra_info = java_common.merge([info, jdeps_info])
return [
extra_info,
CompileJdepsInfo(
before = _compile_time_jdeps(info),
after = _compile_time_jdeps(extra_info),
),
]
custom_library_extended_jdeps = rule(
implementation = _impl,
outputs = {
"my_output": "lib%{name}.jar",
},
attrs = {
"srcs": attr.label_list(allow_files = [".java"]),
"extra_jdeps": attr.label(allow_single_file = True),
"deps": attr.label_list(providers = [JavaInfo]),
"exports": attr.label_list(providers = [JavaInfo]),
},
toolchains = [semantics.JAVA_TOOLCHAIN_TYPE],
fragments = ["java"],
)