diff --git a/build.gradle.kts b/build.gradle.kts index 80d6d62a640..5d099c8bb5a 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -30,7 +30,6 @@ buildscript { classpath("org.jetbrains.kotlin:kotlin-build-gradle-plugin:0.0.15") classpath("com.gradle.publish:plugin-publish-plugin:0.9.7") classpath(kotlin("gradle-plugin", bootstrapKotlinVersion)) - classpath("net.sf.proguard:proguard-gradle:6.1.0") classpath("org.jetbrains.dokka:dokka-gradle-plugin:0.9.17") } } diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index 83262855cff..01f58abe269 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -101,6 +101,7 @@ dependencies { implementation("com.jakewharton.dex:dex-method-list:3.0.0") implementation("com.github.jengelman.gradle.plugins:shadow:${rootProject.extra["versions.shadow"]}") + implementation("net.sf.proguard:proguard-gradle:6.2.2") implementation("org.jetbrains.intellij.deps:asm-all:7.0.1") implementation("gradle.plugin.org.jetbrains.gradle.plugin.idea-ext:gradle-idea-ext:0.5") diff --git a/buildSrc/src/main/kotlin/CacheableProguradTask.kt b/buildSrc/src/main/kotlin/CacheableProguradTask.kt new file mode 100644 index 00000000000..744f83e8317 --- /dev/null +++ b/buildSrc/src/main/kotlin/CacheableProguradTask.kt @@ -0,0 +1,385 @@ +/* + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +import groovy.lang.Closure +import org.gradle.api.file.FileCollection +import org.gradle.api.tasks.* +import org.gradle.internal.jvm.Jvm +import org.gradle.internal.jvm.inspection.JvmVersionDetector +import proguard.ClassSpecification +import java.io.File +import javax.inject.Inject + + +@CacheableTask +open class CacheableProguardTask @Inject constructor( + private val jvmVersionDetector: JvmVersionDetector +) : proguard.gradle.ProGuardTask() { + + @Internal + var jdkHome: File? = null + + @get:Optional + @get:Input + internal val jdkMajorVersion: String? + get() = jdkHome?.let { jvmVersionDetector.getJavaVersion(Jvm.forHome(jdkHome)) }?.majorVersion + + @CompileClasspath + override fun getLibraryJarFileCollection(): FileCollection = super.getLibraryJarFileCollection().filter { libraryFile -> + jdkHome?.let { !libraryFile.absoluteFile.startsWith(it.absoluteFile) } ?: true + } + + @InputFiles + @PathSensitive(PathSensitivity.RELATIVE) + override fun getConfigurationFileCollection(): FileCollection = super.getConfigurationFileCollection() + + @InputFiles + @Classpath + override fun getInJarFileCollection(): FileCollection = super.getInJarFileCollection() + + @Optional + @OutputFiles + override fun getOutJarFileCollection(): FileCollection = super.getOutJarFileCollection() + + @get:Optional + @get:OutputFile + internal val printConfigurationFile: File? + get() = configuration.printConfiguration?.takeIf { it.path.isNotEmpty() } + + @Input + override fun getOutJarFilters(): MutableList = super.getOutJarFilters() + + @Input + override fun getInJarFilters(): MutableList = super.getInJarFilters() + + @Input + override fun getLibraryJarFilters(): MutableList = super.getLibraryJarFilters() + + @Internal + override fun getOutJarFiles(): MutableList = super.getOutJarFiles() + + @Internal + override fun getInJarFiles(): MutableList = super.getInJarFiles() + + @Internal + override fun getInJarCounts(): MutableList = super.getInJarCounts() + + @Internal + override fun getLibraryJarFiles(): MutableList = super.getLibraryJarFiles() + + /* + * Inputs properly declared these methods so we don't override them + * + * configuration(configurationFiles: Any?) + * libraryjars(libraryJarFiles: Any?) + * libraryjars(filterArgs: MutableMap?, libraryJarFiles: Any?) + * injars(inJarFiles: Any?) + * injars(filterArgs: MutableMap?, inJarFiles: Any?) + * outjars(outJarFiles: Any?) + * outjars(filterArgs: MutableMap?, outJarFiles: Any?) + * printconfiguration() + * printconfiguration(printConfiguration: Any?) + */ + + override fun renamesourcefileattribute() = throw NotImplementedError() + + override fun renamesourcefileattribute(newSourceFileAttribute: String?) = throw NotImplementedError() + + override fun dontshrink() = throw NotImplementedError() + + override fun assumenosideeffects(classSpecificationString: String?) = throw NotImplementedError() + + override fun assumenosideeffects(classSpecificationArgs: MutableMap?, classMembersClosure: Closure<*>?) = throw NotImplementedError() + + override fun keepnames(classSpecificationString: String?) = throw NotImplementedError() + + override fun keepnames(keepArgs: MutableMap?, classSpecificationString: String?) = throw NotImplementedError() + + override fun keepnames(keepClassSpecificationArgs: MutableMap?) = throw NotImplementedError() + + override fun keepnames(keepClassSpecificationArgs: MutableMap?, classMembersClosure: Closure<*>?) = throw NotImplementedError() + + override fun printmapping() = throw NotImplementedError() + + override fun printmapping(printMapping: Any?) = throw NotImplementedError() + + override fun keep(classSpecificationString: String?) = throw NotImplementedError() + + override fun keep(keepArgs: MutableMap?, classSpecificationString: String?) = throw NotImplementedError() + + override fun keep(keepClassSpecificationArgs: MutableMap?) = throw NotImplementedError() + + override fun keep(keepClassSpecificationArgs: MutableMap?, classMembersClosure: Closure<*>?) = throw NotImplementedError() + + override fun keepdirectories() = throw NotImplementedError() + + override fun keepdirectories(filter: String?) = throw NotImplementedError() + + override fun dontpreverify() = throw NotImplementedError() + + override fun dontnote() = throw NotImplementedError() + + override fun dontnote(filter: String?) = throw NotImplementedError() + + @Internal + override fun getrenamesourcefileattribute(): Any? = throw NotImplementedError() + + override fun useuniqueclassmembernames() = throw NotImplementedError() + + override fun overloadaggressively() = throw NotImplementedError() + + @Internal + override fun getprintusage(): Any? = throw NotImplementedError() + + @Internal + override fun getforceprocessing(): Any? = throw NotImplementedError() + + override fun whyareyoukeeping(classSpecificationString: String?) = throw NotImplementedError() + + override fun whyareyoukeeping(classSpecificationArgs: MutableMap?) = throw NotImplementedError() + + override fun whyareyoukeeping(classSpecificationArgs: MutableMap?, classMembersClosure: Closure<*>?) = throw NotImplementedError() + + override fun obfuscationdictionary(obfuscationDictionary: Any?) = throw NotImplementedError() + + override fun adaptclassstrings() = throw NotImplementedError() + + override fun adaptclassstrings(filter: String?) = throw NotImplementedError() + + override fun applymapping(applyMapping: Any?) = throw NotImplementedError() + + override fun mergeinterfacesaggressively() = throw NotImplementedError() + + @Internal + override fun getdontwarn(): Any? = throw NotImplementedError() + + override fun ignorewarnings() = throw NotImplementedError() + + @Internal + override fun getaddconfigurationdebugging(): Any? = throw NotImplementedError() + + override fun field(memberSpecificationArgs: MutableMap?) = throw NotImplementedError() + + @Internal + override fun getallowaccessmodification(): Any? = throw NotImplementedError() + + override fun constructor(memberSpecificationArgs: MutableMap?) = throw NotImplementedError() + + override fun dontusemixedcaseclassnames() = throw NotImplementedError() + + @Internal + override fun getignorewarnings(): Any? = throw NotImplementedError() + + @Internal + override fun getkeepdirectories(): Any? = throw NotImplementedError() + + override fun classobfuscationdictionary(classObfuscationDictionary: Any?) = throw NotImplementedError() + + override fun verbose() = throw NotImplementedError() + + override fun optimizations(filter: String?) = throw NotImplementedError() + + @Internal + override fun getuseuniqueclassmembernames(): Any? = throw NotImplementedError() + + @Internal + override fun getmicroedition(): Any? = throw NotImplementedError() + + override fun assumenoescapingparameters(classSpecificationString: String?) = throw NotImplementedError() + + override fun assumenoescapingparameters(classSpecificationArgs: MutableMap?, classMembersClosure: Closure<*>?) = throw NotImplementedError() + + @Internal + override fun getandroid(): Any? = throw NotImplementedError() + + override fun keeppackagenames() = throw NotImplementedError() + + override fun keeppackagenames(filter: String?) = throw NotImplementedError() + + @Internal + override fun getoverloadaggressively(): Any? = throw NotImplementedError() + + override fun skipnonpubliclibraryclasses() = throw NotImplementedError() + + @Internal + override fun getdontusemixedcaseclassnames(): Any? = throw NotImplementedError() + + @Internal + override fun getdontnote(): Any? = throw NotImplementedError() + + override fun assumenoexternalreturnvalues(classSpecificationString: String?) = throw NotImplementedError() + + override fun assumenoexternalreturnvalues(classSpecificationArgs: MutableMap?, classMembersClosure: Closure<*>?) = throw NotImplementedError() + + override fun target(targetClassVersion: String?) = throw NotImplementedError() + + override fun keepattributes() = throw NotImplementedError() + + override fun keepattributes(filter: String?) = throw NotImplementedError() + + override fun keepclassmembernames(classSpecificationString: String?) = throw NotImplementedError() + + override fun keepclassmembernames(keepArgs: MutableMap?, classSpecificationString: String?) = throw NotImplementedError() + + override fun keepclassmembernames(keepClassSpecificationArgs: MutableMap?) = throw NotImplementedError() + + override fun keepclassmembernames(keepClassSpecificationArgs: MutableMap?, classMembersClosure: Closure<*>?) = throw NotImplementedError() + + @Internal + override fun getdontpreverify(): Any? = throw NotImplementedError() + + @Internal + override fun getverbose(): Any? = throw NotImplementedError() + + @Internal + override fun getskipnonpubliclibraryclasses(): Any? = throw NotImplementedError() + + @Internal + override fun getdontoptimize(): Any? = throw NotImplementedError() + + override fun keepclasseswithmembernames(classSpecificationString: String?) = throw NotImplementedError() + + override fun keepclasseswithmembernames(keepArgs: MutableMap?, classSpecificationString: String?) = throw NotImplementedError() + + override fun keepclasseswithmembernames(keepClassSpecificationArgs: MutableMap?) = throw NotImplementedError() + + override fun keepclasseswithmembernames(keepClassSpecificationArgs: MutableMap?, classMembersClosure: Closure<*>?) = throw NotImplementedError() + + override fun keepclasseswithmembers(classSpecificationString: String?) = throw NotImplementedError() + + override fun keepclasseswithmembers(keepArgs: MutableMap?, classSpecificationString: String?) = throw NotImplementedError() + + override fun keepclasseswithmembers(keepClassSpecificationArgs: MutableMap?) = throw NotImplementedError() + + override fun keepclasseswithmembers(keepClassSpecificationArgs: MutableMap?, classMembersClosure: Closure<*>?) = throw NotImplementedError() + + @Internal + override fun getdump(): Any? = throw NotImplementedError() + + override fun printseeds() = throw NotImplementedError() + + override fun printseeds(printSeeds: Any?) = throw NotImplementedError() + + override fun dontoptimize() = throw NotImplementedError() + + override fun dontobfuscate() = throw NotImplementedError() + + override fun extendClassSpecifications( + classSpecifications: MutableList?, + classSpecification: ClassSpecification? + ): MutableList = throw NotImplementedError() + + override fun allowaccessmodification() = throw NotImplementedError() + + @Internal + override fun getdontobfuscate(): Any? = throw NotImplementedError() + + @Internal + override fun getprintmapping(): Any? = throw NotImplementedError() + + override fun flattenpackagehierarchy() = throw NotImplementedError() + + override fun flattenpackagehierarchy(flattenPackageHierarchy: String?) = throw NotImplementedError() + + override fun android() = throw NotImplementedError() + + override fun dump() = throw NotImplementedError() + + override fun dump(dump: Any?) = throw NotImplementedError() + + @Internal + override fun getdontshrink(): Any? = throw NotImplementedError() + + @Internal + override fun getkeepattributes(): Any? = throw NotImplementedError() + + override fun microedition() = throw NotImplementedError() + + override fun keepparameternames() = throw NotImplementedError() + + override fun addconfigurationdebugging() = throw NotImplementedError() + + override fun packageobfuscationdictionary(packageObfuscationDictionary: Any?) = throw NotImplementedError() + + @Internal + override fun getdontskipnonpubliclibraryclassmembers(): Any? = throw NotImplementedError() + + override fun dontskipnonpubliclibraryclassmembers() = throw NotImplementedError() + + @Internal + override fun getprintconfiguration(): Any? = throw NotImplementedError() + + override fun forceprocessing() = throw NotImplementedError() + + override fun keepclassmembers(classSpecificationString: String?) = throw NotImplementedError() + + override fun keepclassmembers(keepArgs: MutableMap?, classSpecificationString: String?) = throw NotImplementedError() + + override fun keepclassmembers(keepClassSpecificationArgs: MutableMap?) = throw NotImplementedError() + + override fun keepclassmembers(keepClassSpecificationArgs: MutableMap?, classMembersClosure: Closure<*>?) = throw NotImplementedError() + + @Internal + override fun getmergeinterfacesaggressively(): Any? = throw NotImplementedError() + + @Internal + override fun getConfigurationFiles(): MutableList = throw NotImplementedError() + + @Internal + override fun getkeeppackagenames(): Any? = throw NotImplementedError() + + override fun assumevalues(classSpecificationString: String?) = throw NotImplementedError() + + override fun assumevalues(classSpecificationArgs: MutableMap?, classMembersClosure: Closure<*>?) = throw NotImplementedError() + + override fun printusage() = throw NotImplementedError() + + override fun printusage(printUsage: Any?) = throw NotImplementedError() + + @Internal + override fun getprintseeds(): Any? = throw NotImplementedError() + + @Internal + override fun getadaptresourcefilenames(): Any? = throw NotImplementedError() + + override fun assumenoexternalsideeffects(classSpecificationString: String?) = throw NotImplementedError() + + override fun assumenoexternalsideeffects(classSpecificationArgs: MutableMap?, classMembersClosure: Closure<*>?) = throw NotImplementedError() + + override fun dontwarn() = throw NotImplementedError() + + override fun dontwarn(filter: String?) = throw NotImplementedError() + + @Internal + override fun getrepackageclasses(): Any? = throw NotImplementedError() + + @Internal + override fun getadaptresourcefilecontents(): Any? = throw NotImplementedError() + + @Internal + override fun getflattenpackagehierarchy(): Any? = throw NotImplementedError() + + override fun optimizationpasses(optimizationPasses: Int) = throw NotImplementedError() + + override fun adaptresourcefilenames() = throw NotImplementedError() + + override fun adaptresourcefilenames(filter: String?) = throw NotImplementedError() + + override fun method(memberSpecificationArgs: MutableMap?) = throw NotImplementedError() + + @Internal + override fun getadaptclassstrings(): Any? = throw NotImplementedError() + + override fun repackageclasses() = throw NotImplementedError() + + override fun repackageclasses(repackageClasses: String?) = throw NotImplementedError() + + @Internal + override fun getkeepparameternames(): Any? = throw NotImplementedError() + + override fun adaptresourcefilecontents() = throw NotImplementedError() + + override fun adaptresourcefilecontents(filter: String?) = throw NotImplementedError() +} diff --git a/buildSrc/src/main/kotlin/CommonUtil.kt b/buildSrc/src/main/kotlin/CommonUtil.kt index 2368a8b9fd4..17f4b1e07bc 100644 --- a/buildSrc/src/main/kotlin/CommonUtil.kt +++ b/buildSrc/src/main/kotlin/CommonUtil.kt @@ -10,7 +10,9 @@ import org.gradle.api.plugins.JavaPluginConvention import org.gradle.api.tasks.JavaExec import org.gradle.api.tasks.SourceSet import org.gradle.api.tasks.SourceSetOutput +import org.gradle.api.tasks.bundling.AbstractArchiveTask import org.gradle.kotlin.dsl.* +import proguard.gradle.ProGuardTask import java.io.File import java.util.concurrent.Callable @@ -71,3 +73,9 @@ fun Project.javaPluginConvention(): JavaPluginConvention = the() fun Project.findJavaPluginConvention(): JavaPluginConvention? = convention.findByType() ?: convention.findPlugin() fun JavaExec.pathRelativeToWorkingDir(file: File): String = file.relativeTo(workingDir).invariantSeparatorsPath + +fun Task.singleOutputFile(): File = when (this) { + is AbstractArchiveTask -> archiveFile.get().asFile + is ProGuardTask -> project.file(outJarFiles.single()!!) + else -> outputs.files.singleFile +} diff --git a/buildSrc/src/main/kotlin/artifacts.kt b/buildSrc/src/main/kotlin/artifacts.kt index 0d07dfecc5e..c57403bf016 100644 --- a/buildSrc/src/main/kotlin/artifacts.kt +++ b/buildSrc/src/main/kotlin/artifacts.kt @@ -64,6 +64,8 @@ fun Project.runtimeJarArtifactBy(task: Task, artifactRef: Any, body: Configurabl } } +fun Project.runtimeJar(body: Jar.() -> Unit = {}): TaskProvider = runtimeJar(getOrCreateTask("jar", body), { }) + fun Project.runtimeJar(task: TaskProvider, body: T.() -> Unit = {}): TaskProvider { tasks.named("jar").configure { removeArtifacts(configurations.getOrCreate("archives"), this) @@ -83,8 +85,6 @@ fun Project.runtimeJar(task: TaskProvider, body: T.() -> Unit = {}) return task } -fun Project.runtimeJar(body: Jar.() -> Unit = {}): TaskProvider = runtimeJar(getOrCreateTask("jar", body), { }) - fun Project.sourcesJar(body: Jar.() -> Unit = {}): TaskProvider { val task = tasks.register("sourcesJar") { duplicatesStrategy = DuplicatesStrategy.EXCLUDE diff --git a/libraries/reflect/build.gradle.kts b/libraries/reflect/build.gradle.kts index 7adaace964c..921bb2bbc9a 100644 --- a/libraries/reflect/build.gradle.kts +++ b/libraries/reflect/build.gradle.kts @@ -5,7 +5,6 @@ import com.github.jengelman.gradle.plugins.shadow.transformers.TransformerContex import kotlinx.metadata.jvm.KmModuleVisitor import kotlinx.metadata.jvm.KotlinModuleMetadata import org.gradle.api.tasks.PathSensitivity.RELATIVE -import proguard.gradle.ProGuardTask import shadow.org.apache.tools.zip.ZipEntry import shadow.org.apache.tools.zip.ZipOutputStream @@ -21,6 +20,8 @@ plugins { java } +val JDK_16: String by rootProject.extra + callGroovy("configureJavaOnlyJvm6Project", project) publish() @@ -43,7 +44,6 @@ dependencies { proguardDeps(kotlinStdlib()) proguardAdditionalInJars(project(":kotlin-annotations-jvm")) - proguardDeps(files(firstFromJavaHomeThatExists("jre/lib/rt.jar", "../Classes/classes.jar", jdkHome = File(property("JDK_16") as String)))) embedded(project(":core:type-system")) embedded(project(":kotlin-reflect-api")) @@ -56,7 +56,7 @@ dependencies { embedded(project(":core:util.runtime")) embedded("javax.inject:javax.inject:1") embedded(protobufLite()) - + compileOnly("org.jetbrains:annotations:13.0") } @@ -139,16 +139,16 @@ val stripMetadata by tasks.registering { val proguardOutput = "$libsDir/${property("archivesBaseName")}-proguard.jar" -val proguard by task { +val proguard by task { dependsOn(stripMetadata) - inputs.files(stripMetadata.get().outputs.files) - outputs.file(proguardOutput) injars(mapOf("filter" to "!META-INF/versions/**"), stripMetadata.get().outputs.files) injars(mapOf("filter" to "!META-INF/**,!**/*.kotlin_builtins"), proguardAdditionalInJars) outjars(proguardOutput) + jdkHome = File(JDK_16) libraryjars(mapOf("filter" to "!META-INF/versions/**"), proguardDeps) + libraryjars(firstFromJavaHomeThatExists("jre/lib/rt.jar", "../Classes/classes.jar", jdkHome = jdkHome!!)) configuration("$core/reflection.jvm/reflection.pro") } @@ -202,7 +202,7 @@ val intermediate = when { val result by task { dependsOn(intermediate) from { - zipTree(intermediate.get().outputs.files.singleFile) + zipTree(intermediate.get().singleOutputFile()) } callGroovy("manifestAttributes", manifest, project, "Main") } @@ -210,8 +210,10 @@ val result by task { val modularJar by task { dependsOn(intermediate) archiveClassifier.set("modular") - from(zipTree(intermediate.get().outputs.files.single())) - from(zipTree(reflectShadowJar.get().archivePath)) { + from { + zipTree(intermediate.get().singleOutputFile()) + } + from(zipTree(provider { reflectShadowJar.get().archiveFile.get().asFile })) { include("META-INF/versions/**") } callGroovy("manifestAttributes", manifest, project, "Main", true) diff --git a/libraries/tools/kotlin-main-kts/build.gradle.kts b/libraries/tools/kotlin-main-kts/build.gradle.kts index d4c69d1d3bc..97839efd114 100644 --- a/libraries/tools/kotlin-main-kts/build.gradle.kts +++ b/libraries/tools/kotlin-main-kts/build.gradle.kts @@ -8,6 +8,7 @@ plugins { id("jps-compatible") } +val JDK_18: String by rootProject.extra val jarBaseName = property("archivesBaseName") as String val proguardLibraryJars by configurations.creating @@ -31,9 +32,7 @@ dependencies { embedded(project(":kotlin-script-util")) { isTransitive = false } embedded("org.apache.ivy:ivy:2.5.0") embedded(commonDep("org.jetbrains.kotlinx", "kotlinx-coroutines-core")) { isTransitive = false } - proguardLibraryJars(files(firstFromJavaHomeThatExists("jre/lib/rt.jar", "../Classes/classes.jar"), - firstFromJavaHomeThatExists("jre/lib/jsse.jar", "../Classes/jsse.jar"), - toolsJarFile())) + proguardLibraryJars(kotlinStdlib()) proguardLibraryJars(project(":kotlin-reflect")) proguardLibraryJars(project(":kotlin-compiler")) @@ -67,20 +66,23 @@ val relocatedJar by task { } } -val proguard by task { +val proguard by task { dependsOn(relocatedJar) configuration("main-kts.pro") injars(mapOf("filter" to "!META-INF/versions/**"), relocatedJar.get().outputs.files) - val outputJar = fileFrom(buildDir, "libs", "$jarBaseName-$version-after-proguard.jar") - - outjars(outputJar) - - inputs.files(relocatedJar.get().outputs.files.singleFile) - outputs.file(outputJar) + outjars(fileFrom(buildDir, "libs", "$jarBaseName-$version-after-proguard.jar")) + jdkHome = File(JDK_18) libraryjars(mapOf("filter" to "!META-INF/versions/**"), proguardLibraryJars) + libraryjars( + files( + firstFromJavaHomeThatExists("jre/lib/rt.jar", "../Classes/classes.jar", jdkHome = jdkHome!!), + firstFromJavaHomeThatExists("jre/lib/jsse.jar", "../Classes/jsse.jar", jdkHome = jdkHome!!), + toolsJarFile(jdkHome = jdkHome!!) + ) + ) } val resultJar by task { @@ -88,7 +90,7 @@ val resultJar by task { dependsOn(pack) setupPublicJar(jarBaseName) from { - zipTree(pack.get().outputs.files.singleFile) + zipTree(pack.get().singleOutputFile()) } } diff --git a/prepare/compiler/build.gradle.kts b/prepare/compiler/build.gradle.kts index 42cbeaec7e7..6b05273ee8a 100644 --- a/prepare/compiler/build.gradle.kts +++ b/prepare/compiler/build.gradle.kts @@ -1,7 +1,6 @@ @file:Suppress("HasPlatformType") import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar -import proguard.gradle.ProGuardTask import java.util.regex.Pattern.quote description = "Kotlin Compiler" @@ -12,6 +11,8 @@ plugins { java } +val JDK_18: String by rootProject.extra + val fatJarContents by configurations.creating val fatJarContentsStripMetadata by configurations.creating val fatJarContentsStripServices by configurations.creating @@ -133,13 +134,6 @@ dependencies { compile(commonDep("org.jetbrains.intellij.deps", "trove4j")) proguardLibraries(project(":kotlin-annotations-jvm")) - proguardLibraries( - files( - firstFromJavaHomeThatExists("jre/lib/rt.jar", "../Classes/classes.jar"), - firstFromJavaHomeThatExists("jre/lib/jsse.jar", "../Classes/jsse.jar"), - toolsJarFile() - ) - ) compilerVersion(project(":compiler:compiler.version")) proguardLibraries(project(":compiler:compiler.version")) @@ -253,24 +247,42 @@ val packCompiler by task { } } -val proguard by task { +val proguard by task { dependsOn(packCompiler) - configuration("$rootDir/compiler/compiler.pro") - val outputJar = fileFrom(buildDir, "libs", "$compilerBaseName-after-proguard.jar") + jdkHome = File(JDK_18) - inputs.files(packCompiler.get().outputs.files.singleFile) - outputs.file(outputJar) + configuration("$projectDir/compiler.pro") + + injars( + mapOf("filter" to """ + !org/apache/log4j/jmx/Agent*, + !org/apache/log4j/net/JMS*, + !org/apache/log4j/net/SMTP*, + !org/apache/log4j/or/jms/MessageRenderer*, + !org/jdom/xpath/Jaxen*, + !org/jline/builtins/ssh/**, + !org/mozilla/javascript/xml/impl/xmlbeans/**, + !net/sf/cglib/**, + !META-INF/maven**, + **.class,**.properties,**.kt,**.kotlin_*,**.jnilib,**.so,**.dll,**.txt,**.caps, + META-INF/services/**,META-INF/native/**,META-INF/extensions/**,META-INF/MANIFEST.MF, + messages/**""".trimIndent()), + provider { packCompiler.get().outputs.files.singleFile } + ) + + outjars(fileFrom(buildDir, "libs", "$compilerBaseName-after-proguard.jar")) libraryjars(mapOf("filter" to "!META-INF/versions/**"), proguardLibraries) + libraryjars( + files( + firstFromJavaHomeThatExists("jre/lib/rt.jar", "../Classes/classes.jar", jdkHome = jdkHome!!), + firstFromJavaHomeThatExists("jre/lib/jsse.jar", "../Classes/jsse.jar", jdkHome = jdkHome!!), + toolsJarFile(jdkHome = jdkHome!!) + ) + ) printconfiguration("$buildDir/compiler.pro.dump") - - // This properties are used by proguard config compiler.pro - doFirst { - System.setProperty("kotlin-compiler-jar-before-shrink", packCompiler.get().outputs.files.singleFile.canonicalPath) - System.setProperty("kotlin-compiler-jar", outputJar.canonicalPath) - } } val pack = if (kotlinBuildProperties.proguard) proguard else packCompiler @@ -281,7 +293,7 @@ val jar = runtimeJar { dependsOn(compilerVersion) from { - zipTree(pack.get().outputs.files.singleFile) + zipTree(pack.get().singleOutputFile()) } from { diff --git a/compiler/compiler.pro b/prepare/compiler/compiler.pro similarity index 94% rename from compiler/compiler.pro rename to prepare/compiler/compiler.pro index 520088a3c1d..bab2a4bafb7 100644 --- a/compiler/compiler.pro +++ b/prepare/compiler/compiler.pro @@ -1,19 +1,3 @@ --injars ''( -!org/apache/log4j/jmx/Agent*, -!org/apache/log4j/net/JMS*, -!org/apache/log4j/net/SMTP*, -!org/apache/log4j/or/jms/MessageRenderer*, -!org/jdom/xpath/Jaxen*, -!org/jline/builtins/ssh/**, -!org/mozilla/javascript/xml/impl/xmlbeans/**, -!net/sf/cglib/**, -!META-INF/maven**, -**.class,**.properties,**.kt,**.kotlin_*,**.jnilib,**.so,**.dll,**.txt,**.caps, -META-INF/services/**,META-INF/native/**,META-INF/extensions/**,META-INF/MANIFEST.MF, -messages/**) - --outjars '' - -dontnote ** -dontwarn apple.awt.* -dontwarn dk.brics.automaton.* diff --git a/compiler/compiler.pro.191 b/prepare/compiler/compiler.pro.191 similarity index 94% rename from compiler/compiler.pro.191 rename to prepare/compiler/compiler.pro.191 index fb2958f5949..219031a3413 100644 --- a/compiler/compiler.pro.191 +++ b/prepare/compiler/compiler.pro.191 @@ -1,19 +1,3 @@ --injars ''( -!org/apache/log4j/jmx/Agent*, -!org/apache/log4j/net/JMS*, -!org/apache/log4j/net/SMTP*, -!org/apache/log4j/or/jms/MessageRenderer*, -!org/jdom/xpath/Jaxen*, -!org/jline/builtins/ssh/**, -!org/mozilla/javascript/xml/impl/xmlbeans/**, -!net/sf/cglib/**, -!META-INF/maven**, -**.class,**.properties,**.kt,**.kotlin_*,**.jnilib,**.so,**.dll,**.txt,**.caps, -META-INF/services/**,META-INF/native/**,META-INF/extensions/**,META-INF/MANIFEST.MF, -messages/**) - --outjars '' - -dontnote ** -dontwarn com.intellij.util.ui.IsRetina* -dontwarn com.intellij.util.ui.UIUtilities