aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools/build_defs/repo/java.bzl
diff options
context:
space:
mode:
Diffstat (limited to 'tools/build_defs/repo/java.bzl')
-rw-r--r--tools/build_defs/repo/java.bzl116
1 files changed, 8 insertions, 108 deletions
diff --git a/tools/build_defs/repo/java.bzl b/tools/build_defs/repo/java.bzl
index 559cc77a04..9803658204 100644
--- a/tools/build_defs/repo/java.bzl
+++ b/tools/build_defs/repo/java.bzl
@@ -169,111 +169,11 @@ will be loaded into a runtime environment where certain dependencies can be
reasonably expected to already be provided.
"""
-_HEADER = "# DO NOT EDIT: generated by java_import_external()"
-
-_PASS_PROPS = (
- "neverlink",
- "testonly_",
- "visibility",
- "exports",
- "runtime_deps",
- "deps",
- "tags",
-)
-
-def _java_import_external(repository_ctx):
- """Implementation of `java_import_external` rule."""
- if (repository_ctx.attr.generated_linkable_rule_name and
- not repository_ctx.attr.neverlink):
- fail("Only use generated_linkable_rule_name if neverlink is set")
- name = repository_ctx.attr.generated_rule_name or repository_ctx.name
- urls = repository_ctx.attr.jar_urls
- sha = repository_ctx.attr.jar_sha256
- path = repository_ctx.name + ".jar"
- for url in urls:
- if url.endswith(".jar"):
- path = url[url.rindex("/") + 1:]
- break
- srcurls = repository_ctx.attr.srcjar_urls
- srcsha = repository_ctx.attr.srcjar_sha256
- srcpath = repository_ctx.name + "-src.jar" if srcurls else ""
- for url in srcurls:
- if url.endswith(".jar"):
- srcpath = url[url.rindex("/") + 1:].replace("-sources.jar", "-src.jar")
- break
- lines = [_HEADER, ""]
- if repository_ctx.attr.default_visibility:
- lines.append("package(default_visibility = %s)" % (
- repository_ctx.attr.default_visibility))
- lines.append("")
- lines.append("licenses(%s)" % repr(repository_ctx.attr.licenses))
- lines.append("")
- lines.extend(_make_java_import(
- name, path, srcpath, repository_ctx.attr, _PASS_PROPS))
- if (repository_ctx.attr.neverlink and
- repository_ctx.attr.generated_linkable_rule_name):
- lines.extend(_make_java_import(
- repository_ctx.attr.generated_linkable_rule_name,
- path,
- srcpath,
- repository_ctx.attr,
- [p for p in _PASS_PROPS if p != "neverlink"]))
- extra = repository_ctx.attr.extra_build_file_content
- if extra:
- lines.append(extra)
- if not extra.endswith("\n"):
- lines.append("")
- repository_ctx.download(urls, path, sha)
- if srcurls:
- repository_ctx.download(srcurls, srcpath, srcsha)
- repository_ctx.file("BUILD", "\n".join(lines))
- repository_ctx.file("jar/BUILD", "\n".join([
- _HEADER,
- "",
- "package(default_visibility = %r)" % (
- repository_ctx.attr.visibility or
- repository_ctx.attr.default_visibility),
- "",
- "alias(",
- " name = \"jar\",",
- " actual = \"@%s\"," % repository_ctx.name,
- ")",
- "",
- ]))
-
-def _make_java_import(name, path, srcpath, attrs, props):
- lines = [
- "java_import(",
- " name = %s," % repr(name),
- " jars = [%s]," % repr(path),
- ]
- if srcpath:
- lines.append(" srcjar = %s," % repr(srcpath))
- for prop in props:
- value = getattr(attrs, prop, None)
- if value:
- if prop.endswith("_"):
- prop = prop[:-1]
- lines.append(" %s = %s," % (prop, repr(value)))
- lines.append(")")
- lines.append("")
- return lines
-
-java_import_external = repository_rule(
- implementation=_java_import_external,
- attrs={
- "licenses": attr.string_list(mandatory=True, allow_empty=False),
- "jar_urls": attr.string_list(mandatory=True, allow_empty=False),
- "jar_sha256": attr.string(mandatory=True),
- "srcjar_urls": attr.string_list(),
- "srcjar_sha256": attr.string(),
- "deps": attr.string_list(),
- "runtime_deps": attr.string_list(),
- "testonly_": attr.bool(),
- "exports": attr.string_list(),
- "neverlink": attr.bool(),
- "generated_rule_name": attr.string(),
- "generated_linkable_rule_name": attr.string(),
- "default_visibility": attr.string_list(default=["//visibility:public"]),
- "extra_build_file_content": attr.string(),
- })
+load("@bazel_tools//tools/build_defs/repo:jvm.bzl", "jvm_import_external")
+
+def java_import_external(jar_sha256, **kwargs):
+ jvm_import_external(
+ rule_name = "java_import",
+ jar_sha256 = jar_sha256,
+ **kwargs
+ )