92a34d0b6c
If a plugin specifies Implementation-Vendor, adding it again in the gerrit_plugin rule results in a duplicate entry and the following warning at build time: WARNING: Duplicate name in Manifest: Implementation-Vendor. Ensure that the manifest does not have duplicate entries, and that blank lines separate individual sections in both your manifest and in the META-INF/MANIFEST.MF entry in the jar file. This change is the same as done in bazlets project by David Ostrovsky. Change-Id: Iac72c1d1dbe11877e4e2042d2e11c8966147d7a9
98 lines
2.7 KiB
Python
98 lines
2.7 KiB
Python
load("//tools/bzl:genrule2.bzl", "genrule2")
|
|
load(
|
|
"//tools/bzl:gwt.bzl",
|
|
"GWT_PLUGIN_DEPS",
|
|
"GWT_PLUGIN_DEPS_NEVERLINK",
|
|
"GWT_TRANSITIVE_DEPS",
|
|
"GWT_COMPILER_ARGS",
|
|
"PLUGIN_DEPS_NEVERLINK",
|
|
"GWT_JVM_ARGS",
|
|
"gwt_binary",
|
|
)
|
|
|
|
PLUGIN_DEPS = ["//gerrit-plugin-api:lib"]
|
|
|
|
PLUGIN_TEST_DEPS = [
|
|
"//gerrit-acceptance-framework:lib",
|
|
"//lib/bouncycastle:bcpg",
|
|
"//lib/bouncycastle:bcpkix",
|
|
"//lib/bouncycastle:bcprov",
|
|
]
|
|
|
|
def gerrit_plugin(
|
|
name,
|
|
deps = [],
|
|
provided_deps = [],
|
|
srcs = [],
|
|
gwt_module = [],
|
|
resources = [],
|
|
manifest_entries = [],
|
|
target_suffix = "",
|
|
**kwargs):
|
|
native.java_library(
|
|
name = name + '__plugin',
|
|
srcs = srcs,
|
|
resources = resources,
|
|
deps = provided_deps + deps + GWT_PLUGIN_DEPS_NEVERLINK + PLUGIN_DEPS_NEVERLINK,
|
|
visibility = ['//visibility:public'],
|
|
**kwargs
|
|
)
|
|
|
|
static_jars = []
|
|
if gwt_module:
|
|
static_jars = [':%s-static' % name]
|
|
|
|
native.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'],
|
|
**kwargs
|
|
)
|
|
|
|
if gwt_module:
|
|
native.java_library(
|
|
name = name + '__gwt_module',
|
|
resources = depset(srcs + resources).to_list(),
|
|
runtime_deps = deps + GWT_PLUGIN_DEPS,
|
|
visibility = ['//visibility:public'],
|
|
**kwargs
|
|
)
|
|
genrule2(
|
|
name = '%s-static' % name,
|
|
cmd = ' && '.join([
|
|
'mkdir -p $$TMP/static',
|
|
'unzip -qd $$TMP/static $(location %s__gwt_application)' % name,
|
|
'cd $$TMP',
|
|
'zip -qr $$ROOT/$@ .']),
|
|
tools = [':%s__gwt_application' % name],
|
|
outs = ['%s-static.jar' % name],
|
|
)
|
|
gwt_binary(
|
|
name = name + '__gwt_application',
|
|
module = [gwt_module],
|
|
deps = GWT_PLUGIN_DEPS + GWT_TRANSITIVE_DEPS + ['//lib/gwt:dev'],
|
|
module_deps = [':%s__gwt_module' % name],
|
|
compiler_args = GWT_COMPILER_ARGS,
|
|
jvm_args = GWT_JVM_ARGS,
|
|
)
|
|
|
|
# TODO(davido): Remove manual merge of manifest file when this feature
|
|
# request is implemented: https://github.com/bazelbuild/bazel/issues/2009
|
|
genrule2(
|
|
name = name + target_suffix,
|
|
stamp = 1,
|
|
srcs = ['%s__non_stamped_deploy.jar' % name],
|
|
cmd = " && ".join([
|
|
"GEN_VERSION=$$(cat bazel-out/stable-status.txt | grep -w STABLE_BUILD_%s_LABEL | cut -d ' ' -f 2)" % name.upper(),
|
|
"cd $$TMP",
|
|
"unzip -q $$ROOT/$<",
|
|
"echo \"Implementation-Version: $$GEN_VERSION\n$$(cat META-INF/MANIFEST.MF)\" > META-INF/MANIFEST.MF",
|
|
"zip -qr $$ROOT/$@ ."]),
|
|
outs = ['%s%s.jar' % (name, target_suffix)],
|
|
visibility = ['//visibility:public'],
|
|
)
|