[Gradle] KotlinMetadataLibraryDirectories: Use composite build root for IDE directories
KT-49933
This commit is contained in:
committed by
Space Team
parent
61748f4016
commit
6849804941
+1
-1
@@ -44,7 +44,7 @@ internal class IdeaKpmMetadataBinaryDependencyResolver(
|
||||
val sourceSetContent = artifactContent.findSourceSet(visibleFragmentName) ?: return@mapNotNull null
|
||||
val metadataBinary = sourceSetContent.metadataBinary ?: return@mapNotNull null
|
||||
|
||||
val libraryFile = fragment.project.layout.kotlinTransformedMetadataLibraryDirectoryForIde
|
||||
val libraryFile = fragment.project.kotlinTransformedMetadataLibraryDirectoryForIde
|
||||
.resolve(metadataBinary.relativeFile)
|
||||
.apply { if (!isFile) metadataBinary.copyTo(this) }
|
||||
|
||||
|
||||
+1
-1
@@ -30,7 +30,7 @@ internal object IdeTransformedMetadataDependencyResolver : IdeDependencyResolver
|
||||
val sourceSetContent = artifactContent.findSourceSet(visibleSourceSet) ?: return@mapNotNull null
|
||||
val sourceSetMetadataBinary = sourceSetContent.metadataBinary ?: return@mapNotNull null
|
||||
|
||||
val metadataLibraryOutputFile = sourceSet.internal.project.layout.kotlinTransformedMetadataLibraryDirectoryForIde
|
||||
val metadataLibraryOutputFile = sourceSet.internal.project.kotlinTransformedMetadataLibraryDirectoryForIde
|
||||
.resolve(sourceSetMetadataBinary.relativeFile)
|
||||
|
||||
metadataLibraryOutputFile.parentFile.mkdirs()
|
||||
|
||||
+6
-4
@@ -5,7 +5,9 @@
|
||||
|
||||
package org.jetbrains.kotlin.gradle.plugin.mpp
|
||||
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.file.ProjectLayout
|
||||
import org.jetbrains.kotlin.gradle.utils.compositeBuildRootProject
|
||||
import java.io.File
|
||||
|
||||
private const val kotlinTransformedMetadataLibraries = "kotlinTransformedMetadataLibraries"
|
||||
@@ -14,11 +16,11 @@ private const val kotlinTransformedCInteropMetadataLibraries = "kotlinTransforme
|
||||
internal fun ProjectLayout.kotlinTransformedMetadataLibraryDirectoryForBuild(sourceSetName: String): File =
|
||||
buildDirectory.get().asFile.resolve(kotlinTransformedMetadataLibraries).resolve(sourceSetName)
|
||||
|
||||
internal val ProjectLayout.kotlinTransformedMetadataLibraryDirectoryForIde: File
|
||||
get() = projectDirectory.asFile.resolve(".gradle").resolve("kotlin").resolve(kotlinTransformedMetadataLibraries)
|
||||
internal val Project.kotlinTransformedMetadataLibraryDirectoryForIde: File
|
||||
get() = compositeBuildRootProject.rootDir.resolve(".gradle").resolve("kotlin").resolve(kotlinTransformedMetadataLibraries)
|
||||
|
||||
internal fun ProjectLayout.kotlinTransformedCInteropMetadataLibraryDirectoryForBuild(sourceSetName: String): File =
|
||||
buildDirectory.get().asFile.resolve(kotlinTransformedCInteropMetadataLibraries).resolve(sourceSetName)
|
||||
|
||||
internal val ProjectLayout.kotlinTransformedCInteropMetadataLibraryDirectoryForIde: File
|
||||
get() = projectDirectory.asFile.resolve(".gradle").resolve("kotlin").resolve(kotlinTransformedCInteropMetadataLibraries)
|
||||
internal val Project.kotlinTransformedCInteropMetadataLibraryDirectoryForIde: File
|
||||
get() = compositeBuildRootProject.rootDir.resolve(".gradle").resolve("kotlin").resolve(kotlinTransformedCInteropMetadataLibraries)
|
||||
|
||||
+3
-4
@@ -22,6 +22,7 @@ import org.jetbrains.kotlin.gradle.targets.metadata.dependsOnClosureWithInterCom
|
||||
import org.jetbrains.kotlin.gradle.targets.metadata.getPublishedPlatformCompilations
|
||||
import org.jetbrains.kotlin.gradle.targets.metadata.isNativeSourceSet
|
||||
import org.jetbrains.kotlin.gradle.targets.native.internal.CInteropCommonizerCompositeMetadataJarBundling.cinteropMetadataDirectoryPath
|
||||
import org.jetbrains.kotlin.gradle.utils.compositeBuildRootProject
|
||||
import org.jetbrains.kotlin.gradle.utils.getOrPut
|
||||
import org.w3c.dom.Document
|
||||
import org.w3c.dom.Element
|
||||
@@ -415,14 +416,14 @@ internal object GlobalProjectStructureMetadataStorage {
|
||||
fun propertyName(buildName: String, projectPath: String) = "$propertyPrefix.$buildName.path.$projectPath"
|
||||
|
||||
fun registerProjectStructureMetadata(project: Project, metadataProvider: () -> KotlinProjectStructureMetadata) {
|
||||
project.compositeBuildRoot.extensions.extraProperties.set(
|
||||
project.compositeBuildRootProject.extensions.extraProperties.set(
|
||||
propertyName(project.rootProject.name, project.path),
|
||||
{ metadataProvider().toJson() }
|
||||
)
|
||||
}
|
||||
|
||||
fun getProjectStructureMetadataProvidersFromAllGradleBuilds(project: Project): Map<ProjectPathWithBuildName, Lazy<KotlinProjectStructureMetadata?>> {
|
||||
return project.compositeBuildRoot.extensions.extraProperties.properties
|
||||
return project.compositeBuildRootProject.extensions.extraProperties.properties
|
||||
.filterKeys { it.startsWith(propertyPrefix) }
|
||||
.entries
|
||||
.associate { (propertyName, propertyValue) ->
|
||||
@@ -433,8 +434,6 @@ internal object GlobalProjectStructureMetadataStorage {
|
||||
}
|
||||
}
|
||||
|
||||
private val Project.compositeBuildRoot: Project get() = generateSequence(project.gradle) { it.parent }.last().rootProject
|
||||
|
||||
private fun Any.getProjectStructureMetadataOrNull(): KotlinProjectStructureMetadata? {
|
||||
val jsonStringProvider = this as? Function0<*> ?: return null
|
||||
val jsonString = jsonStringProvider.invoke() as? String ?: return null
|
||||
|
||||
+1
-1
@@ -27,7 +27,7 @@ internal fun Project.transformMetadataLibrariesForIde(
|
||||
}
|
||||
|
||||
is ArtifactMetadataProvider -> transformMetadataLibrariesForIde(
|
||||
layout.kotlinTransformedMetadataLibraryDirectoryForIde, resolution, metadataProvider
|
||||
kotlinTransformedMetadataLibraryDirectoryForIde, resolution, metadataProvider
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -79,7 +79,7 @@ internal fun Project.locateOrRegisterCInteropMetadataDependencyTransformationTas
|
||||
args = listOf(
|
||||
sourceSet,
|
||||
/* outputDirectory = */
|
||||
project.layout.kotlinTransformedCInteropMetadataLibraryDirectoryForIde,
|
||||
project.kotlinTransformedCInteropMetadataLibraryDirectoryForIde,
|
||||
/* cleaning = */
|
||||
CInteropMetadataDependencyTransformationTask.Cleaning.None
|
||||
),
|
||||
|
||||
+4
-1
@@ -5,7 +5,10 @@
|
||||
|
||||
package org.jetbrains.kotlin.gradle.utils
|
||||
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.invocation.Gradle
|
||||
|
||||
val Gradle.projectCacheDir
|
||||
get() = startParameter.projectCacheDir ?: this.rootProject.projectDir.resolve(".gradle")
|
||||
get() = startParameter.projectCacheDir ?: this.rootProject.projectDir.resolve(".gradle")
|
||||
|
||||
internal val Project.compositeBuildRootProject: Project get() = generateSequence(project.gradle) { it.parent }.last().rootProject
|
||||
|
||||
Reference in New Issue
Block a user