[#55] Partial implementation of dependency locking

With the release of Kotlin 1.6, dependency locks can apply pure Kotlin modules.

Android modules are not yet supported.
This commit is contained in:
Carter Jernigan 2021-12-03 08:04:20 -05:00
parent 66750a58b1
commit 227f4be54a
8 changed files with 125 additions and 8 deletions

View File

@ -8,13 +8,13 @@ assignees: ''
---
For a Gradle dependency:
1. Update the dependency version in the root `gradle.properties`.
2. Update the dependency locks
1. For Gradle plugins `./gradlew dependencies --write-locks`
2. For module dependencies, we do not have locking enabled yet
3. Are there any new APIs or possible migrations for this dependency?
1. Update the dependency version in the root `gradle.properties`
1. Update the dependency locks
1. For Gradle plugins: `./gradlew dependencies --write-locks`
1. For Gradle dependencies: `./gradlew resolveAndLockAll --write-locks`
1. Verify no unexpected entries appear in the lockfiles. _A supply chain attack could occur during this stage. The lockfile narrows the supply chain attack window to this very moment (as opposed to every time a build occurs)_
1. Are there any new APIs or possible migrations for this dependency?
For Gradle itself:
1. Update the Gradle version in `gradle/wrapper/gradle-wrapper.properties`
2. Update the SHA version, referencing https://gradle.org/release-checksums/
3. Update the Gradle wrapper by running `./gradlew wrapper`
1. Run `./gradle wrapper --gradle-version $X`
1. Add `distributionSha256Sum=` in `gradle/wrapper/gradle-wrapper.properties`, referencing https://gradle.org/release-checksums/

View File

@ -0,0 +1,28 @@
dependencyLocking {
lockAllConfigurations()
}
// Just resolves dependencies
tasks {
register("resolveAll") {
doLast {
configurations.filter {
// Add any custom filtering on the configurations to be resolved
it.isCanBeResolved
}.forEach { it.resolve() }
}
}
// Invoke with `./gradlew resolveAndLockAll --write-locks`
register("resolveAndLockAll") {
doFirst {
require(gradle.startParameter.isWriteDependencyLocks)
}
doLast {
configurations.filter {
// Add any custom filtering on the configurations to be resolved
it.isCanBeResolved
}.forEach { it.resolve() }
}
}
}

View File

@ -4,6 +4,7 @@ import java.util.*
plugins {
kotlin("multiplatform")
id("zcash.kotlin-multiplatform-build-conventions")
id("zcash.dependency-conventions")
}
// Injects build information

View File

@ -0,0 +1,26 @@
# This is a Gradle generated file for dependency locking.
# Manual edits can break the build and are not advised.
# This file is expected to be part of source control.
junit:junit:4.12=jvmTestCompileClasspath,jvmTestRuntimeClasspath
net.java.dev.jna:jna:5.6.0=kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
org.hamcrest:hamcrest-core:1.3=jvmTestCompileClasspath,jvmTestRuntimeClasspath
org.jetbrains.intellij.deps:trove4j:1.0.20181211=kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
org.jetbrains.kotlin:kotlin-compiler-embeddable:1.6.0=kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
org.jetbrains.kotlin:kotlin-daemon-embeddable:1.6.0=kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:1.6.0=kotlinKlibCommonizerClasspath
org.jetbrains.kotlin:kotlin-reflect:1.6.0=kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
org.jetbrains.kotlin:kotlin-script-runtime:1.6.0=kotlinCompilerClasspath,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain,kotlinKlibCommonizerClasspath
org.jetbrains.kotlin:kotlin-scripting-common:1.6.0=kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain
org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.6.0=kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain
org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.6.0=kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain
org.jetbrains.kotlin:kotlin-scripting-jvm:1.6.0=kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain
org.jetbrains.kotlin:kotlin-stdlib-common:1.6.0=commonMainApiDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestImplementationDependenciesMetadata,kotlinCompilerClasspath,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain,kotlinKlibCommonizerClasspath,metadataCompileClasspath
org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.0=commonMainApiDependenciesMetadata,commonTestApiDependenciesMetadata,jvmCompileClasspath,jvmRuntimeClasspath,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestImplementationDependenciesMetadata,jvmTestRuntimeClasspath,metadataCompileClasspath
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.0=commonMainApiDependenciesMetadata,commonTestApiDependenciesMetadata,jvmCompileClasspath,jvmRuntimeClasspath,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestImplementationDependenciesMetadata,jvmTestRuntimeClasspath,metadataCompileClasspath
org.jetbrains.kotlin:kotlin-stdlib:1.6.0=commonMainApiDependenciesMetadata,commonTestApiDependenciesMetadata,jvmCompileClasspath,jvmRuntimeClasspath,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestImplementationDependenciesMetadata,jvmTestRuntimeClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain,kotlinKlibCommonizerClasspath,metadataCompileClasspath
org.jetbrains.kotlin:kotlin-test-annotations-common:1.6.0=commonTestImplementationDependenciesMetadata,jvmTestImplementationDependenciesMetadata
org.jetbrains.kotlin:kotlin-test-common:1.6.0=commonTestImplementationDependenciesMetadata,jvmTestImplementationDependenciesMetadata
org.jetbrains.kotlin:kotlin-test-junit:1.6.0=jvmTestCompileClasspath,jvmTestRuntimeClasspath
org.jetbrains.kotlin:kotlin-test:1.6.0=commonTestImplementationDependenciesMetadata,jvmTestCompileClasspath,jvmTestImplementationDependenciesMetadata,jvmTestRuntimeClasspath
org.jetbrains:annotations:13.0=commonMainApiDependenciesMetadata,commonTestApiDependenciesMetadata,jvmCompileClasspath,jvmRuntimeClasspath,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestImplementationDependenciesMetadata,jvmTestRuntimeClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain,kotlinKlibCommonizerClasspath,metadataCompileClasspath
empty=archives,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainIntransitiveDependenciesMetadata,commonMainRuntimeOnlyDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestIntransitiveDependenciesMetadata,commonTestRuntimeOnlyDependenciesMetadata,default,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainIntransitiveDependenciesMetadata,jvmMainRuntimeOnlyDependenciesMetadata,jvmTestCompileOnlyDependenciesMetadata,jvmTestIntransitiveDependenciesMetadata,jvmTestRuntimeOnlyDependenciesMetadata,kotlinCompilerPluginClasspath,kotlinNativeCompilerPluginClasspath,kotlinScriptDef,kotlinScriptDefExtensions,testKotlinScriptDef,testKotlinScriptDefExtensions

View File

@ -2,6 +2,7 @@ plugins {
kotlin("multiplatform")
id("zcash.kotlin-multiplatform-build-conventions")
id("zcash.kotlin-multiplatform-jacoco-conventions")
id("zcash.dependency-conventions")
}
kotlin {

View File

@ -0,0 +1,32 @@
# This is a Gradle generated file for dependency locking.
# Manual edits can break the build and are not advised.
# This file is expected to be part of source control.
junit:junit:4.12=jvmTestCompileClasspath,jvmTestRuntimeClasspath
net.java.dev.jna:jna-platform:5.5.0=jvmTestRuntimeClasspath
net.java.dev.jna:jna:5.5.0=jvmTestRuntimeClasspath
net.java.dev.jna:jna:5.6.0=kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
org.hamcrest:hamcrest-core:1.3=jvmTestCompileClasspath,jvmTestRuntimeClasspath
org.jetbrains.intellij.deps:trove4j:1.0.20181211=kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
org.jetbrains.kotlin:kotlin-compiler-embeddable:1.6.0=kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
org.jetbrains.kotlin:kotlin-daemon-embeddable:1.6.0=kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:1.6.0=kotlinKlibCommonizerClasspath
org.jetbrains.kotlin:kotlin-reflect:1.6.0=kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
org.jetbrains.kotlin:kotlin-script-runtime:1.6.0=kotlinCompilerClasspath,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain,kotlinKlibCommonizerClasspath
org.jetbrains.kotlin:kotlin-scripting-common:1.6.0=kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain
org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.6.0=kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain
org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.6.0=kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain
org.jetbrains.kotlin:kotlin-scripting-jvm:1.6.0=kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain
org.jetbrains.kotlin:kotlin-stdlib-common:1.6.0=commonMainApiDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestImplementationDependenciesMetadata,kotlinCompilerClasspath,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain,kotlinKlibCommonizerClasspath,metadataCompileClasspath
org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.0=commonMainApiDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestImplementationDependenciesMetadata,jvmCompileClasspath,jvmRuntimeClasspath,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestImplementationDependenciesMetadata,jvmTestRuntimeClasspath,metadataCompileClasspath
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.0=commonMainApiDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestImplementationDependenciesMetadata,jvmCompileClasspath,jvmRuntimeClasspath,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestImplementationDependenciesMetadata,jvmTestRuntimeClasspath,metadataCompileClasspath
org.jetbrains.kotlin:kotlin-stdlib:1.6.0=commonMainApiDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestImplementationDependenciesMetadata,jvmCompileClasspath,jvmRuntimeClasspath,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestImplementationDependenciesMetadata,jvmTestRuntimeClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain,kotlinKlibCommonizerClasspath,metadataCompileClasspath
org.jetbrains.kotlin:kotlin-test-annotations-common:1.6.0=commonTestImplementationDependenciesMetadata,jvmTestImplementationDependenciesMetadata
org.jetbrains.kotlin:kotlin-test-common:1.6.0=commonTestImplementationDependenciesMetadata,jvmTestImplementationDependenciesMetadata
org.jetbrains.kotlin:kotlin-test-junit:1.6.0=jvmTestCompileClasspath,jvmTestRuntimeClasspath
org.jetbrains.kotlin:kotlin-test:1.6.0=commonTestImplementationDependenciesMetadata,jvmTestCompileClasspath,jvmTestImplementationDependenciesMetadata,jvmTestRuntimeClasspath
org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.5.2=jvmCompileClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.2=commonMainApiDependenciesMetadata,commonTestImplementationDependenciesMetadata,jvmCompileClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestImplementationDependenciesMetadata,jvmTestRuntimeClasspath,metadataCompileClasspath
org.jetbrains.kotlinx:kotlinx-coroutines-debug:1.5.2=jvmTestRuntimeClasspath
org.jetbrains.kotlinx:kotlinx-coroutines-test:1.5.2=jvmTestCompileClasspath,jvmTestImplementationDependenciesMetadata,jvmTestRuntimeClasspath
org.jetbrains:annotations:13.0=commonMainApiDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestImplementationDependenciesMetadata,jvmCompileClasspath,jvmRuntimeClasspath,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestImplementationDependenciesMetadata,jvmTestRuntimeClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain,kotlinKlibCommonizerClasspath,metadataCompileClasspath
empty=archives,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainIntransitiveDependenciesMetadata,commonMainRuntimeOnlyDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestIntransitiveDependenciesMetadata,commonTestRuntimeOnlyDependenciesMetadata,default,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainIntransitiveDependenciesMetadata,jvmMainRuntimeOnlyDependenciesMetadata,jvmTestCompileOnlyDependenciesMetadata,jvmTestIntransitiveDependenciesMetadata,jvmTestRuntimeOnlyDependenciesMetadata,kotlinCompilerPluginClasspath,kotlinNativeCompilerPluginClasspath,kotlinScriptDef,kotlinScriptDefExtensions,testKotlinScriptDef,testKotlinScriptDefExtensions

View File

@ -2,6 +2,7 @@ plugins {
kotlin("multiplatform")
id("zcash.kotlin-multiplatform-build-conventions")
id("zcash.kotlin-multiplatform-jacoco-conventions")
id("zcash.dependency-conventions")
}
kotlin {

28
test-lib/gradle.lockfile Normal file
View File

@ -0,0 +1,28 @@
# This is a Gradle generated file for dependency locking.
# Manual edits can break the build and are not advised.
# This file is expected to be part of source control.
junit:junit:4.12=jvmTestCompileClasspath,jvmTestRuntimeClasspath
net.java.dev.jna:jna:5.6.0=kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
org.hamcrest:hamcrest-core:1.3=jvmTestCompileClasspath,jvmTestRuntimeClasspath
org.jetbrains.intellij.deps:trove4j:1.0.20181211=kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
org.jetbrains.kotlin:kotlin-compiler-embeddable:1.6.0=kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
org.jetbrains.kotlin:kotlin-daemon-embeddable:1.6.0=kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:1.6.0=kotlinKlibCommonizerClasspath
org.jetbrains.kotlin:kotlin-reflect:1.6.0=kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
org.jetbrains.kotlin:kotlin-script-runtime:1.6.0=kotlinCompilerClasspath,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain,kotlinKlibCommonizerClasspath
org.jetbrains.kotlin:kotlin-scripting-common:1.6.0=kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain
org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.6.0=kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain
org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.6.0=kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain
org.jetbrains.kotlin:kotlin-scripting-jvm:1.6.0=kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain
org.jetbrains.kotlin:kotlin-stdlib-common:1.6.0=commonMainApiDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestImplementationDependenciesMetadata,kotlinCompilerClasspath,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain,kotlinKlibCommonizerClasspath,metadataCompileClasspath
org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.0=commonMainApiDependenciesMetadata,commonTestApiDependenciesMetadata,jvmCompileClasspath,jvmRuntimeClasspath,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestImplementationDependenciesMetadata,jvmTestRuntimeClasspath,metadataCompileClasspath
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.0=commonMainApiDependenciesMetadata,commonTestApiDependenciesMetadata,jvmCompileClasspath,jvmRuntimeClasspath,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestImplementationDependenciesMetadata,jvmTestRuntimeClasspath,metadataCompileClasspath
org.jetbrains.kotlin:kotlin-stdlib:1.6.0=commonMainApiDependenciesMetadata,commonTestApiDependenciesMetadata,jvmCompileClasspath,jvmRuntimeClasspath,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestImplementationDependenciesMetadata,jvmTestRuntimeClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain,kotlinKlibCommonizerClasspath,metadataCompileClasspath
org.jetbrains.kotlin:kotlin-test-annotations-common:1.6.0=commonTestImplementationDependenciesMetadata,jvmTestImplementationDependenciesMetadata
org.jetbrains.kotlin:kotlin-test-common:1.6.0=commonTestImplementationDependenciesMetadata,jvmTestImplementationDependenciesMetadata
org.jetbrains.kotlin:kotlin-test-junit:1.6.0=jvmTestCompileClasspath,jvmTestRuntimeClasspath
org.jetbrains.kotlin:kotlin-test:1.6.0=commonTestImplementationDependenciesMetadata,jvmTestCompileClasspath,jvmTestImplementationDependenciesMetadata,jvmTestRuntimeClasspath
org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.5.2=jvmCompileClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.2=commonMainApiDependenciesMetadata,jvmCompileClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestImplementationDependenciesMetadata,jvmTestRuntimeClasspath,metadataCompileClasspath
org.jetbrains:annotations:13.0=commonMainApiDependenciesMetadata,commonTestApiDependenciesMetadata,jvmCompileClasspath,jvmRuntimeClasspath,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestImplementationDependenciesMetadata,jvmTestRuntimeClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataMain,kotlinKlibCommonizerClasspath,metadataCompileClasspath
empty=archives,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainIntransitiveDependenciesMetadata,commonMainRuntimeOnlyDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestIntransitiveDependenciesMetadata,commonTestRuntimeOnlyDependenciesMetadata,default,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainIntransitiveDependenciesMetadata,jvmMainRuntimeOnlyDependenciesMetadata,jvmTestCompileOnlyDependenciesMetadata,jvmTestIntransitiveDependenciesMetadata,jvmTestRuntimeOnlyDependenciesMetadata,kotlinCompilerPluginClasspath,kotlinNativeCompilerPluginClasspath,kotlinScriptDef,kotlinScriptDefExtensions,testKotlinScriptDef,testKotlinScriptDefExtensions