Rebuild module on plugin classpaths change

Add another one reason for rebuild: if pluginClasspaths was changed or even its jar content, module will be marked for rebuild

Merge-request: KT-MR-5839
Merged-by: Aleksei Cherepanov <aleksei.cherepanov@jetbrains.com>
This commit is contained in:
Aleksei.Cherepanov
2022-04-18 11:06:15 +00:00
committed by Space
parent 281e381223
commit e0029b14ee
8 changed files with 133 additions and 17 deletions
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.build
import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments
import org.jetbrains.kotlin.config.KotlinCompilerVersion
import org.jetbrains.kotlin.config.LanguageVersion
import org.jetbrains.kotlin.config.PluginClasspaths
import org.jetbrains.kotlin.metadata.deserialization.BinaryVersion
import kotlin.reflect.KClass
@@ -23,6 +24,7 @@ interface BuildMetaInfo {
val ownVersion: Int
val coroutinesVersion: Int
val multiplatformVersion: Int
val pluginClasspaths: String
}
abstract class BuildMetaInfoFactory<T : BuildMetaInfo>(private val metaInfoClass: KClass<T>) {
@@ -35,7 +37,8 @@ abstract class BuildMetaInfoFactory<T : BuildMetaInfo>(private val metaInfoClass
ownVersion: Int,
coroutinesVersion: Int,
multiplatformVersion: Int,
metadataVersionArray: IntArray?
metadataVersionArray: IntArray?,
pluginClasspaths: String
): T
fun create(args: CommonCompilerArguments): T {
@@ -50,7 +53,8 @@ abstract class BuildMetaInfoFactory<T : BuildMetaInfo>(private val metaInfoClass
ownVersion = OWN_VERSION,
coroutinesVersion = COROUTINES_VERSION,
multiplatformVersion = MULTIPLATFORM_VERSION,
metadataVersionArray = args.metadataVersion?.let { BinaryVersion.parseVersionArray(it) }
metadataVersionArray = args.metadataVersion?.let { BinaryVersion.parseVersionArray(it) },
pluginClasspaths = PluginClasspaths(args.pluginClasspaths).serialize()
)
}
@@ -21,7 +21,8 @@ data class CommonBuildMetaInfo(
override val metadataVersionPatch: Int,
override val ownVersion: Int,
override val coroutinesVersion: Int,
override val multiplatformVersion: Int
override val multiplatformVersion: Int,
override val pluginClasspaths: String
) : BuildMetaInfo {
companion object : BuildMetaInfoFactory<CommonBuildMetaInfo>(CommonBuildMetaInfo::class) {
override fun create(
@@ -33,7 +34,8 @@ data class CommonBuildMetaInfo(
ownVersion: Int,
coroutinesVersion: Int,
multiplatformVersion: Int,
metadataVersionArray: IntArray?
metadataVersionArray: IntArray?,
pluginClasspaths: String
): CommonBuildMetaInfo {
val metadataVersion = metadataVersionArray?.let(::JvmMetadataVersion) ?: JvmMetadataVersion.INSTANCE
return CommonBuildMetaInfo(
@@ -47,7 +49,8 @@ data class CommonBuildMetaInfo(
metadataVersionPatch = metadataVersion.patch,
ownVersion = ownVersion,
coroutinesVersion = coroutinesVersion,
multiplatformVersion = multiplatformVersion
multiplatformVersion = multiplatformVersion,
pluginClasspaths = pluginClasspaths
)
}
}
@@ -21,7 +21,8 @@ data class JsBuildMetaInfo(
override val metadataVersionPatch: Int,
override val ownVersion: Int,
override val coroutinesVersion: Int,
override val multiplatformVersion: Int
override val multiplatformVersion: Int,
override val pluginClasspaths: String
) : BuildMetaInfo {
companion object : BuildMetaInfoFactory<JsBuildMetaInfo>(JsBuildMetaInfo::class) {
override fun create(
@@ -33,7 +34,8 @@ data class JsBuildMetaInfo(
ownVersion: Int,
coroutinesVersion: Int,
multiplatformVersion: Int,
metadataVersionArray: IntArray?
metadataVersionArray: IntArray?,
pluginClasspaths: String
): JsBuildMetaInfo {
val metadataVersion = metadataVersionArray?.let(::JsMetadataVersion) ?: JsMetadataVersion.INSTANCE
return JsBuildMetaInfo(
@@ -47,7 +49,8 @@ data class JsBuildMetaInfo(
metadataVersionPatch = metadataVersion.patch,
ownVersion = ownVersion,
coroutinesVersion = coroutinesVersion,
multiplatformVersion = multiplatformVersion
multiplatformVersion = multiplatformVersion,
pluginClasspaths = pluginClasspaths
)
}
}
@@ -36,7 +36,8 @@ data class JvmBuildMetaInfo(
val bytecodeVersionPatch: Int,
override val ownVersion: Int,
override val coroutinesVersion: Int,
override val multiplatformVersion: Int
override val multiplatformVersion: Int,
override val pluginClasspaths: String
) : BuildMetaInfo {
companion object : BuildMetaInfoFactory<JvmBuildMetaInfo>(JvmBuildMetaInfo::class) {
override fun create(
@@ -48,7 +49,8 @@ data class JvmBuildMetaInfo(
ownVersion: Int,
coroutinesVersion: Int,
multiplatformVersion: Int,
metadataVersionArray: IntArray?
metadataVersionArray: IntArray?,
pluginClasspaths: String
): JvmBuildMetaInfo {
val metadataVersion = metadataVersionArray?.let(::JvmMetadataVersion) ?: JvmMetadataVersion.INSTANCE
return JvmBuildMetaInfo(
@@ -65,7 +67,8 @@ data class JvmBuildMetaInfo(
bytecodeVersionPatch = JvmBytecodeBinaryVersion.INSTANCE.patch,
ownVersion = ownVersion,
coroutinesVersion = coroutinesVersion,
multiplatformVersion = multiplatformVersion
multiplatformVersion = multiplatformVersion,
pluginClasspaths = pluginClasspaths
)
}
}