From ddf44aec5f9b0ea3f968f952f00a3a6aa6762102 Mon Sep 17 00:00:00 2001 From: nik Date: Mon, 11 Jul 2016 10:46:47 +0300 Subject: [PATCH] build scripts redesign: allow to not build distribution for a specific OS, javadocs added --- .../intellij/build/BuildTasks.groovy | 6 ++++ .../intellij/build/ProductProperties.groovy | 9 ++++++ .../WindowsDistributionCustomizer.groovy | 2 +- .../intellij/build/impl/BuildTasksImpl.groovy | 32 +++++++++++++------ .../impl/LinuxDistributionBuilder.groovy | 13 +++++--- .../build/impl/MacDistributionBuilder.groovy | 19 ++++++----- .../intellij/build/impl/MacDmgBuilder.groovy | 11 ++++--- .../build/impl/WinExeInstallerBuilder.groovy | 17 ++++++---- .../impl/WindowsDistributionBuilder.groovy | 19 ++++++----- 9 files changed, 85 insertions(+), 43 deletions(-) diff --git a/build/groovy/org/jetbrains/intellij/build/BuildTasks.groovy b/build/groovy/org/jetbrains/intellij/build/BuildTasks.groovy index 17232d06929f..1882bc0a20c2 100644 --- a/build/groovy/org/jetbrains/intellij/build/BuildTasks.groovy +++ b/build/groovy/org/jetbrains/intellij/build/BuildTasks.groovy @@ -33,11 +33,17 @@ abstract class BuildTasks { /** * Update search/searchableOptions.xml file in {@code targetModuleName} module output directory + *
+ * todo[nik] this is temporary solution until code from layouts.gant files moved to the new builders. After that this method will + * be called inside {@link #buildDistributions()} */ abstract void buildSearchableOptions(String targetModuleName, List modulesToIndex, List pathsToLicenses) /** * Create a copy of *ApplicationInfo.xml file with substituted __BUILD_NUMBER__ and __BUILD_DATE__ placeholders + *
+ * todo[nik] this is temporary solution until code from layouts.gant files moved to the new builders. After that this method will + * be called inside {@link #buildDistributions()} * @return path to the copied file */ abstract File patchApplicationInfo() diff --git a/build/groovy/org/jetbrains/intellij/build/ProductProperties.groovy b/build/groovy/org/jetbrains/intellij/build/ProductProperties.groovy index 6a71fc5dc06e..f0ce127c24b2 100644 --- a/build/groovy/org/jetbrains/intellij/build/ProductProperties.groovy +++ b/build/groovy/org/jetbrains/intellij/build/ProductProperties.groovy @@ -80,10 +80,19 @@ public abstract class ProductProperties { */ abstract String baseArtifactName(String buildNumber) + /** + * @return instance of the class containing properties specific for Windows distribution or {@code null} if the product doesn't have Windows distribution + */ abstract WindowsDistributionCustomizer createWindowsCustomizer(String projectHome) + /** + * @return instance of the class containing properties specific for Linux distribution or {@code null} if the product doesn't have Linux distribution + */ abstract LinuxDistributionCustomizer createLinuxCustomizer(String projectHome) + /** + * @return instance of the class containing properties specific for Mac OS distribution or {@code null} if the product doesn't have Mac OS distribution + */ abstract MacDistributionCustomizer createMacCustomizer(String projectHome) boolean setPluginAndIDEVersionInPluginXml = true diff --git a/build/groovy/org/jetbrains/intellij/build/WindowsDistributionCustomizer.groovy b/build/groovy/org/jetbrains/intellij/build/WindowsDistributionCustomizer.groovy index 28e9e367aa81..13a8f818e251 100644 --- a/build/groovy/org/jetbrains/intellij/build/WindowsDistributionCustomizer.groovy +++ b/build/groovy/org/jetbrains/intellij/build/WindowsDistributionCustomizer.groovy @@ -22,7 +22,7 @@ import org.jetbrains.intellij.build.impl.JvmArchitecture */ abstract class WindowsDistributionCustomizer { /** - * Path to *.ico file for Windows distribution + * Path to 256x256 *.ico file for Windows distribution */ String icoPath diff --git a/build/groovy/org/jetbrains/intellij/build/impl/BuildTasksImpl.groovy b/build/groovy/org/jetbrains/intellij/build/impl/BuildTasksImpl.groovy index f951a2b41e02..105885d715bd 100644 --- a/build/groovy/org/jetbrains/intellij/build/impl/BuildTasksImpl.groovy +++ b/build/groovy/org/jetbrains/intellij/build/impl/BuildTasksImpl.groovy @@ -19,6 +19,9 @@ import com.intellij.openapi.util.io.FileUtil import org.jetbrains.intellij.build.BuildContext import org.jetbrains.intellij.build.BuildOptions import org.jetbrains.intellij.build.BuildTasks +import org.jetbrains.intellij.build.LinuxDistributionCustomizer +import org.jetbrains.intellij.build.MacDistributionCustomizer +import org.jetbrains.intellij.build.WindowsDistributionCustomizer import org.jetbrains.jps.model.java.JavaResourceRootType import org.jetbrains.jps.model.java.JavaSourceRootType import org.jetbrains.jps.model.module.JpsModule @@ -200,21 +203,30 @@ idea.fatal.error.notification=disabled def propertiesFile = patchIdeaPropertiesFile() WindowsDistributionBuilder windowsBuilder = null - buildContext.executeStep("Build Windows distribution", BuildOptions.WINDOWS_DISTRIBUTION_STEP, { - windowsBuilder = new WindowsDistributionBuilder(buildContext) - windowsBuilder.layoutWin(propertiesFile) - }) + def windowsDistributionCustomizer = buildContext.windowsDistributionCustomizer + if (windowsDistributionCustomizer != null) { + buildContext.executeStep("Build Windows distribution", BuildOptions.WINDOWS_DISTRIBUTION_STEP, { + windowsBuilder = new WindowsDistributionBuilder(buildContext, windowsDistributionCustomizer) + windowsBuilder.layoutWin(propertiesFile) + }) + } LinuxDistributionBuilder linuxBuilder = null - buildContext.executeStep("Build Linux distribution", BuildOptions.LINUX_DISTRIBUTION_STEP) { - linuxBuilder = new LinuxDistributionBuilder(buildContext) - linuxBuilder.layoutUnix(propertiesFile) + def linuxDistributionCustomizer = buildContext.linuxDistributionCustomizer + if (linuxDistributionCustomizer != null) { + buildContext.executeStep("Build Linux distribution", BuildOptions.LINUX_DISTRIBUTION_STEP) { + linuxBuilder = new LinuxDistributionBuilder(buildContext, linuxDistributionCustomizer) + linuxBuilder.layoutUnix(propertiesFile) + } } MacDistributionBuilder macBuilder = null - buildContext.executeStep("Build Mac OS distribution", BuildOptions.MAC_DISTRIBUTION_STEP) { - macBuilder = new MacDistributionBuilder(buildContext) - macBuilder.layoutMac(propertiesFile) + def macDistributionCustomizer = buildContext.macDistributionCustomizer + if (macDistributionCustomizer != null) { + buildContext.executeStep("Build Mac OS distribution", BuildOptions.MAC_DISTRIBUTION_STEP) { + macBuilder = new MacDistributionBuilder(buildContext, macDistributionCustomizer) + macBuilder.layoutMac(propertiesFile) + } } if (windowsBuilder != null && linuxBuilder != null && macBuilder != null) { diff --git a/build/groovy/org/jetbrains/intellij/build/impl/LinuxDistributionBuilder.groovy b/build/groovy/org/jetbrains/intellij/build/impl/LinuxDistributionBuilder.groovy index a6cbe97fbf95..9c7be4dd50dc 100644 --- a/build/groovy/org/jetbrains/intellij/build/impl/LinuxDistributionBuilder.groovy +++ b/build/groovy/org/jetbrains/intellij/build/impl/LinuxDistributionBuilder.groovy @@ -16,6 +16,7 @@ package org.jetbrains.intellij.build.impl import org.jetbrains.intellij.build.BuildContext +import org.jetbrains.intellij.build.LinuxDistributionCustomizer /** * @author nik @@ -23,8 +24,10 @@ import org.jetbrains.intellij.build.BuildContext class LinuxDistributionBuilder { private final BuildContext buildContext final String unixDistPath + private final LinuxDistributionCustomizer customizer - LinuxDistributionBuilder(BuildContext buildContext) { + LinuxDistributionBuilder(BuildContext buildContext, LinuxDistributionCustomizer customizer) { + this.customizer = customizer this.buildContext = buildContext unixDistPath = "$buildContext.paths.buildOutputRoot/dist.unix" } @@ -43,12 +46,12 @@ class LinuxDistributionBuilder { //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") - buildContext.ant.copy(file: buildContext.linuxDistributionCustomizer.iconPngPath, tofile: "$unixDistPath/bin/${buildContext.productProperties.baseFileName}.png") + buildContext.ant.copy(file: customizer.iconPngPath, tofile: "$unixDistPath/bin/${buildContext.productProperties.baseFileName}.png") unixScripts() unixVMOptions() unixReadme() - buildContext.linuxDistributionCustomizer.copyAdditionalFiles(buildContext, unixDistPath) + customizer.copyAdditionalFiles(buildContext, unixDistPath) buildTarGz(null) def jreDirectoryPath = buildContext.bundledJreManager.extractLinuxJre() if (jreDirectoryPath != null) { @@ -118,10 +121,10 @@ class LinuxDistributionBuilder { } private void buildTarGz(String jreDirectoryPath) { - def tarRoot = buildContext.linuxDistributionCustomizer.rootDirectoryName(buildContext.buildNumber) + def tarRoot = customizer.rootDirectoryName(buildContext.buildNumber) def suffix = jreDirectoryPath != null ? "" : "-no-jdk" def tarPath = "$buildContext.paths.artifacts/${buildContext.productProperties.baseArtifactName(buildContext.buildNumber)}${suffix}.tar" - def extraBins = buildContext.linuxDistributionCustomizer.extraExecutables + def extraBins = customizer.extraExecutables def paths = [buildContext.paths.distAll, unixDistPath] if (jreDirectoryPath != null) { paths += jreDirectoryPath diff --git a/build/groovy/org/jetbrains/intellij/build/impl/MacDistributionBuilder.groovy b/build/groovy/org/jetbrains/intellij/build/impl/MacDistributionBuilder.groovy index 20ae442d3ffa..40319533e592 100644 --- a/build/groovy/org/jetbrains/intellij/build/impl/MacDistributionBuilder.groovy +++ b/build/groovy/org/jetbrains/intellij/build/impl/MacDistributionBuilder.groovy @@ -17,6 +17,7 @@ package org.jetbrains.intellij.build.impl import org.jetbrains.intellij.build.BuildContext import org.jetbrains.intellij.build.BuildOptions +import org.jetbrains.intellij.build.MacDistributionCustomizer import java.time.LocalDate /** @@ -25,14 +26,16 @@ import java.time.LocalDate class MacDistributionBuilder { private final BuildContext buildContext final String macDistPath + private final MacDistributionCustomizer customizer - MacDistributionBuilder(BuildContext buildContext) { + MacDistributionBuilder(BuildContext buildContext, MacDistributionCustomizer customizer) { + this.customizer = customizer this.buildContext = buildContext macDistPath = "$buildContext.paths.buildOutputRoot/dist.mac" } public layoutMac(File ideaPropertiesFile) { - def docTypes = buildContext.macDistributionCustomizer.docTypes ?: """ + def docTypes = customizer.docTypes ?: """ CFBundleTypeExtensions @@ -48,7 +51,7 @@ class MacDistributionBuilder { """ Map customIdeaProperties = ["idea.jre.check": "$buildContext.productProperties.toolsJarRequired"]; layoutMacApp(ideaPropertiesFile, customIdeaProperties, docTypes) - buildContext.macDistributionCustomizer.copyAdditionalFiles(buildContext, macDistPath) + customizer.copyAdditionalFiles(buildContext, macDistPath) def macZipPath = buildMacZip() if (buildContext.macHostProperties == null) { buildContext.messages.info("A Mac OS build agent isn't configured, dmg artifact won't be produced") @@ -56,7 +59,7 @@ class MacDistributionBuilder { } else { buildContext.executeStep("Build dmg artifact for Mac OS X", BuildOptions.MAC_DMG_STEP) { - MacDmgBuilder.signAndBuildDmg(buildContext, buildContext.macHostProperties, macZipPath) + MacDmgBuilder.signAndBuildDmg(buildContext, customizer, buildContext.macHostProperties, macZipPath) buildContext.ant.delete(file: macZipPath) } } @@ -64,7 +67,7 @@ class MacDistributionBuilder { private void layoutMacApp(File ideaPropertiesFile, Map customIdeaProperties, String docTypes) { String target = macDistPath - def macCustomizer = buildContext.macDistributionCustomizer + def macCustomizer = customizer buildContext.ant.copy(todir: "$target/bin") { fileset(dir: "$buildContext.paths.communityHome/bin/mac") if (buildContext.productProperties.yourkitAgentBinariesDirectoryPath != null) { @@ -82,7 +85,7 @@ class MacDistributionBuilder { String icns = "idea.icns" //todo[nik] rename to more generic name? String helpId = macCustomizer.helpId String helpIcns = "$target/Resources/${helpId}.help/Contents/Resources/Shared/product.icns" - String customIcns = buildContext.macDistributionCustomizer.icnsPath + String customIcns = customizer.icnsPath if (customIcns != null) { buildContext.ant.delete(file: "$target/Resources/idea.icns") buildContext.ant.copy(file: customIcns, todir: "$target/Resources") @@ -201,9 +204,9 @@ class MacDistributionBuilder { private String buildMacZip() { return buildContext.messages.block("Build zip archive for Mac OS") { - def extraBins = buildContext.macDistributionCustomizer.extraExecutables + def extraBins = customizer.extraExecutables def allPaths = [buildContext.paths.distAll, macDistPath] - def zipRoot = buildContext.macDistributionCustomizer.rootDirectoryName(buildContext.applicationInfo, buildContext.buildNumber) + def zipRoot = customizer.rootDirectoryName(buildContext.applicationInfo, buildContext.buildNumber) def targetPath = "$buildContext.paths.artifacts/${buildContext.productProperties.baseArtifactName(buildContext.buildNumber)}.mac.zip" buildContext.ant.zip(zipfile: targetPath) { allPaths.each { diff --git a/build/groovy/org/jetbrains/intellij/build/impl/MacDmgBuilder.groovy b/build/groovy/org/jetbrains/intellij/build/impl/MacDmgBuilder.groovy index f73736c37bcf..42048feb7a5b 100644 --- a/build/groovy/org/jetbrains/intellij/build/impl/MacDmgBuilder.groovy +++ b/build/groovy/org/jetbrains/intellij/build/impl/MacDmgBuilder.groovy @@ -20,6 +20,7 @@ import org.apache.tools.ant.types.Path import org.apache.tools.ant.util.SplitClassLoader import org.codehaus.gant.GantBuilder import org.jetbrains.intellij.build.BuildContext +import org.jetbrains.intellij.build.MacDistributionCustomizer import org.jetbrains.intellij.build.MacHostProperties import java.time.LocalDateTime @@ -31,8 +32,10 @@ class MacDmgBuilder { private final String artifactsPath private final MacHostProperties macHostProperties private final String remoteDir + private final MacDistributionCustomizer customizer - private MacDmgBuilder(BuildContext buildContext, String remoteDir, MacHostProperties macHostProperties) { + private MacDmgBuilder(BuildContext buildContext, MacDistributionCustomizer customizer, String remoteDir, MacHostProperties macHostProperties) { + this.customizer = customizer this.buildContext = buildContext ant = buildContext.ant artifactsPath = buildContext.paths.artifacts @@ -40,14 +43,14 @@ class MacDmgBuilder { this.remoteDir = remoteDir } - public static void signAndBuildDmg(BuildContext buildContext, MacHostProperties macHostProperties, String macZipPath) { + public static void signAndBuildDmg(BuildContext buildContext, MacDistributionCustomizer customizer, MacHostProperties macHostProperties, String macZipPath) { defineTasks(buildContext.ant, "${buildContext.paths.communityHome}/lib") String remoteDir = "intellij-builds/${buildContext.fullBuildNumber}" if (remoteDir.toLowerCase().endsWith("snapshot")) { remoteDir += "-" + LocalDateTime.now().format(DateTimeFormatter.ISO_LOCAL_DATE_TIME).replace(':', '-') } - def dmgBuilder = new MacDmgBuilder(buildContext, remoteDir, macHostProperties) + def dmgBuilder = new MacDmgBuilder(buildContext, customizer, remoteDir, macHostProperties) def jreArchivePath = buildContext.bundledJreManager.findMacJreArchive() if (jreArchivePath != null) { dmgBuilder.doSignAndBuildDmg(macZipPath, jreArchivePath) @@ -73,7 +76,7 @@ class MacDmgBuilder { private void buildDmg(String targetFileName) { buildContext.messages.progress("Building ${targetFileName}.dmg") def dmgImageCopy = "$artifactsPath/${buildContext.fullBuildNumber}.png" - def dmgImagePath = (buildContext.applicationInfo.isEAP ? buildContext.macDistributionCustomizer.dmgImagePathForEAP : null) ?: buildContext.macDistributionCustomizer.dmgImagePath + def dmgImagePath = (buildContext.applicationInfo.isEAP ? customizer.dmgImagePathForEAP : null) ?: customizer.dmgImagePath ant.copy(file: dmgImagePath, tofile: dmgImageCopy) ftpAction("put") { ant.fileset(file: dmgImageCopy) diff --git a/build/groovy/org/jetbrains/intellij/build/impl/WinExeInstallerBuilder.groovy b/build/groovy/org/jetbrains/intellij/build/impl/WinExeInstallerBuilder.groovy index eb090aaf54cc..4e3f2b6977ca 100644 --- a/build/groovy/org/jetbrains/intellij/build/impl/WinExeInstallerBuilder.groovy +++ b/build/groovy/org/jetbrains/intellij/build/impl/WinExeInstallerBuilder.groovy @@ -18,6 +18,7 @@ package org.jetbrains.intellij.build.impl import com.intellij.openapi.util.SystemInfoRt import org.codehaus.gant.GantBuilder import org.jetbrains.intellij.build.BuildContext +import org.jetbrains.intellij.build.WindowsDistributionCustomizer import static com.intellij.openapi.util.io.FileUtil.toSystemDependentName /** @@ -27,8 +28,10 @@ class WinExeInstallerBuilder { private final BuildContext buildContext private final GantBuilder ant private final String jreDirectoryPath + private final WindowsDistributionCustomizer customizer - WinExeInstallerBuilder(BuildContext buildContext, String jreDirectoryPath) { + WinExeInstallerBuilder(BuildContext buildContext, WindowsDistributionCustomizer customizer, String jreDirectoryPath) { + this.customizer = customizer this.buildContext = buildContext ant = buildContext.ant this.jreDirectoryPath = jreDirectoryPath @@ -48,7 +51,7 @@ class WinExeInstallerBuilder { ant.mkdir(dir: "$box/bin") ant.mkdir(dir: "$box/nsiconf") - def bundleJre = buildContext.windowsDistributionCustomizer.bundledJreArchitecture != null + def bundleJre = customizer.bundledJreArchitecture != null if (bundleJre && jreDirectoryPath == null) { buildContext.messages.info("JRE won't be bundled with Windows installer because JRE archive is missing") bundleJre = false @@ -85,7 +88,7 @@ class WinExeInstallerBuilder { if (SystemInfoRt.isWindows) { ant.exec(command: "\"${box}/NSIS/makensis.exe\"" + " /DCOMMUNITY_DIR=\"$communityHome\"" + - " /DIPR=\"${buildContext.windowsDistributionCustomizer.associateIpr}\"" + + " /DIPR=\"${customizer.associateIpr}\"" + " /DOUT_FILE=\"${outFileName}\"" + " /DOUT_DIR=\"${buildContext.paths.artifacts}\"" + " \"${box}/nsiconf/idea.nsi\"") @@ -95,7 +98,7 @@ class WinExeInstallerBuilder { " '-X!AddPluginDir \"${box}/NSIS/Plugins\"'" + " '-X!AddIncludeDir \"${box}/NSIS/Include\"'" + " -DCOMMUNITY_DIR=\"$communityHome\"" + - " -DIPR=\"${buildContext.windowsDistributionCustomizer.associateIpr}\"" + + " -DIPR=\"${customizer.associateIpr}\"" + " -DOUT_FILE=\"${outFileName}\"" + " -DOUT_DIR=\"${buildContext.paths.artifacts}\"" + " \"${box}/nsiconf/idea.nsi\"") @@ -113,14 +116,14 @@ class WinExeInstallerBuilder { private void prepareConfigurationFiles(String box, String winDistPath) { def productProperties = buildContext.productProperties new File(box, "nsiconf/paths.nsi").text = """ -!define IMAGES_LOCATION "${toSystemDependentName(buildContext.windowsDistributionCustomizer.installerImagesPath)}" +!define IMAGES_LOCATION "${toSystemDependentName(customizer.installerImagesPath)}" !define PRODUCT_PROPERTIES_FILE "${toSystemDependentName("$winDistPath/bin/idea.properties")}" !define PRODUCT_VM_OPTIONS_NAME ${productProperties.baseFileName}*.exe.vmoptions !define PRODUCT_VM_OPTIONS_FILE "${toSystemDependentName("$winDistPath/bin/")}\${PRODUCT_VM_OPTIONS_NAME}" """ String fullProductName = productProperties.fullNameIncludingEdition(buildContext.applicationInfo) - def extensionsList = buildContext.windowsDistributionCustomizer.fileAssociations + def extensionsList = customizer.fileAssociations def fileAssociations = extensionsList.isEmpty() ? "NoAssociation" : extensionsList.join(",") new File(box, "nsiconf/strings.nsi").text = """ !define MANUFACTURER "JetBrains" @@ -133,7 +136,7 @@ class WinExeInstallerBuilder { !define PRODUCT_LOGO_FILE "logo.bmp" !define PRODUCT_HEADER_FILE "headerlogo.bmp" !define ASSOCIATION "$fileAssociations" -!define UNINSTALL_WEB_PAGE "${buildContext.windowsDistributionCustomizer.uninstallFeedbackPageUrl(buildContext.applicationInfo) ?: "feedback_web_page"}" +!define UNINSTALL_WEB_PAGE "${customizer.uninstallFeedbackPageUrl(buildContext.applicationInfo) ?: "feedback_web_page"}" ; if SHOULD_SET_DEFAULT_INSTDIR != 0 then default installation directory will be directory where highest-numbered IDEA build has been installed ; set to 1 for release build diff --git a/build/groovy/org/jetbrains/intellij/build/impl/WindowsDistributionBuilder.groovy b/build/groovy/org/jetbrains/intellij/build/impl/WindowsDistributionBuilder.groovy index 48992f449e00..e67eae518aea 100644 --- a/build/groovy/org/jetbrains/intellij/build/impl/WindowsDistributionBuilder.groovy +++ b/build/groovy/org/jetbrains/intellij/build/impl/WindowsDistributionBuilder.groovy @@ -17,15 +17,18 @@ package org.jetbrains.intellij.build.impl import org.jetbrains.intellij.build.BuildContext import org.jetbrains.intellij.build.BuildOptions +import org.jetbrains.intellij.build.WindowsDistributionCustomizer import org.jetbrains.jps.model.module.JpsModuleSourceRoot /** * @author nik */ class WindowsDistributionBuilder { private final BuildContext buildContext + private final WindowsDistributionCustomizer customizer final String winDistPath - WindowsDistributionBuilder(BuildContext buildContext) { + WindowsDistributionBuilder(BuildContext buildContext, WindowsDistributionCustomizer customizer) { + this.customizer = customizer this.buildContext = buildContext winDistPath = "$buildContext.paths.buildOutputRoot/dist.win" } @@ -43,19 +46,19 @@ class WindowsDistributionBuilder { buildContext.ant.copy(file: ideaProperties.path, todir: "$winDistPath/bin") buildContext.ant.fixcrlf(file: "$winDistPath/bin/idea.properties", eol: "dos") - buildContext.ant.copy(file: buildContext.windowsDistributionCustomizer.icoPath, tofile: "$winDistPath/bin/${buildContext.productProperties.baseFileName}.ico") - if (buildContext.windowsDistributionCustomizer.includeBatchLaunchers) { + buildContext.ant.copy(file: customizer.icoPath, tofile: "$winDistPath/bin/${buildContext.productProperties.baseFileName}.ico") + if (customizer.includeBatchLaunchers) { winScripts() } winVMOptions() buildWinLauncher(JvmArchitecture.x32) buildWinLauncher(JvmArchitecture.x64) - buildContext.windowsDistributionCustomizer.copyAdditionalFiles(buildContext, winDistPath) + customizer.copyAdditionalFiles(buildContext, winDistPath) - def arch = buildContext.windowsDistributionCustomizer.bundledJreArchitecture + def arch = customizer.bundledJreArchitecture def jreDirectoryPath = arch != null ? buildContext.bundledJreManager.extractWinJre(arch) : null buildWinZip(jreDirectoryPath, ".win") - if (arch != null && buildContext.windowsDistributionCustomizer.buildZipWithBundledOracleJre) { + if (arch != null && customizer.buildZipWithBundledOracleJre) { String oracleJrePath = buildContext.bundledJreManager.extractOracleWinJre(arch) if (oracleJrePath != null) { buildWinZip(oracleJrePath, "-oracle-win") @@ -66,7 +69,7 @@ class WindowsDistributionBuilder { } buildContext.executeStep("Build Windows Exe Installer", BuildOptions.WINDOWS_EXE_INSTALLER_STEP) { - new WinExeInstallerBuilder(buildContext, jreDirectoryPath).buildInstaller(winDistPath) + new WinExeInstallerBuilder(buildContext, customizer, jreDirectoryPath).buildInstaller(winDistPath) } } @@ -194,7 +197,7 @@ IDS_VM_OPTIONS=$vmOptions private void buildWinZip(String jreDirectoryPath, String zipNameSuffix) { buildContext.messages.block("Build Windows ${zipNameSuffix}.zip distribution") { def targetPath = "$buildContext.paths.artifacts/${buildContext.productProperties.baseArtifactName(buildContext.buildNumber)}${zipNameSuffix}.zip" - def zipPrefix = buildContext.windowsDistributionCustomizer.rootDirectoryName(buildContext.buildNumber) + def zipPrefix = customizer.rootDirectoryName(buildContext.buildNumber) def dirs = [buildContext.paths.distAll, winDistPath] if (jreDirectoryPath != null) { dirs += jreDirectoryPath