From 99275deb306922c4d0cda43e193dd04b7373eba0 Mon Sep 17 00:00:00 2001 From: Sergey Rostov Date: Fri, 14 Jun 2019 09:12:15 +0300 Subject: [PATCH] JPS Build: fix building buildSrc --- .../main/kotlin/pill/kotlinPluginArtifact.kt | 3 +- buildSrc/src/main/kotlin/pill/parser.kt | 73 ++++++++++--------- buildSrc/src/main/kotlin/tasks.kt | 2 +- 3 files changed, 41 insertions(+), 37 deletions(-) diff --git a/buildSrc/src/main/kotlin/pill/kotlinPluginArtifact.kt b/buildSrc/src/main/kotlin/pill/kotlinPluginArtifact.kt index 42b90f91d6c..d6b9ceeb04b 100644 --- a/buildSrc/src/main/kotlin/pill/kotlinPluginArtifact.kt +++ b/buildSrc/src/main/kotlin/pill/kotlinPluginArtifact.kt @@ -172,7 +172,8 @@ private fun getArtifactElements( is PDependency.Library -> artifacts += ProjectLibrary(dependency.name) is PDependency.ModuleLibrary -> { val files = dependency.library.classes - artifacts += files.map(if (extractDependencies) ::ExtractedDirectory else ::FileCopy) + if (extractDependencies) files.mapTo(artifacts) { ExtractedDirectory(it) } + else files.mapTo(artifacts) { FileCopy(it) } } } } diff --git a/buildSrc/src/main/kotlin/pill/parser.kt b/buildSrc/src/main/kotlin/pill/parser.kt index 2ff49ba897f..f08f577e197 100644 --- a/buildSrc/src/main/kotlin/pill/parser.kt +++ b/buildSrc/src/main/kotlin/pill/parser.kt @@ -235,53 +235,56 @@ private fun parseSourceRoots(project: Project): List { val sourceRoots = mutableListOf() - for (sourceSet in (project.sourceSets ?: emptyList())) { - val kotlinCompileTask = kotlinTasksBySourceSet[sourceSet.name] - val kind = if (sourceSet.isTestSourceSet) Kind.TEST else Kind.PRODUCTION + val sourceSets = project.sourceSets + if (sourceSets != null) { + for (sourceSet in sourceSets) { + val kotlinCompileTask = kotlinTasksBySourceSet[sourceSet.name] + val kind = if (sourceSet.isTestSourceSet) Kind.TEST else Kind.PRODUCTION - fun Any.getKotlin(): SourceDirectorySet { - val kotlinMethod = javaClass.getMethod("getKotlin") - val oldIsAccessible = kotlinMethod.isAccessible - try { - kotlinMethod.isAccessible = true - return kotlinMethod(this) as SourceDirectorySet - } finally { - kotlinMethod.isAccessible = oldIsAccessible + fun Any.getKotlin(): SourceDirectorySet { + val kotlinMethod = javaClass.getMethod("getKotlin") + val oldIsAccessible = kotlinMethod.isAccessible + try { + kotlinMethod.isAccessible = true + return kotlinMethod(this) as SourceDirectorySet + } finally { + kotlinMethod.isAccessible = oldIsAccessible + } } - } - val kotlinSourceDirectories = (sourceSet as HasConvention).convention - .plugins["kotlin"]?.getKotlin()?.srcDirs + val kotlinSourceDirectories = (sourceSet as HasConvention).convention + .plugins["kotlin"]?.getKotlin()?.srcDirs ?: emptySet() - val directories = (sourceSet.java.sourceDirectories.files + kotlinSourceDirectories).toList() - .filter { it.exists() } - .takeIf { it.isNotEmpty() } + val directories = (sourceSet.java.sourceDirectories.files + kotlinSourceDirectories).toList() + .filter { it.exists() } + .takeIf { it.isNotEmpty() } ?: continue - val kotlinOptions = kotlinCompileTask?.let { getKotlinOptions(it) } + val kotlinOptions = kotlinCompileTask?.let { getKotlinOptions(it) } - for (resourceRoot in sourceSet.resources.sourceDirectories.files) { - if (!resourceRoot.exists() || resourceRoot in directories) { - continue + for (resourceRoot in sourceSet.resources.sourceDirectories.files) { + if (!resourceRoot.exists() || resourceRoot in directories) { + continue + } + + val resourceRootKind = when (kind) { + Kind.PRODUCTION -> Kind.RESOURCES + Kind.TEST -> Kind.TEST_RESOURCES + else -> error("Invalid source root kind $kind") + } + + sourceRoots += PSourceRoot(resourceRoot, resourceRootKind, kotlinOptions) } - val resourceRootKind = when (kind) { - Kind.PRODUCTION -> Kind.RESOURCES - Kind.TEST -> Kind.TEST_RESOURCES - else -> error("Invalid source root kind $kind") + for (directory in directories) { + sourceRoots += PSourceRoot(directory, kind, kotlinOptions) } - sourceRoots += PSourceRoot(resourceRoot, resourceRootKind, kotlinOptions) - } - - for (directory in directories) { - sourceRoots += PSourceRoot(directory, kind, kotlinOptions) - } - - for (root in parseResourceRootsProcessedByProcessResourcesTask(project, sourceSet)) { - if (sourceRoots.none { it.path == root.path }) { - sourceRoots += root + for (root in parseResourceRootsProcessedByProcessResourcesTask(project, sourceSet)) { + if (sourceRoots.none { it.path == root.path }) { + sourceRoots += root + } } } } diff --git a/buildSrc/src/main/kotlin/tasks.kt b/buildSrc/src/main/kotlin/tasks.kt index 21be0bff0b5..7a0315790cf 100644 --- a/buildSrc/src/main/kotlin/tasks.kt +++ b/buildSrc/src/main/kotlin/tasks.kt @@ -104,7 +104,7 @@ fun Project.projectTest(taskName: String = "test", parallel: Boolean = false, bo var subProjectTempRoot: Path? = null doFirst { - val teamcity = rootProject.findProperty("teamcity") as? Map<*, *> + val teamcity = rootProject.findProperty("teamcity") as? Map val systemTempRoot = // TC by default doesn't switch `teamcity.build.tempDir` to 'java.io.tmpdir' so it could cause to wasted disk space // Should be fixed soon on Teamcity side