diff --git a/.idea/modules.xml b/.idea/modules.xml index 53cee3aaa102..a8ebbfaf0f47 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -1067,6 +1067,7 @@ + diff --git a/build/bazel-generated-file-list.txt b/build/bazel-generated-file-list.txt index a9d1505028da..23a49e051135 100644 --- a/build/bazel-generated-file-list.txt +++ b/build/bazel-generated-file-list.txt @@ -494,6 +494,7 @@ libraries/kotlinx/serialization/cbor libraries/kotlinx/serialization/core libraries/kotlinx/serialization/json libraries/kotlinx/serialization/protobuf +libraries/kryo2 libraries/kryo5 libraries/ktor/client libraries/ktor/client-cio diff --git a/lib/BUILD.bazel b/lib/BUILD.bazel index 697835983d01..6916e4c78a08 100644 --- a/lib/BUILD.bazel +++ b/lib/BUILD.bazel @@ -12444,6 +12444,51 @@ jvm_import( visibility = ["//visibility:public"], ) +copy_file( + name = "com.esotericsoftware.kryo/kryo-2.24.0.jar_copy", + src = "@com_esotericsoftware_kryo-kryo-2_24_0_http//file", + out = "com.esotericsoftware.kryo/kryo-2.24.0.jar", + allow_symlink = True, + visibility = ["//visibility:public"], +) + +copy_file( + name = "com.esotericsoftware.minlog/minlog-1.2.jar_copy", + src = "@com_esotericsoftware_minlog-minlog-1_2_http//file", + out = "com.esotericsoftware.minlog/minlog-1.2.jar", + allow_symlink = True, + visibility = ["//visibility:public"], +) + +java_library( + name = "libraries-kryo2-_kryo", + visibility = ["//visibility:public"], + exports = [ + # do not sort, + ":com_esotericsoftware_kryo-kryo-2_24_0_http_import", + ":com_esotericsoftware_minlog-minlog-1_2_http_import", + ], +) + +jvm_import( + name = "com_esotericsoftware_kryo-kryo-2_24_0_http_import", + jar = "@com_esotericsoftware_kryo-kryo-2_24_0_http//file", + source_jar = "@com_esotericsoftware_kryo-kryo-2_24_0-sources_http//file", +) + +jvm_import( + name = "com_esotericsoftware_minlog-minlog-1_2_http_import", + jar = "@com_esotericsoftware_minlog-minlog-1_2_http//file", + source_jar = "@com_esotericsoftware_minlog-minlog-1_2-sources_http//file", +) + +jvm_import( + name = "libraries-kryo2-_objenesis", + jar = "@org_objenesis-objenesis-3_4_http//file", + source_jar = "@org_objenesis-objenesis-3_4-sources_http//file", + visibility = ["//visibility:public"], +) + copy_file( name = "com.esotericsoftware/kryo5-5.6.0.jar_copy", src = "@com_esotericsoftware-kryo5-5_6_0_http//file", diff --git a/lib/MODULE.bazel b/lib/MODULE.bazel index f0456b17ff2d..bbc96a6cae82 100644 --- a/lib/MODULE.bazel +++ b/lib/MODULE.bazel @@ -9772,6 +9772,34 @@ http_file( url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-protobuf-jvm/1.9.0/kotlinx-serialization-protobuf-jvm-1.9.0-sources.jar", ) +http_file( + name = "com_esotericsoftware_kryo-kryo-2_24_0_http", + downloaded_file_path = "kryo-2.24.0.jar", + sha256 = "7e56b32c635058f9aa2820f88919ab702d029cbcd15285da9992e36cc0ae52f2", + url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/com/esotericsoftware/kryo/kryo/2.24.0/kryo-2.24.0.jar", +) + +http_file( + name = "com_esotericsoftware_minlog-minlog-1_2_http", + downloaded_file_path = "minlog-1.2.jar", + sha256 = "a678cb1aa8f5d03d901c992c75741841d98a9bc3d55dad02e84d65315c4e60f2", + url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/com/esotericsoftware/minlog/minlog/1.2/minlog-1.2.jar", +) + +http_file( + name = "com_esotericsoftware_kryo-kryo-2_24_0-sources_http", + downloaded_file_path = "kryo-2.24.0-sources.jar", + sha256 = "617593f9253ee4246db001641630359df8a8ed9f306a1590e54d6cc091b37439", + url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/com/esotericsoftware/kryo/kryo/2.24.0/kryo-2.24.0-sources.jar", +) + +http_file( + name = "com_esotericsoftware_minlog-minlog-1_2-sources_http", + downloaded_file_path = "minlog-1.2-sources.jar", + sha256 = "7c9f5c5b4a541ed9669de73bdc8afbade8cf45e2bbe36c1bd420f74533eedaa8", + url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/com/esotericsoftware/minlog/minlog/1.2/minlog-1.2-sources.jar", +) + http_file( name = "com_esotericsoftware-kryo5-5_6_0_http", downloaded_file_path = "kryo5-5.6.0.jar", diff --git a/libraries/kryo2/BUILD.bazel b/libraries/kryo2/BUILD.bazel new file mode 100644 index 000000000000..cb63b7fa7a3e --- /dev/null +++ b/libraries/kryo2/BUILD.bazel @@ -0,0 +1,55 @@ +load("@rules_jvm//:jvm.bzl", "jvm_library") + +### auto-generated section `build intellij.libraries.kryo2` start + +jvm_library( + name = "kryo2", + srcs = glob( + [], + allow_empty = True, + ), + module_name = "intellij.libraries.kryo2", + resource_strip_prefix = "resources", + resources = glob( + ["resources/**/*"], + ), + visibility = ["//visibility:public"], + exports = [ + # do not sort, + "@lib//:libraries-kryo2-_kryo", + "@lib//:libraries-kryo2-_objenesis", + ], + runtime_deps = [ + # do not sort, + "@lib//:libraries-kryo2-_kryo", + "@lib//:libraries-kryo2-_objenesis", + ], +) + +jvm_library( + name = "kryo2_test_lib", + testonly = True, + srcs = glob( + [], + allow_empty = True, + ), + kotlinc_opts = "@community//:k8", + module_name = "intellij.libraries.kryo2", + visibility = ["//visibility:public"], + exports = [ + # do not sort, + "@lib//:libraries-kryo2-_kryo", + "@lib//:libraries-kryo2-_objenesis", + ], + runtime_deps = [":kryo2"], +) +### auto-generated section `build intellij.libraries.kryo2` end + +### auto-generated section `iml intellij.libraries.kryo2` start +exports_files( + [ + "intellij.libraries.kryo2.iml", + ], + visibility = ["//visibility:public"], +) +### auto-generated section `iml intellij.libraries.kryo2` end diff --git a/libraries/kryo2/intellij.libraries.kryo2.iml b/libraries/kryo2/intellij.libraries.kryo2.iml new file mode 100644 index 000000000000..cd9c1dc84ade --- /dev/null +++ b/libraries/kryo2/intellij.libraries.kryo2.iml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + 7e56b32c635058f9aa2820f88919ab702d029cbcd15285da9992e36cc0ae52f2 + + + a678cb1aa8f5d03d901c992c75741841d98a9bc3d55dad02e84d65315c4e60f2 + + + + + + + + + + + + + + + + + + + + + + + 95488102feaf2e2858adf6b299353677dac6c15294006f8ed1c5556f8e3cd251 + + + + + + + + + + + + + + \ No newline at end of file diff --git a/libraries/kryo2/module-content.yaml b/libraries/kryo2/module-content.yaml new file mode 100644 index 000000000000..e9d528bd73e9 --- /dev/null +++ b/libraries/kryo2/module-content.yaml @@ -0,0 +1,7 @@ +- name: dist.all/lib/intellij.libraries.kryo2.jar + modules: + - name: intellij.libraries.kryo2 + libraries: + Kryo: + - name: $MAVEN_REPOSITORY$/com/esotericsoftware/kryo/kryo/2/kryo-2.jar + - name: $MAVEN_REPOSITORY$/com/esotericsoftware/minlog/minlog/1/minlog-1.jar diff --git a/libraries/kryo2/resources/intellij.libraries.kryo2.xml b/libraries/kryo2/resources/intellij.libraries.kryo2.xml new file mode 100644 index 000000000000..aa52f3dbdcd0 --- /dev/null +++ b/libraries/kryo2/resources/intellij.libraries.kryo2.xml @@ -0,0 +1,2 @@ + + diff --git a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/LibraryFilePacking.kt b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/LibraryFilePacking.kt index 6cb85c2eca10..1ddc45e3858d 100644 --- a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/LibraryFilePacking.kt +++ b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/LibraryFilePacking.kt @@ -29,7 +29,6 @@ private val agentLibrariesNotForcedInSeparateJars = listOf( fun isSeparateLibraryJar(fileName: String): Boolean { return fileName.endsWith("-rt.jar") || fileName.startsWith("byte-buddy-") || - fileName.startsWith("objenesis-") || (fileName.contains("-agent") && agentLibrariesNotForcedInSeparateJars.none { fileName.contains(it) }) || fileName.startsWith("maven-") } diff --git a/platform/build-scripts/tests/testSrc/org/jetbrains/intellij/build/impl/LibraryFileCopyTrackerTest.kt b/platform/build-scripts/tests/testSrc/org/jetbrains/intellij/build/impl/LibraryFileCopyTrackerTest.kt index b6a76f5b6adf..edf5811bbc4a 100644 --- a/platform/build-scripts/tests/testSrc/org/jetbrains/intellij/build/impl/LibraryFileCopyTrackerTest.kt +++ b/platform/build-scripts/tests/testSrc/org/jetbrains/intellij/build/impl/LibraryFileCopyTrackerTest.kt @@ -31,11 +31,12 @@ internal class LibraryFileCopyTrackerTest { fun `detects jars packed separately`() { assertThat(isSeparateLibraryJar("mockk-agent-1.14.5.jar")).isTrue() assertThat(isSeparateLibraryJar("byte-buddy-1.17.7.jar")).isTrue() - assertThat(isSeparateLibraryJar("objenesis-3.4.jar")).isTrue() assertThat(isSeparateLibraryJar("kotlin-reflect-rt.jar")).isTrue() assertThat(isSeparateLibraryJar("maven-resolver-provider.jar")).isTrue() assertThat(isSeparateLibraryJar("ideformer-agent.jar")).isFalse() assertThat(isSeparateLibraryJar("code-agents-agent.jar")).isFalse() assertThat(isSeparateLibraryJar("kotlin-stdlib.jar")).isFalse() + // an ordinary library: it must stay inside the content module that wraps it, or that module's jar ends up empty + assertThat(isSeparateLibraryJar("objenesis-3.4.jar")).isFalse() } }