1 /* 2 * Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Amazon designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 */ 21 22 dependencies { 23 compile project(path: ':installers:mac:tar', configuration: 'buildTar') 24 } 25 26 // Copy task cannot be used here because Gradle does not preserve the symlink 27 task retrieveArtifacts(type: Exec) { 28 // Set environment variable CORRETTO_ARTIFACTS_PATH to the path of "amazon-corretto-<version>.jdk" to be packaged 29 def artifactsPath = System.getenv("CORRETTO_ARTIFACTS_PATH") 30 workingDir buildRoot 31 if (artifactsPath == null) { 32 dependsOn project.configurations.compile 33 commandLine "tar", "xf", project.configurations.compile.singleFile 34 } else { 35 commandLine "cp", "-Rf", "${artifactsPath}", buildRoot 36 } 37 } 38 39 task copyResources(type: Copy) { 40 from "." 41 include 'resources/**' 42 into buildRoot 43 } 44 45 task inflatePkgTemplate { 46 dependsOn copyResources 47 doLast { 48 copy { 49 from('templates/distribution.xml.template') { 50 rename { file -> file.replace('.template', '') } 51 filter(org.apache.tools.ant.filters.ReplaceTokens, tokens: ["full": project.version.full, "major": project.version.major, "macos-arch": (correttoArch == "aarch64" ? "arm64" : "x86_64")]) 52 } 53 into "${buildRoot}/resources" 54 } 55 56 copy { 57 from('templates/introduction.html.template') { 58 rename { file -> file.replace('.template', '') } 59 filter(org.apache.tools.ant.filters.ReplaceTokens, tokens: project.version) 60 } 61 into "${buildRoot}/resources" 62 } 63 } 64 } 65 66 task setupDirectories { 67 dependsOn retrieveArtifacts 68 doLast { 69 exec { 70 workingDir buildRoot 71 commandLine "mkdir", "-p", "pkgroot/" 72 } 73 74 exec { 75 workingDir buildRoot 76 commandLine "cp", "-Rf", "amazon-corretto-${project.version.major}.jdk", "pkgroot/" 77 } 78 79 exec { 80 workingDir buildRoot 81 commandLine "mkdir", "-p", "build/components" 82 } 83 } 84 } 85 86 task generateInstaller { 87 dependsOn retrieveArtifacts 88 dependsOn copyResources 89 dependsOn inflatePkgTemplate 90 dependsOn setupDirectories 91 outputs.dir distributionDir 92 93 doLast { 94 exec { 95 workingDir buildRoot 96 commandLine "pkgbuild", 97 "--root", "pkgroot", 98 "--identifier", "com.amazon.corretto.${project.version.major}", 99 "--version", project.version.full, 100 "--ownership", "recommended", 101 "--scripts", "resources", 102 "--install-location", "/Library/Java/JavaVirtualMachines/", 103 "build/components/amazon-corretto-${project.version.major}.jdk.pkg" 104 } 105 106 exec { 107 workingDir buildRoot 108 commandLine "productbuild", 109 "--distribution", "resources/distribution.xml", 110 "--resources", "resources", 111 "--package-path", "build/components", 112 "--version", project.version.full, 113 "${distributionDir}/amazon-corretto-${project.version.full}-macosx-${correttoArch}.pkg" 114 } 115 } 116 } 117 118 build.dependsOn generateInstaller 119 120 artifacts { 121 archives file: generateInstaller.outputs.getFiles().getSingleFile(), builtBy: generateInstaller 122 }