mirror of
https://github.com/google/guice.git
synced 2024-04-21 12:32:36 +00:00
Loads are being added in preparation for moving the symbols out of Bazel and into `rules_java`. PiperOrigin-RevId: 624858712
52 lines
1.8 KiB
Python
52 lines
1.8 KiB
Python
""" Custom rule to generate OSGi Manifest """
|
|
|
|
load("@rules_java//java:defs.bzl", "JavaInfo")
|
|
|
|
def _osgi_jar_impl(ctx):
|
|
output = ctx.outputs.osgi_jar.path
|
|
pom_version = ctx.var.get("pom_version", "LOCAL-SNAPSHOT")
|
|
input_jar = ctx.attr.target[JavaInfo].outputs.jars[0].class_jar
|
|
classpath_jars = ctx.attr.target[JavaInfo].compilation_info.compilation_classpath
|
|
|
|
args = ctx.actions.args()
|
|
args.add_joined("--classpath", classpath_jars, join_with = ":")
|
|
args.add("--output_jar", output)
|
|
args.add("--bundle_version", pom_version)
|
|
args.add("--bundle_name", ctx.attr.bundle_name)
|
|
args.add("--symbolic_name", ctx.attr.symbolic_name)
|
|
if ctx.attr.fragment:
|
|
args.add("--fragment")
|
|
args.add_joined("--import_package", ctx.attr.import_package, join_with = ",")
|
|
args.add_joined("--export_package", ctx.attr.export_package, join_with = ",")
|
|
args.add("--input_jar", input_jar.path)
|
|
|
|
ctx.actions.run(
|
|
inputs = [input_jar] + classpath_jars.to_list(),
|
|
executable = ctx.executable._osgi_wrapper_exe,
|
|
arguments = [args],
|
|
outputs = [ctx.outputs.osgi_jar],
|
|
progress_message = "Generating OSGi bundle Manifest for %s" % ctx.attr.target.label,
|
|
)
|
|
|
|
osgi_jar = rule(
|
|
attrs = {
|
|
"target": attr.label(),
|
|
"export_package": attr.string_list(),
|
|
"import_package": attr.string_list(),
|
|
"bundle_name": attr.string(),
|
|
"fragment": attr.bool(),
|
|
"symbolic_name": attr.string(),
|
|
"_osgi_wrapper_exe": attr.label(
|
|
executable = True,
|
|
cfg = "exec",
|
|
allow_files = True,
|
|
default = Label("//tools:osgi_wrapper"),
|
|
),
|
|
},
|
|
fragments = ["java"],
|
|
outputs = {
|
|
"osgi_jar": "lib%{name}.jar",
|
|
},
|
|
implementation = _osgi_jar_impl,
|
|
)
|