diff --git a/buildSrc/src/main/kotlin/stripMetadata.kt b/buildSrc/src/main/kotlin/stripMetadata.kt index f120665873d..e08fe8205dd 100644 --- a/buildSrc/src/main/kotlin/stripMetadata.kt +++ b/buildSrc/src/main/kotlin/stripMetadata.kt @@ -5,14 +5,17 @@ import org.jetbrains.org.objectweb.asm.* import java.io.BufferedOutputStream import java.io.File import java.io.FileOutputStream +import java.util.* import java.util.jar.JarFile import java.util.zip.ZipEntry import java.util.zip.ZipOutputStream +private val CONSTANT_TIME_FOR_ZIP_ENTRIES = GregorianCalendar(1980, 1, 1, 0, 0, 0).timeInMillis + /** * Removes @kotlin.Metadata annotations from compiled Kotlin classes */ -fun stripMetadata(logger: Logger, classNamePattern: String, inFile: File, outFile: File) { +fun stripMetadata(logger: Logger, classNamePattern: String, inFile: File, outFile: File, preserveFileTimestamps: Boolean = true) { val classRegex = classNamePattern.toRegex() assert(inFile.exists()) { "Input file not found at $inFile" } @@ -49,6 +52,9 @@ fun stripMetadata(logger: Logger, classNamePattern: String, inFile: File, outFil } val newEntry = ZipEntry(entry.name) + if (!preserveFileTimestamps) { + newEntry.time = CONSTANT_TIME_FOR_ZIP_ENTRIES + } outJar.putNextEntry(newEntry) outJar.write(outBytes) outJar.closeEntry() diff --git a/libraries/reflect/build.gradle.kts b/libraries/reflect/build.gradle.kts index 788d80224d0..d9eef9a5b70 100644 --- a/libraries/reflect/build.gradle.kts +++ b/libraries/reflect/build.gradle.kts @@ -128,7 +128,13 @@ val stripMetadata by tasks.registering { outputs.file(outputJar) outputs.cacheIf { true } doLast { - stripMetadata(logger, "kotlin/reflect/jvm/internal/impl/.*", inputJar.get(), outputJar) + stripMetadata( + logger = logger, + classNamePattern = "kotlin/reflect/jvm/internal/impl/.*", + inFile = inputJar.get(), + outFile = outputJar, + preserveFileTimestamps = false + ) } }