adding azul openjdk 10 to all images (#144)
* adding azul openjdk 10 to all images
* add the binary packages to the images and file existence +
version tests (same as currently pinned in bazel repo)
* add srcs for openJDK to images
* add new runtimes for jdk10 to ubuntu1604 and debian8 latest configs
diff --git a/configs/debian8_clang/0.3.0/BUILD b/configs/debian8_clang/0.3.0/BUILD
index b576449..d189dba 100644
--- a/configs/debian8_clang/0.3.0/BUILD
+++ b/configs/debian8_clang/0.3.0/BUILD
@@ -14,12 +14,23 @@
package(default_visibility = ["//visibility:public"])
+load(
+ "//third_party/openjdk:revision.bzl",
+ "JDK_VERSION",
+)
+
java_runtime(
name = "jdk8",
srcs = [],
java_home = "/usr/lib/jvm/java-8-openjdk-amd64",
)
+java_runtime(
+ name = "jdk10",
+ srcs = [],
+ java_home = "/usr/lib/jvm/zulu" + JDK_VERSION + "-linux_x64-allmodules",
+)
+
# Latest RBE Debian8 container.
# Update every time when a new container is released.
alias(
diff --git a/configs/ubuntu16_04_clang/1.0/BUILD b/configs/ubuntu16_04_clang/1.0/BUILD
index 0d911b8..27ce5df 100644
--- a/configs/ubuntu16_04_clang/1.0/BUILD
+++ b/configs/ubuntu16_04_clang/1.0/BUILD
@@ -14,12 +14,23 @@
package(default_visibility = ["//visibility:public"])
+load(
+ "//third_party/openjdk:revision.bzl",
+ "JDK_VERSION",
+)
+
java_runtime(
name = "jdk8",
srcs = [],
java_home = "/usr/lib/jvm/java-8-openjdk-amd64",
)
+java_runtime(
+ name = "jdk10",
+ srcs = [],
+ java_home = "/usr/lib/jvm/zulu" + JDK_VERSION + "-linux_x64-allmodules",
+)
+
# Latest RBE Ubuntu16_04 container
# Update every time when a new container is released.
alias(
diff --git a/container/common/BUILD b/container/common/BUILD
index 4596d46..badda5a 100644
--- a/container/common/BUILD
+++ b/container/common/BUILD
@@ -26,6 +26,11 @@
"//third_party/golang:revision.bzl",
"GOLANG_REVISION",
)
+load(
+ "//third_party/openjdk:revision.bzl",
+ "JDK_VERSION",
+ "JDK_VERSION_DECODED",
+)
genrule(
name = "generate_clang_yaml",
@@ -40,3 +45,12 @@
outs = ["go.yaml"],
cmd = "sed 's|{_GOLANG_REVISION}|" + GOLANG_REVISION + "|' <$< >$@",
)
+
+genrule(
+ name = "generate_java_yaml",
+ srcs = ["java.yaml.tpl"],
+ outs = ["java.yaml"],
+ cmd = (
+ "sed 's|{_JDK_VERSION}|" + JDK_VERSION + "|g; s|{_JDK_VERSION_DECODED}|" + JDK_VERSION_DECODED + "|g' <$< >$@"
+ ),
+)
diff --git a/container/common/java.yaml b/container/common/java.yaml
deleted file mode 100644
index b45e0c1..0000000
--- a/container/common/java.yaml
+++ /dev/null
@@ -1,22 +0,0 @@
-schemaVersion: "2.0.0"
-
-commandTests:
-- name: 'java-version'
- command: 'java'
- args: ['-version']
- # java outputs to stderr.
- expectedError: ["openjdk version \"1.8.*"]
-- name: 'check-openssl'
- command: 'openssl'
- args: ['version']
- expectedOutput: ['OpenSSL .*']
-
-fileExistenceTests:
-- name: 'OpenJDK'
- path: '/usr/lib/jvm/java-8-openjdk-amd64'
- shouldExist: true
-
-metadataTest:
- env:
- - key: 'JAVA_HOME'
- value: '/usr/lib/jvm/java-8-openjdk-amd64'
diff --git a/container/common/java.yaml.tpl b/container/common/java.yaml.tpl
new file mode 100644
index 0000000..cfff8b6
--- /dev/null
+++ b/container/common/java.yaml.tpl
@@ -0,0 +1,33 @@
+schemaVersion: "2.0.0"
+
+commandTests:
+- name: 'java-version'
+ command: 'java'
+ args: ['-version']
+ # java outputs to stderr.
+ expectedError: ["openjdk version \"1.8.*"]
+- name: 'java10-version'
+ command: '/usr/lib/jvm/zulu{_JDK_VERSION_DECODED}-linux_x64-allmodules/bin/java'
+ args: ['-version']
+ # java outputs to stderr.
+ expectedError: ["openjdk version \"10.*"]
+- name: 'check-openssl'
+ command: 'openssl'
+ args: ['version']
+ expectedOutput: ['OpenSSL .*']
+
+fileExistenceTests:
+- name: 'OpenJDK'
+ path: '/usr/lib/jvm/java-8-openjdk-amd64'
+ shouldExist: true
+- name: 'OpenJDK 10'
+ path: '/usr/lib/jvm/zulu{_JDK_VERSION_DECODED}-linux_x64-allmodules'
+ shouldExist: true
+- name: 'OpenJDK 10 srcs'
+ path: '/usr/src/jdk/zsrc{_JDK_VERSION}.zip'
+ shouldExist: true
+
+metadataTest:
+ env:
+ - key: 'JAVA_HOME'
+ value: '/usr/lib/jvm/java-8-openjdk-amd64'
diff --git a/container/debian8/builders/rbe-debian8/BUILD b/container/debian8/builders/rbe-debian8/BUILD
index a0c9d32..1c76b34 100644
--- a/container/debian8/builders/rbe-debian8/BUILD
+++ b/container/debian8/builders/rbe-debian8/BUILD
@@ -64,6 +64,7 @@
"//container/debian8/layers/clang:clang-ltl",
"//container/debian8/layers/go:go-ltl",
"//container/debian8/layers/java:java-ltl",
+ "//container/debian8/layers/java:java10-ltl",
"//container/debian8/layers/python:python-ltl",
],
)
diff --git a/container/debian8/layers/java/BUILD b/container/debian8/layers/java/BUILD
index f564a16..e2da70e 100644
--- a/container/debian8/layers/java/BUILD
+++ b/container/debian8/layers/java/BUILD
@@ -47,3 +47,12 @@
"/usr/bin/java": "/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java",
},
)
+
+language_tool_layer(
+ name = "java10-ltl",
+ base = "@debian8//image",
+ tars = [
+ "//third_party/openjdk:open_jdk_tar",
+ "//third_party/openjdk:open_jdk_src_tar",
+ ],
+)
diff --git a/container/experimental/rbe-debian9/BUILD b/container/experimental/rbe-debian9/BUILD
index 03e03d6..cf819e1 100644
--- a/container/experimental/rbe-debian9/BUILD
+++ b/container/experimental/rbe-debian9/BUILD
@@ -55,6 +55,7 @@
"clang-ltl",
"go-ltl",
"java-ltl",
+ "java10-ltl",
"python-ltl",
],
)
@@ -127,6 +128,15 @@
)
language_tool_layer(
+ name = "java10-ltl",
+ base = "@debian9//image",
+ tars = [
+ "//third_party/openjdk:open_jdk_tar",
+ "//third_party/openjdk:open_jdk_src_tar",
+ ],
+)
+
+language_tool_layer(
name = "python-ltl",
additional_repos = [
"deb http://httpredir.debian.org/debian testing main",
diff --git a/container/ubuntu16_04/builders/bazel/BUILD b/container/ubuntu16_04/builders/bazel/BUILD
index 8926dd4..63fd334 100644
--- a/container/ubuntu16_04/builders/bazel/BUILD
+++ b/container/ubuntu16_04/builders/bazel/BUILD
@@ -37,6 +37,7 @@
language_layers = [
"//container/ubuntu16_04/layers/clang:clang-ltl",
"//container/ubuntu16_04/layers/java:java-ltl",
+ "//container/ubuntu16_04/layers/java:java10-ltl",
"//container/ubuntu16_04/layers/python:python-ltl",
"//container/ubuntu16_04/layers/bazel:bazel-tools",
"//container/ubuntu16_04/layers/bazel:bazel_%s-ltl" % bazel_version,
diff --git a/container/ubuntu16_04/builders/bazel_docker_gcloud/BUILD b/container/ubuntu16_04/builders/bazel_docker_gcloud/BUILD
index 5120013..db218e6 100644
--- a/container/ubuntu16_04/builders/bazel_docker_gcloud/BUILD
+++ b/container/ubuntu16_04/builders/bazel_docker_gcloud/BUILD
@@ -37,6 +37,7 @@
language_layers = [
"//container/ubuntu16_04/layers/clang:clang-ltl",
"//container/ubuntu16_04/layers/java:java-ltl",
+ "//container/ubuntu16_04/layers/java:java10-ltl",
"//container/ubuntu16_04/layers/python:python-ltl",
"//container/ubuntu16_04/layers/bazel:bazel-tools",
"//container/ubuntu16_04/layers/bazel:bazel_%s-ltl" % bazel_version,
diff --git a/container/ubuntu16_04/builders/rbe-ubuntu16_04/BUILD b/container/ubuntu16_04/builders/rbe-ubuntu16_04/BUILD
index 29c6f6e..23e7cb5 100644
--- a/container/ubuntu16_04/builders/rbe-ubuntu16_04/BUILD
+++ b/container/ubuntu16_04/builders/rbe-ubuntu16_04/BUILD
@@ -66,6 +66,7 @@
"//container/ubuntu16_04/layers/clang:clang-ltl",
"//container/ubuntu16_04/layers/go:go-ltl",
"//container/ubuntu16_04/layers/java:java-ltl",
+ "//container/ubuntu16_04/layers/java:java10-ltl",
"//container/ubuntu16_04/layers/python:python-ltl",
],
)
diff --git a/container/ubuntu16_04/layers/java/BUILD b/container/ubuntu16_04/layers/java/BUILD
index f6435a4..de95efc 100644
--- a/container/ubuntu16_04/layers/java/BUILD
+++ b/container/ubuntu16_04/layers/java/BUILD
@@ -44,3 +44,12 @@
"/usr/bin/java": "/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java",
},
)
+
+language_tool_layer(
+ name = "java10-ltl",
+ base = "@ubuntu16_04//image",
+ tars = [
+ "//third_party/openjdk:open_jdk_tar",
+ "//third_party/openjdk:open_jdk_src_tar",
+ ],
+)
diff --git a/repositories/repositories.bzl b/repositories/repositories.bzl
index 0aaa122..26d66f4 100644
--- a/repositories/repositories.bzl
+++ b/repositories/repositories.bzl
@@ -36,6 +36,12 @@
"UBUNTU16_04_LIBCXX_SHA256",
)
load(
+ "//third_party/openjdk:revision.bzl",
+ "JDK_VERSION",
+ "OPENJDK_SHA256",
+ "OPENJDK_SRC_SHA256",
+)
+load(
"//container/ubuntu16_04/layers/bazel:version.bzl",
"BAZEL_VERSION_SHA256S",
)
@@ -176,3 +182,18 @@
"https://github.com/bazelbuild/bazel/releases/download/" + bazel_version + "/bazel-" + bazel_version + "-installer-linux-x86_64.sh",
],
)
+
+ # ============================ Azul OpenJDK packages ============================
+ if "azul_open_jdk" not in excludes:
+ native.http_file(
+ name = "azul_open_jdk",
+ sha256 = OPENJDK_SHA256,
+ urls = ["https://mirror.bazel.build/openjdk/azul-zulu" + JDK_VERSION + "/zulu" + JDK_VERSION + "-linux_x64-allmodules.tar.gz"],
+ )
+
+ if "azul_open_jdk_src" not in excludes:
+ native.http_file(
+ name = "azul_open_jdk_src",
+ sha256 = OPENJDK_SRC_SHA256,
+ urls = ["https://mirror.bazel.build/openjdk/azul-zulu" + JDK_VERSION + "/zsrc" + JDK_VERSION + ".zip"],
+ )
diff --git a/third_party/openjdk/BUILD b/third_party/openjdk/BUILD
new file mode 100644
index 0000000..5b5c0be
--- /dev/null
+++ b/third_party/openjdk/BUILD
@@ -0,0 +1,44 @@
+# Copyright 2017 The Bazel Authors. All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# This BUILD file is used for installing clang.tar.gz into /usr/local
+# of debian8-clang-fully-loaded container. The clang.tar.gz file was
+# downloaded by gsutil_cp rule in the WORKSPACE file, and contains
+# the same compiled clang binary as in
+# https://console.cloud.google.com/launcher/details/google/clang-debian8
+
+licenses(["notice"]) # Apache 2.0
+
+package(default_visibility = ["//visibility:public"])
+
+load("@bazel_tools//tools/build_defs/pkg:pkg.bzl", "pkg_tar")
+
+pkg_tar(
+ name = "open_jdk_tar",
+ package_dir = "/usr/lib/jvm/",
+ strip_prefix = ".",
+ tags = ["manual"],
+ deps = [
+ "@azul_open_jdk//file",
+ ],
+)
+
+pkg_tar(
+ name = "open_jdk_src_tar",
+ srcs = [
+ "@azul_open_jdk_src//file",
+ ],
+ package_dir = "/usr/src/jdk/",
+ tags = ["manual"],
+)
diff --git a/third_party/openjdk/revision.bzl b/third_party/openjdk/revision.bzl
new file mode 100644
index 0000000..bdefd5b
--- /dev/null
+++ b/third_party/openjdk/revision.bzl
@@ -0,0 +1,10 @@
+JDK_VERSION = "10.2%2B3-jdk10.0.1"
+
+# JDK version 10 includes a '+' sign, so we need to keep track of the
+# version with both encodings for the java.yaml test.
+# TODO: remove for future versions of Java that do not need it
+JDK_VERSION_DECODED = "10.2+3-jdk10.0.1"
+
+OPENJDK_SHA256 = "57fad3602e74c79587901d6966d3b54ef32cb811829a2552163185d5064fe9b5"
+
+OPENJDK_SRC_SHA256 = "0ab6c7a1a8fc32992bcec4d7c77a587c02b8816f67bcb7d16154a60de2dce8a4"