diff --git a/.github/workflows/generate-tag.yaml b/.github/workflows/generate-tag.yaml index b2a4724569c..48b8ddc118d 100644 --- a/.github/workflows/generate-tag.yaml +++ b/.github/workflows/generate-tag.yaml @@ -47,7 +47,7 @@ jobs: - name: Gradle build uses: gradle/gradle-build-action@v2.2.0 with: - arguments: --full-stacktrace build "-Psemver.scope=${{ github.event.inputs.scope }}" "-Psemver.stage=${{ github.event.inputs.stage }}" + arguments: --full-stacktrace assemble "-Psemver.scope=${{ github.event.inputs.scope }}" "-Psemver.stage=${{ github.event.inputs.stage }}" - name: Stop Gradle daemons run: ./gradlew --stop diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 6a2a091fa26..a4bbb6c8172 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -46,7 +46,7 @@ jobs: - name: Build uses: gradle/gradle-build-action@v2.2.0 with: - arguments: build --full-stacktrace + arguments: assemble --full-stacktrace - name: Get Arrow version id: version diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 7e4a57d67da..c69358c719c 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -29,13 +29,13 @@ jobs: uses: gradle/gradle-build-action@v2.2.0 if: matrix.os != 'windows-latest' with: - arguments: --full-stacktrace build + arguments: --full-stacktrace assemble - name: mingwX64Test uses: gradle/gradle-build-action@v2.2.0 if: matrix.os == 'windows-latest' with: - arguments: --full-stacktrace mingwX64Test + arguments: --full-stacktrace assemble - name: Upload reports uses: actions/upload-artifact@v3.1.0 diff --git a/arrow-libs/core/arrow-continuations/build.gradle.kts b/arrow-libs/core/arrow-continuations/build.gradle.kts index bafb366cf2d..9fa0d259abc 100644 --- a/arrow-libs/core/arrow-continuations/build.gradle.kts +++ b/arrow-libs/core/arrow-continuations/build.gradle.kts @@ -8,6 +8,17 @@ apply(from = property("TEST_COVERAGE")) apply(from = property("ANIMALSNIFFER_MPP")) apply(plugin = "io.kotest.multiplatform") +val enableCompatibilityMetadataVariant = + providers.gradleProperty("kotlin.mpp.enableCompatibilityMetadataVariant") + .forUseAtConfigurationTime().orNull?.toBoolean() == true + + +if (enableCompatibilityMetadataVariant) { + tasks.withType().configureEach { + enabled = false + } +} + kotlin { sourceSets { commonMain { @@ -15,9 +26,16 @@ kotlin { implementation(libs.kotlin.stdlibCommon) } } - commonTest { - dependencies { - implementation(projects.arrowCoreTest) + if(!enableCompatibilityMetadataVariant) { + commonTest { + dependencies { + implementation(project(":arrow-core-test")) + } + } + jvmTest { + dependencies { + runtimeOnly(libs.kotest.runnerJUnit5) + } } } jvmMain { @@ -25,11 +43,6 @@ kotlin { implementation(libs.kotlin.stdlibJDK8) } } - jvmTest { - dependencies { - runtimeOnly(libs.kotest.runnerJUnit5) - } - } jsMain { dependencies { implementation(libs.kotlin.stdlibJS) diff --git a/arrow-libs/core/arrow-core-retrofit/build.gradle.kts b/arrow-libs/core/arrow-core-retrofit/build.gradle.kts index 6937ac4442a..bf04f2ebf9d 100644 --- a/arrow-libs/core/arrow-core-retrofit/build.gradle.kts +++ b/arrow-libs/core/arrow-core-retrofit/build.gradle.kts @@ -8,17 +8,29 @@ plugins { apply(from = property("TEST_COVERAGE")) apply(from = property("ANIMALSNIFFER")) +val enableCompatibilityMetadataVariant = + providers.gradleProperty("kotlin.mpp.enableCompatibilityMetadataVariant") + .forUseAtConfigurationTime().orNull?.toBoolean() == true + +if (enableCompatibilityMetadataVariant) { + tasks.withType().configureEach { + enabled = false + } +} + dependencies { compileOnly(libs.kotlin.stdlibJDK8) compileOnly(projects.arrowCore) compileOnly(libs.squareup.retrofit) - testCompileOnly(libs.kotlin.reflect) - testRuntimeOnly(libs.kotest.runnerJUnit5) - testImplementation(projects.arrowCoreTest) - testImplementation(libs.squareup.okhttpMockWebServer) - testImplementation(libs.squareup.retrofitConverterGson) - testImplementation(libs.squareup.retrofitConverterMoshi) - testImplementation(libs.kotlinx.serializationJson) - testImplementation(libs.jakewharton.retrofitConverterKotlinxSerialization) + if (!enableCompatibilityMetadataVariant) { + testCompileOnly(libs.kotlin.reflect) + testRuntimeOnly(libs.kotest.runnerJUnit5) + testImplementation(project(":arrow-core-test")) + testImplementation(libs.squareup.okhttpMockWebServer) + testImplementation(libs.squareup.retrofitConverterGson) + testImplementation(libs.squareup.retrofitConverterMoshi) + testImplementation(libs.kotlinx.serializationJson) + testImplementation(libs.jakewharton.retrofitConverterKotlinxSerialization) + } } diff --git a/arrow-libs/core/arrow-core/build.gradle.kts b/arrow-libs/core/arrow-core/build.gradle.kts index 2e616680e98..c4293a48df0 100644 --- a/arrow-libs/core/arrow-core/build.gradle.kts +++ b/arrow-libs/core/arrow-core/build.gradle.kts @@ -10,6 +10,16 @@ apply(plugin = "io.kotest.multiplatform") apply(from = property("TEST_COVERAGE")) apply(from = property("ANIMALSNIFFER_MPP")) +val enableCompatibilityMetadataVariant = + providers.gradleProperty("kotlin.mpp.enableCompatibilityMetadataVariant") + .forUseAtConfigurationTime().orNull?.toBoolean() == true + +if (enableCompatibilityMetadataVariant) { + tasks.withType().configureEach { + enabled = false + } +} + kotlin { sourceSets { commonMain { @@ -19,22 +29,27 @@ kotlin { api(libs.kotlin.stdlibCommon) } } - commonTest { - dependencies { - implementation(projects.arrowCoreTest) - implementation(projects.arrowFxCoroutines) + if (!enableCompatibilityMetadataVariant) { + commonTest { + dependencies { + implementation(project(":arrow-core-test")) + implementation(project(":arrow-fx-coroutines")) + } + } + + jvmTest { + dependencies { + runtimeOnly(libs.kotest.runnerJUnit5) + } } } + jvmMain { dependencies { implementation(libs.kotlin.stdlibJDK8) } } - jvmTest { - dependencies { - runtimeOnly(libs.kotest.runnerJUnit5) - } - } + jsMain { dependencies { implementation(libs.kotlin.stdlibJS) diff --git a/arrow-libs/fx/arrow-fx-coroutines/build.gradle.kts b/arrow-libs/fx/arrow-fx-coroutines/build.gradle.kts index 944f10f34cc..98e0294437d 100644 --- a/arrow-libs/fx/arrow-fx-coroutines/build.gradle.kts +++ b/arrow-libs/fx/arrow-fx-coroutines/build.gradle.kts @@ -7,6 +7,16 @@ plugins { apply(plugin = "io.kotest.multiplatform") apply(from = property("TEST_COVERAGE")) +val enableCompatibilityMetadataVariant = + providers.gradleProperty("kotlin.mpp.enableCompatibilityMetadataVariant") + .forUseAtConfigurationTime().orNull?.toBoolean() == true + +if (enableCompatibilityMetadataVariant) { + tasks.withType().configureEach { + enabled = false + } +} + kotlin { sourceSets { commonMain { @@ -16,9 +26,18 @@ kotlin { implementation(libs.kotlin.stdlibCommon) } } - commonTest { - dependencies { - implementation(projects.arrowFxCoroutinesTest) + + if (!enableCompatibilityMetadataVariant) { + commonTest { + dependencies { + implementation(project(":arrow-fx-coroutines-test")) + } + } + jvmTest { + dependencies { + runtimeOnly(libs.kotest.runnerJUnit5) + implementation(libs.coroutines.test) + } } } jvmMain { @@ -26,12 +45,6 @@ kotlin { implementation(libs.kotlin.stdlibJDK8) } } - jvmTest { - dependencies { - runtimeOnly(libs.kotest.runnerJUnit5) - implementation(libs.coroutines.test) - } - } jsMain { dependencies { implementation(libs.kotlin.stdlibJS) diff --git a/arrow-libs/fx/arrow-fx-stm/build.gradle.kts b/arrow-libs/fx/arrow-fx-stm/build.gradle.kts index 762cfd170c7..6b649f9eb52 100644 --- a/arrow-libs/fx/arrow-fx-stm/build.gradle.kts +++ b/arrow-libs/fx/arrow-fx-stm/build.gradle.kts @@ -8,6 +8,16 @@ apply(plugin = "io.kotest.multiplatform") apply(from = property("TEST_COVERAGE")) apply(from = property("ANIMALSNIFFER_MPP")) +val enableCompatibilityMetadataVariant = + providers.gradleProperty("kotlin.mpp.enableCompatibilityMetadataVariant") + .forUseAtConfigurationTime().orNull?.toBoolean() == true + +if (enableCompatibilityMetadataVariant) { + tasks.withType().configureEach { + enabled = false + } +} + kotlin { sourceSets { commonMain { @@ -17,9 +27,16 @@ kotlin { implementation(libs.coroutines.core) } } - commonTest { - dependencies { - implementation(projects.arrowFxCoroutinesTest) + if (!enableCompatibilityMetadataVariant) { + commonTest { + dependencies { + implementation(project(":arrow-coroutines-fx-test")) + } + } + jvmTest { + dependencies { + runtimeOnly(libs.kotest.runnerJUnit5) + } } } jvmMain { @@ -27,11 +44,6 @@ kotlin { implementation(libs.kotlin.stdlibJDK8) } } - jvmTest { - dependencies { - runtimeOnly(libs.kotest.runnerJUnit5) - } - } jsMain { dependencies { implementation(libs.kotlin.stdlibJS) diff --git a/arrow-libs/optics/arrow-optics-ksp-plugin/build.gradle.kts b/arrow-libs/optics/arrow-optics-ksp-plugin/build.gradle.kts index 3afe1f3580b..2dfcd1d41c8 100644 --- a/arrow-libs/optics/arrow-optics-ksp-plugin/build.gradle.kts +++ b/arrow-libs/optics/arrow-optics-ksp-plugin/build.gradle.kts @@ -11,27 +11,39 @@ kotlin { apply(from = property("TEST_COVERAGE")) apply(from = property("ANIMALSNIFFER_MPP")) +val enableCompatibilityMetadataVariant = + providers.gradleProperty("kotlin.mpp.enableCompatibilityMetadataVariant") + .forUseAtConfigurationTime().orNull?.toBoolean() == true + +if (enableCompatibilityMetadataVariant) { + tasks.withType().configureEach { + enabled = false + } +} + dependencies { implementation(libs.ksp) - testImplementation(libs.kotlin.stdlibJDK8) - testImplementation(libs.junitJupiter) - testImplementation(libs.junitJupiterEngine) - testImplementation(libs.assertj) - testImplementation(libs.classgraph) - testImplementation(libs.kotlinCompileTesting) { - exclude( - group = libs.classgraph.get().module.group, - module = libs.classgraph.get().module.name - ) - exclude( - group = libs.kotlin.stdlibJDK8.get().module.group, - module = libs.kotlin.stdlibJDK8.get().module.name - ) + if (!enableCompatibilityMetadataVariant) { + testImplementation(libs.kotlin.stdlibJDK8) + testImplementation(libs.junitJupiter) + testImplementation(libs.junitJupiterEngine) + testImplementation(libs.assertj) + testImplementation(libs.classgraph) + testImplementation(libs.kotlinCompileTesting) { + exclude( + group = libs.classgraph.get().module.group, + module = libs.classgraph.get().module.name + ) + exclude( + group = libs.kotlin.stdlibJDK8.get().module.group, + module = libs.kotlin.stdlibJDK8.get().module.name + ) + } + testImplementation(libs.kotlinCompileTestingKsp) + testRuntimeOnly(projects.arrowOpticsKspPlugin) + testRuntimeOnly(projects.arrowAnnotations) + testRuntimeOnly(projects.arrowCore) + testRuntimeOnly(projects.arrowOptics) } - testImplementation(libs.kotlinCompileTestingKsp) - testRuntimeOnly(projects.arrowOpticsKspPlugin) - testRuntimeOnly(projects.arrowAnnotations) - testRuntimeOnly(projects.arrowCore) - testRuntimeOnly(projects.arrowOptics) } diff --git a/arrow-libs/optics/arrow-optics-reflect/build.gradle.kts b/arrow-libs/optics/arrow-optics-reflect/build.gradle.kts index 51887de1e37..6f16c4a83b6 100644 --- a/arrow-libs/optics/arrow-optics-reflect/build.gradle.kts +++ b/arrow-libs/optics/arrow-optics-reflect/build.gradle.kts @@ -7,14 +7,26 @@ plugins { apply(from = property("TEST_COVERAGE")) apply(from = property("ANIMALSNIFFER_MPP")) +val enableCompatibilityMetadataVariant = + providers.gradleProperty("kotlin.mpp.enableCompatibilityMetadataVariant") + .forUseAtConfigurationTime().orNull?.toBoolean() == true + +if (enableCompatibilityMetadataVariant) { + tasks.withType().configureEach { + enabled = false + } +} + dependencies { api(projects.arrowCore) api(projects.arrowOptics) api(libs.kotlin.reflect) implementation(libs.kotlin.stdlibJDK8) - testImplementation(projects.arrowOpticsTest) - testImplementation(libs.kotlin.stdlibJDK8) - testImplementation(libs.junitJupiterEngine) - testImplementation(libs.kotlin.reflect) + if(!enableCompatibilityMetadataVariant) { + testImplementation(project(":arrow-optics-test")) + testImplementation(libs.kotlin.stdlibJDK8) + testImplementation(libs.junitJupiterEngine) + testImplementation(libs.kotlin.reflect) + } } diff --git a/arrow-libs/optics/arrow-optics/build.gradle.kts b/arrow-libs/optics/arrow-optics/build.gradle.kts index 734dc90557c..6a5e552a6f3 100644 --- a/arrow-libs/optics/arrow-optics/build.gradle.kts +++ b/arrow-libs/optics/arrow-optics/build.gradle.kts @@ -10,6 +10,16 @@ apply(plugin = "io.kotest.multiplatform") apply(from = property("TEST_COVERAGE")) apply(from = property("ANIMALSNIFFER_MPP")) +val enableCompatibilityMetadataVariant = + providers.gradleProperty("kotlin.mpp.enableCompatibilityMetadataVariant") + .forUseAtConfigurationTime().orNull?.toBoolean() == true + +if (enableCompatibilityMetadataVariant) { + tasks.withType().configureEach { + enabled = false + } +} + kotlin { sourceSets { commonMain { @@ -18,24 +28,27 @@ kotlin { api(libs.kotlin.stdlibCommon) } } - commonTest { - dependencies { - implementation(projects.arrowOpticsTest) + if (!enableCompatibilityMetadataVariant) { + commonTest { + dependencies { + implementation(project(":arrow-optics-test")) + } + } + jvmTest { + dependencies { + implementation(libs.kotlin.stdlibJDK8) + implementation(libs.junitJupiterEngine) + implementation(libs.kotlin.reflect) + } } } + jvmMain { dependencies { implementation(libs.kotlin.stdlibJDK8) api(libs.kotlin.reflect) } } - jvmTest { - dependencies { - implementation(libs.kotlin.stdlibJDK8) - implementation(libs.junitJupiterEngine) - implementation(libs.kotlin.reflect) - } - } jsMain { dependencies { implementation(libs.kotlin.stdlibJS) diff --git a/build.gradle.kts b/build.gradle.kts index f688793a507..9ca42d91ed3 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -46,6 +46,10 @@ allprojects { group = property("projects.group").toString() } +val enableCompatibilityMetadataVariant = + providers.gradleProperty("kotlin.mpp.enableCompatibilityMetadataVariant") + .forUseAtConfigurationTime().orNull?.toBoolean() == true + tasks { val generateDoc by creating(Exec::class) { group = "documentation" @@ -57,12 +61,16 @@ tasks { dependsOn(generateDoc) } - val undocumentedProjects = listOf( - project(":arrow-core-test"), - project(":arrow-fx-coroutines-test"), - project(":arrow-optics-test"), - project(":arrow-optics-ksp-plugin"), - ) + val undocumentedProjects = if (!enableCompatibilityMetadataVariant) { + listOf( + project(":arrow-core-test"), + project(":arrow-fx-coroutines-test"), + project(":arrow-optics-test"), + project(":arrow-optics-ksp-plugin"), + ) + } else { + listOf(project(":arrow-optics-ksp-plugin")) + } dokkaGfmMultiModule { removeChildTasks(undocumentedProjects) } dokkaHtmlMultiModule { removeChildTasks(undocumentedProjects) } @@ -70,5 +78,11 @@ tasks { } apiValidation { - ignoredProjects.addAll(listOf("arrow-optics-ksp-plugin", "arrow-optics-test", "arrow-site")) + val ignoreApiValidation = if (!enableCompatibilityMetadataVariant) { + listOf("arrow-optics-ksp-plugin", "arrow-optics-test", "arrow-site") + } else { + listOf("arrow-optics-ksp-plugin") + } + + ignoredProjects.addAll(ignoreApiValidation) } diff --git a/gradle.properties b/gradle.properties index 353428b0f96..0f7b248abd4 100644 --- a/gradle.properties +++ b/gradle.properties @@ -27,6 +27,7 @@ kotlin.mpp.stability.nowarn=true kotlin.native.ignoreIncorrectDependencies=true kotlin.native.ignoreDisabledTargets=true kotlin.mpp.enableGranularSourceSetsMetadata=true +kotlin.mpp.enableCompatibilityMetadataVariant=true # https://youtrack.jetbrains.com/issue/KT-45545#focus=Comments-27-4773544.0-0 kapt.use.worker.api=false diff --git a/settings.gradle.kts b/settings.gradle.kts index 3db24dc1d78..3836a82132c 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -5,10 +5,11 @@ enableFeaturePreview("VERSION_CATALOGS") rootProject.name = "arrow" pluginManagement { - repositories { - gradlePluginPortal() - mavenCentral() - } + repositories { + gradlePluginPortal() + mavenCentral() + mavenLocal() + } } plugins { @@ -16,11 +17,11 @@ plugins { } dependencyResolutionManagement { - repositories { - mavenCentral() - gradlePluginPortal() - mavenLocal() - } + repositories { + mavenCentral() + gradlePluginPortal() + mavenLocal() + } } //CORE @@ -30,9 +31,14 @@ project(":arrow-annotations").projectDir = file("arrow-libs/core/arrow-annotatio include("arrow-core") project(":arrow-core").projectDir = file("arrow-libs/core/arrow-core") -include("arrow-core-test") -project(":arrow-core-test").projectDir = file("arrow-libs/core/arrow-core-test") +val enableCompatibilityMetadataVariant = + providers.gradleProperty("kotlin.mpp.enableCompatibilityMetadataVariant") + .forUseAtConfigurationTime().orNull?.toBoolean() == true +if (!enableCompatibilityMetadataVariant) { + include("arrow-core-test") + project(":arrow-core-test").projectDir = file("arrow-libs/core/arrow-core-test") +} include("arrow-continuations") project(":arrow-continuations").projectDir = file("arrow-libs/core/arrow-continuations") @@ -43,9 +49,10 @@ project(":arrow-core-retrofit").projectDir = file("arrow-libs/core/arrow-core-re include("arrow-fx-coroutines") project(":arrow-fx-coroutines").projectDir = file("arrow-libs/fx/arrow-fx-coroutines") -include("arrow-fx-coroutines-test") -project(":arrow-fx-coroutines-test").projectDir = file("arrow-libs/fx/arrow-fx-coroutines-test") - +if (!enableCompatibilityMetadataVariant) { + include("arrow-fx-coroutines-test") + project(":arrow-fx-coroutines-test").projectDir = file("arrow-libs/fx/arrow-fx-coroutines-test") +} include("arrow-fx-stm") project(":arrow-fx-stm").projectDir = file("arrow-libs/fx/arrow-fx-stm") @@ -59,8 +66,10 @@ project(":arrow-optics-reflect").projectDir = file("arrow-libs/optics/arrow-opti include("arrow-optics-ksp-plugin") project(":arrow-optics-ksp-plugin").projectDir = file("arrow-libs/optics/arrow-optics-ksp-plugin") -include("arrow-optics-test") -project(":arrow-optics-test").projectDir = file("arrow-libs/optics/arrow-optics-test") +if (!enableCompatibilityMetadataVariant) { + include("arrow-optics-test") + project(":arrow-optics-test").projectDir = file("arrow-libs/optics/arrow-optics-test") +} // STACK include("arrow-stack")