/* * Copyright (c) 2018, Amazon.com, Inc. or its affiliates. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Amazon designates this * particular file as subject to the "Classpath" exception as provided * by Oracle in the LICENSE file that accompanied this code. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. */ plugins { id "nebula.ospackage" version "latest.release" } dependencies { compile project(path: ':installers:linux:universal:tar', configuration: 'archives') } ext { // project.correttoArch has been verified in the root project // No need to set default switch (project.correttoArch) { case 'aarch64': arch_redline = 'AARCH64' break case 'x64': arch_redline = 'x86_64' break } } def jvmDir = '/usr/lib/jvm' def jdkInstallationDirName = "java-1.${project.version.major}.0-amazon-corretto" def jdkHome = "${jvmDir}/${jdkInstallationDirName}" def jdkBinaryDir = "${buildRoot}/${project.correttoJdkArchiveName}" def jdkPackageName = "java-1.${project.version.major}.0-amazon-corretto-devel" ospackage { version project.version.upstream release project.version.revision url "${packageInfo.url}" vendor "${packageInfo.vendor}" packager "${packageInfo.packager}" license "${packageInfo.license}" buildHost "${packageInfo.buildHost}" user 'root' permissionGroup 'root' epoch 1 arch "${arch_redline}" os LINUX type BINARY } /** * Extract universal Corretto universal tar for RPM packaging. */ task extractUniversalTar() { dependsOn project.configurations.compile doLast { exec { def universalTar = fileTree(project.configurations.compile.singleFile).getSingleFile().getPath() workingDir buildRoot if (!buildRoot.exists()) { buildRoot.mkdirs() } commandLine 'tar', 'xfz', universalTar } } } /** * Populate version numbers, java home and alternatives * priority to postin_javac.sh.template and preun_javac.sh.template. * Create script copies under build root scripts folder. */ task inflateRpmScriptTemplate(type: Copy) { dependsOn extractUniversalTar // Use the same priority as IcedTea JDK RPM distribution, based on java version def priority = "10${project.version.major}00${project.version.update}".toString() from('scripts') { include '**/*.template' rename { file -> file.replace('.template', '') } (project.version + [alternatives_priority: priority]).each { prop -> filter(org.apache.tools.ant.filters.ReplaceTokens, tokens: [ (prop.key): String.valueOf(prop.value)]) } } into "${buildRoot}/scripts" } /** * Generate RPM for JDK, with package published under * distributions folder. */ task generateJdkRpm(type: Rpm) { description 'Create the RPM package for Corretto JDK' dependsOn inflateRpmScriptTemplate packageName jdkPackageName packageDescription "Amazon Corretto\'s packaging of the OpenJDK ${project.version.major} code." summary "Amazon Corretto ${project.version.major} development environment" packageGroup 'Development/Tools' // Remove after https://github.com/nebula-plugins/gradle-ospackage-plugin/issues/401 is merged and released sourcePackage "${jdkPackageName}-${project.version.major}.${project.version.minor}.${project.version.security}.${project.version.build}-${project.version.revision}.src.rpm" prefix(jdkHome) postInstall file("$buildRoot/scripts/postin_java.sh") postInstall file("$buildRoot/scripts/postin_javac.sh") preUninstall file("$buildRoot/scripts/preun_java.sh") preUninstall file("$buildRoot/scripts/preun_javac.sh") provides(jdkPackageName, "${epoch}:${version}-${release}", EQUAL) provides('java', "${epoch}:1.8.0", EQUAL) provides('java-headless', "${epoch}:1.8.0", EQUAL) provides('java-devel', "${epoch}:1.8.0", EQUAL) provides('java-devel-openjdk', "${epoch}:${project.version.full}", EQUAL) provides('java-devel-openjdk-devel', "${epoch}:${version}-${release}.x86_64", EQUAL) provides('java-1.8.0-devel', "${epoch}:${project.version.full}", EQUAL) provides('java-sdk', "${epoch}:1.8.0", EQUAL) provides('java-sdk-1.8.0', "${epoch}:${project.version.full}", EQUAL) provides('java-sdk-1.8.0-openjdk', "${epoch}:${project.version.full}", EQUAL) provides('java-sdk-openjdk ', "${epoch}:${project.version.full}", EQUAL) from(jdkBinaryDir) { include(project.configurationFiles) fileType CONFIG | NOREPLACE into jdkHome } from(jdkBinaryDir) { into jdkHome exclude(project.configurationFiles) createDirectoryEntry = true } } artifacts { archives generateJdkRpm }