[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 browser projects")
|
||||||
@DisplayName("Build services are registered for Kotlin/JS nodejs projects")
|
|
||||||
@GradleTest
|
@GradleTest
|
||||||
@JsGradlePluginTests
|
@JsGradlePluginTests
|
||||||
fun testJsNodeJsProject(gradleVersion: GradleVersion) {
|
fun testJsBrowserProject(gradleVersion: GradleVersion) {
|
||||||
project("kotlin-js-browser-project", gradleVersion) {
|
project("kotlin-js-browser-project", gradleVersion) {
|
||||||
enableStableConfigurationCachePreview()
|
enableStableConfigurationCachePreview()
|
||||||
build("build") {
|
build("build") {
|
||||||
@@ -44,11 +43,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
|
@GradleTest
|
||||||
@JsGradlePluginTests
|
@JsGradlePluginTests
|
||||||
fun testJsBrowserProject(gradleVersion: GradleVersion) {
|
fun testJsNodeJsProject(gradleVersion: GradleVersion) {
|
||||||
project("kotlin-js-nodejs-project", gradleVersion) {
|
project("kotlin-js-nodejs-project", gradleVersion) {
|
||||||
enableStableConfigurationCachePreview()
|
enableStableConfigurationCachePreview()
|
||||||
build("build") {
|
build("build") {
|
||||||
@@ -57,7 +55,6 @@ class BuildServiceDeclarationIT : KGPBaseTest() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Disabled
|
|
||||||
@DisplayName("Build services are registered for Kotlin/MPP projects")
|
@DisplayName("Build services are registered for Kotlin/MPP projects")
|
||||||
@GradleTest
|
@GradleTest
|
||||||
@MppGradlePluginTests
|
@MppGradlePluginTests
|
||||||
|
|||||||
+2
@@ -43,6 +43,7 @@ open class NodeJsRootPlugin : Plugin<Project> {
|
|||||||
|
|
||||||
val setupFileHasherTask = registerTask<KotlinNpmCachesSetup>(KotlinNpmCachesSetup.NAME) {
|
val setupFileHasherTask = registerTask<KotlinNpmCachesSetup>(KotlinNpmCachesSetup.NAME) {
|
||||||
it.description = "Setup file hasher for caches"
|
it.description = "Setup file hasher for caches"
|
||||||
|
settings.npmResolutionManager.declareBuildServicesUsage(it)
|
||||||
}
|
}
|
||||||
|
|
||||||
registerTask<KotlinNpmInstallTask>(KotlinNpmInstallTask.NAME) {
|
registerTask<KotlinNpmInstallTask>(KotlinNpmInstallTask.NAME) {
|
||||||
@@ -50,6 +51,7 @@ open class NodeJsRootPlugin : Plugin<Project> {
|
|||||||
it.dependsOn(setupFileHasherTask)
|
it.dependsOn(setupFileHasherTask)
|
||||||
it.group = TASKS_GROUP_NAME
|
it.group = TASKS_GROUP_NAME
|
||||||
it.description = "Find, download and link NPM dependencies and projects"
|
it.description = "Find, download and link NPM dependencies and projects"
|
||||||
|
settings.npmResolutionManager.declareBuildServicesUsage(it)
|
||||||
}
|
}
|
||||||
|
|
||||||
registerTask<Task>(PACKAGE_JSON_UMBRELLA_TASK_NAME)
|
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
|
package org.jetbrains.kotlin.gradle.targets.js.npm.resolver
|
||||||
|
|
||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
|
import org.gradle.api.Task
|
||||||
import org.gradle.api.logging.Logger
|
import org.gradle.api.logging.Logger
|
||||||
import org.gradle.api.provider.Provider
|
import org.gradle.api.provider.Provider
|
||||||
import org.gradle.internal.service.ServiceRegistry
|
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.YarnPlugin
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.yarn.YarnResolution
|
import org.jetbrains.kotlin.gradle.targets.js.yarn.YarnResolution
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.yarn.toVersionString
|
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.ArchiveOperationsCompat
|
||||||
import org.jetbrains.kotlin.gradle.utils.FileSystemOperationsCompat
|
import org.jetbrains.kotlin.gradle.utils.FileSystemOperationsCompat
|
||||||
import org.jetbrains.kotlin.gradle.utils.unavailableValueError
|
import org.jetbrains.kotlin.gradle.utils.unavailableValueError
|
||||||
@@ -96,6 +99,12 @@ class KotlinRootNpmResolver internal constructor(
|
|||||||
internal val compositeNodeModules: CompositeNodeModulesCache
|
internal val compositeNodeModules: CompositeNodeModulesCache
|
||||||
get() = compositeNodeModulesProvider.get()
|
get() = compositeNodeModulesProvider.get()
|
||||||
|
|
||||||
|
internal fun declareCacheServicesUsage(task: Task) {
|
||||||
|
task.usesService(gradleNodeModulesProvider)
|
||||||
|
task.usesService(compositeNodeModulesProvider)
|
||||||
|
task.usesService(resolverStateHolder)
|
||||||
|
}
|
||||||
|
|
||||||
@Transient
|
@Transient
|
||||||
private val projectResolvers_: MutableMap<String, KotlinProjectNpmResolver>? = mutableMapOf()
|
private val projectResolvers_: MutableMap<String, KotlinProjectNpmResolver>? = mutableMapOf()
|
||||||
|
|
||||||
@@ -176,6 +185,9 @@ class KotlinRootNpmResolver internal constructor(
|
|||||||
synchronized(projectResolvers) {
|
synchronized(projectResolvers) {
|
||||||
check(state == RootResolverState.CONFIGURING) { alreadyResolvedMessage("add new project: $target") }
|
check(state == RootResolverState.CONFIGURING) { alreadyResolvedMessage("add new project: $target") }
|
||||||
projectResolvers[target.path] = KotlinProjectNpmResolver(target, this)
|
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.KotlinCompilationNpmResolver
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.npm.resolver.PACKAGE_JSON_UMBRELLA_TASK_NAME
|
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.tasks.registerTask
|
||||||
|
import org.jetbrains.kotlin.gradle.utils.chainedDisallowChanges
|
||||||
import org.jetbrains.kotlin.gradle.utils.getValue
|
import org.jetbrains.kotlin.gradle.utils.getValue
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
@@ -113,13 +114,14 @@ abstract class KotlinPackageJsonTask : DefaultTask() {
|
|||||||
task.compilation = compilation
|
task.compilation = compilation
|
||||||
task.description = "Create package.json file for $compilation"
|
task.description = "Create package.json file for $compilation"
|
||||||
task.group = NodeJsRootPlugin.TASKS_GROUP_NAME
|
task.group = NodeJsRootPlugin.TASKS_GROUP_NAME
|
||||||
task.mayBeUpToDateTasksRegistry.apply {
|
val packageJsonStateService = MayBeUpToDatePackageJsonTasksRegistry.registerIfAbsent(project)
|
||||||
set(MayBeUpToDatePackageJsonTasksRegistry.registerIfAbsent(project))
|
task.mayBeUpToDateTasksRegistry.value(packageJsonStateService).chainedDisallowChanges().also {
|
||||||
disallowChanges()
|
task.usesService(packageJsonStateService)
|
||||||
}
|
}
|
||||||
|
|
||||||
task.dependsOn(target.project.provider { task.findDependentTasks() })
|
task.dependsOn(target.project.provider { task.findDependentTasks() })
|
||||||
task.dependsOn(npmCachesSetupTask)
|
task.dependsOn(npmCachesSetupTask)
|
||||||
|
nodeJs.npmResolutionManager.declareBuildServicesUsage(task)
|
||||||
}
|
}
|
||||||
packageJsonUmbrella.configure { task ->
|
packageJsonUmbrella.configure { task ->
|
||||||
task.inputs.file(packageJsonTask.map { it.packageJson })
|
task.inputs.file(packageJsonTask.map { it.packageJson })
|
||||||
|
|||||||
+1
@@ -46,6 +46,7 @@ open class YarnPlugin : Plugin<Project> {
|
|||||||
task.dependsOn(nodeJs.npmCachesSetupTaskProvider)
|
task.dependsOn(nodeJs.npmCachesSetupTaskProvider)
|
||||||
task.group = NodeJsRootPlugin.TASKS_GROUP_NAME
|
task.group = NodeJsRootPlugin.TASKS_GROUP_NAME
|
||||||
task.description = "Create root package.json"
|
task.description = "Create root package.json"
|
||||||
|
nodeJs.npmResolutionManager.declareBuildServicesUsage(task)
|
||||||
}
|
}
|
||||||
|
|
||||||
configureRequiresNpmDependencies(project, rootPackageJson)
|
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.plugin.KotlinCompilationInfo
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.ir.*
|
import org.jetbrains.kotlin.gradle.targets.js.ir.*
|
||||||
import org.jetbrains.kotlin.gradle.tasks.Kotlin2JsCompile
|
import org.jetbrains.kotlin.gradle.tasks.Kotlin2JsCompile
|
||||||
|
import org.jetbrains.kotlin.gradle.utils.chainedDisallowChanges
|
||||||
import org.jetbrains.kotlin.gradle.utils.klibModuleName
|
import org.jetbrains.kotlin.gradle.utils.klibModuleName
|
||||||
import java.io.File
|
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