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 plugins { 23 id 'com.netflix.nebula.ospackage' version 'latest.release' 24 } 25 26 dependencies { 27 compile project(path: ':installers:linux:universal:tar', configuration: 'archives') 28 } 29 30 ext { 31 switch (project.correttoArch) { 32 case 'aarch64': 33 arch_redline = 'AARCH64' 34 break; 35 case 'x86': 36 arch_redline = "i386" 37 break 38 case 'x64': 39 arch_redline = 'x86_64' 40 break 41 } 42 } 43 44 def jvmDir = '/usr/lib/jvm' 45 def jdkInstallationDirName = "java-${project.version.major}-amazon-corretto" 46 def jdkHome = "${jvmDir}/${jdkInstallationDirName}" 47 def jdkBinaryDir = "${buildRoot}/${project.correttoJdkArchiveName}" 48 def jdkPackageName = "java-${project.version.major}-amazon-corretto-devel" 49 50 ospackage { 51 version = project.version.upstream 52 release = project.version.revision 53 54 url = "${packageInfo.url}" 55 vendor = "${packageInfo.vendor}" 56 packager = "${packageInfo.packager}" 57 license = "${packageInfo.license}" 58 buildHost = "${packageInfo.buildHost}" 59 user = 'root' 60 permissionGroup = 'root' 61 epoch = 1 62 arch = arch_redline 63 os = LINUX 64 type = BINARY 65 } 66 67 /** 68 * Uncompress and copy the universal Corretto artifact 69 * tar for RPM packaging. 70 */ 71 task extractUniversalTar(type: Copy) { 72 dependsOn project.configurations.compile 73 from tarTree(project.configurations.compile.singleFile) 74 into buildRoot 75 } 76 77 /** 78 * Populate version numbers, java home and alternatives 79 * priority to postin_javac.sh.template and preun_javac.sh.template. 80 * Create script copies under build root scripts folder. 81 */ 82 task inflateRpmScriptTemplate(type: Copy) { 83 dependsOn extractUniversalTar 84 // Use the same priority as IcedTea JDK RPM distribution, based on java version 85 def priority = String.format("1%2s%2s%3s", project.version.major, project.version.minor, project.version.security).replace(' ', '0') 86 from('scripts') { 87 include '**/*.template' 88 rename { file -> file.replace('.template', '') } 89 filter(org.apache.tools.ant.filters.ReplaceTokens, 90 tokens: project.version + [alternatives_priority: priority]) 91 } 92 into "${buildRoot}/scripts" 93 } 94 95 /** 96 * Generate RPM for JDK, with package published under 97 * distributions folder. 98 */ 99 task generateJdkRpm(type: Rpm) { 100 description = 'Create the RPM package for Corretto JDK' 101 dependsOn inflateRpmScriptTemplate 102 packageName = jdkPackageName 103 packageDescription = packageInfo.description 104 summary = "Amazon Corretto ${project.version.major} development environment" 105 packageGroup = 'Development/Tools' 106 // Remove after https://github.com/nebula-plugins/gradle-ospackage-plugin/issues/401 is merged and released 107 sourcePackage = "${jdkPackageName}-${project.version.major}.${project.version.minor}.${project.version.security}.${project.version.build}-${project.version.revision}.src.rpm" 108 109 prefix(jdkHome) 110 postInstall file("$buildRoot/scripts/postin_java.sh") 111 postInstall file("$buildRoot/scripts/postin_javac.sh") 112 preUninstall file("$buildRoot/scripts/preun_java.sh") 113 preUninstall file("$buildRoot/scripts/preun_javac.sh") 114 115 requires('zlib') 116 117 provides(jdkPackageName, "${epoch}:${version}-${release}", EQUAL) 118 provides("java", "${epoch}:${version}-${release}", EQUAL) 119 provides("java-${project.version.major}-devel", "${epoch}:${version}", EQUAL) 120 provides("java-${project.version.major}-openjdk-devel", "${epoch}:${version}", EQUAL) 121 provides("java-${project.version.major}-openjdk-devel", "${epoch}:${version}-${release}", EQUAL) 122 provides("java-sdk-${project.version.major}", "${epoch}:${version}", EQUAL) 123 provides("java-sdk-${project.version.major}-openjdk", "${epoch}:${version}-${release}", EQUAL) 124 provides("java-${project.version.major}", "${epoch}:${version}", EQUAL) 125 provides("java-${project.version.major}-openjdk", "${epoch}:${version}", EQUAL) 126 provides("jre", "${epoch}:${version}", EQUAL) 127 provides("jre-${project.version.major}", "${epoch}:${version}", EQUAL) 128 provides("jre-${project.version.major}-openjdk", "${epoch}:${version}", EQUAL) 129 130 from(jdkBinaryDir) { 131 include(project.configurationFiles) 132 fileType CONFIG | NOREPLACE 133 into jdkHome 134 } 135 136 from(jdkBinaryDir) { 137 into jdkHome 138 exclude 'legal' 139 exclude(project.configurationFiles) 140 } 141 142 // Copy legal directory specifically to set permission correctly. 143 // See https://github.com/corretto/corretto-11/issues/129 144 from("${jdkBinaryDir}/legal") { 145 into "${jdkHome}/legal" 146 fileMode = 0444 147 } 148 149 if (!project.excludeReadmeJavaSE) { 150 from("${jdkBinaryDir}/README.JAVASE") { 151 into jdkHome 152 fileMode = 0444 153 } 154 } 155 } 156 157 artifacts { 158 archives generateJdkRpm 159 }