build scripts: allow products to define special icons for EAP builds

...under Windows and Linux (IDEA-192484).
This commit is contained in:
Dana Dahlstrom
2018-05-23 12:23:49 +03:00
committed by nik
parent ba83cb43a8
commit d733779384
5 changed files with 22 additions and 6 deletions
@@ -27,6 +27,11 @@ abstract class LinuxDistributionCustomizer {
*/
String iconPngPath
/**
* Path to png file for EAP builds (if {@code null} {@link #iconPngPath} will be used)
*/
String iconPngPathForEAP = null
/**
* Relative paths to files in Linux distribution which should take 'executable' permissions
*/
@@ -27,6 +27,11 @@ abstract class WindowsDistributionCustomizer {
*/
String icoPath
/**
* Path to ico file for EAP builds (if {@code null} {@link #icoPath} will be used)
*/
String icoPathForEAP = null
/**
* If {@code true} *.bat files (productName.bat and inspect.bat) will be included into the distribution
*/
@@ -407,9 +407,11 @@ idea.fatal.error.notification=disabled
def winCustomizer = buildContext.windowsDistributionCustomizer
checkPaths([winCustomizer?.icoPath], "productProperties.windowsCustomizer.icoPath")
checkPaths([winCustomizer?.icoPathForEAP], "productProperties.windowsCustomizer.icoPathForEAP")
checkPaths([winCustomizer?.installerImagesPath], "productProperties.windowsCustomizer.installerImagesPath")
checkPaths([buildContext.linuxDistributionCustomizer?.iconPngPath], "productProperties.linuxCustomizer.iconPngPath")
checkPaths([buildContext.linuxDistributionCustomizer?.iconPngPathForEAP], "productProperties.linuxCustomizer.iconPngPathForEAP")
def macCustomizer = buildContext.macDistributionCustomizer
if (macCustomizer != null) {
@@ -15,11 +15,13 @@ import org.jetbrains.intellij.build.LinuxDistributionCustomizer
class LinuxDistributionBuilder extends OsSpecificDistributionBuilder {
private final LinuxDistributionCustomizer customizer
private final File ideaProperties
private final String iconPngPath
LinuxDistributionBuilder(BuildContext buildContext, LinuxDistributionCustomizer customizer, File ideaProperties) {
super(BuildOptions.OS_LINUX, "Linux", buildContext)
this.customizer = customizer
this.ideaProperties = ideaProperties
iconPngPath = (buildContext.applicationInfo.isEAP ? customizer.iconPngPathForEAP : null) ?: customizer.iconPngPath
}
@Override
@@ -42,8 +44,8 @@ class LinuxDistributionBuilder extends OsSpecificDistributionBuilder {
//todo[nik] converting line separators to unix-style make sense only when building Linux distributions under Windows on a local machine;
// for real installers we need to checkout all text files with 'lf' separators anyway
buildContext.ant.fixcrlf(file: "$unixDistPath/bin/idea.properties", eol: "unix")
if (customizer.iconPngPath != null) {
buildContext.ant.copy(file: customizer.iconPngPath, tofile: "$unixDistPath/bin/${buildContext.productProperties.baseFileName}.png")
if (iconPngPath != null) {
buildContext.ant.copy(file: iconPngPath, tofile: "$unixDistPath/bin/${buildContext.productProperties.baseFileName}.png")
}
generateScripts(unixDistPath)
generateVMOptions(unixDistPath)
@@ -175,7 +177,7 @@ class LinuxDistributionBuilder extends OsSpecificDistributionBuilder {
private void buildSnapPackage(String jreDirectoryPath, String unixDistPath) {
if (!buildContext.options.buildUnixSnaps || customizer.snapName == null) return
if (StringUtil.isEmpty(customizer.iconPngPath)) buildContext.messages.error("'iconPngPath' not set")
if (StringUtil.isEmpty(iconPngPath)) buildContext.messages.error("'iconPngPath' not set")
if (StringUtil.isEmpty(customizer.snapDescription)) buildContext.messages.error("'snapDescription' not set")
String snapDir = "${buildContext.paths.buildOutputRoot}/dist.snap"
@@ -195,7 +197,7 @@ class LinuxDistributionBuilder extends OsSpecificDistributionBuilder {
}
}
buildContext.ant.copy(file: customizer.iconPngPath, tofile: "${snapDir}/${customizer.snapName}.png")
buildContext.ant.copy(file: iconPngPath, tofile: "${snapDir}/${customizer.snapName}.png")
def snapcraftTemplate = "${buildContext.paths.communityHome}/platform/build-scripts/resources/linux/snap/snapcraft-template.yaml"
def version = "${buildContext.applicationInfo.majorVersion}.${buildContext.applicationInfo.minorVersion}${buildContext.applicationInfo.isEAP ? "-EAP" : ""}"
@@ -30,12 +30,14 @@ class WindowsDistributionBuilder extends OsSpecificDistributionBuilder {
private final WindowsDistributionCustomizer customizer
private final File ideaProperties
private final File patchedApplicationInfo
private final String icoPath
WindowsDistributionBuilder(BuildContext buildContext, WindowsDistributionCustomizer customizer, File ideaProperties, File patchedApplicationInfo) {
super(BuildOptions.OS_WINDOWS, "Windows", buildContext)
this.patchedApplicationInfo = patchedApplicationInfo
this.customizer = customizer
this.ideaProperties = ideaProperties
icoPath = (buildContext.applicationInfo.isEAP ? customizer.icoPathForEAP : null) ?: customizer.icoPath
}
@Override
@@ -61,8 +63,8 @@ class WindowsDistributionBuilder extends OsSpecificDistributionBuilder {
buildContext.ant.copy(file: ideaProperties.path, todir: "$winDistPath/bin")
buildContext.ant.fixcrlf(file: "$winDistPath/bin/idea.properties", eol: "dos")
if (customizer.icoPath != null) {
buildContext.ant.copy(file: customizer.icoPath, tofile: "$winDistPath/bin/${buildContext.productProperties.baseFileName}.ico")
if (icoPath != null) {
buildContext.ant.copy(file: icoPath, tofile: "$winDistPath/bin/${buildContext.productProperties.baseFileName}.ico")
}
if (customizer.includeBatchLaunchers) {
generateScripts(winDistPath)