OpenSearch/distribution/rpm/build.gradle

86 lines
2.8 KiB
Groovy

/*
* Licensed to Elasticsearch under one or more contributor
* license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright
* ownership. Elasticsearch licenses this file to you under
* the Apache License, Version 2.0 (the "License"); you may
* not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import org.elasticsearch.gradle.LoggedExec
task buildRpm(type: Rpm) {
dependsOn preparePackagingFiles
baseName 'elasticsearch' // this is what pom generation uses for artifactId
// Follow elasticsearch's rpm file naming convention
archiveName "${packageName}-${project.version}.rpm"
packageGroup 'Application/Internet'
prefix '/usr'
packager 'Elasticsearch'
version = project.version.replace('-', '_')
release = '1'
arch 'NOARCH'
os 'LINUX'
license '2009'
distribution 'Elasticsearch'
vendor 'Elasticsearch'
dirMode 0755
fileMode 0644
addParentDirs false
// TODO ospackage doesn't support icon but we used to have one
// Declare the folders so that the RPM package manager removes
// them when upgrading or removing the package
directory('/usr/share/elasticsearch/bin', 0755)
directory('/usr/share/elasticsearch/lib', 0755)
directory('/usr/share/elasticsearch/modules', 0755)
modulesFiles.eachFile { FileCopyDetails fcp ->
if (fcp.name == "plugin-descriptor.properties") {
directory('/usr/share/elasticsearch/modules/' + fcp.file.parentFile.name, 0755)
}
}
}
artifacts {
'default' buildRpm
archives buildRpm
}
integTest.enabled = false
licenseHeaders.enabled = false
// task that sanity checks if the RPM archive can be extracted
task checkRpm(type: LoggedExec) {
onlyIf { new File('/bin/rpm').exists() || new File('/usr/bin/rpm').exists() || new File('/usr/local/bin/rpm').exists() }
final File rpmDatabase = new File("${buildDir}", 'rpm-database')
final File rpmExtracted = new File("${buildDir}", 'rpm-extracted')
commandLine 'rpm',
'--badreloc',
'--nodeps',
'--noscripts',
'--notriggers',
'--dbpath',
rpmDatabase,
'--relocate',
"/=${rpmExtracted}",
'-i',
"${buildDir}/distributions/elasticsearch-${project.version}.rpm"
doFirst {
rpmDatabase.deleteDir()
rpmExtracted.deleteDir()
}
}
checkRpm.dependsOn buildRpm
check.dependsOn checkRpm