From 5ebc4368085847f999f352ff7e9d66016d50e275 Mon Sep 17 00:00:00 2001 From: Alexander Zolotov Date: Thu, 14 Sep 2017 14:21:07 +0200 Subject: [PATCH] Build scripts: redownload jdk and jbre if previous download was interrupted --- build/dependencies/build.gradle | 43 +++++++++++++++++++++++++++++ build/dependencies/setupJbre.gradle | 3 +- build/dependencies/setupJdk.gradle | 3 +- 3 files changed, 45 insertions(+), 4 deletions(-) diff --git a/build/dependencies/build.gradle b/build/dependencies/build.gradle index bae127c0a793..a211c438e729 100644 --- a/build/dependencies/build.gradle +++ b/build/dependencies/build.gradle @@ -1,3 +1,5 @@ +import de.undercouch.gradle.tasks.download.DownloadAction + /* * Copyright 2000-2016 JetBrains s.r.o. * @@ -50,6 +52,47 @@ catch (UnknownHostException e) { project.ext.inJetBrainsNetwork = false } +class DownloadActionWrapper extends DownloadAction { + DownloadActionWrapper(Project project) { + super(project) + } + + @Override + void execute() throws IOException { + def destFile = getDest() + if (destFile == null || !destFile.exists()) { + def tempFile = new File(destFile.absolutePath + ".part") + dest(tempFile) + overwrite(true) + onlyIfNewer(false) + super.execute() + dest(destFile) + tempFile.renameTo(destFile) + } + } +} + +class DownloadWrapperExtension implements Configurable { + Project project + + DownloadWrapperExtension(Project project) { + this.project = project + } + + @Override + DownloadWrapperExtension configure(Closure cl) { + DownloadActionWrapper da = ConfigureUtil.configure(cl, new DownloadActionWrapper(project)) + try { + da.execute() + } + catch (IOException e) { + throw new IllegalStateException("Could not download file", e) + } + return this + } +} +project.extensions.create('downloadWrapper', DownloadWrapperExtension.class, project) + apply from: 'setupJdk.gradle' apply from: 'setupJbre.gradle' apply from: 'setupKotlin.gradle' diff --git a/build/dependencies/setupJbre.gradle b/build/dependencies/setupJbre.gradle index afdd2bc28871..8cf45d0634e3 100644 --- a/build/dependencies/setupJbre.gradle +++ b/build/dependencies/setupJbre.gradle @@ -17,10 +17,9 @@ jrePlatformsToDownload(targetOs).each { platform -> outputs.file(outputFile) doLast { logger.info("Downloading $jbrexArtifactName to $outputFile") - download { + downloadWrapper { src "$jdkRepo/${jbrexArtifactName}.tar.gz" dest outputFile - onlyIfNewer true } } } diff --git a/build/dependencies/setupJdk.gradle b/build/dependencies/setupJdk.gradle index 411436485c4f..699e52c69c8a 100644 --- a/build/dependencies/setupJdk.gradle +++ b/build/dependencies/setupJdk.gradle @@ -34,10 +34,9 @@ task downloadJdk18 { outputs.file(outputFile) doLast { logger.info("Downloading up JDK 1.8 to compile (using $jdkRepo repo)") - download { + downloadWrapper { src "$jdkRepo/intellij-jdk/${artifactName}" dest outputFile - onlyIfNewer true } } }