From 389a293caac5ed8803ef92ad9cc61e8983b35d16 Mon Sep 17 00:00:00 2001 From: Vladimir Lagunov Date: Tue, 25 Jun 2024 12:14:58 +0200 Subject: [PATCH] Revert "IJPL-149878 Ability to add specific VM options into Windows distributions" This reverts commit b2ee7a1fc721f37184360f5e300bc02b3fce113a. GitOrigin-RevId: c94a87137cbe1f51f7a243ba905506b7156cd2e1 --- .../build/WindowsDistributionCustomizer.kt | 5 ----- .../build/impl/LinuxDistributionBuilder.kt | 5 +++-- .../intellij/build/impl/MacDistributionBuilder.kt | 11 ++++++++--- .../intellij/build/impl/VmOptionsGenerator.kt | 15 +-------------- .../build/impl/WindowsDistributionBuilder.kt | 5 +++-- .../productRunner/ModuleBasedProductRunner.kt | 9 +-------- 6 files changed, 16 insertions(+), 34 deletions(-) diff --git a/platform/build-scripts/src/org/jetbrains/intellij/build/WindowsDistributionCustomizer.kt b/platform/build-scripts/src/org/jetbrains/intellij/build/WindowsDistributionCustomizer.kt index 1808d566c109..8a8f9e039d05 100644 --- a/platform/build-scripts/src/org/jetbrains/intellij/build/WindowsDistributionCustomizer.kt +++ b/platform/build-scripts/src/org/jetbrains/intellij/build/WindowsDistributionCustomizer.kt @@ -62,11 +62,6 @@ abstract class WindowsDistributionCustomizer { */ var useXPlatLauncher = true - /** - * Adds VM Options into a Windows distribution after adding options from [ProductProperties.additionalVmOptions]. - */ - var additionalWindowsVmOptions: PersistentList = persistentListOf() - /** * Name of the root directory in Windows .zip archive * (the method is overridden in [AndroidStudioProperties.groovy](https://bit.ly/3heXKlQ)). diff --git a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/LinuxDistributionBuilder.kt b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/LinuxDistributionBuilder.kt index 16f706985730..bda39cdcacdc 100644 --- a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/LinuxDistributionBuilder.kt +++ b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/LinuxDistributionBuilder.kt @@ -5,17 +5,18 @@ import com.intellij.openapi.util.SystemInfoRt import com.intellij.openapi.util.io.NioFiles import com.intellij.platform.diagnostic.telemetry.helpers.use import com.intellij.platform.diagnostic.telemetry.helpers.useWithScope +import org.jetbrains.intellij.build.impl.qodana.generateQodanaLaunchData import io.opentelemetry.api.trace.Span import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import org.jetbrains.intellij.build.* +import org.jetbrains.intellij.build.NativeBinaryDownloader import org.jetbrains.intellij.build.TraceManager.spanBuilder import org.jetbrains.intellij.build.impl.OsSpecificDistributionBuilder.Companion.suffix import org.jetbrains.intellij.build.impl.client.ADDITIONAL_EMBEDDED_CLIENT_VM_OPTIONS import org.jetbrains.intellij.build.impl.client.createJetBrainsClientContextForLaunchers import org.jetbrains.intellij.build.impl.productInfo.* -import org.jetbrains.intellij.build.impl.qodana.generateQodanaLaunchData import org.jetbrains.intellij.build.impl.support.RepairUtilityBuilder import org.jetbrains.intellij.build.io.* import java.nio.file.Files @@ -446,7 +447,7 @@ class LinuxDistributionBuilder( val vmOptionsPath = distBinDir.resolve("${context.productProperties.baseFileName}64.vmoptions") @Suppress("SpellCheckingInspection") - val vmOptions = VmOptionsGenerator.computeVmOptions(context, OsFamily.LINUX) + listOf("-Dsun.tools.attach.tmp.only=true", "-Dawt.lock.fair=true") + val vmOptions = VmOptionsGenerator.computeVmOptions(context) + listOf("-Dsun.tools.attach.tmp.only=true", "-Dawt.lock.fair=true") writeVmOptions(vmOptionsPath, vmOptions, separator = "\n") return vmOptionsPath diff --git a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/MacDistributionBuilder.kt b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/MacDistributionBuilder.kt index 22ea0d631ace..477863ff4570 100644 --- a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/MacDistributionBuilder.kt +++ b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/MacDistributionBuilder.kt @@ -6,17 +6,22 @@ import com.intellij.openapi.util.io.NioFiles import com.intellij.platform.diagnostic.telemetry.helpers.useWithScope import com.intellij.util.SystemProperties import com.intellij.util.io.Decompressor +import org.jetbrains.intellij.build.impl.qodana.generateQodanaLaunchData import io.opentelemetry.api.common.AttributeKey import io.opentelemetry.api.trace.Span -import kotlinx.coroutines.* +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.NonCancellable +import kotlinx.coroutines.coroutineScope +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext import org.apache.commons.compress.archivers.zip.Zip64Mode import org.apache.commons.compress.archivers.zip.ZipArchiveEntry import org.jetbrains.intellij.build.* +import org.jetbrains.intellij.build.NativeBinaryDownloader import org.jetbrains.intellij.build.TraceManager.spanBuilder import org.jetbrains.intellij.build.impl.OsSpecificDistributionBuilder.Companion.suffix import org.jetbrains.intellij.build.impl.client.createJetBrainsClientContextForLaunchers import org.jetbrains.intellij.build.impl.productInfo.* -import org.jetbrains.intellij.build.impl.qodana.generateQodanaLaunchData import org.jetbrains.intellij.build.impl.support.RepairUtilityBuilder import org.jetbrains.intellij.build.io.* import java.nio.file.Files @@ -424,7 +429,7 @@ class MacDistributionBuilder( private fun writeMacOsVmOptions(distBinDir: Path, context: BuildContext): Path { val executable = context.productProperties.baseFileName - val fileVmOptions = VmOptionsGenerator.computeVmOptions(context, OsFamily.MACOS) + listOf("-Dapple.awt.application.appearance=system") + val fileVmOptions = VmOptionsGenerator.computeVmOptions(context) + listOf("-Dapple.awt.application.appearance=system") val vmOptionsPath = distBinDir.resolve("$executable.vmoptions") writeVmOptions(vmOptionsPath, fileVmOptions, separator = "\n") return vmOptionsPath diff --git a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/VmOptionsGenerator.kt b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/VmOptionsGenerator.kt index a5cc501edaeb..3b06b2070293 100644 --- a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/VmOptionsGenerator.kt +++ b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/VmOptionsGenerator.kt @@ -2,7 +2,6 @@ package org.jetbrains.intellij.build.impl import org.jetbrains.intellij.build.BuildContext -import org.jetbrains.intellij.build.OsFamily import java.nio.charset.StandardCharsets import java.nio.file.Files import java.nio.file.Path @@ -45,20 +44,8 @@ private const val CUSTOM_BUILT_IN_PLUGIN_REPOSITORY_PROPERTY = "intellij.plugins @Suppress("IdentifierGrammar") object VmOptionsGenerator { - fun computeVmOptions(context: BuildContext, osFamily: OsFamily): List { + fun computeVmOptions(context: BuildContext): List { var additionalVmOptions = context.productProperties.additionalVmOptions - - val osSpecificFmOptions = when (osFamily) { - OsFamily.WINDOWS -> context.windowsDistributionCustomizer?.additionalWindowsVmOptions - OsFamily.MACOS, OsFamily.LINUX -> { - // Please implement when required. - null - } - } - if (osSpecificFmOptions != null) { - additionalVmOptions = additionalVmOptions.addAll(osSpecificFmOptions) - } - val customPluginRepositoryUrl = computeCustomPluginRepositoryUrl(context) if (customPluginRepositoryUrl != null) { additionalVmOptions = additionalVmOptions.add("-D$CUSTOM_BUILT_IN_PLUGIN_REPOSITORY_PROPERTY=$customPluginRepositoryUrl") diff --git a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/WindowsDistributionBuilder.kt b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/WindowsDistributionBuilder.kt index 9e63e4ecab05..9d32ec4bc52c 100644 --- a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/WindowsDistributionBuilder.kt +++ b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/WindowsDistributionBuilder.kt @@ -6,16 +6,17 @@ import com.intellij.openapi.util.io.NioFiles import com.intellij.openapi.util.text.StringUtilRt import com.intellij.platform.diagnostic.telemetry.helpers.useWithScope import com.jetbrains.plugin.structure.base.utils.exists +import org.jetbrains.intellij.build.impl.qodana.generateQodanaLaunchData import io.opentelemetry.api.common.AttributeKey import io.opentelemetry.api.trace.Span import kotlinx.coroutines.* import org.jetbrains.intellij.build.* +import org.jetbrains.intellij.build.NativeBinaryDownloader import org.jetbrains.intellij.build.TraceManager.spanBuilder import org.jetbrains.intellij.build.impl.OsSpecificDistributionBuilder.Companion.suffix import org.jetbrains.intellij.build.impl.client.ADDITIONAL_EMBEDDED_CLIENT_VM_OPTIONS import org.jetbrains.intellij.build.impl.client.createJetBrainsClientContextForLaunchers import org.jetbrains.intellij.build.impl.productInfo.* -import org.jetbrains.intellij.build.impl.qodana.generateQodanaLaunchData import org.jetbrains.intellij.build.impl.support.RepairUtilityBuilder import org.jetbrains.intellij.build.io.* import java.nio.file.Files @@ -413,7 +414,7 @@ internal class WindowsDistributionBuilder( private fun writeWindowsVmOptions(distBinDir: Path, context: BuildContext): Path { val vmOptionsFile = distBinDir.resolve("${context.productProperties.baseFileName}64.exe.vmoptions") - val vmOptions = VmOptionsGenerator.computeVmOptions(context, OsFamily.WINDOWS) + val vmOptions = VmOptionsGenerator.computeVmOptions(context) writeVmOptions(vmOptionsFile, vmOptions, separator = "\r\n") return vmOptionsFile } diff --git a/platform/build-scripts/src/org/jetbrains/intellij/build/productRunner/ModuleBasedProductRunner.kt b/platform/build-scripts/src/org/jetbrains/intellij/build/productRunner/ModuleBasedProductRunner.kt index 18e03f2d2233..d0bdc749b44d 100644 --- a/platform/build-scripts/src/org/jetbrains/intellij/build/productRunner/ModuleBasedProductRunner.kt +++ b/platform/build-scripts/src/org/jetbrains/intellij/build/productRunner/ModuleBasedProductRunner.kt @@ -1,10 +1,8 @@ // Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package org.jetbrains.intellij.build.productRunner -import com.intellij.openapi.util.SystemInfoRt import com.intellij.platform.runtime.repository.RuntimeModuleId import org.jetbrains.intellij.build.BuildContext -import org.jetbrains.intellij.build.OsFamily import org.jetbrains.intellij.build.VmProperties import org.jetbrains.intellij.build.impl.VmOptionsGenerator import kotlin.io.path.pathString @@ -26,17 +24,12 @@ internal class ModuleBasedProductRunner(private val rootModuleForModularLoader: val loaderModule = context.originalModuleRepository.repository.getModule(RuntimeModuleId.module("intellij.platform.runtime.loader")) val ideClasspath = loaderModule.moduleClasspath.map { it.pathString } - val osFamily = when { - SystemInfoRt.isWindows -> OsFamily.WINDOWS - SystemInfoRt.isMac -> OsFamily.MACOS - else -> OsFamily.LINUX - } runApplicationStarter( context = context, classpath = ideClasspath, args = args, vmProperties = systemProperties + additionalVmProperties, - vmOptions = VmOptionsGenerator.computeVmOptions(context, osFamily) + + vmOptions = VmOptionsGenerator.computeVmOptions(context) + //we need to unset 'jna.nounpack' (see IJ-CR-125211), otherwise the process will fail to load JNA on macOS (IJPL-150094) context.productProperties.additionalIdeJvmArguments.filterNot { it == "-Djna.nounpack=true" } + context.productProperties.getAdditionalContextDependentIdeJvmArguments(context),