Skip second verification if first succeeds.

This commit is contained in:
akwizgran
2018-04-18 17:01:02 +01:00
parent ff9971b728
commit c7718db419

View File

@@ -69,22 +69,23 @@ def torBinaries = [
"geoip" : '8239b98374493529a29096e45fc5877d4d6fdad0146ad8380b291f90d61484ea' "geoip" : '8239b98374493529a29096e45fc5877d4d6fdad0146ad8380b291f90d61484ea'
] ]
def verifyOrDeleteBinary(name, chksum) { def verifyOrDeleteBinary(name, chksum, alreadyVerified) {
return tasks.create("verifyOrDeleteBinary${name}", VerifyOrDelete) { return tasks.create("verifyOrDeleteBinary${name}", VerifyOrDelete) {
src "${torBinaryDir}/${name}.zip" src "${torBinaryDir}/${name}.zip"
algorithm 'SHA-256' algorithm 'SHA-256'
checksum chksum checksum chksum
result alreadyVerified
onlyIf { onlyIf {
src.exists() src.exists()
} }
} }
} }
def downloadBinary(name, chksum) { def downloadBinary(name, chksum, alreadyVerified) {
return tasks.create([ return tasks.create([
name: "downloadBinary${name}", name: "downloadBinary${name}",
type: Download, type: Download,
dependsOn: verifyOrDeleteBinary(name, chksum)]) { dependsOn: verifyOrDeleteBinary(name, chksum, alreadyVerified)]) {
src "${torDownloadUrl}${name}.zip" src "${torDownloadUrl}${name}.zip"
.replace('tor_', "tor-${torVersion}-") .replace('tor_', "tor-${torVersion}-")
.replace('geoip', "geoip-${geoipVersion}") .replace('geoip', "geoip-${geoipVersion}")
@@ -97,13 +98,17 @@ def downloadBinary(name, chksum) {
} }
def verifyBinary(name, chksum) { def verifyBinary(name, chksum) {
boolean[] alreadyVerified = [false]
return tasks.create([ return tasks.create([
name : "verifyBinary${name}", name : "verifyBinary${name}",
type : Verify, type : Verify,
dependsOn: downloadBinary(name, chksum)]) { dependsOn: downloadBinary(name, chksum, alreadyVerified)]) {
src "${torBinaryDir}/${name}.zip" src "${torBinaryDir}/${name}.zip"
algorithm 'SHA-256' algorithm 'SHA-256'
checksum chksum checksum chksum
onlyIf {
!alreadyVerified[0]
}
} }
} }
@@ -115,11 +120,14 @@ project.afterEvaluate {
class VerifyOrDelete extends Verify { class VerifyOrDelete extends Verify {
boolean[] result
@TaskAction @TaskAction
@Override @Override
void verify() throws IOException, NoSuchAlgorithmException { void verify() throws IOException, NoSuchAlgorithmException {
try { try {
super.verify() super.verify()
result[0] = true
} catch (Exception e) { } catch (Exception e) {
println "${src} failed verification - deleting" println "${src} failed verification - deleting"
src.delete() src.delete()