From e3c0306b43c0052c7ea59ef5fa110f50696947b7 Mon Sep 17 00:00:00 2001 From: Ilia Shulgin Date: Thu, 30 Apr 2020 17:39:26 +0300 Subject: [PATCH] IDEA-180474 Cleanup obsolete archives in jbre/jbsdk folders GitOrigin-RevId: b973197c4a2fe8d15591815c82ec7014ab0d9ba4 --- build/dependencies/archivesCleanup.gradle | 13 +++++++++++++ build/dependencies/setupJbre.gradle | 11 ++++++++--- build/dependencies/setupJdk.gradle | 8 +++++++- 3 files changed, 28 insertions(+), 4 deletions(-) create mode 100644 build/dependencies/archivesCleanup.gradle diff --git a/build/dependencies/archivesCleanup.gradle b/build/dependencies/archivesCleanup.gradle new file mode 100644 index 000000000000..5b2636db6434 --- /dev/null +++ b/build/dependencies/archivesCleanup.gradle @@ -0,0 +1,13 @@ +// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +project.ext.deleteObsoleteArchivesTask = { String type, String dir -> + // Delete all files older than 30 days except one with the latest modification date + tasks.create(name: "deleteObsolete${type}Archives", type: Delete) { + def deleteThreshold = new Date() - 30 + + delete fileTree(dir: dir) + .matching { include '*.tar.gz' } + .findAll { file -> new Date(file.lastModified()).before(deleteThreshold) } + .sort { file -> file.lastModified() } + .dropRight(1) + } +} diff --git a/build/dependencies/setupJbre.gradle b/build/dependencies/setupJbre.gradle index a86a46a3cfde..1b203a310e32 100644 --- a/build/dependencies/setupJbre.gradle +++ b/build/dependencies/setupJbre.gradle @@ -1,7 +1,13 @@ // Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. import java.util.concurrent.TimeUnit -task setupJbre() +apply from: 'archivesCleanup.gradle' + +ext.jbreOutputDir = "$project.buildDir/jbre" +def deleteObsoleteJbreArchives = ext.deleteObsoleteArchivesTask('Jbre', jbreOutputDir) +task setupJbre() { + finalizedBy deleteObsoleteJbreArchives +} def targetOs = System.getProperty("intellij.build.target.os", "all") def jreVersion = System.getProperty("intellij.build.bundled.jre.version", "11").toInteger() @@ -53,8 +59,7 @@ def jreUrl() { } def downloadJbrTask(String artifactName, String build) { - def outputDir = "$project.buildDir/jbre" - def outputFile = "$outputDir/${artifactName}.tar.gz" + def outputFile = "${jbreOutputDir}/${artifactName}.tar.gz" task("download${artifactName.capitalize()}") { inputs.property('build', build) outputs.file(outputFile) diff --git a/build/dependencies/setupJdk.gradle b/build/dependencies/setupJdk.gradle index 3bdad0de1b92..45147aa7d167 100644 --- a/build/dependencies/setupJdk.gradle +++ b/build/dependencies/setupJdk.gradle @@ -5,6 +5,8 @@ import java.nio.file.Files import java.nio.file.Paths import java.util.concurrent.TimeUnit +apply from: 'archivesCleanup.gradle' + def jbrVersionToUnpack = System.getProperty('intellij.build.jdk.version', '8').toInteger() task setupJdks(dependsOn: ["setupJbr$jbrVersionToUnpack"]) cleanSetupJdks.dependsOn('cleanSetupJbr8', 'cleanSetupJbr11', 'cleanDownloadJbr8', 'cleanDownloadJbr11', 'cleanSetupJdk16') @@ -14,6 +16,9 @@ def jdkDir = System.getProperty('intellij.build.jdks.target.dir')?.with { it } ?: "${intellijProjectDir()}/build/jdk" +ext.jbsdkDir = "$project.buildDir/jbsdk" +def deleteObsoleteJdkArchives = ext.deleteObsoleteArchivesTask('Jdk', jbsdkDir) + /** * Update this method together with: * `setupJbre.gradle` @@ -52,7 +57,7 @@ static def splitJbrBuild(String jreBuild, String version) { def jbrUrl = jbrUrl(jbrVersion.toString(), jbrBuild.toString(), jbrArtifactPrefix) def (update, buildNumber) = splitJbrBuild(jbrBuild.toString(), jbrVersion.toString()) def artifactName = "$jbrArtifactPrefix${update}-${platform}-${arch}-${buildNumber}.tar.gz" - def outputFile = "$project.buildDir/jbsdk/${artifactName}" + def outputFile = "$jbsdkDir/${artifactName}" inputs.property('version', jbrVersion) inputs.property('build', jbrBuild) @@ -84,6 +89,7 @@ static def splitJbrBuild(String jreBuild, String version) { } } setupJbr.finalizedBy(checkJbr(jbrVersion, jbrOutputDir)) + setupJbr.finalizedBy(deleteObsoleteJdkArchives) } def unpackJdk(jbrArchive, outputDir) {