From 98e2adf7944380b82ff40e8d5368aac3fc7e9a3b Mon Sep 17 00:00:00 2001 From: akwizgran Date: Wed, 15 Nov 2017 14:13:57 +0000 Subject: [PATCH 1/7] Fix Dagger setup, remove android-apt plugin. --- bramble-android/build.gradle | 3 +++ bramble-api/build.gradle | 4 ---- bramble-core/build.gradle | 13 +++++++------ bramble-j2se/build.gradle | 4 ++++ briar-android/build.gradle | 2 ++ .../briar/android/login/SetupActivityTest.java | 9 +++------ briar-api/build.gradle | 2 -- briar-core/build.gradle | 13 +++++++------ build.gradle | 5 ++++- 9 files changed, 30 insertions(+), 25 deletions(-) diff --git a/bramble-android/build.gradle b/bramble-android/build.gradle index b372cf7f3..c94dc003f 100644 --- a/bramble-android/build.gradle +++ b/bramble-android/build.gradle @@ -26,6 +26,9 @@ android { dependencies { compile project(path: ':bramble-core', configuration: 'default') compile fileTree(dir: 'libs', include: '*.jar') + + annotationProcessor 'com.google.dagger:dagger-compiler:2.0.2' + provided 'javax.annotation:jsr250-api:1.0' } diff --git a/bramble-api/build.gradle b/bramble-api/build.gradle index f1d0018e6..bded3ab75 100644 --- a/bramble-api/build.gradle +++ b/bramble-api/build.gradle @@ -6,7 +6,6 @@ apply plugin: 'witness' dependencies { compile "com.google.dagger:dagger:2.0.2" - compile 'com.google.dagger:dagger-compiler:2.0.2' compile 'com.google.code.findbugs:jsr305:3.0.2' testCompile 'junit:junit:4.12' @@ -20,11 +19,8 @@ dependencies { dependencyVerification { verify = [ 'com.google.dagger:dagger:84c0282ed8be73a29e0475d639da030b55dee72369e58dd35ae7d4fe6243dcf9', - 'com.google.dagger:dagger-compiler:b74bc9de063dd4c6400b232231f2ef5056145b8fbecbf5382012007dd1c071b3', 'com.google.code.findbugs:jsr305:766ad2a0783f2687962c8ad74ceecc38a28b9f72a2d085ee438b7813e928d0c7', 'javax.inject:javax.inject:91c77044a50c481636c32d916fd89c9118a72195390452c81065080f957de7ff', - 'com.google.dagger:dagger-producers:99ec15e8a0507ba569e7655bc1165ee5e5ca5aa914b3c8f7e2c2458f724edd6b', - 'com.google.guava:guava:d664fbfc03d2e5ce9cab2a44fb01f1d0bf9dfebeccc1a473b1f9ea31f79f6f99', ] } diff --git a/bramble-core/build.gradle b/bramble-core/build.gradle index dfe194a31..93a6c2c94 100644 --- a/bramble-core/build.gradle +++ b/bramble-core/build.gradle @@ -1,12 +1,9 @@ -plugins { - id 'java' - id 'net.ltgt.apt' version '0.9' - id 'idea' -} - +apply plugin: 'java' sourceCompatibility = 1.6 targetCompatibility = 1.6 +apply plugin: 'net.ltgt.apt' +apply plugin: 'idea' apply plugin: 'witness' dependencies { @@ -15,7 +12,11 @@ dependencies { compile 'com.h2database:h2:1.4.192' // This is the last version that supports Java 1.6 compile 'org.bitlet:weupnp:0.1.4' + apt 'com.google.dagger:dagger-compiler:2.0.2' + testCompile project(path: ':bramble-api', configuration: 'testOutput') + + testApt 'com.google.dagger:dagger-compiler:2.0.2' } dependencyVerification { diff --git a/bramble-j2se/build.gradle b/bramble-j2se/build.gradle index 5b3cf6786..a140432b6 100644 --- a/bramble-j2se/build.gradle +++ b/bramble-j2se/build.gradle @@ -2,6 +2,8 @@ apply plugin: 'java' sourceCompatibility = 1.7 targetCompatibility = 1.7 +apply plugin: 'net.ltgt.apt' +apply plugin: 'idea' apply plugin: 'witness' dependencies { @@ -10,6 +12,8 @@ dependencies { compile 'net.java.dev.jna:jna:4.4.0' compile 'net.java.dev.jna:jna-platform:4.4.0' + apt 'com.google.dagger:dagger-compiler:2.0.2' + testCompile project(path: ':bramble-core', configuration: 'testOutput') } diff --git a/briar-android/build.gradle b/briar-android/build.gradle index d31f16b1f..da9bb4dd3 100644 --- a/briar-android/build.gradle +++ b/briar-android/build.gradle @@ -30,6 +30,8 @@ dependencies { compile 'com.github.bumptech.glide:glide:3.8.0' compile 'uk.co.samuelwall:material-tap-target-prompt:1.9.2' + annotationProcessor 'com.google.dagger:dagger-compiler:2.0.2' + provided 'javax.annotation:jsr250-api:1.0' testCompile project(path: ':bramble-core', configuration: 'testOutput') diff --git a/briar-android/src/test/java/org/briarproject/briar/android/login/SetupActivityTest.java b/briar-android/src/test/java/org/briarproject/briar/android/login/SetupActivityTest.java index 7841d792b..72bffbf63 100644 --- a/briar-android/src/test/java/org/briarproject/briar/android/login/SetupActivityTest.java +++ b/briar-android/src/test/java/org/briarproject/briar/android/login/SetupActivityTest.java @@ -7,9 +7,6 @@ import android.support.design.widget.TextInputLayout; import android.widget.Button; import android.widget.EditText; -import com.google.common.base.Strings; - -import org.briarproject.bramble.api.identity.AuthorConstants; import org.briarproject.briar.BuildConfig; import org.briarproject.briar.R; import org.briarproject.briar.android.TestBriarApplication; @@ -35,6 +32,8 @@ import static org.briarproject.bramble.api.crypto.PasswordStrengthEstimator.QUIT import static org.briarproject.bramble.api.crypto.PasswordStrengthEstimator.QUITE_WEAK; import static org.briarproject.bramble.api.crypto.PasswordStrengthEstimator.STRONG; import static org.briarproject.bramble.api.crypto.PasswordStrengthEstimator.WEAK; +import static org.briarproject.bramble.api.identity.AuthorConstants.MAX_AUTHOR_NAME_LENGTH; +import static org.briarproject.bramble.util.StringUtils.getRandomString; import static org.junit.Assert.assertTrue; import static org.mockito.Matchers.anyString; import static org.mockito.Matchers.eq; @@ -145,9 +144,7 @@ public class SetupActivityTest { @Test public void testNicknameUI() { Assert.assertNotNull(setupActivity); - String longNick = - Strings.padEnd("*", AuthorConstants.MAX_AUTHOR_NAME_LENGTH + 1, - '*'); + String longNick = getRandomString(MAX_AUTHOR_NAME_LENGTH + 1); nicknameEntry.setText(longNick); // Nickname should be too long assertEquals(nicknameEntryWrapper.getError(), diff --git a/briar-api/build.gradle b/briar-api/build.gradle index 2c957a645..33bc10b8c 100644 --- a/briar-api/build.gradle +++ b/briar-api/build.gradle @@ -2,8 +2,6 @@ apply plugin: 'java' sourceCompatibility = 1.6 targetCompatibility = 1.6 -apply plugin: 'witness' - dependencies { compile project(path: ':bramble-api', configuration: 'default') } diff --git a/briar-core/build.gradle b/briar-core/build.gradle index 8976d7e3a..6fc8e564b 100644 --- a/briar-core/build.gradle +++ b/briar-core/build.gradle @@ -1,12 +1,9 @@ -plugins { - id 'java' - id 'net.ltgt.apt' version '0.9' - id 'idea' -} - +apply plugin: 'java' sourceCompatibility = 1.6 targetCompatibility = 1.6 +apply plugin: 'net.ltgt.apt' +apply plugin: 'idea' apply plugin: 'witness' dependencies { @@ -16,10 +13,14 @@ dependencies { compile 'com.squareup.okhttp3:okhttp:3.8.0' compile 'org.jsoup:jsoup:1.10.3' + apt 'com.google.dagger:dagger-compiler:2.0.2' + testCompile project(path: ':bramble-core', configuration: 'default') testCompile project(path: ':bramble-core', configuration: 'testOutput') testCompile project(path: ':bramble-api', configuration: 'testOutput') testCompile 'net.jodah:concurrentunit:0.4.2' + + testApt 'com.google.dagger:dagger-compiler:2.0.2' } dependencyVerification { diff --git a/build.gradle b/build.gradle index af816d45f..f022dce92 100644 --- a/build.gradle +++ b/build.gradle @@ -11,11 +11,14 @@ buildscript { repositories { jcenter() mavenLocal() + maven { + url "https://plugins.gradle.org/m2/" + } } dependencies { classpath 'com.android.tools.build:gradle:2.3.3' - classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' + classpath 'net.ltgt.gradle:gradle-apt-plugin:0.9' classpath 'de.undercouch:gradle-download-task:3.2.0' classpath files('libs/gradle-witness.jar') } From 9f29bf494912aa80196666c9dd4f5e25f1fdee72 Mon Sep 17 00:00:00 2001 From: akwizgran Date: Wed, 15 Nov 2017 14:47:36 +0000 Subject: [PATCH 2/7] Upgrade Gradle and Android Gradle plugin --- bramble-android/build.gradle | 4 ++-- briar-android/build.gradle | 17 +++++++++++++---- .../briar/android/forum/ForumActivityTest.java | 12 +++++------- .../login/ChangePasswordActivityTest.java | 8 +++----- .../briar/android/login/SetupActivityTest.java | 8 +++----- build.gradle | 3 ++- gradle/wrapper/gradle-wrapper.properties | 5 ++--- 7 files changed, 30 insertions(+), 27 deletions(-) diff --git a/bramble-android/build.gradle b/bramble-android/build.gradle index c94dc003f..dbde5b267 100644 --- a/bramble-android/build.gradle +++ b/bramble-android/build.gradle @@ -6,8 +6,8 @@ apply plugin: 'witness' apply plugin: 'de.undercouch.download' android { - compileSdkVersion 23 - buildToolsVersion '25.0.0' + compileSdkVersion 26 + buildToolsVersion '26.0.2' defaultConfig { minSdkVersion 14 diff --git a/briar-android/build.gradle b/briar-android/build.gradle index da9bb4dd3..d4af03eca 100644 --- a/briar-android/build.gradle +++ b/briar-android/build.gradle @@ -2,9 +2,11 @@ apply plugin: 'com.android.application' apply plugin: 'witness' dependencies { - def supportVersion = '23.2.1' compile project(path: ':briar-core', configuration: 'default') + compile project(path: ':bramble-core', configuration: 'default') compile project(path: ':bramble-android', configuration: 'default') + + def supportVersion = '23.2.1' compile "com.android.support:support-v4:$supportVersion" compile("com.android.support:appcompat-v7:$supportVersion") { exclude module: 'support-v4' @@ -22,6 +24,7 @@ dependencies { exclude module: 'support-v4' exclude module: 'support-annotations' } + compile 'info.guardianproject.panic:panic:0.5' compile 'info.guardianproject.trustedintents:trustedintents:0.2' compile 'de.hdodenhof:circleimageview:2.1.0' @@ -35,7 +38,7 @@ dependencies { provided 'javax.annotation:jsr250-api:1.0' testCompile project(path: ':bramble-core', configuration: 'testOutput') - testCompile 'org.robolectric:robolectric:3.0' + testCompile 'org.robolectric:robolectric:3.5.1' testCompile 'org.mockito:mockito-core:2.8.9' } @@ -74,8 +77,8 @@ def getGitHash = { -> } android { - compileSdkVersion 23 - buildToolsVersion '25.0.0' + compileSdkVersion 26 + buildToolsVersion '26.0.2' defaultConfig { minSdkVersion 14 @@ -109,6 +112,12 @@ android { targetCompatibility JavaVersion.VERSION_1_7 } + testOptions { + unitTests { + includeAndroidResources = true + } + } + aaptOptions { cruncherEnabled = false } diff --git a/briar-android/src/test/java/org/briarproject/briar/android/forum/ForumActivityTest.java b/briar-android/src/test/java/org/briarproject/briar/android/forum/ForumActivityTest.java index 68c362b6f..cee3b710f 100644 --- a/briar-android/src/test/java/org/briarproject/briar/android/forum/ForumActivityTest.java +++ b/briar-android/src/test/java/org/briarproject/briar/android/forum/ForumActivityTest.java @@ -9,7 +9,6 @@ import org.briarproject.bramble.api.identity.Author; import org.briarproject.bramble.api.identity.AuthorId; import org.briarproject.bramble.api.sync.MessageId; import org.briarproject.bramble.test.TestUtils; -import org.briarproject.briar.BuildConfig; import org.briarproject.briar.android.TestBriarApplication; import org.briarproject.briar.android.controller.handler.UiResultExceptionHandler; import org.briarproject.briar.android.threaded.ThreadItemAdapter; @@ -22,7 +21,7 @@ import org.mockito.ArgumentCaptor; import org.mockito.Captor; import org.mockito.MockitoAnnotations; import org.robolectric.Robolectric; -import org.robolectric.RobolectricGradleTestRunner; +import org.robolectric.RobolectricTestRunner; import org.robolectric.annotation.Config; import java.util.Arrays; @@ -34,9 +33,8 @@ import static org.briarproject.bramble.api.identity.AuthorConstants.MAX_PUBLIC_K import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; -@RunWith(RobolectricGradleTestRunner.class) -@Config(constants = BuildConfig.class, sdk = 21, - application = TestBriarApplication.class, +@RunWith(RobolectricTestRunner.class) +@Config(sdk = 21, application = TestBriarApplication.class, packageName = "org.briarproject.briar") public class ForumActivityTest { @@ -89,8 +87,8 @@ public class ForumActivityTest { MockitoAnnotations.initMocks(this); Intent intent = new Intent(); intent.putExtra("briar.GROUP_ID", TestUtils.getRandomId()); - forumActivity = Robolectric.buildActivity(TestForumActivity.class) - .withIntent(intent).create().start().resume().get(); + forumActivity = Robolectric.buildActivity(TestForumActivity.class, + intent).create().start().resume().get(); } private ThreadItemList getDummyData() { diff --git a/briar-android/src/test/java/org/briarproject/briar/android/login/ChangePasswordActivityTest.java b/briar-android/src/test/java/org/briarproject/briar/android/login/ChangePasswordActivityTest.java index 24c84835a..bc4d5e9a3 100644 --- a/briar-android/src/test/java/org/briarproject/briar/android/login/ChangePasswordActivityTest.java +++ b/briar-android/src/test/java/org/briarproject/briar/android/login/ChangePasswordActivityTest.java @@ -6,7 +6,6 @@ import android.support.design.widget.TextInputLayout; import android.widget.Button; import android.widget.EditText; -import org.briarproject.briar.BuildConfig; import org.briarproject.briar.R; import org.briarproject.briar.android.TestBriarApplication; import org.briarproject.briar.android.controller.handler.ResultHandler; @@ -20,7 +19,7 @@ import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; import org.robolectric.Robolectric; -import org.robolectric.RobolectricGradleTestRunner; +import org.robolectric.RobolectricTestRunner; import org.robolectric.annotation.Config; import static junit.framework.Assert.assertEquals; @@ -39,9 +38,8 @@ import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; -@RunWith(RobolectricGradleTestRunner.class) -@Config(constants = BuildConfig.class, sdk = 21, - application = TestBriarApplication.class, +@RunWith(RobolectricTestRunner.class) +@Config(sdk = 21, application = TestBriarApplication.class, packageName = "org.briarproject.briar") public class ChangePasswordActivityTest { diff --git a/briar-android/src/test/java/org/briarproject/briar/android/login/SetupActivityTest.java b/briar-android/src/test/java/org/briarproject/briar/android/login/SetupActivityTest.java index 72bffbf63..9b4217edd 100644 --- a/briar-android/src/test/java/org/briarproject/briar/android/login/SetupActivityTest.java +++ b/briar-android/src/test/java/org/briarproject/briar/android/login/SetupActivityTest.java @@ -7,7 +7,6 @@ import android.support.design.widget.TextInputLayout; import android.widget.Button; import android.widget.EditText; -import org.briarproject.briar.BuildConfig; import org.briarproject.briar.R; import org.briarproject.briar.android.TestBriarApplication; import org.briarproject.briar.android.controller.handler.ResultHandler; @@ -22,7 +21,7 @@ import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; import org.robolectric.Robolectric; -import org.robolectric.RobolectricGradleTestRunner; +import org.robolectric.RobolectricTestRunner; import org.robolectric.annotation.Config; import org.robolectric.shadows.ShadowActivity; @@ -44,9 +43,8 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import static org.robolectric.Shadows.shadowOf; -@RunWith(RobolectricGradleTestRunner.class) -@Config(constants = BuildConfig.class, sdk = 21, - application = TestBriarApplication.class, +@RunWith(RobolectricTestRunner.class) +@Config(sdk = 21, application = TestBriarApplication.class, packageName = "org.briarproject.briar") public class SetupActivityTest { diff --git a/build.gradle b/build.gradle index f022dce92..9de3d091b 100644 --- a/build.gradle +++ b/build.gradle @@ -14,10 +14,11 @@ buildscript { maven { url "https://plugins.gradle.org/m2/" } + google() } dependencies { - classpath 'com.android.tools.build:gradle:2.3.3' + classpath 'com.android.tools.build:gradle:3.0.0' classpath 'net.ltgt.gradle:gradle-apt-plugin:0.9' classpath 'de.undercouch:gradle-download-task:3.2.0' classpath files('libs/gradle-witness.jar') diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index d7d07763b..0070afbd1 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,7 +1,6 @@ -#Wed Aug 24 10:55:42 BST 2016 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-3.5-all.zip -distributionSha256Sum=d84bf6b6113da081d0082bcb63bd8547824c6967fe68704d1e3a6fde822b7212 +distributionUrl=https\://services.gradle.org/distributions/gradle-4.3.1-all.zip +distributionSha256Sum=c5b67330a8a211539d713852c56a6a80fdea365d8902df92d1759d913d18fa2d From 53c8cf09b6af26980d8d36cdb325fa052c20591e Mon Sep 17 00:00:00 2001 From: akwizgran Date: Wed, 15 Nov 2017 14:52:33 +0000 Subject: [PATCH 3/7] Support Java 8 language features in Android modules. --- bramble-android/build.gradle | 4 ++-- briar-android/build.gradle | 4 ++-- briar.iml | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/bramble-android/build.gradle b/bramble-android/build.gradle index dbde5b267..8ff8edd7b 100644 --- a/bramble-android/build.gradle +++ b/bramble-android/build.gradle @@ -18,8 +18,8 @@ android { } compileOptions { - sourceCompatibility JavaVersion.VERSION_1_7 - targetCompatibility JavaVersion.VERSION_1_7 + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 } } diff --git a/briar-android/build.gradle b/briar-android/build.gradle index d4af03eca..9242644a5 100644 --- a/briar-android/build.gradle +++ b/briar-android/build.gradle @@ -108,8 +108,8 @@ android { } compileOptions { - sourceCompatibility JavaVersion.VERSION_1_7 - targetCompatibility JavaVersion.VERSION_1_7 + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 } testOptions { diff --git a/briar.iml b/briar.iml index f2d23be9a..8ebfdb126 100644 --- a/briar.iml +++ b/briar.iml @@ -8,7 +8,7 @@ - + From f8425658e4eacb78f114f7af6720da79b31f8f01 Mon Sep 17 00:00:00 2001 From: akwizgran Date: Wed, 15 Nov 2017 16:46:15 +0000 Subject: [PATCH 4/7] Support Java 8 language features in Java modules. --- bramble-api/build.gradle | 14 ++++++++++++-- bramble-core/build.gradle | 14 ++++++++++++-- bramble-j2se/build.gradle | 4 ++-- briar-api/build.gradle | 14 ++++++++++++-- briar-core/build.gradle | 14 ++++++++++++-- settings.gradle | 3 ++- 6 files changed, 52 insertions(+), 11 deletions(-) diff --git a/bramble-api/build.gradle b/bramble-api/build.gradle index bded3ab75..e1d90cdd6 100644 --- a/bramble-api/build.gradle +++ b/bramble-api/build.gradle @@ -1,6 +1,6 @@ apply plugin: 'java' -sourceCompatibility = 1.6 -targetCompatibility = 1.6 +sourceCompatibility = 1.8 +targetCompatibility = 1.8 apply plugin: 'witness' @@ -35,3 +35,13 @@ task jarTest(type: Jar, dependsOn: testClasses) { artifacts { testOutput jarTest } + +// If a Java 6 JRE is available, check we're not using any Java 7 or 8 APIs +tasks.withType(JavaCompile) { + doFirst { + def home = System.env.JAVA_6_HOME; + if (home != null && !home.isEmpty()) { + options.bootstrapClasspath = files("${home}/jre/lib/rt.jar", "${home}/jre/lib/jsse.jar") + } + } +} diff --git a/bramble-core/build.gradle b/bramble-core/build.gradle index 93a6c2c94..abc388449 100644 --- a/bramble-core/build.gradle +++ b/bramble-core/build.gradle @@ -1,6 +1,6 @@ apply plugin: 'java' -sourceCompatibility = 1.6 -targetCompatibility = 1.6 +sourceCompatibility = 1.8 +targetCompatibility = 1.8 apply plugin: 'net.ltgt.apt' apply plugin: 'idea' @@ -38,3 +38,13 @@ task jarTest(type: Jar, dependsOn: testClasses) { artifacts { testOutput jarTest } + +// If a Java 6 JRE is available, check we're not using any Java 7 or 8 APIs +tasks.withType(JavaCompile) { + doFirst { + def home = System.env.JAVA_6_HOME; + if (home != null && !home.isEmpty()) { + options.bootstrapClasspath = files("${home}/jre/lib/rt.jar", "${home}/jre/lib/jsse.jar") + } + } +} diff --git a/bramble-j2se/build.gradle b/bramble-j2se/build.gradle index a140432b6..f920589eb 100644 --- a/bramble-j2se/build.gradle +++ b/bramble-j2se/build.gradle @@ -1,6 +1,6 @@ apply plugin: 'java' -sourceCompatibility = 1.7 -targetCompatibility = 1.7 +sourceCompatibility = 1.8 +targetCompatibility = 1.8 apply plugin: 'net.ltgt.apt' apply plugin: 'idea' diff --git a/briar-api/build.gradle b/briar-api/build.gradle index 33bc10b8c..29f9f9aa7 100644 --- a/briar-api/build.gradle +++ b/briar-api/build.gradle @@ -1,7 +1,17 @@ apply plugin: 'java' -sourceCompatibility = 1.6 -targetCompatibility = 1.6 +sourceCompatibility = 1.8 +targetCompatibility = 1.8 dependencies { compile project(path: ':bramble-api', configuration: 'default') } + +// If a Java 6 JRE is available, check we're not using any Java 7 or 8 APIs +tasks.withType(JavaCompile) { + doFirst { + def home = System.env.JAVA_6_HOME; + if (home != null && !home.isEmpty()) { + options.bootstrapClasspath = files("${home}/jre/lib/rt.jar", "${home}/jre/lib/jsse.jar") + } + } +} diff --git a/briar-core/build.gradle b/briar-core/build.gradle index 6fc8e564b..efbdf0a2a 100644 --- a/briar-core/build.gradle +++ b/briar-core/build.gradle @@ -1,6 +1,6 @@ apply plugin: 'java' -sourceCompatibility = 1.6 -targetCompatibility = 1.6 +sourceCompatibility = 1.8 +targetCompatibility = 1.8 apply plugin: 'net.ltgt.apt' apply plugin: 'idea' @@ -33,3 +33,13 @@ dependencyVerification { 'com.squareup.okio:okio:734269c3ebc5090e3b23566db558f421f0b4027277c79ad5d176b8ec168bb850', ] } + +// If a Java 6 JRE is available, check we're not using any Java 7 or 8 APIs +tasks.withType(JavaCompile) { + doFirst { + def home = System.env.JAVA_6_HOME; + if (home != null && !home.isEmpty()) { + options.bootstrapClasspath = files("${home}/jre/lib/rt.jar", "${home}/jre/lib/jsse.jar") + } + } +} diff --git a/settings.gradle b/settings.gradle index de661574c..3f3670622 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,5 +1,6 @@ -include ':bramble-api', ':bramble-android' +include ':bramble-api' include ':bramble-core' +include ':bramble-android' include ':bramble-j2se' include ':briar-api' include ':briar-core' From bb7df72d319505362d73ebbbc05a1752b6a0fda5 Mon Sep 17 00:00:00 2001 From: akwizgran Date: Thu, 16 Nov 2017 12:04:15 +0000 Subject: [PATCH 5/7] Compile against OpenJDK 6 standard library for CI. --- .gitlab-ci.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b23328611..260602467 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -7,7 +7,13 @@ cache: before_script: - export GRADLE_USER_HOME=$PWD/.gradle - - echo y | /opt/android-sdk/tools/bin/sdkmanager "build-tools;23.0.3" + - JDK_FILE=openjdk-6-jre-headless_6b38-1.13.10-1~deb7u1_amd64.deb + - if [ ! -d openjdk ] + - then + - wget -q http://ftp.uk.debian.org/debian/pool/main/o/openjdk-6/$JDK_FILE + - dpkg-deb -x $JDK_FILE openjdk + - fi + - export JAVA_6_HOME=$PWD/openjdk/usr/lib/jvm/java-6-openjdk-amd64 test: script: From fc93ced06702ee66cee17b4d8d0ee391f4d35f7a Mon Sep 17 00:00:00 2001 From: akwizgran Date: Thu, 16 Nov 2017 12:37:44 +0000 Subject: [PATCH 6/7] Download the Android support repository for CI. --- .gitlab-ci.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 260602467..7aa729903 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -6,7 +6,12 @@ cache: - .gradle/caches before_script: + - set -e - export GRADLE_USER_HOME=$PWD/.gradle + # Install the Android support repository + # TODO: Remove this when we upgrade the support library + - echo y | /opt/android-sdk/tools/bin/sdkmanager 'extras;android;m2repository' + # Download OpenJDK 6 so we can compile against its standard library - JDK_FILE=openjdk-6-jre-headless_6b38-1.13.10-1~deb7u1_amd64.deb - if [ ! -d openjdk ] - then From e30e34f342a1814801984cd54f9562a5f64a074e Mon Sep 17 00:00:00 2001 From: akwizgran Date: Thu, 16 Nov 2017 15:26:05 +0000 Subject: [PATCH 7/7] Include java.lang.invoke classes in bootstrap classpath. --- bramble-api/build.gradle | 7 +------ bramble-core/build.gradle | 7 +------ briar-api/build.gradle | 7 +------ briar-core/build.gradle | 7 +------ build.gradle | 24 ++++++++++++++++++++++++ 5 files changed, 28 insertions(+), 24 deletions(-) diff --git a/bramble-api/build.gradle b/bramble-api/build.gradle index e1d90cdd6..7b03f5c18 100644 --- a/bramble-api/build.gradle +++ b/bramble-api/build.gradle @@ -38,10 +38,5 @@ artifacts { // If a Java 6 JRE is available, check we're not using any Java 7 or 8 APIs tasks.withType(JavaCompile) { - doFirst { - def home = System.env.JAVA_6_HOME; - if (home != null && !home.isEmpty()) { - options.bootstrapClasspath = files("${home}/jre/lib/rt.jar", "${home}/jre/lib/jsse.jar") - } - } + useJava6StandardLibrary(it) } diff --git a/bramble-core/build.gradle b/bramble-core/build.gradle index abc388449..324947821 100644 --- a/bramble-core/build.gradle +++ b/bramble-core/build.gradle @@ -41,10 +41,5 @@ artifacts { // If a Java 6 JRE is available, check we're not using any Java 7 or 8 APIs tasks.withType(JavaCompile) { - doFirst { - def home = System.env.JAVA_6_HOME; - if (home != null && !home.isEmpty()) { - options.bootstrapClasspath = files("${home}/jre/lib/rt.jar", "${home}/jre/lib/jsse.jar") - } - } + useJava6StandardLibrary(it) } diff --git a/briar-api/build.gradle b/briar-api/build.gradle index 29f9f9aa7..0c6e6e1d7 100644 --- a/briar-api/build.gradle +++ b/briar-api/build.gradle @@ -8,10 +8,5 @@ dependencies { // If a Java 6 JRE is available, check we're not using any Java 7 or 8 APIs tasks.withType(JavaCompile) { - doFirst { - def home = System.env.JAVA_6_HOME; - if (home != null && !home.isEmpty()) { - options.bootstrapClasspath = files("${home}/jre/lib/rt.jar", "${home}/jre/lib/jsse.jar") - } - } + useJava6StandardLibrary(it) } diff --git a/briar-core/build.gradle b/briar-core/build.gradle index efbdf0a2a..a4dddb5a2 100644 --- a/briar-core/build.gradle +++ b/briar-core/build.gradle @@ -36,10 +36,5 @@ dependencyVerification { // If a Java 6 JRE is available, check we're not using any Java 7 or 8 APIs tasks.withType(JavaCompile) { - doFirst { - def home = System.env.JAVA_6_HOME; - if (home != null && !home.isEmpty()) { - options.bootstrapClasspath = files("${home}/jre/lib/rt.jar", "${home}/jre/lib/jsse.jar") - } - } + useJava6StandardLibrary(it) } diff --git a/build.gradle b/build.gradle index 9de3d091b..fc55df933 100644 --- a/build.gradle +++ b/build.gradle @@ -24,3 +24,27 @@ buildscript { classpath files('libs/gradle-witness.jar') } } + +// If a Java 6 JRE is available, check we're not using any Java 7 or 8 APIs +ext.useJava6StandardLibrary = { task -> + def home = System.env.JAVA_6_HOME; + if (home != null && !home.isEmpty()) { + println "Setting Java 6 bootstrap classpath for ${task.name}" + task.dependsOn createJavaLangInvokeJar + task.options.bootstrapClasspath = files( + "${project.rootDir}/build/invoke.jar", + "${home}/jre/lib/rt.jar", + "${home}/jre/lib/jsse.jar" + ) + } +} + +// Create a jar containing the java.lang.invoke classes for the Java 6 bootstrap classpath +task createJavaLangInvokeJar(type: Zip) { + archiveName 'invoke.jar' + destinationDir file("${project.rootDir}/build") + from zipTree("${System.getProperty('java.home')}/lib/rt.jar").matching { + include 'java/lang/invoke/*' + } + include '**/*' +}