mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-04-20 13:31:28 +07:00
IJent, DevKit: enable the new default FS only if it is in the source code
Otherwise, it's impossible to use Dev Build for branches that don't have MultiRoutingFileSystemProvider, like the branch 241. GitOrigin-RevId: 247b84e22b2734f2541983df7cef886b7ec4b82d
This commit is contained in:
committed by
intellij-monorepo-bot
parent
a213539214
commit
0fcfb9eacd
@@ -22,8 +22,10 @@ const val IJENT_BOOT_CLASSPATH_MODULE = "intellij.platform.core.nio.fs"
|
||||
|
||||
const val IJENT_WSL_FILE_SYSTEM_REGISTRY_KEY = "wsl.use.remote.agent.for.nio.filesystem"
|
||||
|
||||
const val IJENT_REQUIRED_DEFAULT_NIO_FS_PROVIDER_CLASS = "com.intellij.platform.core.nio.fs.MultiRoutingFileSystemProvider"
|
||||
|
||||
val ENABLE_IJENT_WSL_FILE_SYSTEM_VMOPTIONS: List<String> = listOf(
|
||||
"-Djava.nio.file.spi.DefaultFileSystemProvider=com.intellij.platform.core.nio.fs.MultiRoutingFileSystemProvider",
|
||||
"-Djava.nio.file.spi.DefaultFileSystemProvider=$IJENT_REQUIRED_DEFAULT_NIO_FS_PROVIDER_CLASS",
|
||||
"-Djava.security.manager=com.intellij.platform.core.nio.fs.CoreBootstrapSecurityManager",
|
||||
"-D${IJENT_WSL_FILE_SYSTEM_REGISTRY_KEY}=true"
|
||||
)
|
||||
@@ -11,9 +11,7 @@ import com.intellij.openapi.components.service
|
||||
import com.intellij.openapi.project.IntelliJProjectUtil
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.util.io.FileUtilRt
|
||||
import com.intellij.platform.ijent.community.buildConstants.ENABLE_IJENT_WSL_FILE_SYSTEM_VMOPTIONS
|
||||
import com.intellij.platform.ijent.community.buildConstants.IJENT_BOOT_CLASSPATH_MODULE
|
||||
import com.intellij.platform.ijent.community.buildConstants.isIjentWslFsEnabledByDefaultForProduct
|
||||
import com.intellij.platform.ijent.community.buildConstants.*
|
||||
import com.intellij.util.PlatformUtils
|
||||
import com.intellij.util.lang.UrlClassLoader
|
||||
import com.intellij.util.system.CpuArch
|
||||
@@ -27,9 +25,11 @@ import kotlin.io.path.invariantSeparatorsPathString
|
||||
|
||||
internal class DevKitApplicationPatcher : RunConfigurationExtension() {
|
||||
@Suppress("SpellCheckingInspection")
|
||||
override fun <T : RunConfigurationBase<*>> updateJavaParameters(configuration: T,
|
||||
javaParameters: JavaParameters,
|
||||
runnerSettings: RunnerSettings?) {
|
||||
override fun <T : RunConfigurationBase<*>> updateJavaParameters(
|
||||
configuration: T,
|
||||
javaParameters: JavaParameters,
|
||||
runnerSettings: RunnerSettings?,
|
||||
) {
|
||||
val project = configuration.project
|
||||
if (!IntelliJProjectUtil.isIntelliJPlatformProject(project)) {
|
||||
return
|
||||
@@ -38,7 +38,7 @@ internal class DevKitApplicationPatcher : RunConfigurationExtension() {
|
||||
return
|
||||
}
|
||||
val mainClass = configuration.runClass ?: return
|
||||
|
||||
|
||||
passDataAboutBuiltInServer(javaParameters, project)
|
||||
val vmParameters = javaParameters.vmParametersList
|
||||
val module = configuration.configurationModule.module
|
||||
@@ -91,16 +91,31 @@ internal class DevKitApplicationPatcher : RunConfigurationExtension() {
|
||||
vmParameters.add("-XX:ReservedCodeCacheSize=512m")
|
||||
}
|
||||
|
||||
if (isIjentWslFsEnabledByDefaultForProduct(vmParameters.getPropertyValue("idea.platform.prefix"))) {
|
||||
vmParameters.addAll(ENABLE_IJENT_WSL_FILE_SYSTEM_VMOPTIONS)
|
||||
vmParameters.add("-Xbootclasspath/a:${configuration.workingDirectory}/out/classes/production/$IJENT_BOOT_CLASSPATH_MODULE")
|
||||
}
|
||||
enableIjentDefaultFsProvider(project, configuration, vmParameters)
|
||||
|
||||
if (isDevBuild) {
|
||||
updateParametersForDevBuild(javaParameters, configuration, project)
|
||||
}
|
||||
}
|
||||
|
||||
private fun enableIjentDefaultFsProvider(
|
||||
project: Project,
|
||||
configuration: JavaRunConfigurationBase,
|
||||
vmParameters: ParametersList,
|
||||
) {
|
||||
if (!isIjentWslFsEnabledByDefaultForProduct(vmParameters.getPropertyValue("idea.platform.prefix"))) return
|
||||
|
||||
// Enable the IJent file system only when the new default FS provider class is available.
|
||||
// It is required to let actual DevKit plugins work with branches without the FS provider class, like 241.
|
||||
if (JUnitDevKitPatcher.loaderValid(project, null, IJENT_REQUIRED_DEFAULT_NIO_FS_PROVIDER_CLASS)) {
|
||||
vmParameters.addAll(ENABLE_IJENT_WSL_FILE_SYSTEM_VMOPTIONS)
|
||||
vmParameters.add("-Xbootclasspath/a:${configuration.workingDirectory}/out/classes/production/$IJENT_BOOT_CLASSPATH_MODULE")
|
||||
}
|
||||
else {
|
||||
vmParameters.add("-D${IJENT_WSL_FILE_SYSTEM_REGISTRY_KEY}=false")
|
||||
}
|
||||
}
|
||||
|
||||
private fun updateParametersForDevBuild(javaParameters: JavaParameters, configuration: JavaRunConfigurationBase, project: Project) {
|
||||
val vmParameters = javaParameters.vmParametersList
|
||||
if (configuration.beforeRunTasks.none { it.providerId === MakeProjectStepBeforeRun.ID }) {
|
||||
|
||||
Reference in New Issue
Block a user