blob: 5bacec8e15b2af1f8bb6c4224f06f7d2ad40b7b4 [file] [log] [blame] [edit]
"""
Build rules for plugins.
"""
load("//:version.bzl", "GERRIT_VERSION")
load("@rules_java//java:defs.bzl", "java_binary", "java_library")
load("//tools/bzl:genrule2.bzl", "genrule2")
IN_TREE_BUILD_MODE = True
PLUGIN_DEPS = ["//plugins:plugin-lib"]
PLUGIN_DEPS_NEVERLINK = ["//plugins:plugin-lib-neverlink"]
PLUGIN_TEST_DEPS = [
"//java/com/google/gerrit/acceptance:lib",
"//lib/bouncycastle:bcpg",
"//lib/bouncycastle:bcpkix",
"//lib/bouncycastle:bcprov",
]
def gerrit_plugin(
name,
deps = [],
provided_deps = [],
srcs = [],
resources = [],
resource_jars = [],
manifest_entries = [],
dir_name = None,
target_suffix = "",
deploy_env = [],
**kwargs):
java_library(
name = name + "__plugin",
srcs = srcs,
resources = resources,
deps = provided_deps + deps + PLUGIN_DEPS_NEVERLINK,
visibility = ["//visibility:public"],
**kwargs
)
if not dir_name:
dir_name = name
java_binary(
name = "%s__non_stamped" % name,
deploy_manifest_lines = manifest_entries + [
"Gerrit-ApiType: plugin",
"Gerrit-ApiVersion: " + GERRIT_VERSION,
],
main_class = "Dummy",
runtime_deps = [
":%s__plugin" % name,
] + resource_jars,
deploy_env = deploy_env,
visibility = ["//visibility:public"],
**kwargs
)
# 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 bazel-out/stable-status.txt | grep -w STABLE_BUILD_%s_LABEL | cut -d ' ' -f 2)" % dir_name.upper(),
"cd $$TMP",
"unzip -qo $$ROOT/$<",
"echo \"Implementation-Version: $$GEN_VERSION\n$$(cat META-INF/MANIFEST.MF)\" > META-INF/MANIFEST.MF",
"find . -exec touch '{}' ';'",
"zip -Xqr $$ROOT/$@ .",
]),
outs = ["%s%s.jar" % (name, target_suffix)],
visibility = ["//visibility:public"],
)