[Gradle] Declare build services usages for the Kotlin/JS plugin
#KT-52149 In Progress
This commit is contained in:
committed by
Space Team
parent
02bf10f21a
commit
36a6809d55
+4
-7
@@ -31,11 +31,10 @@ class BuildServiceDeclarationIT : KGPBaseTest() {
|
||||
}
|
||||
}
|
||||
|
||||
@Disabled
|
||||
@DisplayName("Build services are registered for Kotlin/JS nodejs projects")
|
||||
@DisplayName("Build services are registered for Kotlin/JS browser projects")
|
||||
@GradleTest
|
||||
@JsGradlePluginTests
|
||||
fun testJsNodeJsProject(gradleVersion: GradleVersion) {
|
||||
fun testJsBrowserProject(gradleVersion: GradleVersion) {
|
||||
project("kotlin-js-browser-project", gradleVersion) {
|
||||
enableStableConfigurationCachePreview()
|
||||
build("build") {
|
||||
@@ -44,11 +43,10 @@ class BuildServiceDeclarationIT : KGPBaseTest() {
|
||||
}
|
||||
}
|
||||
|
||||
@Disabled
|
||||
@DisplayName("Build services are registered for Kotlin/JS browser projects")
|
||||
@DisplayName("Build services are registered for Kotlin/JS nodejs projects")
|
||||
@GradleTest
|
||||
@JsGradlePluginTests
|
||||
fun testJsBrowserProject(gradleVersion: GradleVersion) {
|
||||
fun testJsNodeJsProject(gradleVersion: GradleVersion) {
|
||||
project("kotlin-js-nodejs-project", gradleVersion) {
|
||||
enableStableConfigurationCachePreview()
|
||||
build("build") {
|
||||
@@ -57,7 +55,6 @@ class BuildServiceDeclarationIT : KGPBaseTest() {
|
||||
}
|
||||
}
|
||||
|
||||
@Disabled
|
||||
@DisplayName("Build services are registered for Kotlin/MPP projects")
|
||||
@GradleTest
|
||||
@MppGradlePluginTests
|
||||
|
||||
+2
@@ -43,6 +43,7 @@ open class NodeJsRootPlugin : Plugin<Project> {
|
||||
|
||||
val setupFileHasherTask = registerTask<KotlinNpmCachesSetup>(KotlinNpmCachesSetup.NAME) {
|
||||
it.description = "Setup file hasher for caches"
|
||||
settings.npmResolutionManager.declareBuildServicesUsage(it)
|
||||
}
|
||||
|
||||
registerTask<KotlinNpmInstallTask>(KotlinNpmInstallTask.NAME) {
|
||||
@@ -50,6 +51,7 @@ open class NodeJsRootPlugin : Plugin<Project> {
|
||||
it.dependsOn(setupFileHasherTask)
|
||||
it.group = TASKS_GROUP_NAME
|
||||
it.description = "Find, download and link NPM dependencies and projects"
|
||||
settings.npmResolutionManager.declareBuildServicesUsage(it)
|
||||
}
|
||||
|
||||
registerTask<Task>(PACKAGE_JSON_UMBRELLA_TASK_NAME)
|
||||
|
||||
+5
@@ -277,4 +277,9 @@ class KotlinNpmResolutionManager(@Transient private val nodeJsSettings: NodeJsRo
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
internal fun declareBuildServicesUsage(task: Task) {
|
||||
task.usesService(stateHolderProvider)
|
||||
resolver.declareCacheServicesUsage(task)
|
||||
}
|
||||
}
|
||||
+12
@@ -6,6 +6,7 @@
|
||||
package org.jetbrains.kotlin.gradle.targets.js.npm.resolver
|
||||
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.Task
|
||||
import org.gradle.api.logging.Logger
|
||||
import org.gradle.api.provider.Provider
|
||||
import org.gradle.internal.service.ServiceRegistry
|
||||
@@ -23,6 +24,8 @@ import org.jetbrains.kotlin.gradle.targets.js.yarn.YarnEnv
|
||||
import org.jetbrains.kotlin.gradle.targets.js.yarn.YarnPlugin
|
||||
import org.jetbrains.kotlin.gradle.targets.js.yarn.YarnResolution
|
||||
import org.jetbrains.kotlin.gradle.targets.js.yarn.toVersionString
|
||||
import org.jetbrains.kotlin.gradle.tasks.Kotlin2JsCompile
|
||||
import org.jetbrains.kotlin.gradle.tasks.withType
|
||||
import org.jetbrains.kotlin.gradle.utils.ArchiveOperationsCompat
|
||||
import org.jetbrains.kotlin.gradle.utils.FileSystemOperationsCompat
|
||||
import org.jetbrains.kotlin.gradle.utils.unavailableValueError
|
||||
@@ -96,6 +99,12 @@ class KotlinRootNpmResolver internal constructor(
|
||||
internal val compositeNodeModules: CompositeNodeModulesCache
|
||||
get() = compositeNodeModulesProvider.get()
|
||||
|
||||
internal fun declareCacheServicesUsage(task: Task) {
|
||||
task.usesService(gradleNodeModulesProvider)
|
||||
task.usesService(compositeNodeModulesProvider)
|
||||
task.usesService(resolverStateHolder)
|
||||
}
|
||||
|
||||
@Transient
|
||||
private val projectResolvers_: MutableMap<String, KotlinProjectNpmResolver>? = mutableMapOf()
|
||||
|
||||
@@ -176,6 +185,9 @@ class KotlinRootNpmResolver internal constructor(
|
||||
synchronized(projectResolvers) {
|
||||
check(state == RootResolverState.CONFIGURING) { alreadyResolvedMessage("add new project: $target") }
|
||||
projectResolvers[target.path] = KotlinProjectNpmResolver(target, this)
|
||||
target.tasks.withType<Kotlin2JsCompile>().configureEach { task ->
|
||||
nodeJs_.npmResolutionManager.declareBuildServicesUsage(task)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+5
-3
@@ -18,6 +18,7 @@ import org.jetbrains.kotlin.gradle.targets.js.npm.resolver.MayBeUpToDatePackageJ
|
||||
import org.jetbrains.kotlin.gradle.targets.js.npm.resolver.KotlinCompilationNpmResolver
|
||||
import org.jetbrains.kotlin.gradle.targets.js.npm.resolver.PACKAGE_JSON_UMBRELLA_TASK_NAME
|
||||
import org.jetbrains.kotlin.gradle.tasks.registerTask
|
||||
import org.jetbrains.kotlin.gradle.utils.chainedDisallowChanges
|
||||
import org.jetbrains.kotlin.gradle.utils.getValue
|
||||
import java.io.File
|
||||
|
||||
@@ -113,13 +114,14 @@ abstract class KotlinPackageJsonTask : DefaultTask() {
|
||||
task.compilation = compilation
|
||||
task.description = "Create package.json file for $compilation"
|
||||
task.group = NodeJsRootPlugin.TASKS_GROUP_NAME
|
||||
task.mayBeUpToDateTasksRegistry.apply {
|
||||
set(MayBeUpToDatePackageJsonTasksRegistry.registerIfAbsent(project))
|
||||
disallowChanges()
|
||||
val packageJsonStateService = MayBeUpToDatePackageJsonTasksRegistry.registerIfAbsent(project)
|
||||
task.mayBeUpToDateTasksRegistry.value(packageJsonStateService).chainedDisallowChanges().also {
|
||||
task.usesService(packageJsonStateService)
|
||||
}
|
||||
|
||||
task.dependsOn(target.project.provider { task.findDependentTasks() })
|
||||
task.dependsOn(npmCachesSetupTask)
|
||||
nodeJs.npmResolutionManager.declareBuildServicesUsage(task)
|
||||
}
|
||||
packageJsonUmbrella.configure { task ->
|
||||
task.inputs.file(packageJsonTask.map { it.packageJson })
|
||||
|
||||
+1
@@ -46,6 +46,7 @@ open class YarnPlugin : Plugin<Project> {
|
||||
task.dependsOn(nodeJs.npmCachesSetupTaskProvider)
|
||||
task.group = NodeJsRootPlugin.TASKS_GROUP_NAME
|
||||
task.description = "Create root package.json"
|
||||
nodeJs.npmResolutionManager.declareBuildServicesUsage(task)
|
||||
}
|
||||
|
||||
configureRequiresNpmDependencies(project, rootPackageJson)
|
||||
|
||||
+4
-1
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.gradle.tasks.configuration
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilationInfo
|
||||
import org.jetbrains.kotlin.gradle.targets.js.ir.*
|
||||
import org.jetbrains.kotlin.gradle.tasks.Kotlin2JsCompile
|
||||
import org.jetbrains.kotlin.gradle.utils.chainedDisallowChanges
|
||||
import org.jetbrains.kotlin.gradle.utils.klibModuleName
|
||||
import java.io.File
|
||||
|
||||
@@ -67,7 +68,9 @@ internal open class BaseKotlin2JsCompileConfig<TASK : Kotlin2JsCompile>(
|
||||
)
|
||||
)
|
||||
|
||||
task.libraryCache.set(libraryCacheService).also { task.libraryCache.disallowChanges() }
|
||||
task.libraryCache.value(libraryCacheService).chainedDisallowChanges().also {
|
||||
task.usesService(libraryCacheService)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user