From 9ab44673cf8ac99832f388404f056683c58dd995 Mon Sep 17 00:00:00 2001 From: nik Date: Fri, 31 Mar 2017 17:09:23 +0300 Subject: [PATCH] build scripts: report an error if proper JRE cannot be bundled when running build on TeamCity Previously the script will just report a warning, so we can get a successful build with missing artifacts. New 'Development mode' option is added for such cases. --- .../intellij/build/BuildOptions.groovy | 8 ++++++++ .../build/impl/BundledJreManager.groovy | 20 +++++++++++++++---- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/platform/build-scripts/groovy/org/jetbrains/intellij/build/BuildOptions.groovy b/platform/build-scripts/groovy/org/jetbrains/intellij/build/BuildOptions.groovy index d52aec8bc7c8..ed6b4ba61687 100644 --- a/platform/build-scripts/groovy/org/jetbrains/intellij/build/BuildOptions.groovy +++ b/platform/build-scripts/groovy/org/jetbrains/intellij/build/BuildOptions.groovy @@ -93,4 +93,12 @@ class BuildOptions { * change the output directory. */ String outputRootPath = System.getProperty("intellij.build.output.root") + + /** + * If {@code true} the build is running in 'Development mode' i.e. its artifacts aren't supposed to be used in production. In development + * mode build scripts won't fail if some non-mandatory dependencies are missing and will just show warnings. + *

By default 'development mode' is enabled if build is not running under continuous integration server (TeamCity).

+ */ + boolean isInDevelopmentMode = SystemProperties.getBooleanProperty("intellij.build.dev.mode", + System.getProperty("teamcity.buildType.id") == null) } \ No newline at end of file diff --git a/platform/build-scripts/groovy/org/jetbrains/intellij/build/impl/BundledJreManager.groovy b/platform/build-scripts/groovy/org/jetbrains/intellij/build/impl/BundledJreManager.groovy index 95aaba6f2a23..b9914e5b3212 100644 --- a/platform/build-scripts/groovy/org/jetbrains/intellij/build/impl/BundledJreManager.groovy +++ b/platform/build-scripts/groovy/org/jetbrains/intellij/build/impl/BundledJreManager.groovy @@ -122,12 +122,24 @@ class BundledJreManager { String suffix = arch == JvmArchitecture.x32 ? "_x86" : "_x64" String prefix = buildContext.productProperties.toolsJarRequired ? vendor.jreWithToolsJarNamePrefix : vendor.jreNamePrefix Collection jdkFiles = jdkDir.listFiles()?.findAll { it.name.startsWith(prefix) && it.name.endsWith("${suffix}.tar.gz") } ?: [] as List + String errorMessage; if (jdkFiles.size() > 1) { - buildContext.messages.warning("Cannot extract $osDirName JRE: several matching files are found ($jdkFiles)") - return null + errorMessage = "Cannot extract $osDirName JRE: several matching files are found ($jdkFiles)" } - if (jdkFiles.isEmpty()) { - buildContext.messages.warning("Cannot extract $osDirName JRE: no '${prefix}...${suffix}.tar.gz' files found in $jdkDir") + else if (jdkFiles.isEmpty()) { + errorMessage = "Cannot extract $osDirName JRE: no '${prefix}...${suffix}.tar.gz' files found in $jdkDir" + } + else { + errorMessage = null + } + + if (errorMessage != null) { + if (buildContext.options.isInDevelopmentMode) { + buildContext.messages.warning(errorMessage) + } + else { + buildContext.messages.error(errorMessage) + } return null } return jdkFiles.first()