From 1faf780399146da7ddc2cab7648020faf7b9b386 Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Mon, 8 Jul 2024 08:04:25 +0200 Subject: [PATCH] build script downloader - switch to JDK engine as CIO doesn't support TLS 1.3 It leads to a duplicated ktor files in dist, but that is relatively ok GitOrigin-RevId: 091579a4dae960415ad2ddbc2bbbfa92d75fbe65 --- .idea/libraries/ktor_client_java.xml | 53 ++++++++++++++++ .../ktor_serialization_kotlinx_json.xml | 9 ++- .idea/modules.xml | 1 + .../impl/intellij.java.debugger.impl.iml | 1 - .../impl/RemoteConnectionBuilder.java | 3 +- .../intellij.libraries.ktor.client.cio.iml | 61 +++++++++++++++++++ .../intellij.libraries.ktor.client.cio.xml | 6 ++ .../intellij.libraries.ktor.client.iml | 20 +----- ...ellij.platform.buildScripts.downloader.iml | 2 +- platform/build-scripts/downloader/src/ktor.kt | 9 +-- .../intellij.platform.buildScripts.iml | 2 +- .../build/CommunityLibraryLicenses.kt | 8 ++- .../build/CommunityRepositoryModules.kt | 1 + .../build/JarPackagerDependencyHelper.kt | 7 +-- .../intellij/build/impl/PlatformModules.kt | 2 +- platform/jps-bootstrap/pom.xml | 2 +- .../src/META-INF/essential-modules.xml | 1 + .../util/http/intellij.platform.util.http.iml | 2 +- platform/util/http/src/client.kt | 12 ++-- .../idea/packagesearch/api/KtorUtils.kt | 10 --- 20 files changed, 155 insertions(+), 57 deletions(-) create mode 100644 .idea/libraries/ktor_client_java.xml create mode 100644 libraries/ktor-client-cio/intellij.libraries.ktor.client.cio.iml create mode 100644 libraries/ktor-client-cio/resources/intellij.libraries.ktor.client.cio.xml diff --git a/.idea/libraries/ktor_client_java.xml b/.idea/libraries/ktor_client_java.xml new file mode 100644 index 000000000000..f72cc8b84e83 --- /dev/null +++ b/.idea/libraries/ktor_client_java.xml @@ -0,0 +1,53 @@ + + + + + + c17d8f1ac1d6bcfe3c164e9efd92aaeeab0cbedad54f4c269451fce38d4de3ef + + + bc81ef5e0989abb3041242f296631c8d12e093ddcdb224cd6696d047fe921292 + + + 5d729636363fc35e220ac31dd0103633c8ab1af1264c07fbccd3f2c25b0bb318 + + + 1ce33e66d42d74828c2e09c75a8f68310023cdc0d2920db77dc0ddc37bea8628 + + + 4c33dd51a1d6d734c8c127cea96a1cfa024dc1d451ed1e2a86c297fa05f1dc29 + + + ed5e0657a1ed5857d12717f1df20fa22bf00ddb88ae9d2558de4ed51d7f4151e + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/ktor_serialization_kotlinx_json.xml b/.idea/libraries/ktor_serialization_kotlinx_json.xml index 41df5de6d979..838d8d4a9633 100644 --- a/.idea/libraries/ktor_serialization_kotlinx_json.xml +++ b/.idea/libraries/ktor_serialization_kotlinx_json.xml @@ -8,6 +8,9 @@ 40a27f5347c8b737d7b8c2ef224d638a9e40d011aa9a56fb489b99ba9898d90d + + 7d942475bf3995fe080c5f103532e51736d0c474aea3d9f6133a4031ae08799a + @@ -16,20 +19,22 @@ - - + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml index a18e7784dc13..108f11136f04 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -510,6 +510,7 @@ + diff --git a/java/debugger/impl/intellij.java.debugger.impl.iml b/java/debugger/impl/intellij.java.debugger.impl.iml index 4db8284d9068..f1fceb257af6 100644 --- a/java/debugger/impl/intellij.java.debugger.impl.iml +++ b/java/debugger/impl/intellij.java.debugger.impl.iml @@ -73,7 +73,6 @@ - diff --git a/java/debugger/impl/src/com/intellij/debugger/impl/RemoteConnectionBuilder.java b/java/debugger/impl/src/com/intellij/debugger/impl/RemoteConnectionBuilder.java index bbf487e9e327..a675e11766ae 100644 --- a/java/debugger/impl/src/com/intellij/debugger/impl/RemoteConnectionBuilder.java +++ b/java/debugger/impl/src/com/intellij/debugger/impl/RemoteConnectionBuilder.java @@ -33,7 +33,6 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.intellij.build.BuildDependenciesJps; import org.jetbrains.intellij.build.dependencies.BuildDependenciesCommunityRoot; -import org.jetbrains.intellij.build.dependencies.BuildDependenciesConstants; import java.io.File; import java.io.FileOutputStream; @@ -216,7 +215,7 @@ public class RemoteConnectionBuilder { Path downloadedAgent = BuildDependenciesJps.getModuleLibrarySingleRoot( iml, "debugger-agent", - BuildDependenciesConstants.INTELLIJ_DEPENDENCIES_URL, + "https://cache-redirector.jetbrains.com/intellij-dependencies", new BuildDependenciesCommunityRoot(Path.of(PathManager.getCommunityHomePath()))); Files.copy(downloadedAgent, agentArtifactPath); diff --git a/libraries/ktor-client-cio/intellij.libraries.ktor.client.cio.iml b/libraries/ktor-client-cio/intellij.libraries.ktor.client.cio.iml new file mode 100644 index 000000000000..b7c826c5ea3f --- /dev/null +++ b/libraries/ktor-client-cio/intellij.libraries.ktor.client.cio.iml @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + 7ad22d5e890bd478aa002b889de30c8281a855198d4906b66b8862531ac5898f + + + ba4bbc9b86ba9ff09a106e6a96e9cb559c5e1a9f092abbd82bab1a1345544f45 + + + f076335b06e4758f2b3e318eb367007c8fddfc71a9766cdeca3e7b5fb9709f7a + + + 3ccc86a35b4301945ba20c8a7ef70e10911558525c3a28274aa36f32ffc2ade9 + + + aac910965317afb70024e4de01c65dc2150601513ffda30cc74049cd5435dc6f + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/libraries/ktor-client-cio/resources/intellij.libraries.ktor.client.cio.xml b/libraries/ktor-client-cio/resources/intellij.libraries.ktor.client.cio.xml new file mode 100644 index 000000000000..43c4ed0a9ce6 --- /dev/null +++ b/libraries/ktor-client-cio/resources/intellij.libraries.ktor.client.cio.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/libraries/ktor-client/intellij.libraries.ktor.client.iml b/libraries/ktor-client/intellij.libraries.ktor.client.iml index 194b219329f8..4cbb693f7b83 100644 --- a/libraries/ktor-client/intellij.libraries.ktor.client.iml +++ b/libraries/ktor-client/intellij.libraries.ktor.client.iml @@ -7,28 +7,10 @@ - + - - - - - - c17d8f1ac1d6bcfe3c164e9efd92aaeeab0cbedad54f4c269451fce38d4de3ef - - - - - - - - - - - - \ No newline at end of file diff --git a/platform/build-scripts/downloader/intellij.platform.buildScripts.downloader.iml b/platform/build-scripts/downloader/intellij.platform.buildScripts.downloader.iml index a64e55c06c82..8589a0fdf218 100644 --- a/platform/build-scripts/downloader/intellij.platform.buildScripts.downloader.iml +++ b/platform/build-scripts/downloader/intellij.platform.buildScripts.downloader.iml @@ -31,11 +31,11 @@ - + \ No newline at end of file diff --git a/platform/build-scripts/downloader/src/ktor.kt b/platform/build-scripts/downloader/src/ktor.kt index 31c35fbb16cd..4ae7567f5213 100644 --- a/platform/build-scripts/downloader/src/ktor.kt +++ b/platform/build-scripts/downloader/src/ktor.kt @@ -5,8 +5,9 @@ package org.jetbrains.intellij.build import io.ktor.client.HttpClient import io.ktor.client.HttpClientConfig import io.ktor.client.call.body -import io.ktor.client.engine.cio.CIO +import io.ktor.client.engine.java.Java import io.ktor.client.plugins.HttpRequestRetry +import io.ktor.client.plugins.HttpTimeout import io.ktor.client.plugins.UserAgent import io.ktor.client.plugins.auth.Auth import io.ktor.client.plugins.auth.providers.BasicAuthCredentials @@ -55,11 +56,11 @@ const val SPACE_REPO_HOST: String = "packages.jetbrains.team" private val httpClient = SynchronizedClearableLazy { // HttpTimeout is not used - CIO engine handles that - HttpClient(CIO) { + HttpClient(Java) { expectSuccess = true - engine { - requestTimeout = 2.hours.inWholeMilliseconds + install(HttpTimeout) { + requestTimeoutMillis = 2.hours.inWholeMilliseconds } install(ContentEncoding) { diff --git a/platform/build-scripts/intellij.platform.buildScripts.iml b/platform/build-scripts/intellij.platform.buildScripts.iml index 4fe111b1dc39..3c6fd21ed261 100644 --- a/platform/build-scripts/intellij.platform.buildScripts.iml +++ b/platform/build-scripts/intellij.platform.buildScripts.iml @@ -237,7 +237,7 @@ - + \ No newline at end of file diff --git a/platform/build-scripts/src/org/jetbrains/intellij/build/CommunityLibraryLicenses.kt b/platform/build-scripts/src/org/jetbrains/intellij/build/CommunityLibraryLicenses.kt index cd0ef0f22356..8f937b861961 100644 --- a/platform/build-scripts/src/org/jetbrains/intellij/build/CommunityLibraryLicenses.kt +++ b/platform/build-scripts/src/org/jetbrains/intellij/build/CommunityLibraryLicenses.kt @@ -702,8 +702,10 @@ object CommunityLibraryLicenses { url = "https://github.com/ktorio/ktor") .apache("https://github.com/ktorio/ktor/blob/main/LICENSE") .suppliedByOrganizations(Suppliers.JETBRAINS), - LibraryLicense(libraryName = "ktor-client-cio", - url = "https://github.com/ktorio/ktor") + LibraryLicense(libraryName = "ktor-client-cio", url = "https://github.com/ktorio/ktor") + .apache("https://github.com/ktorio/ktor/blob/main/LICENSE") + .suppliedByOrganizations(Suppliers.JETBRAINS), + LibraryLicense(libraryName = "ktor-client-cio-internal", url = "https://github.com/ktorio/ktor") .apache("https://github.com/ktorio/ktor/blob/main/LICENSE") .suppliedByOrganizations(Suppliers.JETBRAINS), LibraryLicense(libraryName = "ktor-client-content-negotiation", @@ -714,7 +716,7 @@ object CommunityLibraryLicenses { url = "https://github.com/ktorio/ktor") .apache("https://github.com/ktorio/ktor/blob/main/LICENSE") .suppliedByOrganizations(Suppliers.JETBRAINS), - LibraryLicense(libraryName = "ktor-client-java-engine", + LibraryLicense(libraryName = "ktor-client-java", url = "https://github.com/ktorio/ktor") .apache("https://github.com/ktorio/ktor/blob/main/LICENSE") .suppliedByOrganizations(Suppliers.JETBRAINS), diff --git a/platform/build-scripts/src/org/jetbrains/intellij/build/CommunityRepositoryModules.kt b/platform/build-scripts/src/org/jetbrains/intellij/build/CommunityRepositoryModules.kt index d624854db5ac..93422908416e 100644 --- a/platform/build-scripts/src/org/jetbrains/intellij/build/CommunityRepositoryModules.kt +++ b/platform/build-scripts/src/org/jetbrains/intellij/build/CommunityRepositoryModules.kt @@ -86,6 +86,7 @@ object CommunityRepositoryModules { spec.withModuleLibrary("RMI Stubs", "intellij.xslt.debugger.rt", "rmi-stubs.jar") }, plugin("intellij.maven") { spec -> + spec.withModule("intellij.idea.community.build.dependencies") spec.withModule("intellij.maven.jps") spec.withModule("intellij.maven.server.m3.common", "maven3-server-common.jar") spec.withModule("intellij.maven.server.m3.impl", "maven3-server.jar") diff --git a/platform/build-scripts/src/org/jetbrains/intellij/build/JarPackagerDependencyHelper.kt b/platform/build-scripts/src/org/jetbrains/intellij/build/JarPackagerDependencyHelper.kt index c9724bb10912..d88ff5c724eb 100644 --- a/platform/build-scripts/src/org/jetbrains/intellij/build/JarPackagerDependencyHelper.kt +++ b/platform/build-scripts/src/org/jetbrains/intellij/build/JarPackagerDependencyHelper.kt @@ -5,7 +5,6 @@ package org.jetbrains.intellij.build import com.intellij.util.xml.dom.XmlElement import com.intellij.util.xml.dom.readXmlAsModel -import io.ktor.util.decodeString import org.jetbrains.intellij.build.impl.ModuleItem import org.jetbrains.intellij.build.impl.ModuleOutputPatcher import org.jetbrains.intellij.build.impl.PluginLayout @@ -17,7 +16,6 @@ import java.io.StringReader import java.nio.file.Files import java.nio.file.Path import java.util.concurrent.ConcurrentHashMap -import kotlin.io.path.extension // production-only - JpsJavaClasspathKind.PRODUCTION_RUNTIME internal class JarPackagerDependencyHelper(private val context: BuildContext) { @@ -37,9 +35,10 @@ internal class JarPackagerDependencyHelper(private val context: BuildContext) { fun getPluginXmlContent(pluginModule: JpsModule): String { val moduleOutput = context.getModuleOutputDir(pluginModule) - if (moduleOutput.extension == "jar") { + if (moduleOutput.toString().endsWith(".jar")) { return getPluginXmlContentFromJar(moduleOutput) } + val pluginXmlFile = moduleOutput.resolve("META-INF/plugin.xml") try { return Files.readString(pluginXmlFile) @@ -53,7 +52,7 @@ internal class JarPackagerDependencyHelper(private val context: BuildContext) { var pluginXmlContent: String? = null readZipFile(moduleJar) { name, data -> if (name == "META-INF/plugin.xml") - pluginXmlContent = data().decodeString() + pluginXmlContent = Charsets.UTF_8.decode(data()).toString() } return pluginXmlContent ?: throw IllegalStateException("META-INF/plugin.xml not found in ${moduleJar} module") diff --git a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/PlatformModules.kt b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/PlatformModules.kt index 807e33f077af..3993096e3d80 100644 --- a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/PlatformModules.kt +++ b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/PlatformModules.kt @@ -71,8 +71,8 @@ private val PLATFORM_IMPLEMENTATION_MODULES = java.util.List.of( "intellij.remoteDev.util", "intellij.platform.feedback", "intellij.platform.warmup", - "intellij.idea.community.build.dependencies", "intellij.platform.usageView.impl", + "intellij.platform.buildScripts.downloader", "intellij.platform.ml.impl", "intellij.platform.runtime.product", diff --git a/platform/jps-bootstrap/pom.xml b/platform/jps-bootstrap/pom.xml index eb5ae49ea1ef..29f2d9264700 100644 --- a/platform/jps-bootstrap/pom.xml +++ b/platform/jps-bootstrap/pom.xml @@ -52,7 +52,7 @@ io.ktor - ktor-client-cio-jvm + ktor-client-java-jvm 2.3.8 diff --git a/platform/platform-resources/src/META-INF/essential-modules.xml b/platform/platform-resources/src/META-INF/essential-modules.xml index ada6c1f1b9f1..70675b252b11 100644 --- a/platform/platform-resources/src/META-INF/essential-modules.xml +++ b/platform/platform-resources/src/META-INF/essential-modules.xml @@ -2,6 +2,7 @@ + diff --git a/platform/util/http/intellij.platform.util.http.iml b/platform/util/http/intellij.platform.util.http.iml index b69bacdda38d..0797c3feebd3 100644 --- a/platform/util/http/intellij.platform.util.http.iml +++ b/platform/util/http/intellij.platform.util.http.iml @@ -26,6 +26,6 @@ - + \ No newline at end of file diff --git a/platform/util/http/src/client.kt b/platform/util/http/src/client.kt index 4962d4f59b05..1d445425ce12 100644 --- a/platform/util/http/src/client.kt +++ b/platform/util/http/src/client.kt @@ -2,9 +2,9 @@ package com.intellij.platform.util.http import io.ktor.client.HttpClient -import io.ktor.client.engine.cio.CIO -import io.ktor.client.engine.cio.endpoint +import io.ktor.client.engine.java.Java import io.ktor.client.plugins.HttpRequestRetry +import io.ktor.client.plugins.HttpTimeout import io.ktor.client.request.get import io.ktor.client.request.head import io.ktor.client.request.post @@ -19,17 +19,15 @@ import java.io.OutputStream private val httpClient: HttpClient by lazy { // HttpTimeout is not used - CIO engine handles that - HttpClient(CIO) { + HttpClient(Java) { expectSuccess = true install(HttpRequestRetry) { retryOnExceptionOrServerErrors(maxRetries = 3) exponentialDelay() } - engine { - endpoint { - connectTimeout = System.getProperty("idea.connection.timeout")?.toLongOrNull() ?: 10_000 - } + install(HttpTimeout) { + connectTimeoutMillis = System.getProperty("idea.connection.timeout")?.toLongOrNull() ?: 10_000 } } } diff --git a/plugins/repository-search/src/main/kotlin/org/jetbrains/idea/packagesearch/api/KtorUtils.kt b/plugins/repository-search/src/main/kotlin/org/jetbrains/idea/packagesearch/api/KtorUtils.kt index 80f64803d4e0..320433b249ff 100644 --- a/plugins/repository-search/src/main/kotlin/org/jetbrains/idea/packagesearch/api/KtorUtils.kt +++ b/plugins/repository-search/src/main/kotlin/org/jetbrains/idea/packagesearch/api/KtorUtils.kt @@ -9,19 +9,9 @@ import io.ktor.client.request.HttpRequestBuilder import io.ktor.client.request.get import io.ktor.client.request.headers import io.ktor.http.* -import io.ktor.serialization.ContentConverter import io.ktor.serialization.kotlinx.KotlinxSerializationConverter import io.ktor.util.StringValuesBuilder -import io.ktor.util.reflect.TypeInfo -import io.ktor.utils.io.ByteReadChannel -import io.ktor.utils.io.charsets.Charset -import io.ktor.utils.io.core.readText -import kotlinx.serialization.KSerializer -import kotlinx.serialization.builtins.nullable import kotlinx.serialization.json.Json -import kotlinx.serialization.modules.SerializersModule -import kotlinx.serialization.serializer -import kotlinx.serialization.serializerOrNull import org.jetbrains.packagesearch.api.v2.ApiPackagesResponse import org.jetbrains.packagesearch.api.v2.ApiStandardPackage import kotlin.time.Duration