Closed TheChilliPL closed 5 months ago
@TheChilliPL thanks for reporting the issue!
The problem with the class cast exception is tracked by https://youtrack.jetbrains.com/issue/KT-63251. The workaround is to apply KGP to the root project.
However, BCV 0.15.0-Beta.1 may still not work for your projects (I checked only the pilock) due to https://github.com/Kotlin/binary-compatibility-validator/issues/199 which will be fixed in Beta.2
Closing the issue for now: the root cause should be addressed by https://youtrack.jetbrains.com/issue/KT-63251
Simply adding this validator to my plugins:
causes Gradle to immediately stop building with the following exception:
Show full stack trace
``` at org.gradle.api.internal.tasks.DefaultTaskCollection.createWrongTypeException(DefaultTaskCollection.java:107) at org.gradle.api.internal.DefaultNamedDomainObjectCollection.named(DefaultNamedDomainObjectCollection.java:379) at org.gradle.api.internal.tasks.DefaultTaskCollection.named(DefaultTaskCollection.java:122) at org.jetbrains.kotlin.gradle.plugin.mpp.apple.XcodeVersionTask$Companion.locateOrRegister(XcodeVersionTask.kt:71) at org.jetbrains.kotlin.gradle.plugin.KotlinNativeTargetConfigurator.createLinkTask(KotlinNativeTargetConfigurator.kt:66) at org.jetbrains.kotlin.gradle.plugin.KotlinNativeTargetConfigurator.access$createLinkTask(KotlinNativeTargetConfigurator.kt:55) at org.jetbrains.kotlin.gradle.plugin.KotlinNativeTargetConfigurator$configureBinaries$1.execute(KotlinNativeTargetConfigurator.kt:230) at org.jetbrains.kotlin.gradle.plugin.KotlinNativeTargetConfigurator$configureBinaries$1.execute(KotlinNativeTargetConfigurator.kt:229) at org.gradle.configuration.internal.DefaultUserCodeApplicationContext$CurrentApplication$1.execute(DefaultUserCodeApplicationContext.java:123) at org.gradle.api.internal.DefaultCollectionCallbackActionDecorator$BuildOperationEmittingAction$1.run(DefaultCollectionCallbackActionDecorator.java:110) at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29) at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59) at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:47) at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:73) at org.gradle.api.internal.DefaultCollectionCallbackActionDecorator$BuildOperationEmittingAction.execute(DefaultCollectionCallbackActionDecorator.java:107) at org.gradle.internal.ImmutableActionSet$SetWithFewActions.execute(ImmutableActionSet.java:285) at org.gradle.api.internal.DefaultDomainObjectCollection.doAdd(DefaultDomainObjectCollection.java:262) at org.gradle.api.internal.DefaultDomainObjectCollection.add(DefaultDomainObjectCollection.java:251) at org.jetbrains.kotlin.gradle.dsl.KotlinNativeBinaryContainer.add(KotlinNativeBinaryContainer.kt) at org.jetbrains.kotlin.gradle.dsl.KotlinNativeBinaryContainer.createBinaries(KotlinNativeBinaryContainer.kt:137) at org.jetbrains.kotlin.gradle.dsl.AbstractKotlinNativeBinaryContainer.test(AbstractKotlinNativeBinaryContainer.kt:304) at org.jetbrains.kotlin.gradle.plugin.KotlinNativeTargetConfigurator.configureBinaries(KotlinNativeTargetConfigurator.kt:269) at org.jetbrains.kotlin.gradle.plugin.KotlinNativeTargetConfigurator.configurePlatformSpecificModel(KotlinNativeTargetConfigurator.kt:179) at org.jetbrains.kotlin.gradle.plugin.KotlinNativeTargetConfigurator.configurePlatformSpecificModel(KotlinNativeTargetConfigurator.kt:55) at org.jetbrains.kotlin.gradle.plugin.KotlinTargetConfigurator$DefaultImpls.configureTarget(KotlinTargetConfigurator.kt:54) at org.jetbrains.kotlin.gradle.plugin.AbstractKotlinTargetConfigurator.configureTarget(KotlinTargetConfigurator.kt:67) at org.jetbrains.kotlin.gradle.plugin.mpp.AbstractKotlinNativeTargetPreset.createTargetInternal(KotlinNativeTargetPreset.kt:58) at org.jetbrains.kotlin.gradle.plugin.mpp.AbstractKotlinNativeTargetPreset.createTargetInternal(KotlinNativeTargetPreset.kt:22) at org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtensionKt.configureOrCreate(KotlinMultiplatformExtension.kt:349) at org.jetbrains.kotlin.gradle.dsl.KotlinTargetContainerWithPresetFunctions$DefaultImpls.linuxArm64(KotlinTargetContainerWithPresetFunctions.kt:491) at org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension.linuxArm64(KotlinMultiplatformExtension.kt:30) at Build_gradle$1.execute(build.gradle.kts:10) at Build_gradle$1.execute(build.gradle.kts:7) at org.gradle.internal.extensibility.ExtensionsStorage$ExtensionHolder.configure(ExtensionsStorage.java:173) at org.gradle.internal.extensibility.ExtensionsStorage.configureExtension(ExtensionsStorage.java:64) at org.gradle.internal.extensibility.DefaultConvention.configure(DefaultConvention.java:210) at org.gradle.kotlin.dsl.Accessors8rihyt52ywg47pk3ez2ijmcwzKt.kotlin(Unknown Source) at Build_gradle.It's in a multimodule project, each is Kotlin multiplatform with virtually the same
build.gradle.kts
.Show
```kt plugins { kotlin("multiplatform") version "1.9.23" id("org.jetbrains.kotlinx.binary-compatibility-validator") version "0.15.0-Beta.1" // the only change } kotlin { val targetAttr = Attribute.of("target", String::class.java) linuxArm64("rpiNative") { binaries { // Library sharedLib() } attributes.attribute(targetAttr, "rpi") } jvm("rpiJvm") { attributes.attribute(targetAttr, "rpi") } jvm("desktopJvm") { attributes.attribute(targetAttr, "desktop") } sourceSets { val commonMain by getting { dependencies { // ... (nothing here, this comment is literally there in the code for the future) } } val rpiCommonMain by creating { dependsOn(commonMain) } val rpiNativeMain by getting { dependsOn(rpiCommonMain) } val rpiJvmMain by getting { dependsOn(rpiCommonMain) } val desktopJvmMain by getting { dependsOn(commonMain) } } } ```build.gradle.kts
file