Enforce build with Java 11 for all by default
- Build with JDK11 and language levels (source and target) are now
enforced in .bazelrc, which depends on our own Java toolchain (defined
in tools/build/bazel/BUILD)
- Easymock bumped to v4.0.2 with support for Java 11 (minor API changes)
- The minimum required Bazel version is now 0.27.*
Change-Id: I0bb6dfe7fc1ea134b5a53dd249c369d58259688c
diff --git a/.bazelrc b/.bazelrc
index 64f85c8..266386a 100644
--- a/.bazelrc
+++ b/.bazelrc
@@ -1,12 +1,16 @@
-# Build options to use JDK 11
-# build --incompatible_use_jdk11_as_host_javabase
-# build --javabase=@bazel_tools//tools/jdk:remote_jdk11
-# build --host_javabase=@bazel_tools//tools/jdk:remote_jdk11
-# build --host_java_toolchain=@bazel_tools//tools/jdk:toolchain_vanilla
-# build --java_toolchain=@bazel_tools//tools/jdk:toolchain_vanilla
-
+build --javabase=@bazel_tools//tools/jdk:remote_jdk11
+build --host_javabase=@bazel_tools//tools/jdk:remote_jdk11
+build --java_toolchain=@org_onosproject_onos//tools/build/bazel:default_toolchain
+build --host_java_toolchain=@org_onosproject_onos//tools/build/bazel:default_toolchain
build --nouse_ijars
build --experimental_strict_action_env
+
+# io_bazel_rules_go needs this
+build --incompatible_disable_deprecated_attr_params=false
+# intellij-bazel plugin needs this
+build --incompatible_depset_is_not_iterable=false
+build --incompatible_new_actions_api=false
+
test --test_summary=terse
test --test_output=errors
test --test_verbose_timeout_warnings
diff --git a/WORKSPACE b/WORKSPACE
index aeadecc..c03b7d3 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -117,10 +117,18 @@
# See https://github.com/bazelbuild/rules_go for the up to date setup instructions.
http_archive(
name = "io_bazel_rules_go",
- sha256 = "b7a62250a3a73277ade0ce306d22f122365b513f5402222403e507f2f997d421",
- url = "https://github.com/bazelbuild/rules_go/releases/download/0.16.3/rules_go-0.16.3.tar.gz",
+ sha256 = "f04d2373bcaf8aa09bccb08a98a57e721306c8f6043a2a0ee610fd6853dcde3d",
+ urls = [
+ "https://github.com/bazelbuild/rules_go/releases/download/0.18.6/rules_go-0.18.6.tar.gz",
+ ],
)
+load("@io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies")
+
+go_rules_dependencies()
+
+go_register_toolchains()
+
http_archive(
name = "com_github_bazelbuild_buildtools",
sha256 = "e0b5b400cfef17d65886365dc7289cb4ef8dfe07066165607413a271a32aa2a4",
@@ -128,11 +136,6 @@
url = "https://github.com/bazelbuild/buildtools/archive/db073457c5a56d810e46efc18bb93a4fd7aa7b5e.zip",
)
-load("@io_bazel_rules_go//go:def.bzl", "go_register_toolchains", "go_rules_dependencies")
load("@com_github_bazelbuild_buildtools//buildifier:deps.bzl", "buildifier_dependencies")
-go_rules_dependencies()
-
-go_register_toolchains()
-
buildifier_dependencies()
diff --git a/core/store/dist/src/test/java/org/onosproject/store/device/impl/GossipDeviceStoreTest.java b/core/store/dist/src/test/java/org/onosproject/store/device/impl/GossipDeviceStoreTest.java
index 8a31446..f565f0a 100644
--- a/core/store/dist/src/test/java/org/onosproject/store/device/impl/GossipDeviceStoreTest.java
+++ b/core/store/dist/src/test/java/org/onosproject/store/device/impl/GossipDeviceStoreTest.java
@@ -390,9 +390,9 @@
DeviceDescription description =
new DefaultDeviceDescription(DID1.uri(), SWITCH, MFR,
HW, SW1, SN, CID);
- Capture<InternalDeviceEvent> message = new Capture<>();
- Capture<MessageSubject> subject = new Capture<>();
- Capture<Function<InternalDeviceEvent, byte[]>> encoder = new Capture<>();
+ Capture<InternalDeviceEvent> message = Capture.newInstance();
+ Capture<MessageSubject> subject = Capture.newInstance();
+ Capture<Function<InternalDeviceEvent, byte[]>> encoder = Capture.newInstance();
resetCommunicatorExpectingSingleBroadcast(message, subject, encoder);
DeviceEvent event = deviceStore.createOrUpdateDevice(PID, DID1, description);
@@ -423,11 +423,11 @@
DeviceDescription description =
new DefaultDeviceDescription(DID1.uri(), SWITCH, MFR,
HW, SW1, SN, CID, A2);
- Capture<ClusterMessage> bcast = new Capture<>();
+ Capture<ClusterMessage> bcast = Capture.newInstance();
- Capture<InternalDeviceEvent> message = new Capture<>();
- Capture<MessageSubject> subject = new Capture<>();
- Capture<Function<InternalDeviceEvent, byte[]>> encoder = new Capture<>();
+ Capture<InternalDeviceEvent> message = Capture.newInstance();
+ Capture<MessageSubject> subject = Capture.newInstance();
+ Capture<Function<InternalDeviceEvent, byte[]>> encoder = Capture.newInstance();
resetCommunicatorExpectingSingleBroadcast(message, subject, encoder);
DeviceEvent event = deviceStore.createOrUpdateDevice(PIDA, DID1, description);
@@ -497,9 +497,9 @@
putDevice(DID1, SW1);
assertTrue(deviceStore.isAvailable(DID1));
- Capture<InternalDeviceEvent> message = new Capture<>();
- Capture<MessageSubject> subject = new Capture<>();
- Capture<Function<InternalDeviceEvent, byte[]>> encoder = new Capture<>();
+ Capture<InternalDeviceEvent> message = Capture.newInstance();
+ Capture<MessageSubject> subject = Capture.newInstance();
+ Capture<Function<InternalDeviceEvent, byte[]>> encoder = Capture.newInstance();
resetCommunicatorExpectingSingleBroadcast(message, subject, encoder);
DeviceEvent event = deviceStore.markOffline(DID1);
@@ -525,9 +525,9 @@
DefaultPortDescription.builder().withPortNumber(P1).isEnabled(true).build(),
DefaultPortDescription.builder().withPortNumber(P2).isEnabled(true).build()
);
- Capture<InternalDeviceEvent> message = new Capture<>();
- Capture<MessageSubject> subject = new Capture<>();
- Capture<Function<InternalDeviceEvent, byte[]>> encoder = new Capture<>();
+ Capture<InternalDeviceEvent> message = Capture.newInstance();
+ Capture<MessageSubject> subject = Capture.newInstance();
+ Capture<Function<InternalDeviceEvent, byte[]>> encoder = Capture.newInstance();
resetCommunicatorExpectingSingleBroadcast(message, subject, encoder);
List<DeviceEvent> events = deviceStore.updatePorts(PID, DID1, pds);
@@ -611,9 +611,9 @@
);
deviceStore.updatePorts(PID, DID1, pds);
- Capture<InternalPortStatusEvent> message = new Capture<>();
- Capture<MessageSubject> subject = new Capture<>();
- Capture<Function<InternalPortStatusEvent, byte[]>> encoder = new Capture<>();
+ Capture<InternalPortStatusEvent> message = Capture.newInstance();
+ Capture<MessageSubject> subject = Capture.newInstance();
+ Capture<Function<InternalPortStatusEvent, byte[]>> encoder = Capture.newInstance();
resetCommunicatorExpectingSingleBroadcast(message, subject, encoder);
final DefaultPortDescription desc = DefaultPortDescription.builder().withPortNumber(P1)
@@ -637,9 +637,9 @@
);
deviceStore.updatePorts(PID, DID1, pds);
- Capture<InternalPortStatusEvent> message = new Capture<>();
- Capture<MessageSubject> subject = new Capture<>();
- Capture<Function<InternalPortStatusEvent, byte[]>> encoder = new Capture<>();
+ Capture<InternalPortStatusEvent> message = Capture.newInstance();
+ Capture<MessageSubject> subject = Capture.newInstance();
+ Capture<Function<InternalPortStatusEvent, byte[]>> encoder = Capture.newInstance();
// update port from primary
resetCommunicatorExpectingSingleBroadcast(message, subject, encoder);
@@ -817,9 +817,9 @@
assertAnnotationsEquals(deviceStore.getDevice(DID1).annotations(), A1);
assertAnnotationsEquals(deviceStore.getPort(DID1, P1).annotations(), A2);
- Capture<InternalDeviceEvent> message = new Capture<>();
- Capture<MessageSubject> subject = new Capture<>();
- Capture<Function<InternalDeviceEvent, byte[]>> encoder = new Capture<>();
+ Capture<InternalDeviceEvent> message = Capture.newInstance();
+ Capture<MessageSubject> subject = Capture.newInstance();
+ Capture<Function<InternalDeviceEvent, byte[]>> encoder = Capture.newInstance();
resetCommunicatorExpectingSingleBroadcast(message, subject, encoder);
diff --git a/lib/deps.json b/lib/deps.json
index 38aed00..b5e26f6 100644
--- a/lib/deps.json
+++ b/lib/deps.json
@@ -151,7 +151,7 @@
"commons-pool": "mvn:commons-pool:commons-pool:1.6",
"commons-text": "mvn:org.apache.commons:commons-text:1.3",
"concurrent-trees": "mvn:com.googlecode.concurrent-trees:concurrent-trees:2.6.1",
- "easymock": "mvn:org.easymock:easymock:3.6",
+ "easymock": "mvn:org.easymock:easymock:4.0.2",
"antlr": "mvn:antlr:antlr:2.7.7",
"ganymed-ssh2": "mvn:ch.ethz.ganymed:ganymed-ssh2:262",
"gmetric4j": "mvn:info.ganglia.gmetric4j:gmetric4j:1.0.10",
diff --git a/protocols/netconf/ctl/src/test/java/org/onosproject/netconf/ctl/impl/NetconfSshdTestSubsystem.java b/protocols/netconf/ctl/src/test/java/org/onosproject/netconf/ctl/impl/NetconfSshdTestSubsystem.java
index e10b82e..b8797b8 100644
--- a/protocols/netconf/ctl/src/test/java/org/onosproject/netconf/ctl/impl/NetconfSshdTestSubsystem.java
+++ b/protocols/netconf/ctl/src/test/java/org/onosproject/netconf/ctl/impl/NetconfSshdTestSubsystem.java
@@ -16,22 +16,6 @@
package org.onosproject.netconf.ctl.impl;
-import java.io.BufferedReader;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.PrintWriter;
-import java.io.UnsupportedEncodingException;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.EOFException;
-import java.nio.Buffer;
-import java.nio.ByteBuffer;
-import java.util.Collection;
-import java.util.Optional;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Future;
-import java.util.regex.Pattern;
-
import org.apache.commons.lang3.tuple.Pair;
import org.apache.sshd.common.NamedFactory;
import org.apache.sshd.common.util.threads.ThreadUtils;
@@ -45,6 +29,22 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.io.BufferedReader;
+import java.io.EOFException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.PrintWriter;
+import java.io.UnsupportedEncodingException;
+import java.nio.Buffer;
+import java.nio.ByteBuffer;
+import java.util.Collection;
+import java.util.Optional;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Future;
+import java.util.regex.Pattern;
+
/**
* Mocks a NETCONF Device to test the NETCONF Southbound Interface etc.
*
@@ -464,12 +464,17 @@
@Override
public void interrupt() {
+ destroy();
+ }
+
+ @Override
+ public void destroy() {
// if thread has not completed, cancel it
if ((pendingFuture != null) && (!pendingFuture.isDone())) {
boolean result = pendingFuture.cancel(true);
// TODO consider waiting some reasonable (?) amount of time for cancellation
if (log.isDebugEnabled()) {
- log.debug("interrupt() - cancel pending future=" + result);
+ log.debug("destroy() - cancel pending future=" + result);
}
}
@@ -478,8 +483,8 @@
if ((executors != null) && shutdownExecutor) {
Collection<Runnable> runners = executors.shutdownNow();
if (log.isDebugEnabled()) {
- log.debug("interrupt() - shutdown executor service - runners count=" +
- runners.size());
+ log.debug("destroy() - shutdown executor service - runners count=" +
+ runners.size());
}
}
@@ -487,7 +492,7 @@
if (!closed) {
if (log.isDebugEnabled()) {
- log.debug("interrupt() - mark as closed");
+ log.debug("destroy() - mark as closed");
}
closed = true;
diff --git a/tools/build/bazel/BUILD b/tools/build/bazel/BUILD
index d819d63..cf20246 100644
--- a/tools/build/bazel/BUILD
+++ b/tools/build/bazel/BUILD
@@ -1,3 +1,17 @@
+load("@bazel_tools//tools/jdk:default_java_toolchain.bzl", "default_java_toolchain")
+
+# This is where we define the language source and target values passed to javac
+# when building ONOS. This toolchain should be used when invoking bazel build
+# (see onos/.bazelrc)
+default_java_toolchain(
+ name = "default_toolchain",
+ source_version = "11",
+ target_version = "11",
+ visibility = [
+ "//visibility:public",
+ ],
+)
+
py_binary(
name = "osgi_feature_bundler",
srcs = ["osgi_feature_bundler.py"],
diff --git a/tools/build/bazel/bazel_version.bzl b/tools/build/bazel/bazel_version.bzl
index 49434bf..9a0046e 100644
--- a/tools/build/bazel/bazel_version.bzl
+++ b/tools/build/bazel/bazel_version.bzl
@@ -16,12 +16,12 @@
def check_bazel_version():
if "bazel_version" not in dir(native):
- fail("\nBazel version is too old; please use 0.23.* official release!\n\n")
+ fail("\nBazel version is too old; please use 0.27.* official release!\n\n")
elif not native.bazel_version:
- print("\nBazel is not a release version; please use 0.23.* official release!\n\n")
+ print("\nBazel is not a release version; please use 0.27.* official release!\n\n")
return
versions = native.bazel_version.split(".")
- if not int(versions[1]) >= 23:
- fail("\nBazel version %s is not supported; please use 0.23.* official release!\n\n" %
+ if not int(versions[1]) >= 27:
+ fail("\nBazel version %s is not supported; please use 0.27.* official release!\n\n" %
native.bazel_version)
diff --git a/tools/build/bazel/generate_workspace.bzl b/tools/build/bazel/generate_workspace.bzl
index c177993..086ebea 100644
--- a/tools/build/bazel/generate_workspace.bzl
+++ b/tools/build/bazel/generate_workspace.bzl
@@ -1,4 +1,4 @@
-# ***** This file was auto-generated at Wed, 29 May 2019 22:17:30 GMT. Do not edit this file manually. *****
+# ***** This file was auto-generated at Mon, 17 Jun 2019 19:13:01 GMT. Do not edit this file manually. *****
# ***** Use onos-lib-gen *****
load("//tools/build/bazel:variables.bzl", "ONOS_GROUP_ID", "ONOS_VERSION")
@@ -295,9 +295,9 @@
if "easymock" not in native.existing_rules():
java_import_external(
name = "easymock",
- jar_sha256 = "0557c9fa845c951bdbe3940b605346a212172c64328277428297ef1fc6308e8f",
+ jar_sha256 = "104370107ef64d115e642cbdc14cea438a8d076f5aee9a9cb7882dc9a8ed4123",
licenses = ["notice"],
- jar_urls = ["http://repo1.maven.org/maven2/org/easymock/easymock/3.6/easymock-3.6.jar"], )
+ jar_urls = ["http://repo1.maven.org/maven2/org/easymock/easymock/4.0.2/easymock-4.0.2.jar"], )
if "antlr" not in native.existing_rules():
java_import_external(
name = "antlr",
@@ -1353,7 +1353,7 @@
artifact_map["@commons_pool//:commons_pool"] = "mvn:commons-pool:commons-pool:jar:1.6"
artifact_map["@commons_text//:commons_text"] = "mvn:org.apache.commons:commons-text:jar:1.3"
artifact_map["@concurrent_trees//:concurrent_trees"] = "mvn:com.googlecode.concurrent-trees:concurrent-trees:jar:2.6.1"
-artifact_map["@easymock//:easymock"] = "mvn:org.easymock:easymock:jar:3.6"
+artifact_map["@easymock//:easymock"] = "mvn:org.easymock:easymock:jar:4.0.2"
artifact_map["@antlr//:antlr"] = "mvn:antlr:antlr:jar:NON-OSGI:2.7.7"
artifact_map["@ganymed_ssh2//:ganymed_ssh2"] = "mvn:ch.ethz.ganymed:ganymed-ssh2:jar:NON-OSGI:262"
artifact_map["@gmetric4j//:gmetric4j"] = "mvn:info.ganglia.gmetric4j:gmetric4j:jar:1.0.10"
diff --git a/tools/build/bazel/osgi_java_library.bzl b/tools/build/bazel/osgi_java_library.bzl
index 3720064..8296fcf 100644
--- a/tools/build/bazel/osgi_java_library.bzl
+++ b/tools/build/bazel/osgi_java_library.bzl
@@ -448,7 +448,7 @@
if import_packages == None:
import_packages = "*"
tests_name = name + "-tests"
- tests_jar_deps = list(depset(deps + test_deps)) + [name]
+ tests_jar_deps = depset(deps + test_deps).to_list() + [name]
all_test_deps = tests_jar_deps + [tests_name]
web_xml = _webapp()
diff --git a/tools/dev/bin/onos-gen-bazel-project b/tools/dev/bin/onos-gen-bazel-project
index 0c33da1..355193a 100755
--- a/tools/dev/bin/onos-gen-bazel-project
+++ b/tools/dev/bin/onos-gen-bazel-project
@@ -3,7 +3,7 @@
import subprocess
-JAVA_LANGUAGE_LEVEL = 8
+JAVA_LANGUAGE_LEVEL = 11
EXCLUDE_DIRECTORIES = (
"target",