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 import groovy.text.GStringTemplateEngine
23
24 dependencies {
25 compile project(path: ':openjdksrc', configuration: 'archives')
26 }
27
28 def tarName = "java-${version.major}-amazon-corretto"
29 def tarVersion = "${version.major}.${version.minor}.${version.security}+${version.build}"
30
31 def javaVersion = "${version.major}.${version.minor}.${version.security}"
32 def buildId = "${version.build}"
33 def releaseId = "${version.revision}"
34 /**
35 * Apply version numbers to the RPM spec file template and copy
36 * to the build root.
37 */
38 task inflateRpmSpec {
39 inputs.file 'java-amazon-corretto.spec.template'
40 outputs.file "$buildDir/java-${version.major}-amazon-corretto.spec"
41 doLast {
42 def renderedTemplate = new GStringTemplateEngine()
43 .createTemplate(file('java-amazon-corretto.spec.template'))
44 .make(
45 [
46 java_spec_version : version.major,
47 java_major_version : version.major,
48 java_security_version : version.security,
49 java_version : javaVersion,
50 build_id : buildId,
51 release_id : releaseId,
52 version_opt : versionOpt,
53 debug_level : correttoDebugLevel,
54 boot_jdk_major_version : version.major.toInteger() - 1,
55 boot_jdk_major_v_backup : version.major.toInteger() - 2,
56 experimental_feature: project.findProperty("corretto.experimental_feature") ?: "%{nil}",
57 additional_configure_options: project.findProperty("corretto.additional_configure_options") ?: "%{nil}",
58 zlib_option: project.findProperty("corretto.zlib_option") ?: "system",
59 use_gcc_ver: project.findProperty("corretto.use_gcc_ver") ?: "%{nil}"
60 ])
61 outputs.files.singleFile.text = renderedTemplate
62 }
63 }
64
65 task copySourceTar(type: Tar) {
66 dependsOn project.configurations.compile, inflateRpmSpec
67 compression = Compression.GZIP
68 archiveFileName = project.configurations.compile.singleFile.name
69 from("$buildDir") {
70 include "java-${project.version.major}-amazon-corretto.spec"
71 into 'rpm'
72 }
73 from(tarTree(project.configurations.compile.singleFile)) {
74 into '/'
75 }
76 // Include the man pages tarball if it exists
77 from(file("${buildDir}/distributions/jdk${project.version.major}-manpages.tar.gz")) {
78 into '/'
79 }
80 }
81
82 task rpmBuild(type: Exec) {
83 dependsOn copySourceTar
84 workingDir "$buildDir"
85 executable = '/usr/bin/rpmbuild'
86 args = ['-vv',
87 '-bs',
88 '--define',
89 "dist .${project.findProperty('corretto.amzn_dist') ?: 'amzn2'}",
90 '--define',
91 "_topdir ${buildDir}/rpmbuild",
92 '--define',
93 "_sourcedir ${buildDir}/distributions",
94 '--define',
95 "_srcrpmdir ${buildDir}/distributions",
96 "java-${version.major}-amazon-corretto.spec"]
97
98 }