Extract and reuse JarFS-related IO fallback configurator function

Partly fixes #KT-16927
This commit is contained in:
Ilya Chernikov
2017-03-22 15:16:09 +01:00
parent e59f6741c4
commit c034a73d72
4 changed files with 40 additions and 12 deletions
@@ -0,0 +1,31 @@
/*
* Copyright 2010-2017 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jetbrains.kotlin.cli.common.environment
import com.intellij.openapi.util.SystemInfo
fun setIdeaIoUseFallback() {
if (SystemInfo.isWindows) {
val properties = System.getProperties()
properties.setProperty("idea.io.use.nio2", java.lang.Boolean.TRUE.toString())
if (!(SystemInfo.isJavaVersionAtLeast("1.7") && "1.7.0-ea" != SystemInfo.JAVA_VERSION)) {
properties.setProperty("idea.io.use.fallback", java.lang.Boolean.TRUE.toString())
}
}
}
@@ -41,22 +41,11 @@ import java.io.PrintStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import static org.jetbrains.kotlin.cli.common.ExitCode.*;
import static org.jetbrains.kotlin.cli.common.environment.UtilKt.setIdeaIoUseFallback;
public abstract class CLICompiler<A extends CommonCompilerArguments> {
static private void setIdeaIoUseFallback() {
if (SystemInfo.isWindows) {
Properties properties = System.getProperties();
properties.setProperty("idea.io.use.nio2", Boolean.TRUE.toString());
if (!(SystemInfo.isJavaVersionAtLeast("1.7") && !"1.7.0-ea".equals(SystemInfo.JAVA_VERSION))) {
properties.setProperty("idea.io.use.fallback", Boolean.TRUE.toString());
}
}
}
@NotNull
public ExitCode exec(@NotNull PrintStream errStream, @NotNull String... args) {
@@ -17,6 +17,7 @@
package org.jetbrains.kotlin.daemon
import org.jetbrains.kotlin.cli.common.CLICompiler
import org.jetbrains.kotlin.cli.common.environment.setIdeaIoUseFallback
import org.jetbrains.kotlin.cli.js.K2JSCompiler
import org.jetbrains.kotlin.cli.jvm.K2JVMCompiler
import org.jetbrains.kotlin.cli.metadata.K2MetadataCompiler
@@ -94,6 +95,8 @@ object KotlinCompileDaemon {
log.info("daemon args: " + args.joinToString(" "))
log.info("daemon process name: " + ManagementFactory.getRuntimeMXBean().name)
setIdeaIoUseFallback()
val compilerId = CompilerId()
val daemonOptions = DaemonOptions()
@@ -18,6 +18,7 @@ package org.jetbrains.kotlin.script.jsr223
import org.jetbrains.kotlin.config.KotlinCompilerVersion
import org.jetbrains.kotlin.daemon.common.threadCpuTime
import org.jetbrains.kotlin.cli.common.environment.setIdeaIoUseFallback
import org.junit.Assert
import org.junit.Test
import java.lang.management.ManagementFactory
@@ -26,6 +27,10 @@ import javax.script.*
class KotlinJsr223LocalScriptEngineIT {
init {
setIdeaIoUseFallback()
}
@Test
fun testEngineFactory() {
val factory = ScriptEngineManager().getEngineByExtension("kts").factory