blob: d445be27328af2ff9e87a74cfdac465222055e4c [file] [log] [blame]
David Ostrovsky20c2fd42019-08-30 10:19:56 +02001load("@rules_java//java:defs.bzl", "java_binary", "java_library")
David Pursehouse2d085002016-12-11 19:00:10 +09002load("//tools/bzl:genrule2.bzl", "genrule2")
Christian Aistleitner2d9a44d2020-05-29 16:41:01 +02003load("//:version.bzl", "GERRIT_VERSION")
David Ostrovskyc48e6c92016-09-22 16:13:50 +02004
David Ostrovsky0fbbf202020-06-22 09:15:01 +02005IN_TREE_BUILD_MODE = True
6
David Ostrovsky32c69332017-08-24 22:10:33 +02007PLUGIN_DEPS = ["//plugins:plugin-lib"]
Dave Borowitz070df0f2017-11-03 09:14:02 -04008
David Ostrovsky32c69332017-08-24 22:10:33 +02009PLUGIN_DEPS_NEVERLINK = ["//plugins:plugin-lib-neverlink"]
David Ostrovsky5d869ef2016-12-10 12:40:41 +010010
David Ostrovskyc5f80662017-04-06 20:25:25 +020011PLUGIN_TEST_DEPS = [
David Ostrovsky0cccfe12017-08-24 09:12:34 +020012 "//java/com/google/gerrit/acceptance:lib",
David Ostrovskyc5f80662017-04-06 20:25:25 +020013 "//lib/bouncycastle:bcpg",
14 "//lib/bouncycastle:bcpkix",
15 "//lib/bouncycastle:bcprov",
16]
David Ostrovsky5d869ef2016-12-10 12:40:41 +010017
David Ostrovskyc48e6c92016-09-22 16:13:50 +020018def gerrit_plugin(
Han-Wen Nienhuysa667b4c2018-07-10 11:51:36 +020019 name,
20 deps = [],
21 provided_deps = [],
22 srcs = [],
Han-Wen Nienhuysa667b4c2018-07-10 11:51:36 +020023 resources = [],
24 manifest_entries = [],
25 dir_name = None,
26 target_suffix = "",
David Ostrovskyf16119c2020-01-17 17:16:25 +010027 deploy_env = [],
Han-Wen Nienhuysa667b4c2018-07-10 11:51:36 +020028 **kwargs):
David Ostrovsky20c2fd42019-08-30 10:19:56 +020029 java_library(
Han-Wen Nienhuysa667b4c2018-07-10 11:51:36 +020030 name = name + "__plugin",
31 srcs = srcs,
32 resources = resources,
David Ostrovsky7163dac2017-07-29 06:49:38 +020033 deps = provided_deps + deps + PLUGIN_DEPS_NEVERLINK,
Han-Wen Nienhuysa667b4c2018-07-10 11:51:36 +020034 visibility = ["//visibility:public"],
35 **kwargs
David Ostrovsky2502fab2016-11-15 14:30:26 -080036 )
37
Han-Wen Nienhuysa667b4c2018-07-10 11:51:36 +020038 static_jars = []
Han-Wen Nienhuysa667b4c2018-07-10 11:51:36 +020039
40 if not dir_name:
41 dir_name = name
42
David Ostrovsky20c2fd42019-08-30 10:19:56 +020043 java_binary(
Han-Wen Nienhuysa667b4c2018-07-10 11:51:36 +020044 name = "%s__non_stamped" % name,
Christian Aistleitner12a2da72020-05-29 20:14:06 +020045 deploy_manifest_lines = manifest_entries + [
46 "Gerrit-ApiType: plugin",
47 "Gerrit-ApiVersion: " + GERRIT_VERSION,
48 ],
Han-Wen Nienhuysa667b4c2018-07-10 11:51:36 +020049 main_class = "Dummy",
50 runtime_deps = [
51 ":%s__plugin" % name,
52 ] + static_jars,
David Ostrovskyf16119c2020-01-17 17:16:25 +010053 deploy_env = deploy_env,
Han-Wen Nienhuysa667b4c2018-07-10 11:51:36 +020054 visibility = ["//visibility:public"],
55 **kwargs
56 )
57
Han-Wen Nienhuysa667b4c2018-07-10 11:51:36 +020058 # TODO(davido): Remove manual merge of manifest file when this feature
59 # request is implemented: https://github.com/bazelbuild/bazel/issues/2009
David Ostrovsky88483ed2020-02-15 09:41:59 +010060 # TODO(davido): Remove manual touch command when this issue is resolved:
61 # https://github.com/bazelbuild/bazel/issues/10789
Han-Wen Nienhuysa667b4c2018-07-10 11:51:36 +020062 genrule2(
63 name = name + target_suffix,
64 stamp = 1,
65 srcs = ["%s__non_stamped_deploy.jar" % name],
66 cmd = " && ".join([
David Ostrovsky88483ed2020-02-15 09:41:59 +010067 "TZ=UTC",
68 "export TZ",
Han-Wen Nienhuysa667b4c2018-07-10 11:51:36 +020069 "GEN_VERSION=$$(cat bazel-out/stable-status.txt | grep -w STABLE_BUILD_%s_LABEL | cut -d ' ' -f 2)" % dir_name.upper(),
70 "cd $$TMP",
Thomas Draebing94078802020-07-07 11:00:34 +020071 "unzip -qo $$ROOT/$<",
Christian Aistleitner12a2da72020-05-29 20:14:06 +020072 "echo \"Implementation-Version: $$GEN_VERSION\n$$(cat META-INF/MANIFEST.MF)\" > META-INF/MANIFEST.MF",
David Ostrovsky88483ed2020-02-15 09:41:59 +010073 "find . -exec touch '{}' ';'",
74 "zip -Xqr $$ROOT/$@ .",
Han-Wen Nienhuysa667b4c2018-07-10 11:51:36 +020075 ]),
76 outs = ["%s%s.jar" % (name, target_suffix)],
77 visibility = ["//visibility:public"],
78 )