Skip to content
This repository has been archived by the owner on Jan 9, 2023. It is now read-only.

Commit

Permalink
Fixes #1004: don't read version file for tasks that don't need to rea…
Browse files Browse the repository at this point in the history
…d it (#1005)

* don't read version file for tasks that don't need to read it

* added mustRunAfter to each of the packaging tasks and added visibility to the 'osPackage' task when 'gradle tasks' is run.
  • Loading branch information
tst-rwildes committed Sep 28, 2018
1 parent 5c2517b commit bdf1314
Showing 1 changed file with 114 additions and 54 deletions.
168 changes: 114 additions & 54 deletions earth_enterprise/rpms/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,9 @@ else if ( project.hasProperty( 'debug' ) || project.hasProperty( 'internal' ) )
scons_option = "internal=1"
}

// define a group name for user facing packaging tasks
def PACKAGE_GROUP = 'Packaging'

// Build the actual file to be used
def gee_long_version_txt = "${stagedInstall_path}/gee_long_version.txt"

Expand All @@ -89,34 +92,6 @@ def rpmPlatformString = org.opengee.os.Platform.rpmPlatformString
// Create a file handle for gee_long_version_txt
def openGeeVersionFile = new File( gee_long_version_txt )

// Call scons to create the file 'gee_long_version.txt'
// The actual parameter used by scons is based on the parameter
// passing into Gradlew
if ( !openGeeVersionFile.exists() ) {
GeeCommandLine.expand(
["/usr/bin/scons", scons_option, gee_long_version_txt ],
"Runing `scons` to produce <${gee_long_version_txt}> failed!",
null, // Use default environment variables.
new File( src_dir )
)
}

def openGeeVersion =
openGeeVersionFile.readLines().
collect {
// Strip comments:
def commentIndex = it.indexOf('#')

commentIndex < 0 ? it : it.substring(0, commentIndex)
}.
collect { it.trim() }. // Trim whitespace.
findAll { !it.isEmpty() }. // Skip empty lines.
findResult {
it // The first string that remains is the version string.
}.
replaceAll(/-.*release/, '').
replaceAll('-', '.')

def stagedInstallDir = new File(stagedInstall_path)
def stagedInstallDir_common = new File(stagedInstallDir, 'common')
def stagedInstallDir_common_opt = new File(stagedInstallDir, 'common/opt')
Expand Down Expand Up @@ -186,10 +161,8 @@ def rpmCommandFilter = {
return rpmCapabilityMap.containsKey(it) ? rpmCapabilityMap[it] : it
}



ospackage {
version = openGeeVersion
version = "<version unset>"
release = "1.${rpmPlatformString}"
distribution = rpmPlatformString
packager = 'gee-oss@googlegroups.com'
Expand All @@ -198,6 +171,29 @@ ospackage {
os = LINUX
}

task setGeeVersion {
doLast {
// if the version file does not exist raise an error
if ( !openGeeVersionFile.exists() ) { // src_dir
throw new GradleException("Missing version file '${openGeeVersionFile}'.")
}
ospackage.version =
openGeeVersionFile.readLines().
collect {
// Strip comments:
def commentIndex = it.indexOf('#')

commentIndex < 0 ? it : it.substring(0, commentIndex)
}.
collect { it.trim() }. // Trim whitespace.
findAll { !it.isEmpty() }. // Skip empty lines.
findResult {
it // The first string that remains is the version string.
}.
replaceAll(/-.*release/, '').
replaceAll('-', '.')
}
}

// Build packages for all platforms by default:
defaultTasks 'osPackage'
Expand All @@ -219,7 +215,17 @@ task stageOpenGeeInstall(type: Exec, dependsOn: 'compileOpenGee') {
"installdir=${stagedInstallDir}")
}

task openGeePostGisRpm(type: GeeRpm) {
if (project.hasProperty('buildOpenGee')) {
setGeeVersion.dependsOn stageOpenGeeInstall
}
else {
setGeeVersion.mustRunAfter stageOpenGeeInstall
}

task openGeePostGisRpm(type: GeeRpm, dependsOn: [setGeeVersion]) {
doFirst {
requires('opengee-common', ospackage.version, GREATER | EQUAL)
}
packageName = 'opengee-postgis'
release = "1.${rpmPlatformString}"
version = '2.3.4'
Expand All @@ -233,7 +239,6 @@ task openGeePostGisRpm(type: GeeRpm) {
type = BINARY
autoFindProvides = true
autoFindRequires = true
requires('opengee-common', openGeeVersion, GREATER | EQUAL)

from (stagedInstallDir_postgis_opt) {
into new File(packageInstallRootDir, 'opt')
Expand All @@ -250,11 +255,14 @@ task openGeePostGisRpm(type: GeeRpm) {
if (project.hasProperty('buildOpenGee')) {
openGeePostGisRpm.dependsOn stageOpenGeeInstall
}
else {
openGeePostGisRpm.mustRunAfter stageOpenGeeInstall
}

// Expands the `gevars.sh.template` and any other templates so they can be
// used in the `common` package, and prefixed to install scripts for all the
// various packages.
task openGeeSharedFiles(type: Copy) {
task openGeeSharedFiles(type: Copy, dependsOn: [setGeeVersion]) {
from file('shared')
into file('build/shared')

Expand All @@ -271,7 +279,7 @@ task openGeeSharedFiles(type: Copy) {
def templateDir = it.file.parent

def templateVariables = [
'openGeeVersion': openGeeVersion
'openGeeVersion': ospackage.version
]

def expandTemplate = { text_or_file ->
Expand All @@ -293,10 +301,13 @@ task openGeeSharedFiles(type: Copy) {
}
}

task openGeeCommonRpm(type: GeeRpm, dependsOn: openGeeSharedFiles) {
task openGeeCommonRpm(type: GeeRpm, dependsOn: [openGeeSharedFiles, setGeeVersion]) {
doFirst{
println "Setting version for GEE common RPM to ${ospackage.version}"
version = ospackage.version
}
packageName = 'opengee-common'
release = "1.${rpmPlatformString}"
version = openGeeVersion
user = 'root'
permissionGroup = 'root'
packageGroup = 'Application/Productivity'
Expand Down Expand Up @@ -387,11 +398,17 @@ task openGeeCommonRpm(type: GeeRpm, dependsOn: openGeeSharedFiles) {
if (project.hasProperty('buildOpenGee')) {
openGeeCommonRpm.dependsOn stageOpenGeeInstall
}
else {
openGeeCommonRpm.mustRunAfter stageOpenGeeInstall
}

task openGeeCommonDeb (type: GeeDeb, dependsOn: openGeeSharedFiles) {
task openGeeCommonDeb (type: GeeDeb, dependsOn: [openGeeSharedFiles, setGeeVersion]) {
doFirst {
println "Setting version for GEE common DEB to ${ospackage.version}"
version = ospackage.version
}
packageName = openGeeCommonRpm.packageName
release = openGeeCommonRpm.release
version = openGeeVersion
user = openGeeCommonRpm.user
permissionGroup = openGeeCommonRpm.permissionGroup
packageGroup = 'misc'
Expand Down Expand Up @@ -447,12 +464,19 @@ task openGeeCommonDeb (type: GeeDeb, dependsOn: openGeeSharedFiles) {
if (project.hasProperty('buildOpenGee')) {
openGeeCommonDeb.dependsOn stageOpenGeeInstall
}
else {
openGeeCommonDeb.mustRunAfter stageOpenGeeInstall
}

task openGeeServerRpm (type: GeeRpm, dependsOn: openGeeSharedFiles) {
requires('opengee-common', openGeeVersion, GREATER | EQUAL)
task openGeeServerRpm (type: GeeRpm, dependsOn: [openGeeSharedFiles, setGeeVersion]) {
doFirst{
println "Setting version for GEE server RPM to ${ospackage.version}"
version = ospackage.version
requires('opengee-common', ospackage.version, GREATER | EQUAL)
requiresPre('opengee-common', ospackage.version, GREATER | EQUAL)
}
packageName = 'opengee-server'
release = "1.${rpmPlatformString}"
version = openGeeVersion
user = 'root'
permissionGroup = 'root'
packageGroup = 'Application/Productivity'
Expand All @@ -467,8 +491,6 @@ task openGeeServerRpm (type: GeeRpm, dependsOn: openGeeSharedFiles) {
requires('opengee-postgis', '2.3.4', GREATER | EQUAL)
conflicts('opengee-postgis', '2.0', LESS )
conflicts('opengee-postgis', '2.4', GREATER | EQUAL)
requires('opengee-common', openGeeVersion, GREATER | EQUAL)
requiresPre('opengee-common', openGeeVersion, GREATER | EQUAL)
// `opengee-server` bundles Apache, and Apache requires utilities from the
// `initscripts` package:
requires('initscripts')
Expand Down Expand Up @@ -554,10 +576,19 @@ task openGeeServerRpm (type: GeeRpm, dependsOn: openGeeSharedFiles) {
link('/opt/google/gehttpd/htdocs/shared_assets/docs', '/opt/google/share/doc')
}

task openGeeServerDeb (type: Deb) {
packageName = 'opengee-server'
if (project.hasProperty('buildOpenGee')) {
openGeeServerRpm.dependsOn stageOpenGeeInstall
}
else {
openGeeServerRpm.mustRunAfter stageOpenGeeInstall
}

requires('opengee-common', openGeeVersion, GREATER | EQUAL)
task openGeeServerDeb (type: Deb, dependsOn: [setGeeVersion]) {
doFirst {
println "Setting version for GEE server DEB to ${ospackage.version}"
requires('opengee-common', ospackage.version, GREATER | EQUAL)
}
packageName = 'opengee-server'

from(stagedInstallDir_server_etc) {
into new File(packageInstallRootDir, 'etc')
Expand All @@ -572,10 +603,21 @@ task openGeeServerDeb (type: Deb) {
}
}

task openGeeFusionRpm (type: GeeRpm, dependsOn: openGeeSharedFiles) {
if (project.hasProperty('buildOpenGee')) {
openGeeServerDeb.dependsOn stageOpenGeeInstall
}
else {
openGeeServerDeb.mustRunAfter stageOpenGeeInstall
}

task openGeeFusionRpm (type: GeeRpm, dependsOn: [openGeeSharedFiles, setGeeVersion]) {
doFirst{
println "Setting version for GEE fusion RPM to ${ospackage.version}"
version = ospackage.version
requires('opengee-common', ospackage.version, GREATER | EQUAL)
}
packageName = 'opengee-fusion'
release = "1.${rpmPlatformString}"
version = openGeeVersion
user = 'root'
permissionGroup = 'root'
packageGroup = 'Application/Productivity'
Expand All @@ -593,8 +635,6 @@ built from raster, vector, and location properties data.
autoFindRequires = true

requires('proj-devel') /* This dependency is not being picked up automatically by GeeRpm task */
requires('opengee-common', openGeeVersion, GREATER | EQUAL)


requiresCommands(
packageSharedCommands +
Expand Down Expand Up @@ -656,7 +696,7 @@ built from raster, vector, and location properties data.
def templateDir = it.file.parent

def templateVariables = [
'openGeeVersion': openGeeVersion
'openGeeVersion': ospackage.version
]

def expandTemplate = { text_or_file ->
Expand Down Expand Up @@ -685,15 +725,32 @@ built from raster, vector, and location properties data.
link('/opt/google/gehttpd/htdocs/shared_assets/docs', '/opt/google/share/doc')
}

task openGeeFusionDeb (type: Deb) {
if (project.hasProperty('buildOpenGee')) {
openGeeFusionRpm.dependsOn stageOpenGeeInstall
}
else {
openGeeFusionRpm.mustRunAfter stageOpenGeeInstall
}

task openGeeFusionDeb (type: Deb, dependsOn: [setGeeVersion]) {
doFirst{
println "Setting version for GEE fusion DEB to ${ospackage.version}"
requires('opengee-common', ospackage.version, GREATER | EQUAL)
}
packageName = 'opengee-fusion'
requires('opengee-common', openGeeVersion, GREATER | EQUAL)

from(stagedInstallDir_fusion) {
into packageInstallRootDir
}
}

if (project.hasProperty('buildOpenGee')) {
openGeeFusionDeb.dependsOn stageOpenGeeInstall
}
else {
openGeeFusionDeb.mustRunAfter stageOpenGeeInstall
}

task openGeeRpms(
dependsOn: [
'openGeeServerRpm', 'openGeeFusionRpm', 'openGeeCommonRpm',
Expand All @@ -705,6 +762,9 @@ task openGeeDebs(

task osPackage(dependsOn: org.opengee.os.Platform.osId == 'ubuntu' ? openGeeDebs : openGeeRpms)

osPackage.group = PACKAGE_GROUP
osPackage.description = "Build packages from staged install based on current OS"

// Mostly for documentation purposes. You need to comment out the rest of the
// Gradle file to run this task:
task wrapper(type: Wrapper) {
Expand Down

0 comments on commit bdf1314

Please sign in to comment.