blob: 40217337453f717466b740b4cd6db58977048e67 [file] [log] [blame] [edit]
load("@rules_java//java:defs.bzl", "java_binary", "java_library")
load(
"//tools:commons.bzl",
_plugin_deps = "PLUGIN_DEPS",
_plugin_deps_neverlink = "PLUGIN_DEPS_NEVERLINK",
_plugin_test_deps = "PLUGIN_TEST_DEPS",
)
load("//tools:genrule2.bzl", "genrule2")
"""Bazel rule for building [Gerrit Code Review](https://www.gerritcodereview.com/)
gerrit_plugin is rule for building Gerrit plugins using Bazel.
"""
PLUGIN_DEPS = _plugin_deps
PLUGIN_DEPS_NEVERLINK = _plugin_deps_neverlink
PLUGIN_TEST_DEPS = _plugin_test_deps
def gerrit_plugin(
name,
deps = [],
provided_deps = [],
srcs = [],
resources = [],
manifest_entries = [],
dir_name = None,
target_suffix = "",
**kwargs):
static_jars = []
if not dir_name:
dir_name = name
java_library(
name = name + "__plugin",
srcs = srcs,
resources = resources,
deps = provided_deps + deps + PLUGIN_DEPS_NEVERLINK,
visibility = ["//visibility:public"],
**kwargs
)
java_binary(
name = "%s__non_stamped" % name,
deploy_manifest_lines = manifest_entries + ["Gerrit-ApiType: plugin"],
main_class = "Dummy",
runtime_deps = [
":%s__plugin" % name,
] + static_jars,
visibility = ["//visibility:public"],
)
native.genrule(
name = name + "__gen_stamp_info",
stamp = 1,
cmd = "cat bazel-out/stable-status.txt | grep \"^STABLE_BUILD_%s_LABEL\" | awk '{print $$NF}' > $@" % dir_name.upper(),
outs = ["%s__gen_stamp_info.txt" % name],
)
# TODO(davido): Remove manual merge of manifest file when this feature
# request is implemented: https://github.com/bazelbuild/bazel/issues/2009
# TODO(davido): Remove manual touch command when this issue is resolved:
# https://github.com/bazelbuild/bazel/issues/10789
genrule2(
name = name + target_suffix,
stamp = 1,
srcs = ["%s__non_stamped_deploy.jar" % name],
cmd = " && ".join([
"TZ=UTC",
"export TZ",
"GEN_VERSION=$$(cat $(location :%s__gen_stamp_info))" % name,
"API_VERSION=$$(cat $(location @gerrit_api_version//:version.txt))",
"cd $$TMP",
"unzip -q $$ROOT/$<",
"echo \"Implementation-Version: $$GEN_VERSION\n$$API_VERSION\n$$(cat META-INF/MANIFEST.MF)\" > META-INF/MANIFEST.MF",
"find . -exec touch '{}' ';'",
"zip -Xqr $$ROOT/$@ .",
]),
tools = [
":%s__gen_stamp_info" % name,
"@gerrit_api_version//:version.txt",
],
outs = ["%s%s.jar" % (name, target_suffix)],
visibility = ["//visibility:public"],
)