Skip to content
Snippets Groups Projects
build.gradle 5.07 KiB
Newer Older
akwizgran's avatar
akwizgran committed
import de.undercouch.gradle.tasks.download.Download
import de.undercouch.gradle.tasks.download.Verify

import java.security.NoSuchAlgorithmException

akwizgran's avatar
akwizgran committed
apply plugin: 'com.android.library'
apply plugin: 'witness'
apply plugin: 'de.undercouch.download'

android {
	compileSdkVersion 27
	buildToolsVersion '26.0.2'
akwizgran's avatar
akwizgran committed

	defaultConfig {
		minSdkVersion 14
		versionCode 10001
		versionName "1.0.1"
akwizgran's avatar
akwizgran committed
		consumerProguardFiles 'proguard-rules.txt'
	}

	compileOptions {
		sourceCompatibility JavaVersion.VERSION_1_8
		targetCompatibility JavaVersion.VERSION_1_8
akwizgran's avatar
akwizgran committed
	}
}

dependencies {
	implementation project(path: ':bramble-core', configuration: 'default')
	implementation fileTree(dir: 'libs', include: '*.jar')

	annotationProcessor 'com.google.dagger:dagger-compiler:2.0.2'

	compileOnly 'javax.annotation:jsr250-api:1.0'
akwizgran's avatar
akwizgran committed
dependencyVerification {
	verify = [
			'com.google.code.findbugs:jsr305:3.0.2:jsr305-3.0.2.jar:766ad2a0783f2687962c8ad74ceecc38a28b9f72a2d085ee438b7813e928d0c7',
			'com.google.dagger:dagger-compiler:2.0.2:dagger-compiler-2.0.2.jar:b74bc9de063dd4c6400b232231f2ef5056145b8fbecbf5382012007dd1c071b3',
			'com.google.dagger:dagger-producers:2.0-beta:dagger-producers-2.0-beta.jar:99ec15e8a0507ba569e7655bc1165ee5e5ca5aa914b3c8f7e2c2458f724edd6b',
			'com.google.dagger:dagger:2.0.2:dagger-2.0.2.jar:84c0282ed8be73a29e0475d639da030b55dee72369e58dd35ae7d4fe6243dcf9',
			'com.google.guava:guava:18.0:guava-18.0.jar:d664fbfc03d2e5ce9cab2a44fb01f1d0bf9dfebeccc1a473b1f9ea31f79f6f99',
			'com.h2database:h2:1.4.192:h2-1.4.192.jar:225b22e9857235c46c93861410b60b8c81c10dc8985f4faf188985ba5445126c',
			'com.madgag.spongycastle:core:1.58.0.0:core-1.58.0.0.jar:199617dd5698c5a9312b898c0a4cec7ce9dd8649d07f65d91629f58229d72728',
			'javax.annotation:jsr250-api:1.0:jsr250-api-1.0.jar:a1a922d0d9b6d183ed3800dfac01d1e1eb159f0e8c6f94736931c1def54a941f',
			'javax.inject:javax.inject:1:javax.inject-1.jar:91c77044a50c481636c32d916fd89c9118a72195390452c81065080f957de7ff',
			'net.i2p.crypto:eddsa:0.2.0:eddsa-0.2.0.jar:a7cb1b85c16e2f0730b9204106929a1d9aaae1df728adc7041a8b8b605692140',
akwizgran's avatar
akwizgran committed
			'org.bitlet:weupnp:0.1.4:weupnp-0.1.4.jar:88df7e6504929d00bdb832863761385c68ab92af945b04f0770b126270a444fb',
			'org.jacoco:org.jacoco.agent:0.7.4.201502262128:org.jacoco.agent-0.7.4.201502262128-runtime.jar:e357a0f1d573c2f702a273992b1b6cb661734f66311854efb3778a888515c5b5',
			'org.jacoco:org.jacoco.agent:0.7.4.201502262128:org.jacoco.agent-0.7.4.201502262128.jar:47b4bec6df11a1118da3953da8b9fa1e7079d6fec857faa1a3cf912e53a6fd4e',
			'org.jacoco:org.jacoco.ant:0.7.4.201502262128:org.jacoco.ant-0.7.4.201502262128.jar:013ce2a68ba57a3c59215ae0dec4df3498c078062a38c3b94c841fc14450f283',
			'org.jacoco:org.jacoco.core:0.7.4.201502262128:org.jacoco.core-0.7.4.201502262128.jar:ec4c74554312fac5116350164786f91b35c9e082fa4ea598bfa42b5db05d7abb',
			'org.jacoco:org.jacoco.report:0.7.4.201502262128:org.jacoco.report-0.7.4.201502262128.jar:7a3554c605e088e7e323b1084656243f0444fa353e2f2dee1f1a4204eb64ff09',
			'org.ow2.asm:asm-debug-all:5.0.1:asm-debug-all-5.0.1.jar:4734de5b515a454b0096db6971fb068e5f70e6f10bbee2b3bd2fdfe5d978ed57',
	]
}

ext.torBinaryDir = 'src/main/res/raw'
ext.torVersion = '0.2.9.14'
ext.geoipVersion = '2017-11-06'
ext.torDownloadUrl = 'https://briarproject.org/build/'

def torBinaries = [
		"tor_arm"    : '1710ea6c47b7f4c1a88bdf4858c7893837635db10e8866854eed8d61629f50e8',
		"tor_arm_pie": '974e6949507db8fa2ea45231817c2c3677ed4ccf5488a2252317d744b0be1917',
		"tor_x86"    : '3a5e45b3f051fcda9353b098b7086e762ffe7ba9242f7d7c8bf6523faaa8b1e9',
		"tor_x86_pie": 'd1d96d8ce1a4b68accf04850185780d10cd5563d3552f7e1f040f8ca32cb4e51',
		"geoip"      : '8239b98374493529a29096e45fc5877d4d6fdad0146ad8380b291f90d61484ea'
def verifyOrDeleteBinary(name, chksum, alreadyVerified) {
	return tasks.create("verifyOrDeleteBinary${name}", VerifyOrDelete) {
		src "${torBinaryDir}/${name}.zip"
		algorithm 'SHA-256'
		checksum chksum
		result alreadyVerified
def downloadBinary(name, chksum, alreadyVerified) {
	return tasks.create([
			name: "downloadBinary${name}",
			type: Download,
			dependsOn: verifyOrDeleteBinary(name, chksum, alreadyVerified)]) {
akwizgran's avatar
akwizgran committed
		src "${torDownloadUrl}${name}.zip"
				.replace('tor_', "tor-${torVersion}-")
				.replace('geoip', "geoip-${geoipVersion}")
				.replaceAll('_', '-')
akwizgran's avatar
akwizgran committed
		dest "${torBinaryDir}/${name}.zip"
def verifyBinary(name, chksum) {
	boolean[] alreadyVerified = [false]
	return tasks.create([
			name     : "verifyBinary${name}",
			type     : Verify,
			dependsOn: downloadBinary(name, chksum, alreadyVerified)]) {
		src "${torBinaryDir}/${name}.zip"
		algorithm 'SHA-256'
		checksum chksum
		onlyIf {
			!alreadyVerified[0]
		}
akwizgran's avatar
akwizgran committed
}

project.afterEvaluate {
	torBinaries.every { name, checksum ->
		preBuild.dependsOn.add(verifyBinary(name, checksum))
	}
}

class VerifyOrDelete extends Verify {

	@TaskAction
	@Override
	void verify() throws IOException, NoSuchAlgorithmException {
		try {
			super.verify()
			result[0] = true
		} catch (Exception e) {
			println "${src} failed verification - deleting"
			src.delete()
		}