From 9fe7f12543900a9998d3049d45b44d9cc27f1744 Mon Sep 17 00:00:00 2001 From: Carl Mastrangelo Date: Sun, 5 Apr 2020 15:35:59 -0700 Subject: [PATCH] all: add jdk8 and 14 builds Added support for building an running with jdk14 and 8. 14 requires building with bytecode for java 7, so the target level must be raised for testing. 8 does not support building java 9 classes, so must be disabled. These are mainly for testing. Release will still be built with JDK 11, which supports both. --- .travis.yml | 8 ++++++-- agent/build.gradle | 10 ++++++++-- .../io/perfmark/agent/PerfMarkTransformerTest.java | 13 ++++++++++++- api/build.gradle | 14 +++++++++----- build.gradle | 5 +---- impl/build.gradle | 9 +++++++-- java6/build.gradle | 9 +++++++-- java9/build.gradle | 6 ++++++ 8 files changed, 56 insertions(+), 18 deletions(-) diff --git a/.travis.yml b/.travis.yml index 048e27f4..83d68863 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,11 @@ language: java -jdk: - - openjdk11 +matrix: + include: + - jdk: openjdk8 + - jdk: openjdk11 + - jdk: openjdk14 + notifications: email: false diff --git a/agent/build.gradle b/agent/build.gradle index 948631e1..9ea4506d 100644 --- a/agent/build.gradle +++ b/agent/build.gradle @@ -16,9 +16,15 @@ dependencies { } +import net.ltgt.gradle.errorprone.CheckSeverity + compileTestJava { - sourceCompatibility = 1.9 - targetCompatibility = 1.9 + // Broken in JDK12+. See https://github.com/google/error-prone/issues/1106 + properties.put("errorProne", "false") + options.errorprone.check("SameNameButDifferent", CheckSeverity.OFF) + + sourceCompatibility = 1.8 + targetCompatibility = 1.8 } jar { diff --git a/agent/src/test/java/io/perfmark/agent/PerfMarkTransformerTest.java b/agent/src/test/java/io/perfmark/agent/PerfMarkTransformerTest.java index a8a33729..c95e35d8 100644 --- a/agent/src/test/java/io/perfmark/agent/PerfMarkTransformerTest.java +++ b/agent/src/test/java/io/perfmark/agent/PerfMarkTransformerTest.java @@ -27,7 +27,9 @@ import io.perfmark.impl.Internal; import io.perfmark.impl.Mark; import io.perfmark.impl.Storage; +import java.io.ByteArrayOutputStream; import java.io.IOException; +import java.io.InputStream; import java.lang.reflect.Constructor; import java.util.List; import java.util.concurrent.Executor; @@ -329,7 +331,16 @@ public void transform_toplevel() throws Exception { private static byte[] getBytes(Class clz) throws IOException { String className = clz.getName().replace('.', '/') + ".class"; - return clz.getClassLoader().getResourceAsStream(className).readAllBytes(); + try (InputStream stream = clz.getClassLoader().getResourceAsStream(className); + ByteArrayOutputStream baos = new ByteArrayOutputStream()) { + int read; + byte[] buf = new byte[1024]; + while ((read = stream.read(buf)) != -1) { + baos.write(buf, 0, read); + } + + return baos.toByteArray(); + } } private static final class TestClassLoader extends ClassLoader { diff --git a/api/build.gradle b/api/build.gradle index 8ab08fbd..45b78d22 100644 --- a/api/build.gradle +++ b/api/build.gradle @@ -1,7 +1,12 @@ description = "PerfMark API" -sourceCompatibility = 1.6 -targetCompatibility = 1.6 +if (JavaVersion.current().isJava12Compatible()) { + sourceCompatibility = 1.7 + targetCompatibility = 1.7 +} else { + sourceCompatibility = 1.6 + targetCompatibility = 1.6 +} dependencies { compileOnly libraries.jsr305, @@ -14,15 +19,14 @@ dependencies { project(':perfmark-java7') } - compileTestJava { sourceCompatibility = 1.7 targetCompatibility = 1.7 } compileJmhJava { - sourceCompatibility = 1.9 - targetCompatibility = 1.9 + sourceCompatibility = 1.8 + targetCompatibility = 1.8 } java { diff --git a/build.gradle b/build.gradle index 1a1c3bf2..4c1e4e10 100644 --- a/build.gradle +++ b/build.gradle @@ -1,6 +1,5 @@ buildscript { repositories { - mavenLocal() maven { url "https://plugins.gradle.org/m2/" } jcenter() } @@ -28,7 +27,6 @@ subprojects { maven { url "https://maven-central.storage-download.googleapis.com/repos/central/data/" } mavenCentral() - mavenLocal() } @@ -108,7 +106,6 @@ subprojects { } } } - mavenLocal() } } @@ -138,7 +135,7 @@ subprojects { } } - jacoco { toolVersion = "0.8.2" } + jacoco { toolVersion = "0.8.5" } group = "io.perfmark" version = "0.22.0-SNAPSHOT" diff --git a/impl/build.gradle b/impl/build.gradle index 7202eeb3..7c966dd1 100644 --- a/impl/build.gradle +++ b/impl/build.gradle @@ -1,7 +1,12 @@ description = "PerfMark Implementation API" -sourceCompatibility = 1.6 -targetCompatibility = 1.6 +if (JavaVersion.current().isJava12Compatible()) { + sourceCompatibility = 1.7 + targetCompatibility = 1.7 +} else { + sourceCompatibility = 1.6 + targetCompatibility = 1.6 +} dependencies { implementation project(':perfmark-api') diff --git a/java6/build.gradle b/java6/build.gradle index 285b94a7..8a1a7bd1 100644 --- a/java6/build.gradle +++ b/java6/build.gradle @@ -1,7 +1,12 @@ description = "PerfMark Java6 API" -sourceCompatibility = 1.6 -targetCompatibility = 1.6 +if (JavaVersion.current().isJava12Compatible()) { + sourceCompatibility = 1.7 + targetCompatibility = 1.7 +} else { + sourceCompatibility = 1.6 + targetCompatibility = 1.6 +} dependencies { implementation project(':perfmark-impl') diff --git a/java9/build.gradle b/java9/build.gradle index 0657d002..d7055d38 100644 --- a/java9/build.gradle +++ b/java9/build.gradle @@ -2,6 +2,12 @@ apply plugin: 'jcstress' description = "PerfMark Java9 API" +if (!JavaVersion.current().isJava9Compatible()) { + project.tasks.all { + task -> task.enabled = false + } +} + sourceCompatibility = 1.9 targetCompatibility = 1.9