Add only non-jdk classpath entries from the compiler to script
remove unnecessary manifest classpath entries in the saved compiled script jar
This commit is contained in:
@@ -26,7 +26,9 @@ interface JvmContentRoot : ContentRoot {
|
|||||||
val file: File
|
val file: File
|
||||||
}
|
}
|
||||||
|
|
||||||
data class JvmClasspathRoot(override val file: File) : JvmContentRoot
|
data class JvmClasspathRoot(override val file: File, val isSdkRoot: Boolean) : JvmContentRoot {
|
||||||
|
constructor(file: File) : this(file, false)
|
||||||
|
}
|
||||||
|
|
||||||
data class JavaSourceRoot(override val file: File, val packagePrefix: String?) : JvmContentRoot
|
data class JavaSourceRoot(override val file: File, val packagePrefix: String?) : JvmContentRoot
|
||||||
|
|
||||||
@@ -41,7 +43,7 @@ fun CompilerConfiguration.addJvmClasspathRoots(files: List<File>) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun CompilerConfiguration.addJvmSdkRoots(files: List<File>) {
|
fun CompilerConfiguration.addJvmSdkRoots(files: List<File>) {
|
||||||
addAll(CLIConfigurationKeys.CONTENT_ROOTS, 0, files.map(::JvmClasspathRoot))
|
addAll(CLIConfigurationKeys.CONTENT_ROOTS, 0, files.map { file -> JvmClasspathRoot(file, true) })
|
||||||
}
|
}
|
||||||
|
|
||||||
val CompilerConfiguration.jvmClasspathRoots: List<File>
|
val CompilerConfiguration.jvmClasspathRoots: List<File>
|
||||||
|
|||||||
+4
-1
@@ -11,6 +11,8 @@ import org.jetbrains.kotlin.cli.common.messages.MessageCollector
|
|||||||
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
||||||
import org.jetbrains.kotlin.cli.jvm.compiler.NoScopeRecordCliBindingTrace
|
import org.jetbrains.kotlin.cli.jvm.compiler.NoScopeRecordCliBindingTrace
|
||||||
import org.jetbrains.kotlin.cli.jvm.compiler.TopDownAnalyzerFacadeForJVM
|
import org.jetbrains.kotlin.cli.jvm.compiler.TopDownAnalyzerFacadeForJVM
|
||||||
|
import org.jetbrains.kotlin.cli.jvm.config.JvmClasspathRoot
|
||||||
|
import org.jetbrains.kotlin.cli.jvm.config.JvmContentRoot
|
||||||
import org.jetbrains.kotlin.cli.jvm.config.jvmClasspathRoots
|
import org.jetbrains.kotlin.cli.jvm.config.jvmClasspathRoots
|
||||||
import org.jetbrains.kotlin.codegen.ClassBuilderFactories
|
import org.jetbrains.kotlin.codegen.ClassBuilderFactories
|
||||||
import org.jetbrains.kotlin.codegen.KotlinCodegenFacade
|
import org.jetbrains.kotlin.codegen.KotlinCodegenFacade
|
||||||
@@ -126,7 +128,8 @@ private fun compileImpl(
|
|||||||
// performed with the expected classpath
|
// performed with the expected classpath
|
||||||
// TODO: make this logic obsolete by injecting classpath earlier in the pipeline
|
// TODO: make this logic obsolete by injecting classpath earlier in the pipeline
|
||||||
val depsFromConfiguration = get(dependencies)?.flatMapTo(HashSet()) { (it as? JvmDependency)?.classpath ?: emptyList() }
|
val depsFromConfiguration = get(dependencies)?.flatMapTo(HashSet()) { (it as? JvmDependency)?.classpath ?: emptyList() }
|
||||||
val depsFromCompiler = context.environment.configuration.jvmClasspathRoots
|
val depsFromCompiler = context.environment.configuration.getList(CLIConfigurationKeys.CONTENT_ROOTS)
|
||||||
|
.mapNotNull { if (it is JvmClasspathRoot && !it.isSdkRoot) it.file else null }
|
||||||
if (!depsFromConfiguration.isNullOrEmpty()) {
|
if (!depsFromConfiguration.isNullOrEmpty()) {
|
||||||
val missingDeps = depsFromCompiler.filter { !depsFromConfiguration.contains(it) }
|
val missingDeps = depsFromCompiler.filter { !depsFromConfiguration.contains(it) }
|
||||||
if (missingDeps.isNotEmpty()) {
|
if (missingDeps.isNotEmpty()) {
|
||||||
|
|||||||
Reference in New Issue
Block a user