From f91c400f6c0f21d428a7316dd1dee2792fb191c3 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Mon, 27 Feb 2023 19:44:51 -0500 Subject: [PATCH] Convert build-logic build.gradle to kotlin. --- app/build.gradle | 15 ++-- build-logic/plugins/build.gradle | 9 -- build-logic/plugins/build.gradle.kts | 28 +++++++ .../src/main/java/android-constants.gradle | 9 -- .../main/java/android-constants.gradle.kts | 5 ++ .../src/main/java/signal-library.gradle | 62 -------------- .../src/main/java/signal-library.gradle.kts | 78 +++++++++++++++++ .../src/main/java/signal-sample-app.gradle | 65 --------------- .../main/java/signal-sample-app.gradle.kts | 83 +++++++++++++++++++ .../tools/{build.gradle => build.gradle.kts} | 14 ++-- build.gradle | 2 +- dependencies.gradle | 2 + gradle/verification-metadata.xml | 23 +++++ libsignal/service/build.gradle | 16 ++-- .../docker/gradlewarmer/build.gradle | 2 +- 15 files changed, 246 insertions(+), 167 deletions(-) delete mode 100644 build-logic/plugins/build.gradle create mode 100644 build-logic/plugins/build.gradle.kts delete mode 100644 build-logic/plugins/src/main/java/android-constants.gradle create mode 100644 build-logic/plugins/src/main/java/android-constants.gradle.kts delete mode 100644 build-logic/plugins/src/main/java/signal-library.gradle create mode 100644 build-logic/plugins/src/main/java/signal-library.gradle.kts delete mode 100644 build-logic/plugins/src/main/java/signal-sample-app.gradle create mode 100644 build-logic/plugins/src/main/java/signal-sample-app.gradle.kts rename build-logic/tools/{build.gradle => build.gradle.kts} (55%) diff --git a/app/build.gradle b/app/build.gradle index ad3591c7a..83c27276a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -84,15 +84,15 @@ def selectableVariants = [ android { namespace 'org.thoughtcrime.securesms' - buildToolsVersion BUILD_TOOLS_VERSION - compileSdkVersion COMPILE_SDK_VERSION + buildToolsVersion = signalBuildToolsVersion + compileSdkVersion = signalCompileSdkVersion flavorDimensions 'distribution', 'environment' useLibrary 'org.apache.http.legacy' testBuildType 'instrumentation' kotlinOptions { - jvmTarget = "1.8" + jvmTarget = "11" freeCompilerArgs = ["-Xallow-result-return-type"] } @@ -139,9 +139,10 @@ android { compileOptions { coreLibraryDesugaringEnabled true - sourceCompatibility JAVA_VERSION - targetCompatibility JAVA_VERSION + sourceCompatibility signalJavaVersion + targetCompatibility signalJavaVersion } + packagingOptions { resources { excludes += ['LICENSE.txt', 'LICENSE', 'NOTICE', 'asm-license.txt', 'META-INF/LICENSE', 'META-INF/NOTICE', 'META-INF/proguard/androidx-annotations.pro', 'libsignal_jni.dylib', 'signal_jni.dll'] @@ -162,8 +163,8 @@ android { versionCode canonicalVersionCode * postFixSize versionName canonicalVersionName - minSdkVersion MIN_SDK_VERSION - targetSdkVersion TARGET_SDK_VERSION + minSdkVersion signalMinSdkVersion + targetSdkVersion signalTargetSdkVersion multiDexEnabled true diff --git a/build-logic/plugins/build.gradle b/build-logic/plugins/build.gradle deleted file mode 100644 index b929e0752..000000000 --- a/build-logic/plugins/build.gradle +++ /dev/null @@ -1,9 +0,0 @@ -plugins { - id "groovy-gradle-plugin" -} - -dependencies { - implementation libs.android.library - implementation libs.android.application - implementation project(':tools') -} \ No newline at end of file diff --git a/build-logic/plugins/build.gradle.kts b/build-logic/plugins/build.gradle.kts new file mode 100644 index 000000000..a651c2a53 --- /dev/null +++ b/build-logic/plugins/build.gradle.kts @@ -0,0 +1,28 @@ + + +plugins { + `kotlin-dsl` + id("groovy-gradle-plugin") + id("org.jlleitschuh.gradle.ktlint") version "11.1.0" +} + +java { + sourceCompatibility = JavaVersion.VERSION_11 + targetCompatibility = JavaVersion.VERSION_11 +} + +kotlinDslPluginOptions { + jvmTarget.set("11") +} + +dependencies { + implementation(libs.kotlin.gradle.plugin) + implementation(libs.android.library) + implementation(libs.android.application) + implementation(project(":tools")) + implementation(libs.ktlint) + + // These allow us to reference the dependency catalog inside of our compiled plugins + implementation(files(libs.javaClass.superclass.protectionDomain.codeSource.location)) + implementation(files(testLibs.javaClass.superclass.protectionDomain.codeSource.location)) +} diff --git a/build-logic/plugins/src/main/java/android-constants.gradle b/build-logic/plugins/src/main/java/android-constants.gradle deleted file mode 100644 index a783878f1..000000000 --- a/build-logic/plugins/src/main/java/android-constants.gradle +++ /dev/null @@ -1,9 +0,0 @@ -ext { - BUILD_TOOLS_VERSION = '32.0.0' - - COMPILE_SDK_VERSION = 33 - TARGET_SDK_VERSION = 31 - MIN_SDK_VERSION = 21 - - JAVA_VERSION = JavaVersion.VERSION_1_8 -} diff --git a/build-logic/plugins/src/main/java/android-constants.gradle.kts b/build-logic/plugins/src/main/java/android-constants.gradle.kts new file mode 100644 index 000000000..16f597b94 --- /dev/null +++ b/build-logic/plugins/src/main/java/android-constants.gradle.kts @@ -0,0 +1,5 @@ +val signalBuildToolsVersion by extra("32.0.0") +val signalCompileSdkVersion by extra("android-33") +val signalTargetSdkVersion by extra(31) +val signalMinSdkVersion by extra(21) +val signalJavaVersion by extra(JavaVersion.VERSION_11) diff --git a/build-logic/plugins/src/main/java/signal-library.gradle b/build-logic/plugins/src/main/java/signal-library.gradle deleted file mode 100644 index 9448021cf..000000000 --- a/build-logic/plugins/src/main/java/signal-library.gradle +++ /dev/null @@ -1,62 +0,0 @@ -plugins { - id 'com.android.library' - id 'kotlin-android' - id 'org.jlleitschuh.gradle.ktlint' - id 'android-constants' -} - -android { - buildToolsVersion BUILD_TOOLS_VERSION - compileSdkVersion COMPILE_SDK_VERSION - - defaultConfig { - minSdkVersion MIN_SDK_VERSION - targetSdkVersion TARGET_SDK_VERSION - multiDexEnabled true - } - - compileOptions { - coreLibraryDesugaringEnabled true - sourceCompatibility JAVA_VERSION - targetCompatibility JAVA_VERSION - } - - kotlinOptions { - jvmTarget = '1.8' - } - - lint { - disable 'InvalidVectorPath' - } -} - -ktlint { - // Use a newer version to resolve https://github.com/JLLeitschuh/ktlint-gradle/issues/507 - version = "0.47.1" -} - -dependencies { - lintChecks project(':lintchecks') - - coreLibraryDesugaring libs.android.tools.desugar - - implementation libs.androidx.core.ktx - implementation libs.androidx.fragment.ktx - implementation libs.androidx.annotation - implementation libs.androidx.appcompat - implementation libs.rxjava3.rxandroid - implementation libs.rxjava3.rxjava - implementation libs.rxjava3.rxkotlin - implementation libs.androidx.multidex - - implementation libs.kotlin.stdlib.jdk8 - ktlintRuleset libs.ktlint.twitter.compose - - testImplementation testLibs.junit.junit - testImplementation testLibs.mockito.core - testImplementation testLibs.mockito.android - testImplementation testLibs.mockito.kotlin - testImplementation testLibs.robolectric.robolectric - testImplementation testLibs.androidx.test.core - testImplementation testLibs.androidx.test.core.ktx -} diff --git a/build-logic/plugins/src/main/java/signal-library.gradle.kts b/build-logic/plugins/src/main/java/signal-library.gradle.kts new file mode 100644 index 000000000..36ac68df4 --- /dev/null +++ b/build-logic/plugins/src/main/java/signal-library.gradle.kts @@ -0,0 +1,78 @@ +@file:Suppress("UnstableApiUsage") + +import org.gradle.accessors.dm.LibrariesForLibs +import org.gradle.accessors.dm.LibrariesForTestLibs +import org.gradle.api.JavaVersion +import org.gradle.kotlin.dsl.extra + +val libs = the() +val testLibs = the() + +val signalBuildToolsVersion: String by extra +val signalCompileSdkVersion: String by extra +val signalTargetSdkVersion: Int by extra +val signalMinSdkVersion: Int by extra +val signalJavaVersion: JavaVersion by extra + +plugins { + id("com.android.library") + id("kotlin-android") + id("org.jlleitschuh.gradle.ktlint") + id("android-constants") +} + +android { + buildToolsVersion = signalBuildToolsVersion + compileSdkVersion = signalCompileSdkVersion + + defaultConfig { + minSdk = signalMinSdkVersion + targetSdk = signalTargetSdkVersion + multiDexEnabled = true + } + + compileOptions { + isCoreLibraryDesugaringEnabled = true + sourceCompatibility = signalJavaVersion + targetCompatibility = signalJavaVersion + } + + kotlinOptions { + jvmTarget = "11" + } + + lint { + disable += "InvalidVectorPath" + } +} + +ktlint { + // Use a newer version to resolve https://github.com/JLLeitschuh/ktlint-gradle/issues/507 + version.set("0.47.1") +} + +dependencies { + lintChecks(project(":lintchecks")) + + coreLibraryDesugaring(libs.android.tools.desugar) + + implementation(libs.androidx.core.ktx) + implementation(libs.androidx.fragment.ktx) + implementation(libs.androidx.annotation) + implementation(libs.androidx.appcompat) + implementation(libs.rxjava3.rxandroid) + implementation(libs.rxjava3.rxjava) + implementation(libs.rxjava3.rxkotlin) + implementation(libs.androidx.multidex) + implementation(libs.kotlin.stdlib.jdk8) + + ktlintRuleset(libs.ktlint.twitter.compose) + + testImplementation(testLibs.junit.junit) + testImplementation(testLibs.mockito.core) + testImplementation(testLibs.mockito.android) + testImplementation(testLibs.mockito.kotlin) + testImplementation(testLibs.robolectric.robolectric) + testImplementation(testLibs.androidx.test.core) + testImplementation(testLibs.androidx.test.core.ktx) +} diff --git a/build-logic/plugins/src/main/java/signal-sample-app.gradle b/build-logic/plugins/src/main/java/signal-sample-app.gradle deleted file mode 100644 index 0dfa43f77..000000000 --- a/build-logic/plugins/src/main/java/signal-sample-app.gradle +++ /dev/null @@ -1,65 +0,0 @@ -plugins { - id 'com.android.application' - id 'kotlin-android' - id 'org.jlleitschuh.gradle.ktlint' - id 'android-constants' -} - -android { - buildToolsVersion BUILD_TOOLS_VERSION - compileSdkVersion COMPILE_SDK_VERSION - - defaultConfig { - versionCode 1 - versionName "1.0" - - minSdkVersion MIN_SDK_VERSION - targetSdkVersion TARGET_SDK_VERSION - multiDexEnabled true - } - - kotlinOptions { - jvmTarget = '1.8' - } - - compileOptions { - coreLibraryDesugaringEnabled true - sourceCompatibility JAVA_VERSION - targetCompatibility JAVA_VERSION - } -} - -ktlint { - // Use a newer version to resolve https://github.com/JLLeitschuh/ktlint-gradle/issues/507 - version = "0.47.1" -} - -dependencies { - coreLibraryDesugaring libs.android.tools.desugar - - implementation project(':core-util') - - coreLibraryDesugaring libs.android.tools.desugar - - implementation libs.androidx.core.ktx - implementation libs.androidx.fragment.ktx - implementation libs.androidx.annotation - implementation libs.androidx.appcompat - implementation libs.rxjava3.rxandroid - implementation libs.rxjava3.rxjava - implementation libs.rxjava3.rxkotlin - implementation libs.androidx.multidex - implementation libs.material.material - implementation libs.androidx.constraintlayout - - implementation libs.kotlin.stdlib.jdk8 - ktlintRuleset libs.ktlint.twitter.compose - - testImplementation testLibs.junit.junit - testImplementation testLibs.mockito.core - testImplementation testLibs.mockito.android - testImplementation testLibs.mockito.kotlin - testImplementation testLibs.robolectric.robolectric - testImplementation testLibs.androidx.test.core - testImplementation testLibs.androidx.test.core.ktx -} diff --git a/build-logic/plugins/src/main/java/signal-sample-app.gradle.kts b/build-logic/plugins/src/main/java/signal-sample-app.gradle.kts new file mode 100644 index 000000000..2990fe16c --- /dev/null +++ b/build-logic/plugins/src/main/java/signal-sample-app.gradle.kts @@ -0,0 +1,83 @@ +@file:Suppress("UnstableApiUsage") + +import org.gradle.accessors.dm.LibrariesForLibs +import org.gradle.accessors.dm.LibrariesForTestLibs +import org.gradle.api.JavaVersion +import org.gradle.kotlin.dsl.extra +import org.gradle.kotlin.dsl.provideDelegate +import org.gradle.kotlin.dsl.the + +val libs = the() +val testLibs = the() + +val signalBuildToolsVersion: String by extra +val signalCompileSdkVersion: String by extra +val signalTargetSdkVersion: Int by extra +val signalMinSdkVersion: Int by extra +val signalJavaVersion: JavaVersion by extra + +plugins { + id("com.android.application") + id("kotlin-android") + id("org.jlleitschuh.gradle.ktlint") + id("android-constants") +} + +android { + buildToolsVersion = signalBuildToolsVersion + compileSdkVersion = signalCompileSdkVersion + + defaultConfig { + versionCode = 1 + versionName = "1.0" + + minSdk = signalMinSdkVersion + targetSdk = signalTargetSdkVersion + multiDexEnabled = true + } + + compileOptions { + isCoreLibraryDesugaringEnabled = true + sourceCompatibility = signalJavaVersion + targetCompatibility = signalJavaVersion + } + + kotlinOptions { + jvmTarget = "11" + } +} + +ktlint { + // Use a newer version to resolve https://github.com/JLLeitschuh/ktlint-gradle/issues/507 + version.set("0.47.1") +} + +dependencies { + coreLibraryDesugaring(libs.android.tools.desugar) + + implementation(project(":core-util")) + + coreLibraryDesugaring(libs.android.tools.desugar) + + implementation(libs.androidx.core.ktx) + implementation(libs.androidx.fragment.ktx) + implementation(libs.androidx.annotation) + implementation(libs.androidx.appcompat) + implementation(libs.rxjava3.rxandroid) + implementation(libs.rxjava3.rxjava) + implementation(libs.rxjava3.rxkotlin) + implementation(libs.androidx.multidex) + implementation(libs.material.material) + implementation(libs.androidx.constraintlayout) + implementation(libs.kotlin.stdlib.jdk8) + + ktlintRuleset(libs.ktlint.twitter.compose) + + testImplementation(testLibs.junit.junit) + testImplementation(testLibs.mockito.core) + testImplementation(testLibs.mockito.android) + testImplementation(testLibs.mockito.kotlin) + testImplementation(testLibs.robolectric.robolectric) + testImplementation(testLibs.androidx.test.core) + testImplementation(testLibs.androidx.test.core.ktx) +} diff --git a/build-logic/tools/build.gradle b/build-logic/tools/build.gradle.kts similarity index 55% rename from build-logic/tools/build.gradle rename to build-logic/tools/build.gradle.kts index 4d2153a1d..8d886b449 100644 --- a/build-logic/tools/build.gradle +++ b/build-logic/tools/build.gradle.kts @@ -1,21 +1,21 @@ plugins { - id "org.jetbrains.kotlin.jvm" version "1.8.0" - id "java-library" - id "org.jlleitschuh.gradle.ktlint" version "11.1.0" + id("org.jetbrains.kotlin.jvm") version "1.6.21" + id("java-library") + id("org.jlleitschuh.gradle.ktlint") version "11.1.0" } java { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 + sourceCompatibility = JavaVersion.VERSION_11 + targetCompatibility = JavaVersion.VERSION_11 } // NOTE: For now, in order to run ktlint on this project, you have to manually run ./gradlew :build-logic:tools:ktlintFormat // Gotta figure out how to get it auto-included in the normal ./gradlew ktlintFormat ktlint { // Use a newer version to resolve https://github.com/JLLeitschuh/ktlint-gradle/issues/507 - version = "0.47.1" + version.set("0.47.1") } dependencies { - implementation libs.dnsjava + implementation(libs.dnsjava) } diff --git a/build.gradle b/build.gradle index d76ac03be..3e557faef 100644 --- a/build.gradle +++ b/build.gradle @@ -22,7 +22,7 @@ buildscript { classpath 'androidx.navigation:navigation-safe-args-gradle-plugin:2.5.2' classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.17' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - classpath "org.jlleitschuh.gradle:ktlint-gradle:11.1.0" + classpath libs.ktlint classpath 'app.cash.exhaustive:exhaustive-gradle:0.1.1' classpath ('com.squareup.wire:wire-gradle-plugin:4.4.3') { exclude group: 'com.squareup.wire', module: 'wire-swift-generator' diff --git a/dependencies.gradle b/dependencies.gradle index d2e1f95da..2fcf55ac7 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -33,6 +33,8 @@ dependencyResolutionManagement { // Kotlin alias('kotlin-stdlib-jdk8').to('org.jetbrains.kotlin', 'kotlin-stdlib-jdk8').versionRef('kotlin') alias('kotlin-reflect').to('org.jetbrains.kotlin', 'kotlin-reflect').versionRef('kotlin') + alias('kotlin-gradle-plugin').to('org.jetbrains.kotlin', 'kotlin-gradle-plugin').versionRef('kotlin') + alias('ktlint').to('org.jlleitschuh.gradle:ktlint-gradle:11.1.0') // Android X alias('androidx-activity-ktx').to('androidx.activity:activity-ktx:1.5.1') diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml index 0fefe7a24..27e824b98 100644 --- a/gradle/verification-metadata.xml +++ b/gradle/verification-metadata.xml @@ -2886,6 +2886,11 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + @@ -4310,6 +4315,11 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + @@ -4513,6 +4523,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + @@ -5009,6 +5027,11 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + diff --git a/libsignal/service/build.gradle b/libsignal/service/build.gradle index 79457c7b5..8298ee096 100644 --- a/libsignal/service/build.gradle +++ b/libsignal/service/build.gradle @@ -7,19 +7,23 @@ apply plugin: 'signing' apply plugin: 'idea' apply plugin: 'org.jlleitschuh.gradle.ktlint' -sourceCompatibility = 1.8 -archivesBaseName = "signal-service-java" -version = lib_signal_service_version_number -group = lib_signal_service_group_info +archivesBaseName = "signal-service-java" +version = lib_signal_service_version_number +group = lib_signal_service_group_info java { - targetCompatibility = 1.8 withJavadocJar() withSourcesJar() } +kotlin { + jvmToolchain { + languageVersion.set(JavaLanguageVersion.of(11)) + } +} + compileJava { - options.release = 8 + options.release = 11 } configurations { diff --git a/reproducible-builds/docker/gradlewarmer/build.gradle b/reproducible-builds/docker/gradlewarmer/build.gradle index df4abf5a5..f14ae75f9 100644 --- a/reproducible-builds/docker/gradlewarmer/build.gradle +++ b/reproducible-builds/docker/gradlewarmer/build.gradle @@ -1,5 +1,5 @@ apply plugin: 'java' -sourceCompatibility = 1.8 +sourceCompatibility = 11 version = '0.1.0' dependencies {