From fb4f988b7ee60b5b14402bf22489d3fcd9cd43e1 Mon Sep 17 00:00:00 2001 From: Felix Popov Date: Fri, 3 Jan 2025 13:13:05 +0100 Subject: [PATCH] [build scripts] add option to compress cross platform zip with zip64 GitOrigin-RevId: c0b0a09698da558cc7fdb1c8c28d8edc67446b08 --- .../src/org/jetbrains/intellij/build/BuildOptions.kt | 5 +++++ .../org/jetbrains/intellij/build/impl/BuildTasksImpl.kt | 9 ++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/platform/build-scripts/src/org/jetbrains/intellij/build/BuildOptions.kt b/platform/build-scripts/src/org/jetbrains/intellij/build/BuildOptions.kt index c0ecc2e18611..46023c8991de 100644 --- a/platform/build-scripts/src/org/jetbrains/intellij/build/BuildOptions.kt +++ b/platform/build-scripts/src/org/jetbrains/intellij/build/BuildOptions.kt @@ -380,6 +380,11 @@ data class BuildOptions( */ var useLocalLauncher: Boolean = false + /** + * When `true`, cross-platform distribution will be packed using zip64 in AlwaysWithCompatibility mode + */ + var useZip64ForCrossPlatformDistribution: Boolean = getBooleanProperty("intellij.build.cross.platform.dist.zip64", false) + /** * Pass `true` to this system property to produce .snap packages. * A build configuration should have "docker.version >= 17" in requirements. diff --git a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/BuildTasksImpl.kt b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/BuildTasksImpl.kt index 07091b4d52a2..69fac078ca3b 100644 --- a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/BuildTasksImpl.kt +++ b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/BuildTasksImpl.kt @@ -901,7 +901,14 @@ private fun crossPlatformZip( writeNewFile(targetFile) { outFileChannel -> NoDuplicateZipArchiveOutputStream(outFileChannel, context.options.compressZipFiles).use { out -> - out.setUseZip64(Zip64Mode.Never) + out.setUseZip64( + if (context.options.useZip64ForCrossPlatformDistribution) { + Zip64Mode.AlwaysWithCompatibility + } + else { + Zip64Mode.Never + } + ) // for the `bin/` directory layout, see `PathManager.getBinDirectories(Path)`