From 8f7fe40adcffcdfafd91dea5b410ac6a34ee546b Mon Sep 17 00:00:00 2001 From: Sam Gammon Date: Thu, 29 Feb 2024 20:26:52 -0800 Subject: [PATCH] feat: add jpms support with `module-info.java` MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - feat: add `module-info.java` - feat: add `Java9Modularity` used by other kotlinx projects - feat: build `core` project as multi-release jar - chore: upgrade gradle → `8.6` (to run under jvm21) - chore: general build cleanup (use kotlin for most build scripts) - chore: add gradle lockfiles and locking config - chore: add gradle dependency verification config --- .gitignore | 4 +- benchmarks/build.gradle.kts | 9 +- benchmarks/gradle.lockfile | 40 + benchmarks/runner/build.gradle | 4 +- build.gradle.kts | 6 +- buildSrc/build.gradle.kts | 67 + buildSrc/gradle.lockfile | 48 + buildSrc/settings.gradle.kts | 8 + buildSrc/src/main/kotlin/BuildConventions.kt | 58 + buildSrc/src/main/kotlin/Java9Modularity.kt | 227 +++ core/build.gradle.kts | 16 +- core/gradle.lockfile | 42 + core/jvmMainModule/src/module-info.java | 4 + gradle.lockfile | 4 + gradle.properties | 11 +- gradle/libs.versions.toml | 20 + gradle/verification-keyring.gpg | Bin 0 -> 62110 bytes gradle/verification-keyring.keys | 1518 ++++++++++++++++++ gradle/verification-metadata.xml | 165 ++ gradle/wrapper/gradle-wrapper.jar | Bin 59203 -> 43462 bytes gradle/wrapper/gradle-wrapper.properties | 4 +- gradlew | 282 ++-- gradlew.bat | 181 ++- settings-gradle.lockfile | 4 + settings.gradle | 14 - settings.gradle.kts | 14 + 26 files changed, 2528 insertions(+), 222 deletions(-) create mode 100644 benchmarks/gradle.lockfile create mode 100644 buildSrc/build.gradle.kts create mode 100644 buildSrc/gradle.lockfile create mode 100644 buildSrc/settings.gradle.kts create mode 100644 buildSrc/src/main/kotlin/BuildConventions.kt create mode 100644 buildSrc/src/main/kotlin/Java9Modularity.kt create mode 100644 core/gradle.lockfile create mode 100644 core/jvmMainModule/src/module-info.java create mode 100644 gradle.lockfile create mode 100644 gradle/libs.versions.toml create mode 100644 gradle/verification-keyring.gpg create mode 100644 gradle/verification-keyring.keys create mode 100644 gradle/verification-metadata.xml create mode 100644 settings-gradle.lockfile delete mode 100644 settings.gradle create mode 100644 settings.gradle.kts diff --git a/.gitignore b/.gitignore index c7dbd5a5..e7854380 100644 --- a/.gitignore +++ b/.gitignore @@ -6,4 +6,6 @@ target build /kotlinx-collections-immutable/dependency-reduced-pom.xml /benchmarks-runner/benchmarkResults -/benchmarks-runner/localReferenceBenchmarkResults \ No newline at end of file +/benchmarks-runner/localReferenceBenchmarkResults +kotlin-js-store/ +.kotlin/ diff --git a/benchmarks/build.gradle.kts b/benchmarks/build.gradle.kts index da19e723..2ce56542 100644 --- a/benchmarks/build.gradle.kts +++ b/benchmarks/build.gradle.kts @@ -1,12 +1,14 @@ +@file:OptIn(org.jetbrains.kotlin.gradle.targets.js.dsl.ExperimentalWasmDsl::class) + +import BuildConventions.baseConventions import kotlinx.benchmark.gradle.JvmBenchmarkTarget import org.gradle.jvm.tasks.Jar plugins { - id("kotlin-multiplatform") + `kotlin-multiplatform` id("org.jetbrains.kotlinx.benchmark") version "0.4.10" } - evaluationDependsOn(":kotlinx-collections-immutable") kotlin { @@ -105,6 +107,9 @@ benchmark { } } +// configure baseline conventions +baseConventions() + val benchmarksJar: Configuration by configurations.creating afterEvaluate { diff --git a/benchmarks/gradle.lockfile b/benchmarks/gradle.lockfile new file mode 100644 index 00000000..b06d2b7e --- /dev/null +++ b/benchmarks/gradle.lockfile @@ -0,0 +1,40 @@ +# 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. +net.sf.jopt-simple:jopt-simple:4.6=jvmBenchmarkGenerateCP,jvmCompileClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath +org.apache.commons:commons-math3:3.2=jvmBenchmarkGenerateCP,jvmCompileClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath +org.jetbrains.intellij.deps:trove4j:1.0.20200330=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath +org.jetbrains.kotlin:kotlin-build-common:1.9.22=kotlinBuildToolsApiClasspath +org.jetbrains.kotlin:kotlin-build-tools-api:1.9.22=kotlinBuildToolsApiClasspath +org.jetbrains.kotlin:kotlin-build-tools-impl:1.9.22=kotlinBuildToolsApiClasspath +org.jetbrains.kotlin:kotlin-compiler-embeddable:1.9.22=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath +org.jetbrains.kotlin:kotlin-compiler-runner:1.9.22=kotlinBuildToolsApiClasspath +org.jetbrains.kotlin:kotlin-daemon-client:1.9.22=kotlinBuildToolsApiClasspath +org.jetbrains.kotlin:kotlin-daemon-embeddable:1.9.22=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath +org.jetbrains.kotlin:kotlin-dom-api-compat:1.9.22=allSourceSetsCompileDependenciesMetadata,jsCompileClasspath,jsJsBenchmarkApiDependenciesMetadata,jsJsBenchmarkCompileClasspath,jsJsBenchmarkCompileOnlyDependenciesMetadata,jsJsBenchmarkImplementationDependenciesMetadata,jsJsBenchmarkNpmAggregated,jsJsBenchmarkResolvableDependenciesMetadata,jsJsBenchmarkRuntimeClasspath,jsMainApiDependenciesMetadata,jsMainCompileOnlyDependenciesMetadata,jsMainImplementationDependenciesMetadata,jsMainResolvableDependenciesMetadata,jsNpmAggregated,jsRuntimeClasspath,jsTestApiDependenciesMetadata,jsTestCompileClasspath,jsTestCompileOnlyDependenciesMetadata,jsTestImplementationDependenciesMetadata,jsTestNpmAggregated,jsTestResolvableDependenciesMetadata,jsTestRuntimeClasspath +org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:1.9.22=kotlinKlibCommonizerClasspath +org.jetbrains.kotlin:kotlin-reflect:1.6.10=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath +org.jetbrains.kotlin:kotlin-script-runtime:1.9.22=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathJsJsBenchmark,kotlinCompilerPluginClasspathJsMain,kotlinCompilerPluginClasspathJsTest,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataCommonMain,kotlinCompilerPluginClasspathMetadataMain,kotlinCompilerPluginClasspathWasmJsMain,kotlinCompilerPluginClasspathWasmJsTest,kotlinCompilerPluginClasspathWasmJsWasmJsBenchmark,kotlinKlibCommonizerClasspath +org.jetbrains.kotlin:kotlin-scripting-common:1.9.22=kotlinCompilerPluginClasspathJsJsBenchmark,kotlinCompilerPluginClasspathJsMain,kotlinCompilerPluginClasspathJsTest,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataCommonMain,kotlinCompilerPluginClasspathMetadataMain,kotlinCompilerPluginClasspathWasmJsMain,kotlinCompilerPluginClasspathWasmJsTest,kotlinCompilerPluginClasspathWasmJsWasmJsBenchmark +org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.9.22=kotlinCompilerPluginClasspathJsJsBenchmark,kotlinCompilerPluginClasspathJsMain,kotlinCompilerPluginClasspathJsTest,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataCommonMain,kotlinCompilerPluginClasspathMetadataMain,kotlinCompilerPluginClasspathWasmJsMain,kotlinCompilerPluginClasspathWasmJsTest,kotlinCompilerPluginClasspathWasmJsWasmJsBenchmark +org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.9.22=kotlinCompilerPluginClasspathJsJsBenchmark,kotlinCompilerPluginClasspathJsMain,kotlinCompilerPluginClasspathJsTest,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataCommonMain,kotlinCompilerPluginClasspathMetadataMain,kotlinCompilerPluginClasspathWasmJsMain,kotlinCompilerPluginClasspathWasmJsTest,kotlinCompilerPluginClasspathWasmJsWasmJsBenchmark +org.jetbrains.kotlin:kotlin-scripting-jvm:1.9.22=kotlinCompilerPluginClasspathJsJsBenchmark,kotlinCompilerPluginClasspathJsMain,kotlinCompilerPluginClasspathJsTest,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataCommonMain,kotlinCompilerPluginClasspathMetadataMain,kotlinCompilerPluginClasspathWasmJsMain,kotlinCompilerPluginClasspathWasmJsTest,kotlinCompilerPluginClasspathWasmJsWasmJsBenchmark +org.jetbrains.kotlin:kotlin-stdlib-js:1.9.22=jsCompileClasspath,jsJsBenchmarkApiDependenciesMetadata,jsJsBenchmarkCompileClasspath,jsJsBenchmarkCompileOnlyDependenciesMetadata,jsJsBenchmarkImplementationDependenciesMetadata,jsJsBenchmarkNpmAggregated,jsJsBenchmarkRuntimeClasspath,jsMainApiDependenciesMetadata,jsMainCompileOnlyDependenciesMetadata,jsMainImplementationDependenciesMetadata,jsNpmAggregated,jsRuntimeClasspath,jsTestApiDependenciesMetadata,jsTestCompileClasspath,jsTestCompileOnlyDependenciesMetadata,jsTestImplementationDependenciesMetadata,jsTestNpmAggregated,jsTestRuntimeClasspath +org.jetbrains.kotlin:kotlin-stdlib-wasm-js:1.9.22=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath,wasmJsWasmJsBenchmarkCompileClasspath,wasmJsWasmJsBenchmarkNpmAggregated,wasmJsWasmJsBenchmarkRuntimeClasspath +org.jetbrains.kotlin:kotlin-stdlib:1.9.22=allSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jsCompileClasspath,jsJsBenchmarkApiDependenciesMetadata,jsJsBenchmarkCompileClasspath,jsJsBenchmarkCompileOnlyDependenciesMetadata,jsJsBenchmarkImplementationDependenciesMetadata,jsJsBenchmarkNpmAggregated,jsJsBenchmarkResolvableDependenciesMetadata,jsJsBenchmarkRuntimeClasspath,jsMainApiDependenciesMetadata,jsMainCompileOnlyDependenciesMetadata,jsMainImplementationDependenciesMetadata,jsMainResolvableDependenciesMetadata,jsNpmAggregated,jsRuntimeClasspath,jsTestApiDependenciesMetadata,jsTestCompileClasspath,jsTestCompileOnlyDependenciesMetadata,jsTestImplementationDependenciesMetadata,jsTestNpmAggregated,jsTestResolvableDependenciesMetadata,jsTestRuntimeClasspath,jvmCompileClasspath,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmRuntimeClasspath,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathJsJsBenchmark,kotlinCompilerPluginClasspathJsMain,kotlinCompilerPluginClasspathJsTest,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataCommonMain,kotlinCompilerPluginClasspathMetadataMain,kotlinCompilerPluginClasspathWasmJsMain,kotlinCompilerPluginClasspathWasmJsTest,kotlinCompilerPluginClasspathWasmJsWasmJsBenchmark,kotlinKlibCommonizerClasspath,linuxX64CompilationApi,linuxX64CompilationDependenciesMetadata,linuxX64CompileKlibraries,linuxX64MainApiDependenciesMetadata,linuxX64MainCompileOnlyDependenciesMetadata,linuxX64MainImplementationDependenciesMetadata,linuxX64MainResolvableDependenciesMetadata,linuxX64TestApiDependenciesMetadata,linuxX64TestCompilationDependenciesMetadata,linuxX64TestCompileKlibraries,linuxX64TestCompileOnlyDependenciesMetadata,linuxX64TestImplementationDependenciesMetadata,linuxX64TestResolvableDependenciesMetadata,macosX64CompilationApi,macosX64CompilationDependenciesMetadata,macosX64CompileKlibraries,macosX64MainApiDependenciesMetadata,macosX64MainCompileOnlyDependenciesMetadata,macosX64MainImplementationDependenciesMetadata,macosX64MainResolvableDependenciesMetadata,macosX64TestApiDependenciesMetadata,macosX64TestCompilationDependenciesMetadata,macosX64TestCompileKlibraries,macosX64TestCompileOnlyDependenciesMetadata,macosX64TestImplementationDependenciesMetadata,macosX64TestResolvableDependenciesMetadata,metadataCommonMainCompileClasspath,metadataCompileClasspath,metadataNativeMainCompileClasspath,mingwX64CompilationApi,mingwX64CompilationDependenciesMetadata,mingwX64CompileKlibraries,mingwX64MainApiDependenciesMetadata,mingwX64MainCompileOnlyDependenciesMetadata,mingwX64MainImplementationDependenciesMetadata,mingwX64MainResolvableDependenciesMetadata,mingwX64TestApiDependenciesMetadata,mingwX64TestCompilationDependenciesMetadata,mingwX64TestCompileKlibraries,mingwX64TestCompileOnlyDependenciesMetadata,mingwX64TestImplementationDependenciesMetadata,mingwX64TestResolvableDependenciesMetadata,nativeMainApiDependenciesMetadata,nativeMainCompileOnlyDependenciesMetadata,nativeMainImplementationDependenciesMetadata,nativeMainResolvableDependenciesMetadata,nativeTestApiDependenciesMetadata,nativeTestCompileOnlyDependenciesMetadata,nativeTestImplementationDependenciesMetadata,nativeTestResolvableDependenciesMetadata,wasmJsCompileClasspath,wasmJsMainApiDependenciesMetadata,wasmJsMainCompileOnlyDependenciesMetadata,wasmJsMainImplementationDependenciesMetadata,wasmJsMainResolvableDependenciesMetadata,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestApiDependenciesMetadata,wasmJsTestCompileClasspath,wasmJsTestCompileOnlyDependenciesMetadata,wasmJsTestImplementationDependenciesMetadata,wasmJsTestNpmAggregated,wasmJsTestResolvableDependenciesMetadata,wasmJsTestRuntimeClasspath,wasmJsWasmJsBenchmarkApiDependenciesMetadata,wasmJsWasmJsBenchmarkCompileClasspath,wasmJsWasmJsBenchmarkCompileOnlyDependenciesMetadata,wasmJsWasmJsBenchmarkImplementationDependenciesMetadata,wasmJsWasmJsBenchmarkNpmAggregated,wasmJsWasmJsBenchmarkResolvableDependenciesMetadata,wasmJsWasmJsBenchmarkRuntimeClasspath +org.jetbrains.kotlin:kotlin-test-js-runner:1.9.22=jsJsBenchmarkNpmAggregated,jsNpmAggregated,jsTestNpmAggregated,wasmJsNpmAggregated,wasmJsTestNpmAggregated,wasmJsWasmJsBenchmarkNpmAggregated +org.jetbrains.kotlinx:kotlinx-benchmark-runtime-jsir:0.4.10=jsCompileClasspath,jsJsBenchmarkApiDependenciesMetadata,jsJsBenchmarkCompileClasspath,jsJsBenchmarkCompileOnlyDependenciesMetadata,jsJsBenchmarkImplementationDependenciesMetadata,jsJsBenchmarkNpmAggregated,jsJsBenchmarkRuntimeClasspath,jsMainApiDependenciesMetadata,jsMainCompileOnlyDependenciesMetadata,jsMainImplementationDependenciesMetadata,jsNpmAggregated,jsRuntimeClasspath,jsTestApiDependenciesMetadata,jsTestCompileClasspath,jsTestCompileOnlyDependenciesMetadata,jsTestImplementationDependenciesMetadata,jsTestNpmAggregated,jsTestRuntimeClasspath +org.jetbrains.kotlinx:kotlinx-benchmark-runtime-jvm:0.4.10=jvmCompileClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath +org.jetbrains.kotlinx:kotlinx-benchmark-runtime-linuxx64:0.4.10=linuxX64CompilationDependenciesMetadata,linuxX64CompileKlibraries,linuxX64TestCompilationDependenciesMetadata,linuxX64TestCompileKlibraries +org.jetbrains.kotlinx:kotlinx-benchmark-runtime-macosx64:0.4.10=macosX64CompilationDependenciesMetadata,macosX64CompileKlibraries,macosX64TestCompilationDependenciesMetadata,macosX64TestCompileKlibraries +org.jetbrains.kotlinx:kotlinx-benchmark-runtime-mingwx64:0.4.10=mingwX64CompilationDependenciesMetadata,mingwX64CompileKlibraries,mingwX64TestCompilationDependenciesMetadata,mingwX64TestCompileKlibraries +org.jetbrains.kotlinx:kotlinx-benchmark-runtime-wasm-js:0.4.10=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath,wasmJsWasmJsBenchmarkCompileClasspath,wasmJsWasmJsBenchmarkNpmAggregated,wasmJsWasmJsBenchmarkRuntimeClasspath +org.jetbrains.kotlinx:kotlinx-benchmark-runtime:0.4.10=allSourceSetsCompileDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,jsCompileClasspath,jsJsBenchmarkApiDependenciesMetadata,jsJsBenchmarkCompileClasspath,jsJsBenchmarkCompileOnlyDependenciesMetadata,jsJsBenchmarkImplementationDependenciesMetadata,jsJsBenchmarkNpmAggregated,jsJsBenchmarkResolvableDependenciesMetadata,jsJsBenchmarkRuntimeClasspath,jsMainApiDependenciesMetadata,jsMainCompileOnlyDependenciesMetadata,jsMainImplementationDependenciesMetadata,jsMainResolvableDependenciesMetadata,jsNpmAggregated,jsRuntimeClasspath,jsTestApiDependenciesMetadata,jsTestCompileClasspath,jsTestCompileOnlyDependenciesMetadata,jsTestImplementationDependenciesMetadata,jsTestNpmAggregated,jsTestResolvableDependenciesMetadata,jsTestRuntimeClasspath,jvmCompileClasspath,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmRuntimeClasspath,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath,linuxX64CompilationDependenciesMetadata,linuxX64CompileKlibraries,linuxX64MainApiDependenciesMetadata,linuxX64MainCompileOnlyDependenciesMetadata,linuxX64MainImplementationDependenciesMetadata,linuxX64MainResolvableDependenciesMetadata,linuxX64TestApiDependenciesMetadata,linuxX64TestCompilationDependenciesMetadata,linuxX64TestCompileKlibraries,linuxX64TestCompileOnlyDependenciesMetadata,linuxX64TestImplementationDependenciesMetadata,linuxX64TestResolvableDependenciesMetadata,macosX64CompilationDependenciesMetadata,macosX64CompileKlibraries,macosX64MainApiDependenciesMetadata,macosX64MainCompileOnlyDependenciesMetadata,macosX64MainImplementationDependenciesMetadata,macosX64MainResolvableDependenciesMetadata,macosX64TestApiDependenciesMetadata,macosX64TestCompilationDependenciesMetadata,macosX64TestCompileKlibraries,macosX64TestCompileOnlyDependenciesMetadata,macosX64TestImplementationDependenciesMetadata,macosX64TestResolvableDependenciesMetadata,metadataCommonMainCompileClasspath,metadataCompileClasspath,metadataNativeMainCompileClasspath,mingwX64CompilationDependenciesMetadata,mingwX64CompileKlibraries,mingwX64MainApiDependenciesMetadata,mingwX64MainCompileOnlyDependenciesMetadata,mingwX64MainImplementationDependenciesMetadata,mingwX64MainResolvableDependenciesMetadata,mingwX64TestApiDependenciesMetadata,mingwX64TestCompilationDependenciesMetadata,mingwX64TestCompileKlibraries,mingwX64TestCompileOnlyDependenciesMetadata,mingwX64TestImplementationDependenciesMetadata,mingwX64TestResolvableDependenciesMetadata,nativeMainApiDependenciesMetadata,nativeMainCompileOnlyDependenciesMetadata,nativeMainImplementationDependenciesMetadata,nativeMainResolvableDependenciesMetadata,nativeTestApiDependenciesMetadata,nativeTestCompileOnlyDependenciesMetadata,nativeTestImplementationDependenciesMetadata,nativeTestResolvableDependenciesMetadata,wasmJsCompileClasspath,wasmJsMainApiDependenciesMetadata,wasmJsMainCompileOnlyDependenciesMetadata,wasmJsMainImplementationDependenciesMetadata,wasmJsMainResolvableDependenciesMetadata,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestApiDependenciesMetadata,wasmJsTestCompileClasspath,wasmJsTestCompileOnlyDependenciesMetadata,wasmJsTestImplementationDependenciesMetadata,wasmJsTestNpmAggregated,wasmJsTestResolvableDependenciesMetadata,wasmJsTestRuntimeClasspath,wasmJsWasmJsBenchmarkApiDependenciesMetadata,wasmJsWasmJsBenchmarkCompileClasspath,wasmJsWasmJsBenchmarkCompileOnlyDependenciesMetadata,wasmJsWasmJsBenchmarkImplementationDependenciesMetadata,wasmJsWasmJsBenchmarkNpmAggregated,wasmJsWasmJsBenchmarkResolvableDependenciesMetadata,wasmJsWasmJsBenchmarkRuntimeClasspath +org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.5.0=kotlinBuildToolsApiClasspath +org.jetbrains:annotations:13.0=jvmCompileClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathJsJsBenchmark,kotlinCompilerPluginClasspathJsMain,kotlinCompilerPluginClasspathJsTest,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataCommonMain,kotlinCompilerPluginClasspathMetadataMain,kotlinCompilerPluginClasspathWasmJsMain,kotlinCompilerPluginClasspathWasmJsTest,kotlinCompilerPluginClasspathWasmJsWasmJsBenchmark,kotlinKlibCommonizerClasspath +org.openjdk.jmh:jmh-core:1.21=jvmBenchmarkGenerateCP,jvmCompileClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath +org.openjdk.jmh:jmh-generator-asm:1.21=jvmBenchmarkGenerateCP +org.openjdk.jmh:jmh-generator-bytecode:1.21=jvmBenchmarkGenerateCP +org.openjdk.jmh:jmh-generator-reflection:1.21=jvmBenchmarkGenerateCP +org.ow2.asm:asm:5.0.3=jvmBenchmarkGenerateCP +empty=benchmarksJar,commonMainIntransitiveDependenciesMetadata,commonTestIntransitiveDependenciesMetadata,jsJsBenchmarkIntransitiveDependenciesMetadata,jsMainIntransitiveDependenciesMetadata,jsTestIntransitiveDependenciesMetadata,jvmMainIntransitiveDependenciesMetadata,jvmTestIntransitiveDependenciesMetadata,kotlinCompilerPluginClasspath,kotlinCompilerPluginClasspathLinuxX64Main,kotlinCompilerPluginClasspathLinuxX64Test,kotlinCompilerPluginClasspathMacosX64Main,kotlinCompilerPluginClasspathMacosX64Test,kotlinCompilerPluginClasspathMetadataNativeMain,kotlinCompilerPluginClasspathMingwX64Main,kotlinCompilerPluginClasspathMingwX64Test,kotlinNativeCompilerPluginClasspath,kotlinScriptDef,kotlinScriptDefExtensions,linuxX64MainIntransitiveDependenciesMetadata,linuxX64TestCompilationApi,linuxX64TestIntransitiveDependenciesMetadata,macosX64MainIntransitiveDependenciesMetadata,macosX64TestCompilationApi,macosX64TestIntransitiveDependenciesMetadata,mingwX64MainIntransitiveDependenciesMetadata,mingwX64TestCompilationApi,mingwX64TestIntransitiveDependenciesMetadata,nativeMainIntransitiveDependenciesMetadata,nativeTestIntransitiveDependenciesMetadata,testKotlinScriptDef,testKotlinScriptDefExtensions,wasmJsMainIntransitiveDependenciesMetadata,wasmJsTestIntransitiveDependenciesMetadata,wasmJsWasmJsBenchmarkIntransitiveDependenciesMetadata diff --git a/benchmarks/runner/build.gradle b/benchmarks/runner/build.gradle index 9d7f3728..43972899 100644 --- a/benchmarks/runner/build.gradle +++ b/benchmarks/runner/build.gradle @@ -3,8 +3,8 @@ plugins { } dependencies { - implementation "org.jetbrains.kotlin:kotlin-stdlib" - implementation 'org.openjdk.jmh:jmh-core:1.21' + implementation libs.kotlin.stdlib + implementation libs.jmh.core runtimeOnly project(path: ':benchmarks', configuration: 'benchmarksJar') runtimeOnly project(path: ':kotlinx-collections-immutable') diff --git a/build.gradle.kts b/build.gradle.kts index 9c3b4719..37bb4b2b 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -45,4 +45,8 @@ allprojects { tasks.withType().configureEach { args.add("--ignore-engines") -} \ No newline at end of file +} + +dependencyLocking { + lockAllConfigurations() +} diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts new file mode 100644 index 00000000..90f4622a --- /dev/null +++ b/buildSrc/build.gradle.kts @@ -0,0 +1,67 @@ +/* + * Copyright 2016-2024 JetBrains s.r.o. + * Use of this source code is governed by the Apache 2.0 License that can be found in the LICENSE.txt file. + */ + +import java.util.* +import java.io.FileInputStream + +plugins { + `kotlin-dsl` +} + +repositories { + mavenCentral() + mavenLocal() + if (project.hasProperty("kotlin_repo_url")) { + maven(project.properties["kotlin_repo_url"] as String) + } + // kotlin-dev with space redirector + maven("https://cache-redirector.jetbrains.com/maven.pkg.jetbrains.space/kotlin/p/kotlin/dev") +} + +val kotlinVersion = run { + if (project.hasProperty("build_snapshot_train")) { + val ver = project.properties["kotlin_snapshot_version"] as? String + require(!ver.isNullOrBlank()) {"kotlin_snapshot_version must be present if build_snapshot_train is used" } + return@run ver + } + if (project.hasProperty("kotlin_repo_url")) { + val ver = project.properties["kotlin_version"] as? String + require(!ver.isNullOrBlank()) {"kotlin_version must be present if kotlin_repo_url is used" } + return@run ver + } + val targetProp = if (project.hasProperty("bootstrap")) "kotlin.version.snapshot" else "kotlin.version" + FileInputStream(file("../gradle.properties")).use { propFile -> + val ver = project.findProperty("kotlin.version")?.toString() ?: Properties().apply { load(propFile) }[targetProp] + require(ver is String) { "$targetProp must be string in ../gradle.properties, got $ver instead" } + ver + } +} + +dependencyLocking { + lockAllConfigurations() +} + +listOf( + Jar::class, + Zip::class, + Tar::class, +).forEach { + tasks.withType(it).configureEach { + isPreserveFileTimestamps = false + isReproducibleFileOrder = true + + when(this) { + is Zip -> isZip64 = true + } + } +} + +dependencies { + implementation(kotlin("gradle-plugin", kotlinVersion)) + + // fix from the Gradle team: makes version catalog symbols available in build scripts + // see here for more: https://github.com/gradle/gradle/issues/15383 + implementation(files(libs.javaClass.superclass.protectionDomain.codeSource.location)) +} diff --git a/buildSrc/gradle.lockfile b/buildSrc/gradle.lockfile new file mode 100644 index 00000000..ce47861d --- /dev/null +++ b/buildSrc/gradle.lockfile @@ -0,0 +1,48 @@ +# 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. +org.jetbrains.intellij.deps:trove4j:1.0.20200330=buildScriptClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath,runtimeClasspath,testRuntimeClasspath +org.jetbrains.kotlin:kotlin-android-extensions:1.9.22=buildScriptClasspath,runtimeClasspath,testRuntimeClasspath +org.jetbrains.kotlin:kotlin-assignment-compiler-plugin-embeddable:1.9.20=kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest +org.jetbrains.kotlin:kotlin-build-common:1.9.20=kotlinBuildToolsApiClasspath +org.jetbrains.kotlin:kotlin-build-tools-api:1.9.20=kotlinBuildToolsApiClasspath +org.jetbrains.kotlin:kotlin-build-tools-api:1.9.22=buildScriptClasspath,runtimeClasspath,testRuntimeClasspath +org.jetbrains.kotlin:kotlin-build-tools-impl:1.9.20=kotlinBuildToolsApiClasspath +org.jetbrains.kotlin:kotlin-compiler-embeddable:1.9.20=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath +org.jetbrains.kotlin:kotlin-compiler-embeddable:1.9.22=buildScriptClasspath,runtimeClasspath,testRuntimeClasspath +org.jetbrains.kotlin:kotlin-compiler-runner:1.9.20=kotlinBuildToolsApiClasspath +org.jetbrains.kotlin:kotlin-compiler-runner:1.9.22=buildScriptClasspath,runtimeClasspath,testRuntimeClasspath +org.jetbrains.kotlin:kotlin-daemon-client:1.9.20=kotlinBuildToolsApiClasspath +org.jetbrains.kotlin:kotlin-daemon-client:1.9.22=buildScriptClasspath,runtimeClasspath,testRuntimeClasspath +org.jetbrains.kotlin:kotlin-daemon-embeddable:1.9.20=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath +org.jetbrains.kotlin:kotlin-daemon-embeddable:1.9.22=buildScriptClasspath,runtimeClasspath,testRuntimeClasspath +org.jetbrains.kotlin:kotlin-gradle-plugin-annotations:1.9.22=buildScriptClasspath,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +org.jetbrains.kotlin:kotlin-gradle-plugin-api:1.9.22=buildScriptClasspath,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +org.jetbrains.kotlin:kotlin-gradle-plugin-idea-proto:1.9.22=buildScriptClasspath,runtimeClasspath,testRuntimeClasspath +org.jetbrains.kotlin:kotlin-gradle-plugin-idea:1.9.22=buildScriptClasspath,runtimeClasspath,testRuntimeClasspath +org.jetbrains.kotlin:kotlin-gradle-plugin-model:1.9.22=buildScriptClasspath,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.22=buildScriptClasspath,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +org.jetbrains.kotlin:kotlin-gradle-plugins-bom:1.9.22=buildScriptClasspath,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +org.jetbrains.kotlin:kotlin-klib-commonizer-api:1.9.22=buildScriptClasspath,runtimeClasspath,testRuntimeClasspath +org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:1.9.20=kotlinKlibCommonizerClasspath +org.jetbrains.kotlin:kotlin-native-utils:1.9.22=buildScriptClasspath,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +org.jetbrains.kotlin:kotlin-project-model:1.9.22=buildScriptClasspath,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +org.jetbrains.kotlin:kotlin-reflect:1.6.10=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath +org.jetbrains.kotlin:kotlin-reflect:1.9.20=compileClasspath,compileOnlyDependenciesMetadata,embeddedKotlin,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +org.jetbrains.kotlin:kotlin-sam-with-receiver-compiler-plugin-embeddable:1.9.20=kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest +org.jetbrains.kotlin:kotlin-script-runtime:1.9.20=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath +org.jetbrains.kotlin:kotlin-scripting-common:1.9.20=kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest +org.jetbrains.kotlin:kotlin-scripting-common:1.9.22=buildScriptClasspath,runtimeClasspath,testRuntimeClasspath +org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.9.20=kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest +org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.9.22=buildScriptClasspath,runtimeClasspath,testRuntimeClasspath +org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.9.20=kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest +org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.9.22=buildScriptClasspath,runtimeClasspath,testRuntimeClasspath +org.jetbrains.kotlin:kotlin-scripting-jvm:1.9.20=kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest +org.jetbrains.kotlin:kotlin-scripting-jvm:1.9.22=buildScriptClasspath,runtimeClasspath,testRuntimeClasspath +org.jetbrains.kotlin:kotlin-stdlib:1.9.20=compileClasspath,compileOnlyDependenciesMetadata,embeddedKotlin,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +org.jetbrains.kotlin:kotlin-tooling-core:1.9.22=buildScriptClasspath,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +org.jetbrains.kotlin:kotlin-util-io:1.9.22=buildScriptClasspath,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +org.jetbrains.kotlin:kotlin-util-klib:1.9.22=buildScriptClasspath,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.5.0=buildScriptClasspath,kotlinBuildToolsApiClasspath,runtimeClasspath,testRuntimeClasspath +org.jetbrains:annotations:13.0=compileClasspath,embeddedKotlin,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,testCompileClasspath,testRuntimeClasspath +empty=annotationProcessor,apiDependenciesMetadata,intransitiveDependenciesMetadata,kotlinCompilerPluginClasspath,kotlinNativeCompilerPluginClasspath,kotlinScriptDef,kotlinScriptDefExtensions,testAnnotationProcessor,testApiDependenciesMetadata,testCompileOnlyDependenciesMetadata,testIntransitiveDependenciesMetadata,testKotlinScriptDef,testKotlinScriptDefExtensions diff --git a/buildSrc/settings.gradle.kts b/buildSrc/settings.gradle.kts new file mode 100644 index 00000000..d1e14751 --- /dev/null +++ b/buildSrc/settings.gradle.kts @@ -0,0 +1,8 @@ + +dependencyResolutionManagement { + versionCatalogs { + create("libs") { + from(files("../gradle/libs.versions.toml")) + } + } +} diff --git a/buildSrc/src/main/kotlin/BuildConventions.kt b/buildSrc/src/main/kotlin/BuildConventions.kt new file mode 100644 index 00000000..0926d709 --- /dev/null +++ b/buildSrc/src/main/kotlin/BuildConventions.kt @@ -0,0 +1,58 @@ +/* + * Copyright 2016-2024 JetBrains s.r.o. + * Use of this source code is governed by the Apache 2.0 License that can be found in the LICENSE.txt file. + */ + +import org.gradle.accessors.dm.LibrariesForLibs +import org.gradle.api.Project +import org.gradle.api.provider.Provider +import org.gradle.api.tasks.bundling.Jar +import org.gradle.api.tasks.bundling.Tar +import org.gradle.api.tasks.bundling.Zip +import org.gradle.kotlin.dsl.the +import org.gradle.kotlin.dsl.withType + +// Static dependency pins. +val pinnedDependencies = mapOf Provider>( + "org.jetbrains.kotlin:kotlin-stdlib" to { versions.kotlin.sdk }, + "org.jetbrains.kotlin:kotlin-stdlib-common" to { versions.kotlin.sdk }, +) + +object BuildConventions { + fun Project.baseConventions() { + val libs = the() + + // enable dependency locking + dependencyLocking { + lockAllConfigurations() + } + + listOf( + Jar::class, + Zip::class, + Tar::class, + ).forEach { + tasks.withType(it).configureEach { + isPreserveFileTimestamps = false + isReproducibleFileOrder = true + + when(this) { + is Zip -> isZip64 = true + } + } + } + + // pin dependencies which are critical transitively + configurations.all { + resolutionStrategy { + eachDependency { + val coordinate = "${requested.module.group}:${requested.module.name}" + pinnedDependencies[coordinate]?.let { pin -> + useVersion(pin.invoke(libs).get()) + because("pinned dependency") + } + } + } + } + } +} diff --git a/buildSrc/src/main/kotlin/Java9Modularity.kt b/buildSrc/src/main/kotlin/Java9Modularity.kt new file mode 100644 index 00000000..c62316a3 --- /dev/null +++ b/buildSrc/src/main/kotlin/Java9Modularity.kt @@ -0,0 +1,227 @@ +/* + * Copyright 2016-2024 JetBrains s.r.o. + * Use of this source code is governed by the Apache 2.0 License that can be found in the LICENSE.txt file. + */ + +import org.gradle.api.* +import org.gradle.api.file.* +import org.gradle.api.provider.* +import org.gradle.api.tasks.* +import org.gradle.api.tasks.bundling.* +import org.gradle.api.tasks.compile.* +import org.gradle.jvm.toolchain.* +import org.gradle.kotlin.dsl.* +import org.gradle.language.base.plugins.LifecycleBasePlugin.* +import org.gradle.process.* +import org.jetbrains.kotlin.gradle.* +import org.jetbrains.kotlin.gradle.dsl.* +import org.jetbrains.kotlin.gradle.plugin.* +import org.jetbrains.kotlin.gradle.plugin.mpp.* +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.* +import org.jetbrains.kotlin.gradle.targets.jvm.* +import org.jetbrains.kotlin.gradle.tasks.* +import org.jetbrains.kotlin.gradle.tasks.KotlinCompile +import org.jetbrains.kotlin.gradle.tasks.KotlinJvmCompile +import org.jetbrains.kotlin.tooling.core.* +import java.io.* +import kotlin.reflect.* +import kotlin.reflect.full.* + +object Java9Modularity { + @JvmStatic + @JvmOverloads + fun Project.configureJava9ModuleInfo(multiRelease: Boolean = true) { + val disableJPMS = this.rootProject.extra.has("disableJPMS") + val ideaActive = System.getProperty("idea.active") == "true" + if (disableJPMS || ideaActive) return + val kotlin = extensions.findByType() ?: return + val jvmTargets = kotlin.targets.filter { it is KotlinJvmTarget || it is KotlinWithJavaTarget<*, *> } + if (jvmTargets.isEmpty()) { + logger.warn("No Kotlin JVM targets found, can't configure compilation of module-info!") + } + jvmTargets.forEach { target -> + val artifactTask = tasks.getByName(target.artifactsTaskName) { + if (multiRelease) { + manifest { + attributes("Multi-Release" to true) + } + } + } + + target.compilations.forEach { compilation -> + val compileKotlinTask = compilation.compileKotlinTask as KotlinCompile + val defaultSourceSet = compilation.defaultSourceSet + + // derive the names of the source set and compile module task + val sourceSetName = defaultSourceSet.name + "Module" + kotlin.sourceSets.create(sourceSetName) { + val sourceFile = this.kotlin.find { it.name == "module-info.java" } + val targetDirectory = compileKotlinTask.destinationDirectory.map { + it.dir("../${it.asFile.name}Module") + } + + // only configure the compilation if necessary + if (sourceFile != null) { + // register and wire a task to verify module-info.java content + // + // this will compile the whole sources again with a JPMS-aware target Java version, + // so that the Kotlin compiler can do the necessary verifications + // while compiling with `jdk-release=1.8` those verifications are not done + // + // this task is only going to be executed when running with `check` or explicitly, + // not during normal build operations + val verifyModuleTask = registerVerifyModuleTask( + compileKotlinTask, + sourceFile + ) + tasks.named("check") { + dependsOn(verifyModuleTask) + } + + // register a new compile module task + val compileModuleTask = registerCompileModuleTask( + compileKotlinTask, + sourceFile, + targetDirectory + ) + + // add the resulting module descriptor to this target's artifact + artifactTask.from(compileModuleTask.map { it.destinationDirectory }) { + if (multiRelease) { + into("META-INF/versions/9/") + } + } + } else { + logger.info("No module-info.java file found in ${this.kotlin.srcDirs}, can't configure compilation of module-info!") + } + + // remove the source set to prevent Gradle warnings + kotlin.sourceSets.remove(this) + } + } + } + } + + /** + * Add a Kotlin compile task that compiles `module-info.java` source file and Kotlin sources together, + * the Kotlin compiler will parse and check module dependencies, + * but it currently won't compile to a module-info.class file. + */ + private fun Project.registerVerifyModuleTask( + compileTask: KotlinCompile, + sourceFile: File + ): TaskProvider { + apply() + val verifyModuleTaskName = "verify${compileTask.name.removePrefix("compile").capitalize()}Module" + // work-around for https://youtrack.jetbrains.com/issue/KT-60542 + val kotlinApiPlugin = plugins.getPlugin(KotlinApiPlugin::class) + val verifyModuleTask = kotlinApiPlugin.registerKotlinJvmCompileTask( + verifyModuleTaskName, + compileTask.compilerOptions.moduleName.get() + ) + verifyModuleTask { + group = VERIFICATION_GROUP + description = "Verify Kotlin sources for JPMS problems" + libraries.from(compileTask.libraries) + source(compileTask.sources) + source(compileTask.javaSources) + // part of work-around for https://youtrack.jetbrains.com/issue/KT-60541 + @Suppress("INVISIBLE_MEMBER") + source(compileTask.scriptSources) + source(sourceFile) + destinationDirectory.set(temporaryDir) + multiPlatformEnabled.set(compileTask.multiPlatformEnabled) + compilerOptions { + jvmTarget.set(JvmTarget.JVM_9) + // To support LV override when set in aggregate builds + languageVersion.set(compileTask.compilerOptions.languageVersion) + freeCompilerArgs.addAll( + listOf("-Xjdk-release=9", "-Xsuppress-version-warnings", "-Xexpect-actual-classes") + ) + optIn.addAll(compileTask.kotlinOptions.options.optIn) + } + // work-around for https://youtrack.jetbrains.com/issue/KT-60583 + inputs.files( + libraries.asFileTree.elements.map { libs -> + libs + .filter { it.asFile.exists() } + .map { + zipTree(it.asFile).filter { it.name == "module-info.class" } + } + } + ).withPropertyName("moduleInfosOfLibraries") + this as KotlinCompile + val kotlinPluginVersion = KotlinToolingVersion(kotlinApiPlugin.pluginVersion) + if (kotlinPluginVersion <= KotlinToolingVersion("1.9.255")) { + // part of work-around for https://youtrack.jetbrains.com/issue/KT-60541 + @Suppress("UNCHECKED_CAST") + val ownModuleNameProp = (this::class.superclasses.first() as KClass>) + .declaredMemberProperties + .find { it.name == "ownModuleName" } + ?.get(this) as? Property + ownModuleNameProp?.set(compileTask.kotlinOptions.moduleName) + } + + val taskKotlinLanguageVersion = compilerOptions.languageVersion.orElse(KotlinVersion.DEFAULT) + @OptIn(InternalKotlinGradlePluginApi::class) + if (taskKotlinLanguageVersion.get() < KotlinVersion.KOTLIN_2_0) { + // part of work-around for https://youtrack.jetbrains.com/issue/KT-60541 + @Suppress("INVISIBLE_MEMBER") + commonSourceSet.from(compileTask.commonSourceSet) + } else { + multiplatformStructure.refinesEdges.set(compileTask.multiplatformStructure.refinesEdges) + multiplatformStructure.fragments.set(compileTask.multiplatformStructure.fragments) + } + // part of work-around for https://youtrack.jetbrains.com/issue/KT-60541 + // and work-around for https://youtrack.jetbrains.com/issue/KT-60582 + incremental = false + } + return verifyModuleTask + } + + private fun Project.registerCompileModuleTask( + compileTask: KotlinCompile, + sourceFile: File, + targetDirectory: Provider + ) = tasks.register("${compileTask.name}Module", JavaCompile::class) { + // Configure the module compile task. + source(sourceFile) + classpath = files() + destinationDirectory.set(targetDirectory) + // use a Java 11 toolchain with release 9 option + // because for some OS / architecture combinations + // there are no Java 9 builds available + javaCompiler.set( + this@registerCompileModuleTask.the().compilerFor { + languageVersion.set(JavaLanguageVersion.of(11)) + } + ) + options.release.set(9) + + options.compilerArgumentProviders.add(object : CommandLineArgumentProvider { + @get:CompileClasspath + val compileClasspath = compileTask.libraries + + @get:CompileClasspath + val compiledClasses = compileTask.destinationDirectory + + @get:Input + val moduleName = sourceFile + .readLines() + .single { it.contains("module ") } + .substringAfter("module ") + .substringBefore(' ') + .trim() + + override fun asArguments() = mutableListOf( + // Provide the module path to the compiler instead of using a classpath. + // The module path should be the same as the classpath of the compiler. + "--module-path", + compileClasspath.asPath, + "--patch-module", + "$moduleName=${compiledClasses.get()}", + "-Xlint:-requires-transitive-automatic" + ) + }) + } +} diff --git a/core/build.gradle.kts b/core/build.gradle.kts index 35262988..b4f5c086 100644 --- a/core/build.gradle.kts +++ b/core/build.gradle.kts @@ -1,3 +1,7 @@ +@file:OptIn(org.jetbrains.kotlin.gradle.targets.js.dsl.ExperimentalWasmDsl::class) + +import BuildConventions.baseConventions +import Java9Modularity.configureJava9ModuleInfo import kotlinx.team.infra.mavenPublicationsPom plugins { @@ -6,7 +10,7 @@ plugins { } base { - archivesBaseName = "kotlinx-collections-immutable" // doesn't work + archivesName = "kotlinx-collections-immutable" } mavenPublicationsPom { @@ -160,4 +164,12 @@ with(org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin.apply(rootPr // Drop this when node js version become stable tasks.withType().configureEach { args.add("--ignore-engines") -} \ No newline at end of file +} + +// configure baseline conventions (dependency verification, locking, etc.) +baseConventions() + +afterEvaluate { + // Build a multi-release JAR with a Java `module-info.java` spec + configureJava9ModuleInfo(multiRelease = true) +} diff --git a/core/gradle.lockfile b/core/gradle.lockfile new file mode 100644 index 00000000..7d679838 --- /dev/null +++ b/core/gradle.lockfile @@ -0,0 +1,42 @@ +# 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. +com.google.code.findbugs:jsr305:1.3.9=allSourceSetsCompileDependenciesMetadata,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath +com.google.guava:guava-testlib:18.0=allSourceSetsCompileDependenciesMetadata,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath +com.google.guava:guava:18.0=allSourceSetsCompileDependenciesMetadata,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath +com.google.truth:truth:0.23=allSourceSetsCompileDependenciesMetadata,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath +junit:junit:4.10=allSourceSetsCompileDependenciesMetadata,jvmTestApiDependenciesMetadata,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata +junit:junit:4.13.2=jvmTestCompileClasspath,jvmTestRuntimeClasspath +org.hamcrest:hamcrest-core:1.1=allSourceSetsCompileDependenciesMetadata,jvmTestApiDependenciesMetadata,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata +org.hamcrest:hamcrest-core:1.3=jvmTestCompileClasspath,jvmTestRuntimeClasspath +org.jetbrains.intellij.deps:trove4j:1.0.20200330=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath +org.jetbrains.kotlin:kotlin-build-common:1.9.22=kotlinBuildToolsApiClasspath +org.jetbrains.kotlin:kotlin-build-tools-api:1.9.22=kotlinBuildToolsApiClasspath +org.jetbrains.kotlin:kotlin-build-tools-impl:1.9.22=kotlinBuildToolsApiClasspath +org.jetbrains.kotlin:kotlin-compiler-embeddable:1.9.22=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath +org.jetbrains.kotlin:kotlin-compiler-runner:1.9.22=kotlinBuildToolsApiClasspath +org.jetbrains.kotlin:kotlin-daemon-client:1.9.22=kotlinBuildToolsApiClasspath +org.jetbrains.kotlin:kotlin-daemon-embeddable:1.9.22=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath +org.jetbrains.kotlin:kotlin-dom-api-compat:1.9.22=allSourceSetsCompileDependenciesMetadata,jsCompileClasspath,jsMainApiDependenciesMetadata,jsMainCompileOnlyDependenciesMetadata,jsMainImplementationDependenciesMetadata,jsMainResolvableDependenciesMetadata,jsNpmAggregated,jsRuntimeClasspath,jsTestApiDependenciesMetadata,jsTestCompileClasspath,jsTestCompileOnlyDependenciesMetadata,jsTestImplementationDependenciesMetadata,jsTestNpmAggregated,jsTestResolvableDependenciesMetadata,jsTestRuntimeClasspath +org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:1.9.22=kotlinKlibCommonizerClasspath +org.jetbrains.kotlin:kotlin-reflect:1.6.10=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath +org.jetbrains.kotlin:kotlin-script-runtime:1.9.22=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathJsMain,kotlinCompilerPluginClasspathJsTest,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataCommonMain,kotlinCompilerPluginClasspathMetadataMain,kotlinCompilerPluginClasspathWasmJsMain,kotlinCompilerPluginClasspathWasmJsTest,kotlinCompilerPluginClasspathWasmWasiMain,kotlinCompilerPluginClasspathWasmWasiTest,kotlinKlibCommonizerClasspath +org.jetbrains.kotlin:kotlin-scripting-common:1.9.22=kotlinCompilerPluginClasspathJsMain,kotlinCompilerPluginClasspathJsTest,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataCommonMain,kotlinCompilerPluginClasspathMetadataMain,kotlinCompilerPluginClasspathWasmJsMain,kotlinCompilerPluginClasspathWasmJsTest,kotlinCompilerPluginClasspathWasmWasiMain,kotlinCompilerPluginClasspathWasmWasiTest +org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.9.22=kotlinCompilerPluginClasspathJsMain,kotlinCompilerPluginClasspathJsTest,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataCommonMain,kotlinCompilerPluginClasspathMetadataMain,kotlinCompilerPluginClasspathWasmJsMain,kotlinCompilerPluginClasspathWasmJsTest,kotlinCompilerPluginClasspathWasmWasiMain,kotlinCompilerPluginClasspathWasmWasiTest +org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.9.22=kotlinCompilerPluginClasspathJsMain,kotlinCompilerPluginClasspathJsTest,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataCommonMain,kotlinCompilerPluginClasspathMetadataMain,kotlinCompilerPluginClasspathWasmJsMain,kotlinCompilerPluginClasspathWasmJsTest,kotlinCompilerPluginClasspathWasmWasiMain,kotlinCompilerPluginClasspathWasmWasiTest +org.jetbrains.kotlin:kotlin-scripting-jvm:1.9.22=kotlinCompilerPluginClasspathJsMain,kotlinCompilerPluginClasspathJsTest,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataCommonMain,kotlinCompilerPluginClasspathMetadataMain,kotlinCompilerPluginClasspathWasmJsMain,kotlinCompilerPluginClasspathWasmJsTest,kotlinCompilerPluginClasspathWasmWasiMain,kotlinCompilerPluginClasspathWasmWasiTest +org.jetbrains.kotlin:kotlin-stdlib-js:1.9.22=jsCompileClasspath,jsMainApiDependenciesMetadata,jsMainCompileOnlyDependenciesMetadata,jsMainImplementationDependenciesMetadata,jsNpmAggregated,jsRuntimeClasspath,jsTestApiDependenciesMetadata,jsTestCompileClasspath,jsTestCompileOnlyDependenciesMetadata,jsTestImplementationDependenciesMetadata,jsTestNpmAggregated,jsTestRuntimeClasspath +org.jetbrains.kotlin:kotlin-stdlib-wasm-js:1.9.22=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath +org.jetbrains.kotlin:kotlin-stdlib-wasm-wasi:1.9.22=wasmWasiCompileClasspath,wasmWasiNpmAggregated,wasmWasiRuntimeClasspath,wasmWasiTestCompileClasspath,wasmWasiTestNpmAggregated,wasmWasiTestRuntimeClasspath +org.jetbrains.kotlin:kotlin-stdlib:1.9.22=allSourceSetsCompileDependenciesMetadata,androidNativeArm32CompilationApi,androidNativeArm32CompilationDependenciesMetadata,androidNativeArm32CompileKlibraries,androidNativeArm32MainApiDependenciesMetadata,androidNativeArm32MainCompileOnlyDependenciesMetadata,androidNativeArm32MainImplementationDependenciesMetadata,androidNativeArm32MainResolvableDependenciesMetadata,androidNativeArm32TestApiDependenciesMetadata,androidNativeArm32TestCompilationDependenciesMetadata,androidNativeArm32TestCompileKlibraries,androidNativeArm32TestCompileOnlyDependenciesMetadata,androidNativeArm32TestImplementationDependenciesMetadata,androidNativeArm32TestResolvableDependenciesMetadata,androidNativeArm64CompilationApi,androidNativeArm64CompilationDependenciesMetadata,androidNativeArm64CompileKlibraries,androidNativeArm64MainApiDependenciesMetadata,androidNativeArm64MainCompileOnlyDependenciesMetadata,androidNativeArm64MainImplementationDependenciesMetadata,androidNativeArm64MainResolvableDependenciesMetadata,androidNativeArm64TestApiDependenciesMetadata,androidNativeArm64TestCompilationDependenciesMetadata,androidNativeArm64TestCompileKlibraries,androidNativeArm64TestCompileOnlyDependenciesMetadata,androidNativeArm64TestImplementationDependenciesMetadata,androidNativeArm64TestResolvableDependenciesMetadata,androidNativeMainApiDependenciesMetadata,androidNativeMainCompileOnlyDependenciesMetadata,androidNativeMainImplementationDependenciesMetadata,androidNativeMainResolvableDependenciesMetadata,androidNativeTestApiDependenciesMetadata,androidNativeTestCompileOnlyDependenciesMetadata,androidNativeTestImplementationDependenciesMetadata,androidNativeTestResolvableDependenciesMetadata,androidNativeX64CompilationApi,androidNativeX64CompilationDependenciesMetadata,androidNativeX64CompileKlibraries,androidNativeX64MainApiDependenciesMetadata,androidNativeX64MainCompileOnlyDependenciesMetadata,androidNativeX64MainImplementationDependenciesMetadata,androidNativeX64MainResolvableDependenciesMetadata,androidNativeX64TestApiDependenciesMetadata,androidNativeX64TestCompilationDependenciesMetadata,androidNativeX64TestCompileKlibraries,androidNativeX64TestCompileOnlyDependenciesMetadata,androidNativeX64TestImplementationDependenciesMetadata,androidNativeX64TestResolvableDependenciesMetadata,androidNativeX86CompilationApi,androidNativeX86CompilationDependenciesMetadata,androidNativeX86CompileKlibraries,androidNativeX86MainApiDependenciesMetadata,androidNativeX86MainCompileOnlyDependenciesMetadata,androidNativeX86MainImplementationDependenciesMetadata,androidNativeX86MainResolvableDependenciesMetadata,androidNativeX86TestApiDependenciesMetadata,androidNativeX86TestCompilationDependenciesMetadata,androidNativeX86TestCompileKlibraries,androidNativeX86TestCompileOnlyDependenciesMetadata,androidNativeX86TestImplementationDependenciesMetadata,androidNativeX86TestResolvableDependenciesMetadata,appleMainApiDependenciesMetadata,appleMainCompileOnlyDependenciesMetadata,appleMainImplementationDependenciesMetadata,appleMainResolvableDependenciesMetadata,appleTestApiDependenciesMetadata,appleTestCompileOnlyDependenciesMetadata,appleTestImplementationDependenciesMetadata,appleTestResolvableDependenciesMetadata,commonMainApiDependenciesMetadata,commonMainCompileOnlyDependenciesMetadata,commonMainImplementationDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,iosArm64CompilationApi,iosArm64CompilationDependenciesMetadata,iosArm64CompileKlibraries,iosArm64MainApiDependenciesMetadata,iosArm64MainCompileOnlyDependenciesMetadata,iosArm64MainImplementationDependenciesMetadata,iosArm64MainResolvableDependenciesMetadata,iosArm64TestApiDependenciesMetadata,iosArm64TestCompilationDependenciesMetadata,iosArm64TestCompileKlibraries,iosArm64TestCompileOnlyDependenciesMetadata,iosArm64TestImplementationDependenciesMetadata,iosArm64TestResolvableDependenciesMetadata,iosMainApiDependenciesMetadata,iosMainCompileOnlyDependenciesMetadata,iosMainImplementationDependenciesMetadata,iosMainResolvableDependenciesMetadata,iosSimulatorArm64CompilationApi,iosSimulatorArm64CompilationDependenciesMetadata,iosSimulatorArm64CompileKlibraries,iosSimulatorArm64MainApiDependenciesMetadata,iosSimulatorArm64MainCompileOnlyDependenciesMetadata,iosSimulatorArm64MainImplementationDependenciesMetadata,iosSimulatorArm64MainResolvableDependenciesMetadata,iosSimulatorArm64TestApiDependenciesMetadata,iosSimulatorArm64TestCompilationDependenciesMetadata,iosSimulatorArm64TestCompileKlibraries,iosSimulatorArm64TestCompileOnlyDependenciesMetadata,iosSimulatorArm64TestImplementationDependenciesMetadata,iosSimulatorArm64TestResolvableDependenciesMetadata,iosTestApiDependenciesMetadata,iosTestCompileOnlyDependenciesMetadata,iosTestImplementationDependenciesMetadata,iosTestResolvableDependenciesMetadata,iosX64CompilationApi,iosX64CompilationDependenciesMetadata,iosX64CompileKlibraries,iosX64MainApiDependenciesMetadata,iosX64MainCompileOnlyDependenciesMetadata,iosX64MainImplementationDependenciesMetadata,iosX64MainResolvableDependenciesMetadata,iosX64TestApiDependenciesMetadata,iosX64TestCompilationDependenciesMetadata,iosX64TestCompileKlibraries,iosX64TestCompileOnlyDependenciesMetadata,iosX64TestImplementationDependenciesMetadata,iosX64TestResolvableDependenciesMetadata,jsCompileClasspath,jsMainApiDependenciesMetadata,jsMainCompileOnlyDependenciesMetadata,jsMainImplementationDependenciesMetadata,jsMainResolvableDependenciesMetadata,jsNpmAggregated,jsRuntimeClasspath,jsTestApiDependenciesMetadata,jsTestCompileClasspath,jsTestCompileOnlyDependenciesMetadata,jsTestImplementationDependenciesMetadata,jsTestNpmAggregated,jsTestResolvableDependenciesMetadata,jsTestRuntimeClasspath,jvmCompileClasspath,jvmMainApiDependenciesMetadata,jvmMainCompileOnlyDependenciesMetadata,jvmMainImplementationDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmRuntimeClasspath,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathJsMain,kotlinCompilerPluginClasspathJsTest,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataCommonMain,kotlinCompilerPluginClasspathMetadataMain,kotlinCompilerPluginClasspathWasmJsMain,kotlinCompilerPluginClasspathWasmJsTest,kotlinCompilerPluginClasspathWasmWasiMain,kotlinCompilerPluginClasspathWasmWasiTest,kotlinKlibCommonizerClasspath,linuxArm64CompilationApi,linuxArm64CompilationDependenciesMetadata,linuxArm64CompileKlibraries,linuxArm64MainApiDependenciesMetadata,linuxArm64MainCompileOnlyDependenciesMetadata,linuxArm64MainImplementationDependenciesMetadata,linuxArm64MainResolvableDependenciesMetadata,linuxArm64TestApiDependenciesMetadata,linuxArm64TestCompilationDependenciesMetadata,linuxArm64TestCompileKlibraries,linuxArm64TestCompileOnlyDependenciesMetadata,linuxArm64TestImplementationDependenciesMetadata,linuxArm64TestResolvableDependenciesMetadata,linuxMainApiDependenciesMetadata,linuxMainCompileOnlyDependenciesMetadata,linuxMainImplementationDependenciesMetadata,linuxMainResolvableDependenciesMetadata,linuxTestApiDependenciesMetadata,linuxTestCompileOnlyDependenciesMetadata,linuxTestImplementationDependenciesMetadata,linuxTestResolvableDependenciesMetadata,linuxX64CompilationApi,linuxX64CompilationDependenciesMetadata,linuxX64CompileKlibraries,linuxX64MainApiDependenciesMetadata,linuxX64MainCompileOnlyDependenciesMetadata,linuxX64MainImplementationDependenciesMetadata,linuxX64MainResolvableDependenciesMetadata,linuxX64TestApiDependenciesMetadata,linuxX64TestCompilationDependenciesMetadata,linuxX64TestCompileKlibraries,linuxX64TestCompileOnlyDependenciesMetadata,linuxX64TestImplementationDependenciesMetadata,linuxX64TestResolvableDependenciesMetadata,macosArm64CompilationApi,macosArm64CompilationDependenciesMetadata,macosArm64CompileKlibraries,macosArm64MainApiDependenciesMetadata,macosArm64MainCompileOnlyDependenciesMetadata,macosArm64MainImplementationDependenciesMetadata,macosArm64MainResolvableDependenciesMetadata,macosArm64TestApiDependenciesMetadata,macosArm64TestCompilationDependenciesMetadata,macosArm64TestCompileKlibraries,macosArm64TestCompileOnlyDependenciesMetadata,macosArm64TestImplementationDependenciesMetadata,macosArm64TestResolvableDependenciesMetadata,macosMainApiDependenciesMetadata,macosMainCompileOnlyDependenciesMetadata,macosMainImplementationDependenciesMetadata,macosMainResolvableDependenciesMetadata,macosTestApiDependenciesMetadata,macosTestCompileOnlyDependenciesMetadata,macosTestImplementationDependenciesMetadata,macosTestResolvableDependenciesMetadata,macosX64CompilationApi,macosX64CompilationDependenciesMetadata,macosX64CompileKlibraries,macosX64MainApiDependenciesMetadata,macosX64MainCompileOnlyDependenciesMetadata,macosX64MainImplementationDependenciesMetadata,macosX64MainResolvableDependenciesMetadata,macosX64TestApiDependenciesMetadata,macosX64TestCompilationDependenciesMetadata,macosX64TestCompileKlibraries,macosX64TestCompileOnlyDependenciesMetadata,macosX64TestImplementationDependenciesMetadata,macosX64TestResolvableDependenciesMetadata,metadataAndroidNativeMainCompileClasspath,metadataAppleMainCompileClasspath,metadataCommonMainCompileClasspath,metadataCompileClasspath,metadataIosMainCompileClasspath,metadataLinuxMainCompileClasspath,metadataMacosMainCompileClasspath,metadataNativeMainCompileClasspath,metadataTvosMainCompileClasspath,metadataWatchosMainCompileClasspath,mingwMainApiDependenciesMetadata,mingwMainCompileOnlyDependenciesMetadata,mingwMainImplementationDependenciesMetadata,mingwMainResolvableDependenciesMetadata,mingwTestApiDependenciesMetadata,mingwTestCompileOnlyDependenciesMetadata,mingwTestImplementationDependenciesMetadata,mingwTestResolvableDependenciesMetadata,mingwX64CompilationApi,mingwX64CompilationDependenciesMetadata,mingwX64CompileKlibraries,mingwX64MainApiDependenciesMetadata,mingwX64MainCompileOnlyDependenciesMetadata,mingwX64MainImplementationDependenciesMetadata,mingwX64MainResolvableDependenciesMetadata,mingwX64TestApiDependenciesMetadata,mingwX64TestCompilationDependenciesMetadata,mingwX64TestCompileKlibraries,mingwX64TestCompileOnlyDependenciesMetadata,mingwX64TestImplementationDependenciesMetadata,mingwX64TestResolvableDependenciesMetadata,nativeMainApiDependenciesMetadata,nativeMainCompileOnlyDependenciesMetadata,nativeMainImplementationDependenciesMetadata,nativeMainResolvableDependenciesMetadata,nativeTestApiDependenciesMetadata,nativeTestCompileOnlyDependenciesMetadata,nativeTestImplementationDependenciesMetadata,nativeTestResolvableDependenciesMetadata,tvosArm64CompilationApi,tvosArm64CompilationDependenciesMetadata,tvosArm64CompileKlibraries,tvosArm64MainApiDependenciesMetadata,tvosArm64MainCompileOnlyDependenciesMetadata,tvosArm64MainImplementationDependenciesMetadata,tvosArm64MainResolvableDependenciesMetadata,tvosArm64TestApiDependenciesMetadata,tvosArm64TestCompilationDependenciesMetadata,tvosArm64TestCompileKlibraries,tvosArm64TestCompileOnlyDependenciesMetadata,tvosArm64TestImplementationDependenciesMetadata,tvosArm64TestResolvableDependenciesMetadata,tvosMainApiDependenciesMetadata,tvosMainCompileOnlyDependenciesMetadata,tvosMainImplementationDependenciesMetadata,tvosMainResolvableDependenciesMetadata,tvosSimulatorArm64CompilationApi,tvosSimulatorArm64CompilationDependenciesMetadata,tvosSimulatorArm64CompileKlibraries,tvosSimulatorArm64MainApiDependenciesMetadata,tvosSimulatorArm64MainCompileOnlyDependenciesMetadata,tvosSimulatorArm64MainImplementationDependenciesMetadata,tvosSimulatorArm64MainResolvableDependenciesMetadata,tvosSimulatorArm64TestApiDependenciesMetadata,tvosSimulatorArm64TestCompilationDependenciesMetadata,tvosSimulatorArm64TestCompileKlibraries,tvosSimulatorArm64TestCompileOnlyDependenciesMetadata,tvosSimulatorArm64TestImplementationDependenciesMetadata,tvosSimulatorArm64TestResolvableDependenciesMetadata,tvosTestApiDependenciesMetadata,tvosTestCompileOnlyDependenciesMetadata,tvosTestImplementationDependenciesMetadata,tvosTestResolvableDependenciesMetadata,tvosX64CompilationApi,tvosX64CompilationDependenciesMetadata,tvosX64CompileKlibraries,tvosX64MainApiDependenciesMetadata,tvosX64MainCompileOnlyDependenciesMetadata,tvosX64MainImplementationDependenciesMetadata,tvosX64MainResolvableDependenciesMetadata,tvosX64TestApiDependenciesMetadata,tvosX64TestCompilationDependenciesMetadata,tvosX64TestCompileKlibraries,tvosX64TestCompileOnlyDependenciesMetadata,tvosX64TestImplementationDependenciesMetadata,tvosX64TestResolvableDependenciesMetadata,wasmJsCompileClasspath,wasmJsMainApiDependenciesMetadata,wasmJsMainCompileOnlyDependenciesMetadata,wasmJsMainImplementationDependenciesMetadata,wasmJsMainResolvableDependenciesMetadata,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestApiDependenciesMetadata,wasmJsTestCompileClasspath,wasmJsTestCompileOnlyDependenciesMetadata,wasmJsTestImplementationDependenciesMetadata,wasmJsTestNpmAggregated,wasmJsTestResolvableDependenciesMetadata,wasmJsTestRuntimeClasspath,wasmTestApiDependenciesMetadata,wasmTestCompileOnlyDependenciesMetadata,wasmTestImplementationDependenciesMetadata,wasmTestResolvableDependenciesMetadata,wasmWasiCompileClasspath,wasmWasiMainApiDependenciesMetadata,wasmWasiMainCompileOnlyDependenciesMetadata,wasmWasiMainImplementationDependenciesMetadata,wasmWasiMainResolvableDependenciesMetadata,wasmWasiNpmAggregated,wasmWasiRuntimeClasspath,wasmWasiTestApiDependenciesMetadata,wasmWasiTestCompileClasspath,wasmWasiTestCompileOnlyDependenciesMetadata,wasmWasiTestImplementationDependenciesMetadata,wasmWasiTestNpmAggregated,wasmWasiTestResolvableDependenciesMetadata,wasmWasiTestRuntimeClasspath,watchosArm32CompilationApi,watchosArm32CompilationDependenciesMetadata,watchosArm32CompileKlibraries,watchosArm32MainApiDependenciesMetadata,watchosArm32MainCompileOnlyDependenciesMetadata,watchosArm32MainImplementationDependenciesMetadata,watchosArm32MainResolvableDependenciesMetadata,watchosArm32TestApiDependenciesMetadata,watchosArm32TestCompilationDependenciesMetadata,watchosArm32TestCompileKlibraries,watchosArm32TestCompileOnlyDependenciesMetadata,watchosArm32TestImplementationDependenciesMetadata,watchosArm32TestResolvableDependenciesMetadata,watchosArm64CompilationApi,watchosArm64CompilationDependenciesMetadata,watchosArm64CompileKlibraries,watchosArm64MainApiDependenciesMetadata,watchosArm64MainCompileOnlyDependenciesMetadata,watchosArm64MainImplementationDependenciesMetadata,watchosArm64MainResolvableDependenciesMetadata,watchosArm64TestApiDependenciesMetadata,watchosArm64TestCompilationDependenciesMetadata,watchosArm64TestCompileKlibraries,watchosArm64TestCompileOnlyDependenciesMetadata,watchosArm64TestImplementationDependenciesMetadata,watchosArm64TestResolvableDependenciesMetadata,watchosDeviceArm64CompilationApi,watchosDeviceArm64CompilationDependenciesMetadata,watchosDeviceArm64CompileKlibraries,watchosDeviceArm64MainApiDependenciesMetadata,watchosDeviceArm64MainCompileOnlyDependenciesMetadata,watchosDeviceArm64MainImplementationDependenciesMetadata,watchosDeviceArm64MainResolvableDependenciesMetadata,watchosDeviceArm64TestApiDependenciesMetadata,watchosDeviceArm64TestCompilationDependenciesMetadata,watchosDeviceArm64TestCompileKlibraries,watchosDeviceArm64TestCompileOnlyDependenciesMetadata,watchosDeviceArm64TestImplementationDependenciesMetadata,watchosDeviceArm64TestResolvableDependenciesMetadata,watchosMainApiDependenciesMetadata,watchosMainCompileOnlyDependenciesMetadata,watchosMainImplementationDependenciesMetadata,watchosMainResolvableDependenciesMetadata,watchosSimulatorArm64CompilationApi,watchosSimulatorArm64CompilationDependenciesMetadata,watchosSimulatorArm64CompileKlibraries,watchosSimulatorArm64MainApiDependenciesMetadata,watchosSimulatorArm64MainCompileOnlyDependenciesMetadata,watchosSimulatorArm64MainImplementationDependenciesMetadata,watchosSimulatorArm64MainResolvableDependenciesMetadata,watchosSimulatorArm64TestApiDependenciesMetadata,watchosSimulatorArm64TestCompilationDependenciesMetadata,watchosSimulatorArm64TestCompileKlibraries,watchosSimulatorArm64TestCompileOnlyDependenciesMetadata,watchosSimulatorArm64TestImplementationDependenciesMetadata,watchosSimulatorArm64TestResolvableDependenciesMetadata,watchosTestApiDependenciesMetadata,watchosTestCompileOnlyDependenciesMetadata,watchosTestImplementationDependenciesMetadata,watchosTestResolvableDependenciesMetadata,watchosX64CompilationApi,watchosX64CompilationDependenciesMetadata,watchosX64CompileKlibraries,watchosX64MainApiDependenciesMetadata,watchosX64MainCompileOnlyDependenciesMetadata,watchosX64MainImplementationDependenciesMetadata,watchosX64MainResolvableDependenciesMetadata,watchosX64TestApiDependenciesMetadata,watchosX64TestCompilationDependenciesMetadata,watchosX64TestCompileKlibraries,watchosX64TestCompileOnlyDependenciesMetadata,watchosX64TestImplementationDependenciesMetadata,watchosX64TestResolvableDependenciesMetadata +org.jetbrains.kotlin:kotlin-test-annotations-common:1.9.22=allSourceSetsCompileDependenciesMetadata,androidNativeArm32TestResolvableDependenciesMetadata,androidNativeArm64TestResolvableDependenciesMetadata,androidNativeTestApiDependenciesMetadata,androidNativeTestCompileOnlyDependenciesMetadata,androidNativeTestImplementationDependenciesMetadata,androidNativeTestResolvableDependenciesMetadata,androidNativeX64TestResolvableDependenciesMetadata,androidNativeX86TestResolvableDependenciesMetadata,appleTestApiDependenciesMetadata,appleTestCompileOnlyDependenciesMetadata,appleTestImplementationDependenciesMetadata,appleTestResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,iosArm64TestResolvableDependenciesMetadata,iosSimulatorArm64TestResolvableDependenciesMetadata,iosTestApiDependenciesMetadata,iosTestCompileOnlyDependenciesMetadata,iosTestImplementationDependenciesMetadata,iosTestResolvableDependenciesMetadata,iosX64TestResolvableDependenciesMetadata,jsTestResolvableDependenciesMetadata,jvmTestResolvableDependenciesMetadata,linuxArm64TestResolvableDependenciesMetadata,linuxTestApiDependenciesMetadata,linuxTestCompileOnlyDependenciesMetadata,linuxTestImplementationDependenciesMetadata,linuxTestResolvableDependenciesMetadata,linuxX64TestResolvableDependenciesMetadata,macosArm64TestResolvableDependenciesMetadata,macosTestApiDependenciesMetadata,macosTestCompileOnlyDependenciesMetadata,macosTestImplementationDependenciesMetadata,macosTestResolvableDependenciesMetadata,macosX64TestResolvableDependenciesMetadata,mingwTestApiDependenciesMetadata,mingwTestCompileOnlyDependenciesMetadata,mingwTestImplementationDependenciesMetadata,mingwTestResolvableDependenciesMetadata,mingwX64TestResolvableDependenciesMetadata,nativeTestApiDependenciesMetadata,nativeTestCompileOnlyDependenciesMetadata,nativeTestImplementationDependenciesMetadata,nativeTestResolvableDependenciesMetadata,tvosArm64TestResolvableDependenciesMetadata,tvosSimulatorArm64TestResolvableDependenciesMetadata,tvosTestApiDependenciesMetadata,tvosTestCompileOnlyDependenciesMetadata,tvosTestImplementationDependenciesMetadata,tvosTestResolvableDependenciesMetadata,tvosX64TestResolvableDependenciesMetadata,wasmJsTestResolvableDependenciesMetadata,wasmWasiTestResolvableDependenciesMetadata,watchosArm32TestResolvableDependenciesMetadata,watchosArm64TestResolvableDependenciesMetadata,watchosDeviceArm64TestResolvableDependenciesMetadata,watchosSimulatorArm64TestResolvableDependenciesMetadata,watchosTestApiDependenciesMetadata,watchosTestCompileOnlyDependenciesMetadata,watchosTestImplementationDependenciesMetadata,watchosTestResolvableDependenciesMetadata,watchosX64TestResolvableDependenciesMetadata +org.jetbrains.kotlin:kotlin-test-common:1.9.22=allSourceSetsCompileDependenciesMetadata,androidNativeArm32TestResolvableDependenciesMetadata,androidNativeArm64TestResolvableDependenciesMetadata,androidNativeTestApiDependenciesMetadata,androidNativeTestCompileOnlyDependenciesMetadata,androidNativeTestImplementationDependenciesMetadata,androidNativeTestResolvableDependenciesMetadata,androidNativeX64TestResolvableDependenciesMetadata,androidNativeX86TestResolvableDependenciesMetadata,appleTestApiDependenciesMetadata,appleTestCompileOnlyDependenciesMetadata,appleTestImplementationDependenciesMetadata,appleTestResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,iosArm64TestResolvableDependenciesMetadata,iosSimulatorArm64TestResolvableDependenciesMetadata,iosTestApiDependenciesMetadata,iosTestCompileOnlyDependenciesMetadata,iosTestImplementationDependenciesMetadata,iosTestResolvableDependenciesMetadata,iosX64TestResolvableDependenciesMetadata,jsTestResolvableDependenciesMetadata,jvmTestResolvableDependenciesMetadata,linuxArm64TestResolvableDependenciesMetadata,linuxTestApiDependenciesMetadata,linuxTestCompileOnlyDependenciesMetadata,linuxTestImplementationDependenciesMetadata,linuxTestResolvableDependenciesMetadata,linuxX64TestResolvableDependenciesMetadata,macosArm64TestResolvableDependenciesMetadata,macosTestApiDependenciesMetadata,macosTestCompileOnlyDependenciesMetadata,macosTestImplementationDependenciesMetadata,macosTestResolvableDependenciesMetadata,macosX64TestResolvableDependenciesMetadata,mingwTestApiDependenciesMetadata,mingwTestCompileOnlyDependenciesMetadata,mingwTestImplementationDependenciesMetadata,mingwTestResolvableDependenciesMetadata,mingwX64TestResolvableDependenciesMetadata,nativeTestApiDependenciesMetadata,nativeTestCompileOnlyDependenciesMetadata,nativeTestImplementationDependenciesMetadata,nativeTestResolvableDependenciesMetadata,tvosArm64TestResolvableDependenciesMetadata,tvosSimulatorArm64TestResolvableDependenciesMetadata,tvosTestApiDependenciesMetadata,tvosTestCompileOnlyDependenciesMetadata,tvosTestImplementationDependenciesMetadata,tvosTestResolvableDependenciesMetadata,tvosX64TestResolvableDependenciesMetadata,wasmJsTestResolvableDependenciesMetadata,wasmWasiTestResolvableDependenciesMetadata,watchosArm32TestResolvableDependenciesMetadata,watchosArm64TestResolvableDependenciesMetadata,watchosDeviceArm64TestResolvableDependenciesMetadata,watchosSimulatorArm64TestResolvableDependenciesMetadata,watchosTestApiDependenciesMetadata,watchosTestCompileOnlyDependenciesMetadata,watchosTestImplementationDependenciesMetadata,watchosTestResolvableDependenciesMetadata,watchosX64TestResolvableDependenciesMetadata +org.jetbrains.kotlin:kotlin-test-js-runner:1.9.22=jsNpmAggregated,jsTestNpmAggregated,wasmJsNpmAggregated,wasmJsTestNpmAggregated,wasmWasiNpmAggregated,wasmWasiTestNpmAggregated +org.jetbrains.kotlin:kotlin-test-js:1.9.22=jsTestCompileClasspath,jsTestNpmAggregated,jsTestRuntimeClasspath +org.jetbrains.kotlin:kotlin-test-junit:1.9.22=jvmTestCompileClasspath,jvmTestRuntimeClasspath +org.jetbrains.kotlin:kotlin-test-wasm-js:1.9.22=wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath +org.jetbrains.kotlin:kotlin-test-wasm-wasi:1.9.22=wasmWasiTestCompileClasspath,wasmWasiTestNpmAggregated,wasmWasiTestRuntimeClasspath +org.jetbrains.kotlin:kotlin-test:1.9.22=allSourceSetsCompileDependenciesMetadata,androidNativeArm32TestApiDependenciesMetadata,androidNativeArm32TestCompilationDependenciesMetadata,androidNativeArm32TestCompileKlibraries,androidNativeArm32TestCompileOnlyDependenciesMetadata,androidNativeArm32TestImplementationDependenciesMetadata,androidNativeArm32TestResolvableDependenciesMetadata,androidNativeArm64TestApiDependenciesMetadata,androidNativeArm64TestCompilationDependenciesMetadata,androidNativeArm64TestCompileKlibraries,androidNativeArm64TestCompileOnlyDependenciesMetadata,androidNativeArm64TestImplementationDependenciesMetadata,androidNativeArm64TestResolvableDependenciesMetadata,androidNativeTestApiDependenciesMetadata,androidNativeTestCompileOnlyDependenciesMetadata,androidNativeTestImplementationDependenciesMetadata,androidNativeTestResolvableDependenciesMetadata,androidNativeX64TestApiDependenciesMetadata,androidNativeX64TestCompilationDependenciesMetadata,androidNativeX64TestCompileKlibraries,androidNativeX64TestCompileOnlyDependenciesMetadata,androidNativeX64TestImplementationDependenciesMetadata,androidNativeX64TestResolvableDependenciesMetadata,androidNativeX86TestApiDependenciesMetadata,androidNativeX86TestCompilationDependenciesMetadata,androidNativeX86TestCompileKlibraries,androidNativeX86TestCompileOnlyDependenciesMetadata,androidNativeX86TestImplementationDependenciesMetadata,androidNativeX86TestResolvableDependenciesMetadata,appleTestApiDependenciesMetadata,appleTestCompileOnlyDependenciesMetadata,appleTestImplementationDependenciesMetadata,appleTestResolvableDependenciesMetadata,commonTestApiDependenciesMetadata,commonTestCompileOnlyDependenciesMetadata,commonTestImplementationDependenciesMetadata,commonTestResolvableDependenciesMetadata,iosArm64TestApiDependenciesMetadata,iosArm64TestCompilationDependenciesMetadata,iosArm64TestCompileKlibraries,iosArm64TestCompileOnlyDependenciesMetadata,iosArm64TestImplementationDependenciesMetadata,iosArm64TestResolvableDependenciesMetadata,iosSimulatorArm64TestApiDependenciesMetadata,iosSimulatorArm64TestCompilationDependenciesMetadata,iosSimulatorArm64TestCompileKlibraries,iosSimulatorArm64TestCompileOnlyDependenciesMetadata,iosSimulatorArm64TestImplementationDependenciesMetadata,iosSimulatorArm64TestResolvableDependenciesMetadata,iosTestApiDependenciesMetadata,iosTestCompileOnlyDependenciesMetadata,iosTestImplementationDependenciesMetadata,iosTestResolvableDependenciesMetadata,iosX64TestApiDependenciesMetadata,iosX64TestCompilationDependenciesMetadata,iosX64TestCompileKlibraries,iosX64TestCompileOnlyDependenciesMetadata,iosX64TestImplementationDependenciesMetadata,iosX64TestResolvableDependenciesMetadata,jsTestApiDependenciesMetadata,jsTestCompileClasspath,jsTestCompileOnlyDependenciesMetadata,jsTestImplementationDependenciesMetadata,jsTestNpmAggregated,jsTestResolvableDependenciesMetadata,jsTestRuntimeClasspath,jvmTestApiDependenciesMetadata,jvmTestCompileClasspath,jvmTestCompileOnlyDependenciesMetadata,jvmTestImplementationDependenciesMetadata,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath,linuxArm64TestApiDependenciesMetadata,linuxArm64TestCompilationDependenciesMetadata,linuxArm64TestCompileKlibraries,linuxArm64TestCompileOnlyDependenciesMetadata,linuxArm64TestImplementationDependenciesMetadata,linuxArm64TestResolvableDependenciesMetadata,linuxTestApiDependenciesMetadata,linuxTestCompileOnlyDependenciesMetadata,linuxTestImplementationDependenciesMetadata,linuxTestResolvableDependenciesMetadata,linuxX64TestApiDependenciesMetadata,linuxX64TestCompilationDependenciesMetadata,linuxX64TestCompileKlibraries,linuxX64TestCompileOnlyDependenciesMetadata,linuxX64TestImplementationDependenciesMetadata,linuxX64TestResolvableDependenciesMetadata,macosArm64TestApiDependenciesMetadata,macosArm64TestCompilationDependenciesMetadata,macosArm64TestCompileKlibraries,macosArm64TestCompileOnlyDependenciesMetadata,macosArm64TestImplementationDependenciesMetadata,macosArm64TestResolvableDependenciesMetadata,macosTestApiDependenciesMetadata,macosTestCompileOnlyDependenciesMetadata,macosTestImplementationDependenciesMetadata,macosTestResolvableDependenciesMetadata,macosX64TestApiDependenciesMetadata,macosX64TestCompilationDependenciesMetadata,macosX64TestCompileKlibraries,macosX64TestCompileOnlyDependenciesMetadata,macosX64TestImplementationDependenciesMetadata,macosX64TestResolvableDependenciesMetadata,mingwTestApiDependenciesMetadata,mingwTestCompileOnlyDependenciesMetadata,mingwTestImplementationDependenciesMetadata,mingwTestResolvableDependenciesMetadata,mingwX64TestApiDependenciesMetadata,mingwX64TestCompilationDependenciesMetadata,mingwX64TestCompileKlibraries,mingwX64TestCompileOnlyDependenciesMetadata,mingwX64TestImplementationDependenciesMetadata,mingwX64TestResolvableDependenciesMetadata,nativeTestApiDependenciesMetadata,nativeTestCompileOnlyDependenciesMetadata,nativeTestImplementationDependenciesMetadata,nativeTestResolvableDependenciesMetadata,tvosArm64TestApiDependenciesMetadata,tvosArm64TestCompilationDependenciesMetadata,tvosArm64TestCompileKlibraries,tvosArm64TestCompileOnlyDependenciesMetadata,tvosArm64TestImplementationDependenciesMetadata,tvosArm64TestResolvableDependenciesMetadata,tvosSimulatorArm64TestApiDependenciesMetadata,tvosSimulatorArm64TestCompilationDependenciesMetadata,tvosSimulatorArm64TestCompileKlibraries,tvosSimulatorArm64TestCompileOnlyDependenciesMetadata,tvosSimulatorArm64TestImplementationDependenciesMetadata,tvosSimulatorArm64TestResolvableDependenciesMetadata,tvosTestApiDependenciesMetadata,tvosTestCompileOnlyDependenciesMetadata,tvosTestImplementationDependenciesMetadata,tvosTestResolvableDependenciesMetadata,tvosX64TestApiDependenciesMetadata,tvosX64TestCompilationDependenciesMetadata,tvosX64TestCompileKlibraries,tvosX64TestCompileOnlyDependenciesMetadata,tvosX64TestImplementationDependenciesMetadata,tvosX64TestResolvableDependenciesMetadata,wasmJsTestApiDependenciesMetadata,wasmJsTestCompileClasspath,wasmJsTestCompileOnlyDependenciesMetadata,wasmJsTestImplementationDependenciesMetadata,wasmJsTestNpmAggregated,wasmJsTestResolvableDependenciesMetadata,wasmJsTestRuntimeClasspath,wasmWasiTestApiDependenciesMetadata,wasmWasiTestCompileClasspath,wasmWasiTestCompileOnlyDependenciesMetadata,wasmWasiTestImplementationDependenciesMetadata,wasmWasiTestNpmAggregated,wasmWasiTestResolvableDependenciesMetadata,wasmWasiTestRuntimeClasspath,watchosArm32TestApiDependenciesMetadata,watchosArm32TestCompilationDependenciesMetadata,watchosArm32TestCompileKlibraries,watchosArm32TestCompileOnlyDependenciesMetadata,watchosArm32TestImplementationDependenciesMetadata,watchosArm32TestResolvableDependenciesMetadata,watchosArm64TestApiDependenciesMetadata,watchosArm64TestCompilationDependenciesMetadata,watchosArm64TestCompileKlibraries,watchosArm64TestCompileOnlyDependenciesMetadata,watchosArm64TestImplementationDependenciesMetadata,watchosArm64TestResolvableDependenciesMetadata,watchosDeviceArm64TestApiDependenciesMetadata,watchosDeviceArm64TestCompilationDependenciesMetadata,watchosDeviceArm64TestCompileKlibraries,watchosDeviceArm64TestCompileOnlyDependenciesMetadata,watchosDeviceArm64TestImplementationDependenciesMetadata,watchosDeviceArm64TestResolvableDependenciesMetadata,watchosSimulatorArm64TestApiDependenciesMetadata,watchosSimulatorArm64TestCompilationDependenciesMetadata,watchosSimulatorArm64TestCompileKlibraries,watchosSimulatorArm64TestCompileOnlyDependenciesMetadata,watchosSimulatorArm64TestImplementationDependenciesMetadata,watchosSimulatorArm64TestResolvableDependenciesMetadata,watchosTestApiDependenciesMetadata,watchosTestCompileOnlyDependenciesMetadata,watchosTestImplementationDependenciesMetadata,watchosTestResolvableDependenciesMetadata,watchosX64TestApiDependenciesMetadata,watchosX64TestCompilationDependenciesMetadata,watchosX64TestCompileKlibraries,watchosX64TestCompileOnlyDependenciesMetadata,watchosX64TestImplementationDependenciesMetadata,watchosX64TestResolvableDependenciesMetadata +org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.5.0=kotlinBuildToolsApiClasspath +org.jetbrains:annotations:13.0=jvmCompileClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathJsMain,kotlinCompilerPluginClasspathJsTest,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataCommonMain,kotlinCompilerPluginClasspathMetadataMain,kotlinCompilerPluginClasspathWasmJsMain,kotlinCompilerPluginClasspathWasmJsTest,kotlinCompilerPluginClasspathWasmWasiMain,kotlinCompilerPluginClasspathWasmWasiTest,kotlinKlibCommonizerClasspath +empty=androidNativeArm32MainIntransitiveDependenciesMetadata,androidNativeArm32TestCompilationApi,androidNativeArm32TestIntransitiveDependenciesMetadata,androidNativeArm64MainIntransitiveDependenciesMetadata,androidNativeArm64TestCompilationApi,androidNativeArm64TestIntransitiveDependenciesMetadata,androidNativeMainIntransitiveDependenciesMetadata,androidNativeTestIntransitiveDependenciesMetadata,androidNativeX64MainIntransitiveDependenciesMetadata,androidNativeX64TestCompilationApi,androidNativeX64TestIntransitiveDependenciesMetadata,androidNativeX86MainIntransitiveDependenciesMetadata,androidNativeX86TestCompilationApi,androidNativeX86TestIntransitiveDependenciesMetadata,appleMainIntransitiveDependenciesMetadata,appleTestIntransitiveDependenciesMetadata,commonMainIntransitiveDependenciesMetadata,commonTestIntransitiveDependenciesMetadata,iosArm64MainIntransitiveDependenciesMetadata,iosArm64TestCompilationApi,iosArm64TestIntransitiveDependenciesMetadata,iosMainIntransitiveDependenciesMetadata,iosSimulatorArm64MainIntransitiveDependenciesMetadata,iosSimulatorArm64TestCompilationApi,iosSimulatorArm64TestIntransitiveDependenciesMetadata,iosTestIntransitiveDependenciesMetadata,iosX64MainIntransitiveDependenciesMetadata,iosX64TestCompilationApi,iosX64TestIntransitiveDependenciesMetadata,jsMainIntransitiveDependenciesMetadata,jsTestIntransitiveDependenciesMetadata,jvmMainIntransitiveDependenciesMetadata,jvmMainModuleApiDependenciesMetadata,jvmMainModuleCompileOnlyDependenciesMetadata,jvmMainModuleImplementationDependenciesMetadata,jvmMainModuleIntransitiveDependenciesMetadata,jvmMainModuleResolvableDependenciesMetadata,jvmTestIntransitiveDependenciesMetadata,jvmTestModuleApiDependenciesMetadata,jvmTestModuleCompileOnlyDependenciesMetadata,jvmTestModuleImplementationDependenciesMetadata,jvmTestModuleIntransitiveDependenciesMetadata,jvmTestModuleResolvableDependenciesMetadata,kotlinCompilerPluginClasspath,kotlinCompilerPluginClasspathAndroidNativeArm32Main,kotlinCompilerPluginClasspathAndroidNativeArm32Test,kotlinCompilerPluginClasspathAndroidNativeArm64Main,kotlinCompilerPluginClasspathAndroidNativeArm64Test,kotlinCompilerPluginClasspathAndroidNativeX64Main,kotlinCompilerPluginClasspathAndroidNativeX64Test,kotlinCompilerPluginClasspathAndroidNativeX86Main,kotlinCompilerPluginClasspathAndroidNativeX86Test,kotlinCompilerPluginClasspathIosArm64Main,kotlinCompilerPluginClasspathIosArm64Test,kotlinCompilerPluginClasspathIosSimulatorArm64Main,kotlinCompilerPluginClasspathIosSimulatorArm64Test,kotlinCompilerPluginClasspathIosX64Main,kotlinCompilerPluginClasspathIosX64Test,kotlinCompilerPluginClasspathLinuxArm64Main,kotlinCompilerPluginClasspathLinuxArm64Test,kotlinCompilerPluginClasspathLinuxX64Main,kotlinCompilerPluginClasspathLinuxX64Test,kotlinCompilerPluginClasspathMacosArm64Main,kotlinCompilerPluginClasspathMacosArm64Test,kotlinCompilerPluginClasspathMacosX64Main,kotlinCompilerPluginClasspathMacosX64Test,kotlinCompilerPluginClasspathMetadataAndroidNativeMain,kotlinCompilerPluginClasspathMetadataAppleMain,kotlinCompilerPluginClasspathMetadataIosMain,kotlinCompilerPluginClasspathMetadataLinuxMain,kotlinCompilerPluginClasspathMetadataMacosMain,kotlinCompilerPluginClasspathMetadataNativeMain,kotlinCompilerPluginClasspathMetadataTvosMain,kotlinCompilerPluginClasspathMetadataWatchosMain,kotlinCompilerPluginClasspathMingwX64Main,kotlinCompilerPluginClasspathMingwX64Test,kotlinCompilerPluginClasspathTvosArm64Main,kotlinCompilerPluginClasspathTvosArm64Test,kotlinCompilerPluginClasspathTvosSimulatorArm64Main,kotlinCompilerPluginClasspathTvosSimulatorArm64Test,kotlinCompilerPluginClasspathTvosX64Main,kotlinCompilerPluginClasspathTvosX64Test,kotlinCompilerPluginClasspathWatchosArm32Main,kotlinCompilerPluginClasspathWatchosArm32Test,kotlinCompilerPluginClasspathWatchosArm64Main,kotlinCompilerPluginClasspathWatchosArm64Test,kotlinCompilerPluginClasspathWatchosDeviceArm64Main,kotlinCompilerPluginClasspathWatchosDeviceArm64Test,kotlinCompilerPluginClasspathWatchosSimulatorArm64Main,kotlinCompilerPluginClasspathWatchosSimulatorArm64Test,kotlinCompilerPluginClasspathWatchosX64Main,kotlinCompilerPluginClasspathWatchosX64Test,kotlinNativeCompilerPluginClasspath,kotlinScriptDef,kotlinScriptDefExtensions,linuxArm64MainIntransitiveDependenciesMetadata,linuxArm64TestCompilationApi,linuxArm64TestIntransitiveDependenciesMetadata,linuxMainIntransitiveDependenciesMetadata,linuxTestIntransitiveDependenciesMetadata,linuxX64MainIntransitiveDependenciesMetadata,linuxX64TestCompilationApi,linuxX64TestIntransitiveDependenciesMetadata,macosArm64MainIntransitiveDependenciesMetadata,macosArm64TestCompilationApi,macosArm64TestIntransitiveDependenciesMetadata,macosMainIntransitiveDependenciesMetadata,macosTestIntransitiveDependenciesMetadata,macosX64MainIntransitiveDependenciesMetadata,macosX64TestCompilationApi,macosX64TestIntransitiveDependenciesMetadata,mingwMainIntransitiveDependenciesMetadata,mingwTestIntransitiveDependenciesMetadata,mingwX64MainIntransitiveDependenciesMetadata,mingwX64TestCompilationApi,mingwX64TestIntransitiveDependenciesMetadata,nativeMainIntransitiveDependenciesMetadata,nativeTestIntransitiveDependenciesMetadata,testKotlinScriptDef,testKotlinScriptDefExtensions,tvosArm64MainIntransitiveDependenciesMetadata,tvosArm64TestCompilationApi,tvosArm64TestIntransitiveDependenciesMetadata,tvosMainIntransitiveDependenciesMetadata,tvosSimulatorArm64MainIntransitiveDependenciesMetadata,tvosSimulatorArm64TestCompilationApi,tvosSimulatorArm64TestIntransitiveDependenciesMetadata,tvosTestIntransitiveDependenciesMetadata,tvosX64MainIntransitiveDependenciesMetadata,tvosX64TestCompilationApi,tvosX64TestIntransitiveDependenciesMetadata,wasmJsMainIntransitiveDependenciesMetadata,wasmJsTestIntransitiveDependenciesMetadata,wasmMainApiDependenciesMetadata,wasmMainCompileOnlyDependenciesMetadata,wasmMainImplementationDependenciesMetadata,wasmMainIntransitiveDependenciesMetadata,wasmMainResolvableDependenciesMetadata,wasmTestIntransitiveDependenciesMetadata,wasmWasiMainIntransitiveDependenciesMetadata,wasmWasiTestIntransitiveDependenciesMetadata,watchosArm32MainIntransitiveDependenciesMetadata,watchosArm32TestCompilationApi,watchosArm32TestIntransitiveDependenciesMetadata,watchosArm64MainIntransitiveDependenciesMetadata,watchosArm64TestCompilationApi,watchosArm64TestIntransitiveDependenciesMetadata,watchosDeviceArm64MainIntransitiveDependenciesMetadata,watchosDeviceArm64TestCompilationApi,watchosDeviceArm64TestIntransitiveDependenciesMetadata,watchosMainIntransitiveDependenciesMetadata,watchosSimulatorArm64MainIntransitiveDependenciesMetadata,watchosSimulatorArm64TestCompilationApi,watchosSimulatorArm64TestIntransitiveDependenciesMetadata,watchosTestIntransitiveDependenciesMetadata,watchosX64MainIntransitiveDependenciesMetadata,watchosX64TestCompilationApi,watchosX64TestIntransitiveDependenciesMetadata diff --git a/core/jvmMainModule/src/module-info.java b/core/jvmMainModule/src/module-info.java new file mode 100644 index 00000000..95eee6ad --- /dev/null +++ b/core/jvmMainModule/src/module-info.java @@ -0,0 +1,4 @@ +module kotlinx.collections.immutable { + requires java.base; + requires transitive kotlin.stdlib; +} diff --git a/gradle.lockfile b/gradle.lockfile new file mode 100644 index 00000000..d8527051 --- /dev/null +++ b/gradle.lockfile @@ -0,0 +1,4 @@ +# 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. +empty=kotlinKlibCommonizerClasspath diff --git a/gradle.properties b/gradle.properties index d2050515..9d8f7672 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,14 @@ group=org.jetbrains.kotlinx version=0.4 versionSuffix=SNAPSHOT +kotlin.version=1.9.22 -org.gradle.jvmargs=-Xmx2g -XX:MaxMetaspaceSize=2048m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 +kotlin.wasm.stability.nowarn=true + +org.gradle.caching=true +org.gradle.unsafe.isolated-projects=false +org.gradle.configuration-cache=false +org.gradle.configuration-cache-problems=warn +org.gradle.dependency-verification=lenient +org.gradle.parallel=true +org.gradle.jvmargs=-Xmx2g -XX:MaxMetaspaceSize=2048m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 -XX:+UseParallelGC diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml new file mode 100644 index 00000000..86203f1b --- /dev/null +++ b/gradle/libs.versions.toml @@ -0,0 +1,20 @@ +[versions] +kotlin-sdk = "1.9.22" +kotlinx-benchmark = "0.4.10" +kotlinx-validator = "0.13.2" +guava-testlib = "18.0" +jmh = "1.21" + +[plugins] +kotlinx-benchmark = { id = "org.jetbrains.kotlinx.benchmark", version.ref = "kotlinx-benchmark" } +kotlinx-validator = { id = "org.jetbrains.kotlinx.binary-compatibility-validator", version.ref = "kotlinx-validator" } + +[libraries] +guava-testlib = { module = "com.google.guava:guava-testlib", version.ref = "guava-testlib" } +kotlin-stdlib = { module = "org.jetbrains.kotlin:kotlin-stdlib", version.ref = "kotlin-sdk" } +kotlinx-benchmark = { module = "org.jetbrains.kotlinx:kotlinx-benchmark-runtime", version.ref = "kotlinx-benchmark" } +jmh-core = { module = "org.openjdk.jmh:jmh-core", version.ref = "jmh" } +plugin-kotlin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin-sdk" } +plugin-kotlinx-benchmark = { module = "org.jetbrains.kotlinx:kotlinx-benchmark-plugin", version.ref = "kotlin-sdk" } + +[bundles] diff --git a/gradle/verification-keyring.gpg b/gradle/verification-keyring.gpg new file mode 100644 index 0000000000000000000000000000000000000000..feef372f5630621797084c0f827fbbd4ed1327c8 GIT binary patch literal 62110 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 P>^m2aV7sCfo%;U=*@Hpf literal 0 HcmV?d00001 diff --git a/gradle/verification-keyring.keys b/gradle/verification-keyring.keys new file mode 100644 index 00000000..d7dc96b2 --- /dev/null +++ b/gradle/verification-keyring.keys @@ -0,0 +1,1518 @@ +pub 81C27DE945332233 +sub 126BBD1EF340F4BD +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +mQMuBEvACI4RCACNKnrdBk54/vBJSu2RJCG3VXR1h5DPGxJR1QIXDylZC8g4XQoj +0cE7Ij61hd1VYAWlzlrfXtHi80BIXoGza61OaA0pUCxTuLyAL22x0GmdNpGBkigz +r58LnwaqTxmGwQk/1mjJID2lDzi+GeEtKZd2xmYg7thIYAaKTQaQAzShfsntIdtl +8XH7X7qpze+CGqh1cQR89aJXjdaspj9hT4Bgj5EfQk3DKUXDXAD4lg5IP2mLGpeb +MzBPdhdvF1L6nR+CbNgwCFdDwcqsYxaAc2gxFUAoX4U9p/rG4lfZ8ft3zkKv/N0c +2bRTpMR3HCSk/Q6io6C8JfEynpTXE1HjG633AQCpTien60HqyCD5o8riRDOeSN8F +Ib7CSH5l9A+eVcPWGQf/UuYeEjOPMl9RChB6ZpqmjwnXpDWlE8hVaWVOHp80CDuB +gxEcsWJ62VCiXJPrC7fBrQo6rjaSioP8rT2Ge8CSESANVBFLtuyhpNFeek0SJGQ9 +0bCplP9cizGDCVKxiEH8Toi1ifzeFRQYjum22YElrhpcPQhf0PLIxUmllFHr1P+t +f8jlfkf23IgdhAhUedVloh0oPS0epixPB098acZCRKPoYZzTXmEXjp5q+JGPE/Fh +3Rlt0SGXEcrHILQThpGjn5xG9xzH+WNYz6kZ01CLpgUdNvB291C0lvsVq3r4U0lq +eCZCNJ4JfCm3KYzAt603nlWILnmTynavaWDO2JYhXQf+OyuDPrOrYdkELczLKI4p ++1pEaVLQ8dZRL0W/XJ+RFMtmWyoQ4ypqlYkhxj+zslaG9UAOBwodIACMvlGrVHMi +BaY0q+/9oZtMqEKN+jp8z/sYyDlOPFeDOU00vk7XU0v6Vy4Jm9ogSitlMRuvSQxr +XGh1tDLbz+3MNyFjISdHxtc2gLqA74uAfIfI0Wwkx07xLwiI4y/GR6BB4oHVmytn +R2jjTquLfbNXRwf/4x1GVj/V7ztszVqNa3n4LtDcK0cfXFfwJ7/skhuGmReyzxjA +yTiSlbCf13zA6GLr1qZaJv3t8iSNA/TfP9NplbZoaROLhHSOp++GwplpbJFaBec2 +XrkCDQRLwAiOEAgA/CUGWGQsNucNS2dDPbk/lUx6MaFqRV+CcwAsCLUPCBQ22Crz +T1OvwnybE+/wc9KxqBsGcQxg8STGP01nFEttn755O55Avk19kWP5EWVzndIqsjFb +cInQHVAeglz6F0a/7SFmaznrKvWCeHwjawEbAQXkCd8ZPRqeP2RWpwcxjoxFJRhQ +nVaEJ2u8XAU5RCrfsnfaRD/99NcCrE+5xfyWncF6n5FEmgVt9GQNyjYZPzO3Ikzj +mpay0nboxpocDV3iTJe1aRBAZfUxP9R4mFMb0R7/6CP4YGKF4CnKCzUZFaD7aswh +mi+VVVFOcyurT+VJrX7Iaxe/305JWqKy0G/W0wADBgf/TZE2OQJ2EC+Dqkk74I1e +UPcVwsdDdzhVsRvjeyISg03nuTT/VZ/9qObCe69l1M4SfJNoqLm2QD8dUzWTBG7l +SseL4HjMckapIql8Vy5lNhnnzOjk2znIvaL4CuS0vFSGaXC0FS52BhtbxHmUsHr7 +xgASj95Us7dp3C9oO/iD+k1rWpoD7QungfXP7HrXxzoFiYFZhcY+YMdM2K/pr+Ba +z3vakSsNGU1vs96l94QWGUf681xGlyw2uyWRuNPWhMYgGSJ05LIAtm3vIcWfNp7r +T14lVSSJCqEP8/f/50N5MeqBXEDrOO4lj1meUL5MK8Nxk6qEacYaMwxTpz5losxt +7IhhBBgRCAAJBQJLwAiOAhsMAAoJEIHCfelFMyIzCE4A/iu1wm8vFwBxrqYWOO/c +2BbjtX4tROpH2+P2Fk13iYkMAP4xCfyw10teMvj6fu3u9+H1XvC1AQZTqHnaG/8Y +ss9xVg== +=Zs5g +-----END PGP PUBLIC KEY BLOCK----- + +pub 85911F425EC61B51 +uid Marc Philipp + +sub 8B2A34A7D4A9B8B3 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +mQINBFrKW9IBEACkqUvM7hU1WqOOeb1gZ7pUsRliHuoUvYIrd+hdp+qhPmJ0NG0W +YhZK5UtJBmqvtHKRkbwYxUuya9zlBmCfQFf0GpFKJ65JSrPSkZADI3aZ4aUkxIUw +nIRoUHucmr10Xftpebr/zaJk5oR8RdaL5FapapmcZmAaHR9CDWB8XtI318u314jq +M5rKatnAZMERoPugOvvuAOz4bfZKwdfCmZKfYUM/TMSrSinXrGExSW6z4RhtqmpC +E5M/7OoVfvDynVJKqNazqgigpmMNhOyzAhQsiKh1K0akyxTZbjeZKsdYfhCXvq0q +k9+KM/cTllQ54MPnFWiObLkHeK0Waw8bI/vAJ4h4x/XM9iGYpkXv7F2/FVsHQdPe +YJcwD/CkD8KHyiPaRKMeApiUtZsdAHU0L4X/lNmcooea/7ipskruUgwcm+RdLhRZ +P949t1e7nqDZfpEHy90NiFxmlRAPSNqBLwefxY/hwBgog2jabDALJVcLCMosFWPj +MQhFlGSIODiVcW8folGIjzkyNZbNMWkwnl2QnWp/h2TAwYQJOMqcv2MG9o5pyzpx +97Iz1ngq1FlM/gJnGnNUydP2tAjT2L2U3MP1uX/EdRChdgPqdolqYhdFfwCr0Fpf +W527bUZpReHCEiQ29ABSnQ711mO+d9+qM6edRyHUoBWz89IHt8sCunuvNwARAQAB +tB1NYXJjIFBoaWxpcHAgPG1hcmNAanVuaXQub3JnPrkCDQRaylvSARAAnQG636wl +iEOLkXN662OZS6Qz2+cFltCWboq9oX9FnA1PHnTY2cAtwS214RfWZxkjg6Stau+d +1Wb8TsF/SUN3eKRSyrkAxlX0v552vj3xmmfNsslQX47e6aEWZ0du0M8jw7/f7Qxp +0InkBfpQwjSg4ECoH4cA6dOFJIdxBv8dgS4K90HNuIHa+QYfVSVMjGwOjD9St6Pw +kbg1sLedITRo59Bbv0J14nE9LdWbCiwNrkDr24jTewdgrDaCpN6msUwcH1E0nYxu +KAetHEi2OpgBhaY3RQ6QPQB6NywvmD0xRllMqu4hSp70pHFtm8LvJdWOsJ5we3Ki +jHuZzEbBVTTl+2DhNMI0KMoh+P/OmyNOfWD8DL4NO3pVv+mPDZn82/eZ3XY1/oSQ +rpyJaCBjRKasVTtfiA/FgYqTml6qZMjy6iywg84rLezELgcxHHvjhAKd4CfxyuCC +gnGT0iRLFZKw44ZmOUqPDkyvGRddIyHag1K7UaM/2UMn6iPMy7XWcaFiH5Huhz43 +SiOdsWGuwNk4dDxHdxmzSjps0H5dkfCciOFhEc54AFcGEXCWHXuxVqIq/hwqTmVl +1RY+PTcQUIOfx36WW1ixJQf8TpVxUbooK8vr1jOFF6khorDXoZDJNhI2VKomWp8Y +38EPGyiUPZNcnmSiezx+MoQwAbeqjFMKG7UAEQEAAYkCNgQYAQgAIBYhBP9uLAAZ +SMXy84sMw4WRH0JexhtRBQJaylvSAhsMAAoJEIWRH0JexhtR0LEP/RvYGlaokoos +AYI5vNORAiYEc1Ow2McPI1ZafHhcVxZhlwF48dAC2bYcasDX/PbEdcD6pwo8ZU8e +I8Ht0VpRQxeV/sP01m2YEpAuyZ6jI7IQQCGcwQdN4qzQJxMAASl9JlplH2NniXV1 +/994FOtesT59ePMyexm57lzhYXP1PGcdt8dH37r6z3XQu0lHRG/KBn7YhyA3zwJc +no324KdBRJiynlc7uqQq+ZptU9fR1+Nx0uoWZoFMsrQUmY34aAOPJu7jGMTG+Vse +MH6vDdNhhZs9JOlD/e/VaF7NyadjOUD4j/ud7c0z2EwqjDKMFTHGbIdawT/7jart +T+9yGUO+EmScBMiMuJUTdCP4YDh3ExRdqefEBff3uE/rAP73ndNYdIVq9U0gY0uS +NCD9JPfj4aCN52y9a2pS7Dg7KB/Z8SH1R9IWP+t0HvVtAILdsLExNFTedJGHRh7u +aC7pwRz01iivmtAKYICzruqlJie/IdEFFK/sus6fZek29odTrQxx42HGHO5GCNyE +dK9jKVAeuZ10vcaNbuBpiP7sf8/BsiEU4wHE8gjFeUPRiSjnERgXQwfJosLgf/K/ +SShQn2dCkYZRNF+SWJ6Z2tQxcW5rpUjtclV/bRVkUX21EYfwA6SMB811mI7AVy8W +PXCe8La72ukmaxEGbpJ8mdzS2PJko7mm +=Xe8l +-----END PGP PUBLIC KEY BLOCK----- + +pub 873A8E86B4372146 +uid Olivier Lamy + +sub 1AFEC329B615D06C +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +mQGiBEdddbQRBADRgstdUZq7ceq3NYcR5kpoU2tN2Zvg1vptE9FxpDbL73gdLWnI +C7IAx+NNjdG7Ncdg+u10UZv6OSmhWAd8ubWcD9JxKtS4UXkNPHxhHFHqVPHuCwsQ +q2AaCtuOk6q9OtthQX6LfOuGqwbv9uH/KLUDn91PrgKuHPVfVveiF30ZvwCggutX +D0jTGRHzUJl7F1wViuckHJcD/2z76t0ObSuTnENi0IUjF3Toe4tv+qO+Ljs0knvK +tu1b8A5Bs+kxNcbEqV+zdIph+6gCL9jy+dB9J+t6uZg6ACJexbIkDPsutNtbAVDV +w5AtM7JR8930dRHfEt26ahFohFi+73V8RiA7LrmMjA8rX4zuo5Pr48xt/RR1Y/VE +8ohCA/wOqul9eHHevxeEMDYoGVjGl2EiuIThg4eYuQDDSisBNb9a6dhE8ECQFFBx +mGz32+I8gXSTKFAkkQUI4HmJmTX35nGJql6E7Bn5yM2OaOG04PV+xkhScJll5ZxZ +BNEccFDL/aI4N33cwrLHyk+wFNZHBL1hnHpxpjFZYv5xfEBjmbQfT2xpdmllciBM +YW15IDxvbGFteUBhcGFjaGUub3JnPrkCDQRHXXXPEAgAyqEz3eBEKiZ7VbAj96Ht +IvGufKTdZ0ERJtrdPO4FUGVBcXpphtnPn+JOWomszUKkKLO4x24OaDCG/SENsPy+ +Ned4wjBB+4uV0YEc5Xn8gts3g4Z5p+YiVu+aWeYPPC5BPU61tVqc996i9ZYkZiYO +s9F5Z+dKozk3KwVcijaCr0IQMjAtJ/N70zcciP23KhrN9Z3Nn54Xm7GezD0nxTUG +P8gM79zKHnVhDBptrxIT/adCzU9/UX3UVAQcdq86FfzTEpqFG3TM75HBTQgHihIk +kirzurE+ivh6aaF3UJwmDBe5Wu3gvxF6Rl0Ja/YBNkkCiOXngXSxwvUUR8KJO07R +GwADBggAxOFV2DfMHsTBu++gKJ94L6VjETfVFEYPo7e4tO2Zn2Unzdxz2BoTJcQY +0j6/M3Tl9hCwhOSVVL8Ao/wp1ykjgXnwV4vz0be4d/ZML+KF15x+8730H7Th+aR+ +Ug6K6Khsp8XIypmLJcYgYLD02PlSnDxCq9Fbv0JDlbr6tbsJiVzoRjg+WNEIB3II +rJbTIiOFrRBhloinYoot216QJ1rI2nQpMEBlSuX6f4jYF6F7X4dAY4V4ohjFeJCb +6SYkKbj4caqBA9OVrj3vh8v/vAUKDB8pqVhpaZicFpMd2pEEYVMEU4i1sLE3X73y +9RRuaJOvPAx2HHT8MlWjsDmNdY2Mg4hgBBgRAgAJBQJHXXXPAhsMACEJEIc6joa0 +NyFGFiEE8lSzVhfcJV2TRLz6hzqOhrQ3IUZkrACcDtB3CttHYgGrF31KCocX/gwC +iYEAn18D875QwNruE4Qkt/W0Rhy/QRIZ +=BrH5 +-----END PGP PUBLIC KEY BLOCK----- + +pub 88AA1FEE831A7E89 +sub A373C30CBD3C6904 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +mQENBE2LXvgBCADAfDmKMk/nQjiykUbXESswaAyElcjRCsM4sXXDIzepYvvMxoOv +DVvFdVzDoNBJ1xoCo7H3oWH7WqSLJtTblB9xH3+R4YJY3frbx9NRuI6Ozfz0PqII +clKCcxYkTybifcY1gXRpuuW/XUk+30iGhRBqC3vp/uWXn63JTswnhb0Pi9puxI0w +21uhaPFbl3mcoZD27gDom9/rhpvfSNZRhnMes0VBhjUA4a+2GBqOmDl2wuR77Fky +lCIFVENt8T24OsET8AVoyKpJ8DfwNff+oPrDaTM7rPE/R4RrX4wT8X85TC7ku0cq +muBFtlsS1Bc9PO25gahg8RkibPbJbMXMEh/NABEBAAG5AQ0ETYte+AEIALTmazBY +NyxYcEv3Vt7wdUUYr3uEOR8jjCcbrkmDf4v1Mp9ouo3Oj8LmH79weBuk3UZ2Kaik +C8KB8akMaY9Ig1RR4FmyJvujHJR1/r8fZBZiqavK0xDAImAl/DgdCI8mZTU1ugvi +CqzPspUInn7oEmULUYGgxWRHdMvFMHsZavDTtpmAsWTAeHisSeg1+oY0GeabRcD1 +RIawQhgpHgHtNFcUpQYRewnCgVKLe0FfhY7623qwLdbexa2W4y3W43x/e57STeSo +cDVX0EyGIdigCCqnDTreWMXm0QJVqMELkonkTi5Rp7J9kfo66gQ/nQHlCCBw6qXz +hNNIPSNfVDbjhDkAEQEAAYkBHwQYAQIACQUCTYte+AIbDAAKCRCIqh/ugxp+iZPK +CACIZytIWnW+yxmj0VxtHw44A6uFcG6GWYipNAFaCPxi/ZGXaFvDuSAnwn0bNZ9T +m+uc10cRcau/jz3PVocehjzy5bUAn6KcGH3bM41XY6XwL9yaZF+Qh1gdoVDDkHL1 +ddZopbphDMQ8e1YG6EcjmlSLYe9YS6Ztg0AmRVclWgiM3HJEQFwAA/DLjhwkgaKR +KSQkVJClx++EV5jtzZu1NNGUNU8LB+qEc007wSgmQOriW2INzKu97Uay5ZrD1Skm +13I0OWr2gKW7V2DqgiDA1CB4/2PmW298r+hs+t9x8VESYajCYXhTSBnBGjSCc0ix +AHPj+0JoEIzoj/U8hzxEGI6N +=aBfi +-----END PGP PUBLIC KEY BLOCK----- + +pub 98FE03A974CE0A0B +sub CC3328A2F49A80C8 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +mQENBFhlXQUBCACoN2nTeSRVZnGoktKHyiCgeYQ/hEKKKDDAbWubnnQwonCTILaN +Qw3GmIT6plmi9iy4rl+rJprSzDeQDZngQCx1KPYcXCrrc0pnjERDaogw9fC3c3z2 +B6+90qT6UJSTNmxMs5zbhgzKDWb3eaDmVDqVqzsM5xz9GxX6zo83o37fTFSbVbtA +9+c100+KaAldVL/6uLeGoQsAIxtMH8GiOPiSjrw+XCQ5mbP6e+oYYBKxEyAgu1XW +8jP4bF0rz2+1lkIGfWfYHZmMbmSutDxXqOXA9cZomhOayOSe+iczoxXkVXkQzMxq +bG4ru5CHxPh+RSfpwA+9StLvzLeoFrBUlqW3ABEBAAG5AQ0EWGVdBQEIAKNt/Vhk +I5bXMxoM2XYMh9MPz67sAaqc9Eixan/OONftycStOVHB0YhfQ9lsNeLIb6qQvves +ktI1exv18wxSpN+AEwroMGDSDfixhpgaeOGzj8omXOTBZ7Bv73A+4dCVeoQ1F/ss +4OkRK7Jx5jLM7TuY7IG64XSYy6D6QvMOoIxKdqB81f6JYDzVwszFvUUbDqVQIfhX +cuCLAbYxtJVVzAldGBWR/72Uq8nE3ereeeZjHniADawU+XR2Egv1aMDvP8zUpWl2 +mRzOKA+1SJyXhA569435s604PfxPdESlKnMYlinWZNvL5rrRV15vYYU2u59ol/g2 +7DOFy33UCrCgZ4EAEQEAAYkBHwQYAQgACQUCWGVdBQIbDAAKCRCY/gOpdM4KC2Nw +CACTClhcW6GbsRaRHzSdnXDPUNlWf0UDPz0amNp8mQwsygL+jW0awtrfxxSqbv+1 +myMQB7g6tLFGcTH+jqfkDsN2rpQ2/cnrUVmunMjkCnoSyhrqolSv9ow0L7K+FERm +xq5QGorE/Gya87oK38ovXZmGUs79OGStAeEnXXkta+dDlX3nyTGM52HEaabPJRv/ +eMoryZPgv86ahajMUxbc9LdjkdVnwj+xa5Ux6ZVuPGHeodq+MWTZuKM//qT9uXbO +sgiKWJ1E3YPy4Ip7kc4ne950WGndzu/O3aBldqsxUstQ0abZXtAVj1j2Io/Jgvt9 +btE9i0ssfGT8HCatMFwsfi98 +=Ed87 +-----END PGP PUBLIC KEY BLOCK----- + +pub 9AE296FD02E9F65B +sub 2F3C9EEB05D1D1E3 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +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 +BdUXfzfbgJ4GgLqKhgE4Zsn3 +=pUGZ +-----END PGP PUBLIC KEY BLOCK----- + +pub A6ADFC93EF34893E +uid Tom Denley (scarytom) + +sub 9C4C23E6FFE405BD +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +mQENBE+xZxIBCACzKctn4ez8xOC0pGThhAwjYWGkzcwK4HNaC1usHThBFz3/t8JN +OqUXRixLyi5wELN6GHlsGVUQS3IfB4JtuhScsieSB8PTree68/knMq6JI08mJqZr +9nFrAB4eDW0UMbSL9kPmclUm/yN+qcCZBrsVn0q6CWb/Kcd8EEXEu6sGILzOGqGe +d433t5O+tGXWL2TjAz+Scsk2Hf4zcuDeQcxELAMnVaVgKuGuEZvibrjsdIvJDGI+ +0BzWIu8ZP8ldBl4SVtzGpEVzLvDUo3mOqBeTkj3rP7xLtFDN/3AFtowbLfL7L2Pg +SMcTnKK+jfFHRfbHP1Ih3rQ4ilLzhCnY/QIZABEBAAG0K1RvbSBEZW5sZXkgKHNj +YXJ5dG9tKSA8dC5kZW5sZXlAY2FudGFiLm5ldD65AQ0ET7FnEgEIAM3i3e1sjwrx +2PN8XYMPQWG+/YTtw1BYDl2+iYE+LaZvtq1hpbgeCLgEVwXrCJ4spLP1rFXogWqK +rkJ0LRjlpdKhKBvyH1ex4grh3cWN/bIDJcJ7JA4I/Bhqhlh8hYycS9pGFeS+MR3a +FIsii+vadrwYYvuVYGeWvdZhB7mJKYevj5Ms0OpYTfZd95Pzo4o//lNpDnrG7Xd3 +tgTNU/fkpw6rFB/2Ib1Qlk+Kz1z6JNsp+tOPGGCBrzwfwglcikTuqS+xyRgC9cHh +5eCol11uSoWPKcQR2Ar8Eo56nxv/UApdu15iJ7R8cA5guKeeS4jt0CGCPs2Phugg +DxI73Xvl4zsAEQEAAYkBHwQYAQIACQUCT7FnEgIbDAAKCRCmrfyT7zSJPuylB/9i +wtIQeexMWBmQNdDe0md8HLulDfcujPtklrvYHtXMJQFaGA0Vafq0oT9MhBfb1YCP +79uF0qgswSxINYCOJx4nTPIP9BOdTwqfGo7ul27REgNq4lIUW0GkMgZAUA2ft/vc +0u/I0PqnhKCi4Pq79hLIx7eiX2ySfXfYfLXRVzbMWKMoi7lWXseQqbM0RvCA54J1 +qAi6Ew+JyoYGQ7OvXdL5Eh5Tkm2cpIADyqCkp/aFDe5lqZiU1zS2fU6mpOf/o0co ++GoYkieIxxibDCmt3BioLgmyzpGUsMNwh4pAIQUGkcxd4spC0KIWdDEvq/QJEEIh +ZlI/ojefaZkRseFrtl3X +=qnqR +-----END PGP PUBLIC KEY BLOCK----- + +pub BCF4173966770193 +sub C9F04E6E2DC4F7F8 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +mQENBFKneXIBCACtnX3ZQmPujf6ocvdnhsBheze71DSl34TfebyW2Qt+g9NhMxo4 +DaJy+iFNnsaMwLZRr6k/qf+ISE3A4opWAQlbk+Wb5s6DPPA2cHH6W4GdkxtuJzqt +tFn6YtkFhA15Aahr/vz31NBjUJlBmO4PwvkyxiF/MYP6TQ/AHar4xP1RxSYEPcCi +dIQczQ8nXzya4OqOyTfibeGz/eiHHuwTLHi3Rd2kihQnlRQdhE1rmm8uTyzFe1H+ +P7WW7kQgygW6yxQ3J+DXrG8kG+nbe57ZY1oyv3F/fOBxzn/kuoKHZ3JJEMJmTIrT +Lr1ngCZApgteAynRHk4t/SYZiyoyqZCuBcwHABEBAAG5AQ0EUqd5cgEIAL3PEOzt +IFUibB6FYEkObVhsDbCnHw9yO5MAvAWB60Ohf1J4T9QK63jZ5/CiqcDrw+uab9I+ +Ruz/SgGyFS0UXAkwfTICUdhT5kUzZmGyoj2ul+iFDP9uUdEgSgyXXakrxBbBPzNa +Mx8+GyIXRVFyRTH7+1gWgPQsdN1sGYOgZ+f8TMzAv6sxu0JVzjKXAAbXdiZTyJh9 +d6h1jS5Icilu8vRwn3Qc/ZzstBRk+eLbb69wS9YGoUlzYvDBz+5tiNwvHUriKc6z +VT4Edngcr0mKWTdvD+AsvZffU0XK+vxbgMuRWi/51qb+VgK2gFeAseV6a+D1059u +2+5Pn3h/Fv/vRAEAEQEAAYkBJQQYAQIADwUCUqd5cgIbDAUJEswDAAAKCRC89Bc5 +ZncBk0qgCACdP8kyUZVqfncA2RsQH38NFYhBz5MAEOIhCm7qwPC6XG08CUZfpPXd +UbxZGUliE6vhfj7rZbvUKKHlcHDPobdTJqGof2jt2MfsjJ18JY0exSWuVTmNmqAC +3gsiMfEGIqjQFWonfm0Od4AvduLuc0TPkyfr0gobakgYvhDjk7eQvgC1QfKlk6hH +A/OAFW774qaQsyrANrFevRa7CBQEob6V6N8aV1vNxgl8a6fJzPTNBOOmP0mq7xk6 +nykQuqYTVFyqfXN0p1bbTxHBoW/fvdizi7zMSsuBkWUtfG1wyN70uoEQzSQwqgWC +IaddzrPZPmaZ8CtzzyB7+JdSNItBB2Sp +=wK3Q +-----END PGP PUBLIC KEY BLOCK----- + +pub E2F38302C8075E3D +uid Gradle Inc. + +sub 1B80C80E07BC7190 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +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 +=Rl7p +-----END PGP PUBLIC KEY BLOCK----- + +pub E3822B59020A349D +uid Kotlin Libraries Release + +sub 9351716690874F25 +sub 3D5839A2262CBBFB +sub 60EB70DDAAC2EC21 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +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 +=p27i +-----END PGP PUBLIC KEY BLOCK----- + +pub 0729A0AFF8999A87 +uid Kotlin Release + +sub 3FF44D37464BBB7E +sub 6A0975F8B1127B83 +sub 6005789E24E5AD1E +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +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 +B/X6XT3iAD8QsXnzTc+ApKE= +=jsGm +-----END PGP PUBLIC KEY BLOCK----- + +pub 0D3B328562A119A7 +sub C45D01093DCFC371 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +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 +UGyrigQZu0gUujkogzGo8f7UOwHRBoA= +=7aNS +-----END PGP PUBLIC KEY BLOCK----- + +pub 0DA8A5EC02D11EAD +sub 71499A87DC1FF84B +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +mQGiBE3LMfMRBAD90h69D8yyPWaSoAyh2mOOOZ/XH0isuBpDZCWptemlMHgImqdQ +2sXLXYT1bJKmSaMw+yKjp8J/NYk69EbmSK1C2nypLQtWhUmXXd3XVYw6hrG/dGvi +gjkS5eq8L04f5CSuXO7r1eLTOch9iDl/ESaI5Nhq9A3mRQIhQalum+FjzwCgx0PK +hoC4MVPVGXzOQPc5sG4jzAUD/0OX9c/yKQqjHUs38HTCgrjseM40iPhp8NfbWenP +IwUMSWXE3lz0MMeKrGcEOcZOGWsjyepkLHXwj8DDOeGxhfh9bhFRJssdfzOCKBpf +6S70A3fanzqOAvddxCqF/zOwDaieDmWvVntVpmZO9d+pgR/sZN0JgSIm7qGDdNqG +Aq6eBACyywfwuVoY6lfNz70ZZqYjYuUkbKnKqpG0XmI+m5LYrUW7QuKJqaNdg+ZL +vVgX/TdkWVSIoSRS5+eYm3fRD++cg3ZgoR6ZY4WEa7SRSp2zoidtQijWOzp8WeHs +30rIaXBrb5wHR4GQ4FYsBGRuWkmIaferusllUmHCHFJI4ldvgbkCDQRNyzHzEAgA +1rD70DvCcy91ShQKP2snZ4cLJnFwKArulDUcxoBZ0AG0qMbaE8jiiJTHIwgVrqsK +aS1JENv6tVdUS8xHswu30zvd0obaj+4IGXlMVdc6052Y4SLAGNbGVw99Ah1OkQ7o +v92gmYAYfqppOtRt1tylz7Jf+F6er0umdVBZm8fJ+QjzTw36AwERj2bjVbc6ogM7 +OsTyru5oZGOJ+oJU+M9/mh/Gq3AyrcfU8c6bL2pacXwylME4lxy4fBB7BsMogPXX +iplZ2XRH7RmlZiAfLHv3StxVB1RrLXVcjdnqIO2guVYrK6mxH9WMG4LnOGvcnYTf +GtWexEmNA5l8IOSgsK+InwADBQgA037clDFi3XWaZBVXst7IfkU6bKq9vhmphS4f +uBx4wp7MBA62k0kGDmZWcbinZWnybypili9ihYSHlp3EYzCNTbUMWlbhc/ffYHuv +rZsIT2DxMPb2iCnjPu5HMGegTM8iTTotW4xYmJUsEDIvgQUz0/UNsPHTX5XU09So +cL3YOP5MxcEbgO0Fpjny3X76rc+ETAd9TmDJi7HOm24grKdOQXHQJr65j7nTc9M3 +zWnTxOP3fL9jcVnGTnLGRVoR7kedDpa5FsoFqtY8YMaFvNPVvI4+m+jozjNwTg2d +GG6nU2dEC0qgDEeKMSJwF1wgO3Fe6mXHvxratgNrqfdY/rtEGYhJBBgRAgAJBQJN +yzHzAhsMAAoJEA2opewC0R6tNKgAnigkHDCNu7Owm8x01E9+aL73JmDXAKCj7ROh +7Wu1iZQbjeJfypM6CQ+fdw== +=GCHG +-----END PGP PUBLIC KEY BLOCK----- + +pub 1646B01B86E50310 +uid Yarn Packaging + +sub 4F77679369475BAA +sub 23E7166788B63E1E +sub 02820C39D50AF136 +sub 46C2130DFD2497F5 +sub D101F7899D41F3C3 +sub E074D16EB6FF4DE3 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +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 +=KQN7 +-----END PGP PUBLIC KEY BLOCK----- + +pub 379CE192D401AB61 +uid Bintray (by JFrog) + +sub 0CFE993CDBE1D0A2 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +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 +E/XhP4QkRJrZI1F/ +=Jm2n +-----END PGP PUBLIC KEY BLOCK----- + +pub 3D52C2966A51F8F4 +uid Guillaume Sauthier (Bull) + +sub 888C89049BDEB64C +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +mQGiBEqVGHgRBACyrZHA3gvzM5WeoD6WwQSIPdTPuWw5EUonHytf4m7pgX8Xkj2G +enqbzW70POgJDUTUpvHDSCaAWiPY+ld1h0j+ghXgKD7IQjqFQTvnkdBT/qbOL7P1 +Umv5OLGSKeyx/BhxNiD0uF/huyP9b1HWC9dbIdVebhDcyBDkBAFtJMOxjwCgjnxw +sUI5vJ5FMPDjUdRPTVQxwlkD/1PGN4Ycdn8ncmZ1OG0T+vmL+C+yGMIdbWIizffC +Li05HMziwK33NHk5ABkeyIijm4Mq7JUlSSwt6gQXJTGlidHEcmKqSTg4AQhybPL5 +w40KcjNyAeQhIFgHAfMzy+Ikxzlt8fNunMTf6utWrPq2IU4uE4lJT4kSL1ic89vx +a4CLA/4g4MJVuzTegJXS5vhMnEI2Nhmc2MIAsEhPcIwJjhUN4rJJMcVxQO+Cmrfl +0rcosxA6wtjFDdPcuXYiAoJBJQrVYp6+w4GyHW45/WR6iGas/Rm0ZRQqnf9WnlpX +o5d7uEwzLfck4iVw+z298y6qk52coFKaKPH0bGVxguifMNdbwbQ3R3VpbGxhdW1l +IFNhdXRoaWVyIChCdWxsKSA8Z3VpbGxhdW1lLnNhdXRoaWVyQGJ1bGwubmV0PrkC +DQRKlRh4EAgAoSWTikKPMX99ZIqYgjAKlM82x6H5xxkisLGwI13m/nvRgOBy8gYz +fJCdxrEupnvNk4PK7twUka18oAoaKfKFBdIKQ0bSyUNV/RzkJDhkBCCU0T8DbN7X +e4rP35l1PvSKOwtGmIxovip+Spm/j38KKnSTWyZ0JIBTOYEoB8wzyna/fcibwIy/ +M/wj+lrurXE/6QnAxqJjAsL2MtuTurC5IMfRPQqUL0yMk+l+wUpuBaWhg70NhbsT +isdJy9TP+Nsu7tCJu3GumEuYKd3E46xIFedyA1etFHr9n7GkjQkrthlqaza2bUFO +v2xOpTJOvZYr15zOCpHslcIQiWT5zWCQcwADBgf/WBNDvc3jNmAyTP3nLRbA2JP+ +tVBVwdQkHktY4EjaLC7HjUA5TblQFTycXtZyKJ+LUwXM2W47h4HMXhSRq7E/wzMU +HGhUMBf21MwY//8mirKgRiU1rkArBKtr+bHTpsJ1UEoCaGzXxvTGxWZSLLrV1nBv +bBXXOOhFKvCymFcudN12i1MfBrubGNT905obseKThEc1umWzeRRWOlFEZkCONLR9 +PgSwCok7TT3OlkaGKRQB4cu54e/faOaLvFh2BgqSIoMgGHfVLJBTbssV6GL6T4Yo +U2Bq0wtLZ2k9tMgJHvPziWrk0rI4oesVWDmbEoRgAsYlTkdev0u98g3c5zAHLYhJ +BBgRAgAJBQJKlRh4AhsMAAoJED1SwpZqUfj05WEAnRNjXTAHWA3uXnDtK4XDHeCk +qzUIAJwO+CnWRTDq7K7Q63sS3rHl9X9ZgA== +=C0F4 +-----END PGP PUBLIC KEY BLOCK----- + +pub 476634A4694E716A +uid Simon Mittermueller (none) + +sub 4CE6E05D128BCFAD +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +mQENBFE0soEBCADAy/iIRT/lpb+vfDjWs/k1XQNU3mzXoMm1mmS/Z8VOc0jF7sVB +A5z2pC6u2OmEr1oJkhWefX+mU//7kXs6VvUCReE4uheGBlisg/ELEXkTm342TcwS +K+tR/NMk5h1DwxeGR2qc0+zhFcrITiYqCpdaggRVx92syhuYWrG2DtRI3eEz+fys +2WLhAd/AqBTR0ENDZssp5S6tEBcLvU/jAvKv33/+ydg+1Bsw37CqCOO0bR388+ow +uSXSARDJaesnBpUcXT9pbog3Wm9pSzJ2fX1FyFaf3rqIIYEqGk1rEND+AkT2CB08 +BykABpDx0mgR6/pAgQVywCatPuc7wneiZY+LABEBAAG0OlNpbW9uIE1pdHRlcm11 +ZWxsZXIgKG5vbmUpIDxzaW1vbi5taXR0ZXJtdWVsbGVyQGdtYWlsLmNvbT65AQ0E +UTSygQEIANTGYOD4HupAmugS69txMTAW4GvRQ0s8Li/r/QQQUWPpjo3IkJDA0+kP +Ce2JRamNJJ2plzndeGUpQIZn+HJSN8fGRjZG56HG6l0BJmQRFHD/6CzNOOKK6z+8 +e306DAwQPqDdDpUgpBmbPHZDhCs7tvrOhrUesfLQla15MM7n1DEtII9y+AsMGfwr +ZCd2PeigiRC+/NH/lYObLUPc+NL6GrC1ZHrpGoOR+9GQ6voVNY5EIxVlNgoVBxn3 +ufcFvvghmZe0WyudBHK9ByWeioBItHQW5n7eGpljcCUbTpsJmErhjH6KBKSuxPQs +yV4TkQMqcsymGW0jhdHXc1/tStF3L0kAEQEAAYkBHwQYAQIACQUCUTSygQIbDAAK +CRBHZjSkaU5xamOiB/9r943gZZy9FJv/NGPnNxCvI3ZusQfntgRfVyIFZLIUeaYD +ab6RqKTD8ZRgyfO2rmO73DiQ2bntzmSPHeAlpKAIhTXfty0g5UICLjr27KocLNt2 +34BKii6go+CDo2+lLUPUAe3cJPFqZrtJ3pYLFwS7O43wwhRaO9A7L1uyruoCqql6 +5B6CJcymMEsDnCizRVEAsE2lxenufxcM8JIaQlczXTsHYf23vnmLjlXm5HvEAfXE +0s7iHo9BMlSLxHWWEqeyrbwMdnn/gT8lHGw+SHO173THvhtGuKGkrglD2CA9G5d1 +ZWgAz3il0fLdBenLH6t1m0x3+P6h4sUJ04LlldPb +=Ctqs +-----END PGP PUBLIC KEY BLOCK----- + +pub 5F69AD087600B22C +uid Eric Bruneton + +sub 0440006D577EAE4B +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +mQENBE7JURcBCADO+9Dc4/JnB+wX+fq+Fr2zUGSPOT6/qjE5kXL4FEbJKsqDSAKG +VnbtRrsIUdmNIFQmz71bBDFhRBbrSrkz927k8eUPhYtxE2NmmWSuKgrjF4qviPQv +m/7SqGx378m/qw4EvpgGUB8EYif98LYdWp5vsU/zx0Ps9auqvetAzJaL9489oE0F +q8FVhve6BMfUUV7zOTCmJnf438YO68upjU0PVBdfFE6Qx4cgCeWbQGy2cooW5azN +iIenhuYU1qikmxMHq2xZzN4uSTWLGDpimPyz+Y1aTSYJ/bgn9gPStbI9sojWo9SS +5gvNK3XqJzMwxwFow86UcIE0vPD2T6ZlBAXRABEBAAG0IUVyaWMgQnJ1bmV0b24g +PGVicnVuZXRvbkBmcmVlLmZyPrkBDQROyVEXAQgA2uNV77VI+ARj1d97b5cY3/er +0Mcc8/Q9ctMY+5YpSYDOQF100QBdOQ8q3IJsfhZeF/iMFlHIUikuSgatb/Ih4lk1 ++irnERPuV2MNoAw3Fvn3/vwl/Jy0ZsQCBSXO54U42TcOXSwNLkYOJaomDiiuo61R +xj7jqijpnydwoFvEi84v6q/Uota3MijGMbzU9QyTX8J9OKMeCSUq0uVuk4ezebjv +/bwA/ax/qQRIrEHDOOB1LJ5JyLacK4+h5J8tMkEmWxEQv7MNokRLgbaePqv+tdf1 +gee4f2fSE3EXKFxjTO2wjLPXCrHSSI5gecsilQn7ZNxH9g2YUJipn9yj3ywMxQAR +AQABiQEfBBgBAgAJBQJOyVEXAhsMAAoJEF9prQh2ALIsrWwH/3s8uN8/gDnbcbTX ++7N/ZfQBXJZ+H9GGikmYRJE1xoOeEt9MOqZyGDTZfGM/qNKeDGfar7pcRQlMK/A4 +Nts5E6d1OX8fBkUBtYanyyjNLlT3yDjO6VaV0SCsgAzNjUZqc4lxS9atN6md5m6l +WLAdHghrXuV6LsiKOS+96htchoCvTvm7mcPI7w146yJRSyCC5+PybG3ult5Y6QAS +kwI3ZWB0u0PKUoqglwWngplu+0Fib2rxQvL32is4YrYaZ+XwoR6u/Bgv0ZvZiypk +17Uk17rDb/JfeLqDn7oW6Hlgi9KOLbRRIg7vwZVo2Ixco7aGxZp5c4zSfaPvn241 +v813ZcA= +=a3mq +-----END PGP PUBLIC KEY BLOCK----- + +pub 685C46769DBB5E5D +sub CA7AE93399B1ED99 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +mQENBFqHCi8BCACgRpCaVCiJ2MccCN01SbHYowmM255nSYKOnfItBmXYAMtc4rL9 +n1y1qFtc4LBbkIrPH8CO2zpEImUTZel4W93BQkluPOO3EX/hLCTCFfXrO89L1u4V +XL4siS8vZl3DVDdY7m9G4vcpiIsggGF683KNctN2KXZ0D3tu9C1X7eJk3GyDo6W7 +MJwiiCm10968VqFqIFn1rTkvtGtXGP61Vqy7kLTdiBrKbo1HkZDbryl6nvCmT++E +auJXEDYH9R+vsODy10a5in0n0EzQD4DYadL6cQTbwP2SvMbRRRQ7AnNtys6cNCCb +CIJ8iySLaHYi65w6FEbiBM2XQ2hzf8Dek9yDABEBAAG5AQ0EWocKLwEIAM2B7Zpx +xGVWndU4dnPKBa9/0Gh+1D+18/pYSsmIKvxbCppEMvPKsXMU1+JDH0gfLLChXWgr +QUCOsqRVb2lJvI59SwtHVT2SRyhznQxIi3YOwdtGz83WNMefmGr+0iY2CKud1d6Z +CRmchz/Qr2fy+bieftrBcdZ49asitRVlcdlWZNk7BZi+H6YgIukjl0aBlS5TtLAq +lL5R9nkfO9/9buWGt/OxJ+JK1p7tE/nR8oOf8bvUtkO1ypjuxshFF0Z17CT7q+gs +F6VGqHqFyHMnaXY5fk0e9DoMcgBrK30GFTYz70VSuMlL/N/V8/JgiKdtQkbHLMdS +CHrITAakRlyKPAUAEQEAAYkBPAQYAQgAJhYhBGgvdl7qcY0lC72y8WhcRnadu15d +BQJahwovAhsMBQkDwmcAAAoJEGhcRnadu15dqwgH/RMMpydz2+9D3ElW6BqMxQp0 +mshPnP0m6Eitgro38NRctkK9GIs1y+EQBOI18yPmNxGGaXCe1zMVIXgU2a8TvAAr +zKwMJjAtr39RKDNw0FacqFQr+XdTiGOq2Ao8h3gU+K8LJfBi2Wfb7IxlqSPZvCXK +Yt44TIofs363WmCaRc7uTANsv3Vd2mJ9JKTg7jfllVkchf944SwmbazRZ2W96X60 +v43AzPpHYsqh/cBOosryMV/EZO2vtR9MxZikDXrcXTED2Dg1El0BLsoF2mRc5vm3 +1lPhPcfhwqXmapjqQUIHYRWRRF/q7ve7NO5ATFVJVjOLOLhEzSiyMM5AJNhZWxs= +=SzQK +-----END PGP PUBLIC KEY BLOCK----- + +pub 7457CA33C3CE9E15 +uid Colin Decker + +sub ABE9F3126BB741C1 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +mQENBFIXyRQBCADe285y3Pu7KzoKyP6wqeNXtvvuwMatAmPm5x/i+S8MlryqzsYa +x6twUmXV1yKjjtGrO+9fHvTOWBfSSP+fP9KTaTQYSasoJq2Mw4cQDy1i0zrxNZUw +N4/BiyjQA25sdfaOolhO0sFlZuTZpYy5wG72KkA1ygNq0L+8aBKhEF6zDU61YzCC +AxjcgTftgTeeoqkJtYa06lNz3jmJDN+zUQignfRa3ymoGtFHTzoXR9maE8RWDty4 +y+DY+8ibdGgSgKPZ0byTCDyNojgU1YTlADa/1/NY1ShYg617O1xicLNo0JEJlf2U +Tu4Ymql36+xSkYSISU97Q6Utgq27XMuZvDUDABEBAAG0IkNvbGluIERlY2tlciA8 +Y2dkZWNrZXJAZ29vZ2xlLmNvbT65AQ0EUhfJFAEIAN9NHRd2bYP/3CDi+n1ilSCh +ld0NR3DUBgS/AdqQ7IoAUfj7skyI/WyaMdV4uy6vRh5YgNg2g01nd0LLZR8Gf2Ck ++D6F88CdZaTxlkcxHV/dXMZ8yBO+0D6yFRZEL7Imsv8Ig4QXOVwfuiXEPk/Ef5Dy +9SdAVhcoErTGGR6BOGVVvexGtBwefsjMaOG0khkRbWIQ32WxfUFuAv5XBQ0ckLrl +KvYWUYhOlXg27GtFKH2EBBF0Z5ZWu7gaBFwSV0oLp9EWcD+C+WEwUSfBdqfRJtyX +vgf4kZdwdQ5caM8P2/Sdncl2l/LU1At2Smc+plr6zhIhDlLhlrzKGa16oARSBdUA +EQEAAYkCPgQYAQoACQUCUhfJFAIbLgEpCRB0V8ozw86eFcBdIAQZAQoABgUCUhfJ +FAAKCRCr6fMSa7dBwURMCADHrqwRNHkbG1QsXJr9oUK6KVkLsPhcngIhxRLlqe89 +omg9G7eGNauzs2PKsB3txotCFc7ROVNv/TAuSDYzkPos8G46p3bGesjfJb24zc6G +MT4RGIJoh1oNG1IciafIIHjp2ZJHRmEDwmvZG24OHJ+mlHLjaedtqlWu+zwwhH2V +ZrI/U3gW/x4imbk9UyyzciEIxrAc+fc19xl5PkUVcSDVC0cAqGpeZz8+SxFaf3Rr +0aGnSbeuHRjNupmoxkQOAey1ztmdWiCPf5RFfmFD+fENh+/xqYiGorYpcIN7UAsM +kvD5UHc5ZG2tTD41jM99w9Lm/xHJ9ks8gNwZESwIzr6ABKIH/1ulsflI216qPz5o +7uUxlTm8NfTyATfCUuZEDMYGOjDQPqQa8hFebqjWWYBUq2SlaKD2xMeEuEXV+M5k +88Cx6T2nvaZWMsrD7uGj+tTsFaKBGxP5p2OSEWOTETKKv6Cx7vcMTQmrqSFo47bF +KlNSs+aVM48UnQeFtTDyOhwa5jvtqtst4eQHwHWQ99BK0TEymNx0vF0nPjWA76CR +rfopOwXKdxJgoKq4MrxE92ot5I82AZBPeiWVJ+6wECeK/GoBIXZ5jEUqrQmmzIbo +WA5G5PMJ8egzLJNRJjTWHjCWrUTnwNcqaD4/qZxIlW4Lt0uvGlx6pKOJQ05u+9X/ +BzoVWrw= +=fJQM +-----END PGP PUBLIC KEY BLOCK----- + +pub 7A8860944FAD5F62 +uid Sebastian Bazley (ASF CODE SIGNING KEY) + +sub C189C86B813330C4 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +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 +=9dUG +-----END PGP PUBLIC KEY BLOCK----- + +pub 7C535299C0F2C580 +uid Max Bowsher <_@maxb.eu> + +sub 69D3F751AF3B563D +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +mQGiBEIEyD4RBACb+Fl9PmkfIbribsJhuvvQVzfGN3bhOns+UtSszc/0ZA8BkJo4 +OxOQnXM9mZiQ/7EXdwNAmjSV2hpuzVJrQ5BcGF2KRQFZlwbJ/ebG13HunWcttNvM +RiMys41mJxtNU6bkE/jL+rZ5MUmizFV1MnqAPYSunDrH9iKmq2dPh9wDPwCg4sx5 +f+6P9riZgEuEcbFqgL2QrP0EAJTbv/4FdQcmuovLp6CWsQgqx4926tkqcdelYF/V +E4Uzysx8HeJ7lc9f1GOqGG8x+n1KcFgZd0lp22abZ6gq/h/VbvgbPnGLLqEzH3ki +He40ocr0Lk3m6vO1gsPCEQ/E/wQ9xYb60hOydC+O9cRfE4T7BMwDy+ZgMBEAxdlh +tZ3yA/9SdKEG0yb70txYk2fUitTegjHU/u2QmakwKh5pyfcjxMnnyXtR6qYAsyoz +u48hcsAccSqQgrfwOyPo8o/2zkSyOdHGCs42oOmTt+QOtnS5E69i8n7IE6xTE2rZ +e2BLjFliUrwW2ukMkVFe+sZlyPY/UQC+ikpR9o7xkOTkX1+CzLQXTWF4IEJvd3No +ZXIgPF9AbWF4Yi5ldT65Ag0EQgTITBAIAND+1QvCG7VB8g5mibYh18FaQmUZHdYP +8l+ugP/WRlAQGzM330RtXIrw27i9QkoVoEE6AFBMoey4KzLBsP5LJrGxYeJ9gxhO +WA3eY8vACldFyVCmu9yqXo+77rTdRbK89xypJ+hMJ1S+n5Opy2gYVaxTUX1Pxrhy +z3B+o7dnn/g2yG5gj0RD6PVtMhCI+gtv/CrZocgeSGp3llcodfzbE4APs8Xi8i5A +H+lak8acj/SE2Oqx2qE5jBHfphIlYVQux25opOOJd5LVENVcEFR+55/h85Gurekn +2HhbXnZlqWCvNZaH3Gcmj9HUAoauoZajXFx5yQKgpfNxe+VlX/TLyj8AAwcIAJoJ +6Z8y/Mo2pvBvKx5+EHe/nzk6m22AMyH6XLkxx8xZ/PaGE8kL1K+xZHCdnRfMG6Br +hjd/GTFChhQgA++Zg3cpmoZpcf0ZZuk48FXn1MwVeu87MUCFBH+JtjLx6C2+rNkb +Zxps+9Fx50FaZPAQgXKopO8tJfDoDhJerGwVGn/0ku7PoOo2Iy4PFJ5m4iCTPDs1 +7Ofz/vlQ7tfbuBaxFupOMsXB6nNxS1eyJCYNNPaS3xWukCp2NLIopLPAI0WeIf3p +dsVQ0rRoq7FtOvAg0o0rXq+YkJMHD7dmZg9woKk4SK+uz5AEIu0S5V50gu8ek3mK +3mqwV0Fo6LZbs60XGIuISQQYEQIACQUCQgTITAIbDAAKCRB8U1KZwPLFgGg7AJ9Z +5Lg3YDF9wMp0zFiAZnZTOhqc5wCcDBoJjFP9m/S6iV2GYv1PuR0BpnaISQQYEQIA +CQUCQgTITAIbDAAKCRB8U1KZwPLFgGg7AJ92A/Q+qOx2dy1wIijzl5bd3Ske9ACg +wpmXFJaWmTUEwEZUOjxBulJsLlk= +=lCsQ +-----END PGP PUBLIC KEY BLOCK----- diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml new file mode 100644 index 00000000..a3b8f56f --- /dev/null +++ b/gradle/verification-metadata.xml @@ -0,0 +1,165 @@ + + + + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index e708b1c023ec8b20f512888fe07c5bd3ff77bb8f..d64cd4917707c1f8861d8cb53dd15194d4248596 100644 GIT binary patch literal 43462 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 literal 59203 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

K7UpUK$>l@ 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 E2O(~oYXATM diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index aa991fce..a80b22ce 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,7 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip +networkTimeout=10000 +validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index 4f906e0c..1aa94a42 100755 --- a/gradlew +++ b/gradlew @@ -1,7 +1,7 @@ -#!/usr/bin/env sh +#!/bin/sh # -# Copyright 2015 the original author or authors. +# Copyright © 2015-2021 the original authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -17,67 +17,99 @@ # ############################################################################## -## -## Gradle start up script for UN*X -## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# ############################################################################## # Attempt to set APP_HOME + # Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" +MAX_FD=maximum warn () { echo "$*" -} +} >&2 die () { echo echo "$*" echo exit 1 -} +} >&2 # OS specific support (must be 'true' or 'false'). cygwin=false msys=false darwin=false nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; esac CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar @@ -87,9 +119,9 @@ CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" + JAVACMD=$JAVA_HOME/jre/sh/java else - JAVACMD="$JAVA_HOME/bin/java" + JAVACMD=$JAVA_HOME/bin/java fi if [ ! -x "$JAVACMD" ] ; then die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME @@ -98,88 +130,120 @@ Please set the JAVA_HOME variable in your environment to match the location of your Java installation." fi else - JAVACMD="java" - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + JAVACMD=java + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the location of your Java installation." + fi fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac fi -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. # For Cygwin or MSYS, switch paths to Windows format before running java -if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) fi - i=`expr $i + 1` + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg done - case $i in - 0) set -- ;; - 1) set -- "$args0" ;; - 2) set -- "$args0" "$args1" ;; - 3) set -- "$args0" "$args1" "$args2" ;; - 4) set -- "$args0" "$args1" "$args2" "$args3" ;; - 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac fi -# Escape application args -save () { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " -} -APP_ARGS=`save "$@"` -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat index 107acd32..7101f8e4 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -1,89 +1,92 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto execute - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto execute - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/settings-gradle.lockfile b/settings-gradle.lockfile new file mode 100644 index 00000000..709a43f7 --- /dev/null +++ b/settings-gradle.lockfile @@ -0,0 +1,4 @@ +# 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. +empty=incomingCatalogForLibs0 diff --git a/settings.gradle b/settings.gradle deleted file mode 100644 index 3708b453..00000000 --- a/settings.gradle +++ /dev/null @@ -1,14 +0,0 @@ -pluginManagement { - repositories { - maven { url 'https://maven.pkg.jetbrains.space/kotlin/p/kotlinx/maven' } - gradlePluginPortal() - } -} - -rootProject.name = 'Kotlin-Immutable-Collections' // TODO: Make readable name when it's not used in js module names - -include ':core' -project(":core").name='kotlinx-collections-immutable' - -include ':benchmarks' -include ':benchmarks:runner' \ No newline at end of file diff --git a/settings.gradle.kts b/settings.gradle.kts new file mode 100644 index 00000000..9c72e04a --- /dev/null +++ b/settings.gradle.kts @@ -0,0 +1,14 @@ +pluginManagement { + repositories { + maven { url = uri("https://maven.pkg.jetbrains.space/kotlin/p/kotlinx/maven") } + gradlePluginPortal() + } +} + +rootProject.name = "Kotlin-Immutable-Collections" // TODO: Make readable name when it's not used in js module names + +include(":core") +project(":core").name = "kotlinx-collections-immutable" + +include(":benchmarks") +include(":benchmarks:runner")