Skip to content

Commit 6d77c38

Browse files
committed
Add build information to the manifest of the standalone server
Apparently SauceLabs need this. Hopefully it properly duplicates the information in the `build.properties` file, which is where Selenium itself figures out where its version is. I'd expect these values to get out of sync unless care is taken to maintain them being the same.
1 parent 5f4d818 commit 6d77c38

File tree

4 files changed

+92
-3
lines changed

4 files changed

+92
-3
lines changed

java/client/src/org/openqa/selenium/BUILD.bazel

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,12 @@ javadoc(
8888
java_import(
8989
name = "manifest",
9090
jars = [
91+
":manifest-entries",
9192
":manifest-jar",
9293
],
94+
visibility = [
95+
"//java/server/src/org/openqa/selenium/grid:__pkg__",
96+
]
9397
)
9498

9599
genrule(
@@ -119,3 +123,41 @@ genrule(
119123
"@bazel_tools//tools/zip:zipper",
120124
],
121125
)
126+
127+
genrule(
128+
name = "manifest-entries",
129+
outs = [
130+
"manifest-entries.jar",
131+
],
132+
cmd = select({
133+
"//common:stamp": """
134+
mkdir META-INF &&
135+
echo Manifest-Version: 1.0 >META-INF/MANIFEST.MF &&
136+
echo "" >>META-INF/MANIFEST.MF &&
137+
echo "" >>META-INF/MANIFEST.MF &&
138+
echo Name: Build-Info >>META-INF/MANIFEST.MF &&
139+
echo Selenium-Version: %s >>META-INF/MANIFEST.MF &&
140+
echo Build-Revision: $$(grep GIT_REVISION bazel-out/stable-status.txt | cut -d' ' -f 2) >>META-INF/MANIFEST.MF &&
141+
echo Build-Time: $$(date) >>META-INF/MANIFEST.MF &&
142+
$(location @bazel_tools//tools/zip:zipper) c $@ META-INF/MANIFEST.MF
143+
""" % SE_VERSION,
144+
"//conditions:default": """
145+
mkdir META-INF &&
146+
echo Manifest-Version: 1.0 >META-INF/MANIFEST.MF &&
147+
echo "" >>META-INF/MANIFEST.MF &&
148+
echo "" >>META-INF/MANIFEST.MF &&
149+
echo Name: Build-Info >>META-INF/MANIFEST.MF &&
150+
echo Selenium-Version: %s >>META-INF/MANIFEST.MF &&
151+
echo Build-Revision: Unknown >>META-INF/MANIFEST.MF &&
152+
echo Build-Time: Wed Jan 3 21:49:10 2007 +0000 >>META-INF/MANIFEST.MF &&
153+
$(location @bazel_tools//tools/zip:zipper) c $@ META-INF/MANIFEST.MF
154+
""" % SE_VERSION,
155+
}),
156+
stamp = select({
157+
"//common:stamp": True,
158+
"//conditions:default": False,
159+
}),
160+
tools = [
161+
"@bazel_tools//tools/zip:zipper",
162+
],
163+
)

java/defs.bzl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ load(
66
load("@rules_jvm_external//:defs.bzl", _artifact = "artifact", _javadoc = "javadoc")
77
load("//java/private:dist_zip.bzl", _java_dist_zip = "java_dist_zip")
88
load("//java/private:library.bzl", _java_export = "java_export", _java_library = "java_library", _java_test = "java_test")
9+
load("//java/private:merge_jars.bzl", _merge_jars = "merge_jars")
910
load("//java/private:module.bzl", _java_module = "java_module")
1011
load("//java/private:selenium_test.bzl", _selenium_test = "selenium_test")
1112
load("//java/private:spotbugs_config.bzl", _spotbugs_config = "spotbugs_config")
@@ -22,5 +23,6 @@ java_selenium_test_suite = _java_selenium_test_suite
2223
java_test = _java_test
2324
java_test_suite = _java_test_suite
2425
javadoc = _javadoc
26+
merge_jars = _merge_jars
2527
selenium_test = _selenium_test
2628
spotbugs_config = _spotbugs_config

java/private/merge_jars.bzl

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
2+
def _merge_jars_impl(ctx):
3+
out = ctx.actions.declare_file("%s.jar" % ctx.label.name)
4+
5+
args = ctx.actions.args()
6+
args.add("--output", out)
7+
args.add_all(ctx.files.inputs, before_each = "--sources")
8+
9+
ctx.actions.run(
10+
mnemonic = "MergeJars",
11+
executable = ctx.executable._merge_jars,
12+
inputs = ctx.files.inputs,
13+
outputs = [out],
14+
arguments = [args],
15+
)
16+
17+
return [
18+
DefaultInfo(files = depset([out]))
19+
]
20+
21+
merge_jars = rule(
22+
_merge_jars_impl,
23+
attrs = {
24+
"inputs": attr.label_list(
25+
mandatory = True,
26+
allow_files = True,
27+
),
28+
"_merge_jars": attr.label(
29+
executable = True,
30+
cfg = "exec",
31+
default = "@rules_jvm_external//private/tools/java/rules/jvm/external/jar:MergeJars",
32+
),
33+
"_java_toolchain": attr.label(
34+
default = "@bazel_tools//tools/jdk:current_java_toolchain",
35+
),
36+
},
37+
)

java/server/src/org/openqa/selenium/grid/BUILD.bazel

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
load("@rules_jvm_external//:defs.bzl", "artifact")
22
load("//common:defs.bzl", "copy_file")
3-
load("//java:defs.bzl", "java_binary", "java_dist_zip", "java_export", "java_library", "javadoc")
3+
load("//java:defs.bzl", "java_binary", "java_dist_zip", "java_export", "java_library", "javadoc", "merge_jars")
44
load("//java:version.bzl", "SE_VERSION")
55
load("//java/client/src/org/openqa/selenium/devtools:versions.bzl", "CDP_DEPS")
66

77
genrule(
88
name = "executable-grid",
99
srcs = [
1010
"zip-preamble.sh",
11-
":selenium_server_deploy.jar",
11+
":add-build-info",
1212
],
1313
outs = ["selenium"],
14-
cmd = "cat $(location :zip-preamble.sh) $(location :selenium_server_deploy.jar) > $@",
14+
cmd = "cat $(location :zip-preamble.sh) $(location :add-build-info) > $@",
1515
executable = True,
1616
visibility = [
1717
"//:__pkg__",
@@ -90,6 +90,14 @@ java_export(
9090
],
9191
)
9292

93+
merge_jars(
94+
name = "add-build-info",
95+
inputs = [
96+
":selenium_server_deploy.jar",
97+
"//java/client/src/org/openqa/selenium:manifest",
98+
],
99+
)
100+
93101
java_binary(
94102
name = "selenium_server",
95103
main_class = "org.openqa.selenium.grid.Bootstrap",

0 commit comments

Comments
 (0)