From f053ed968f49f56b591e5f1a6b99cae444b48c0f Mon Sep 17 00:00:00 2001 From: Ilya Chernikov Date: Wed, 2 Aug 2017 12:19:19 +0200 Subject: [PATCH] Change core env and proguard config for compatibility with new gradle build (the build.xml should be modified to support the proguard config in this form) --- .../cli/jvm/compiler/KotlinCoreEnvironment.kt | 30 +++++++++++-------- compiler/compiler.pro | 18 ++++++----- 2 files changed, 28 insertions(+), 20 deletions(-) diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinCoreEnvironment.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinCoreEnvironment.kt index c4b5f37c8b1..fcf2675d35a 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinCoreEnvironment.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinCoreEnvironment.kt @@ -109,6 +109,7 @@ import org.jetbrains.kotlin.script.ScriptDependenciesProvider import org.jetbrains.kotlin.script.ScriptReportSink import org.jetbrains.kotlin.utils.PathUtil import java.io.File +import java.util.zip.ZipFile class KotlinCoreEnvironment private constructor( parentDisposable: Disposable, @@ -482,20 +483,25 @@ class KotlinCoreEnvironment private constructor( } private fun registerApplicationExtensionPointsAndExtensionsFrom(configuration: CompilerConfiguration, configFilePath: String) { - var pluginRoot = + + fun File.hasConfigFile(configFile: String): Boolean = + if (isDirectory) File(this, "META-INF" + File.separator + configFile).exists() + else try { + ZipFile(this).use { + it.getEntry("META-INF/" + configFile) != null + } + } + catch (e: Throwable) { + false + } + + val pluginRoot = configuration.get(CLIConfigurationKeys.INTELLIJ_PLUGIN_ROOT)?.let(::File) ?: configuration.get(CLIConfigurationKeys.COMPILER_JAR_LOCATOR)?.compilerJar - ?: PathUtil.pathUtilJar - - val app = ApplicationManager.getApplication() - val parentFile = pluginRoot.parentFile - - if (pluginRoot.isDirectory && app != null && app.isUnitTestMode - && FileUtil.toCanonicalPath(parentFile.path).endsWith("out/production")) { - // hack for load extensions when compiler run directly from out directory(e.g. in tests) - val srcDir = parentFile.parentFile.parentFile - pluginRoot = File(srcDir, "idea/src") - } + ?: PathUtil.getPathUtilJar().takeIf { it.hasConfigFile(configFilePath) } + // hack for load extensions when compiler run directly from project directory (e.g. in tests) + ?: File("idea/src").takeIf { it.hasConfigFile(configFilePath) } + ?: throw IllegalStateException("Unable to find extension point configuration $configFilePath") CoreApplicationEnvironment.registerExtensionPointAndExtensions(pluginRoot, configFilePath, Extensions.getRootArea()) } diff --git a/compiler/compiler.pro b/compiler/compiler.pro index 1276d963c6a..1164d37145d 100644 --- a/compiler/compiler.pro +++ b/compiler/compiler.pro @@ -1,4 +1,4 @@ --injars '/kotlin-compiler-before-shrink.jar'( +-injars ''( !com/thoughtworks/xstream/converters/extended/ISO8601**, !com/thoughtworks/xstream/converters/reflection/CGLIBEnhancedConverter**, !com/thoughtworks/xstream/io/xml/JDom**, @@ -23,7 +23,7 @@ META-INF/services/**,META-INF/native/**,META-INF/extensions/**,META-INF/MANIFEST.MF, messages/**) --outjars '/lib/kotlin-compiler.jar' +-outjars '' -dontnote ** -dontwarn com.intellij.util.ui.IsRetina* @@ -58,13 +58,15 @@ messages/**) -dontwarn java.lang.invoke.MethodHandle -dontwarn org.jline.builtins.Nano$Buffer -dontwarn net.jpountz.lz4.LZ4Factory +-dontwarn org.jetbrains.annotations.ReadOnly +-dontwarn org.jetbrains.annotations.Mutable --libraryjars '' --libraryjars '' --libraryjars '' --libraryjars '' --libraryjars '' --libraryjars '' +#-libraryjars '' +#-libraryjars '' +#-libraryjars '' +#-libraryjars '' +#-libraryjars '' +#-libraryjars '' -dontoptimize -dontobfuscate