From 3c7c278ef3fd9a5dd3da9df5e969ee5fa94e35d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Sch=C3=BCrmann?= Date: Mon, 2 Mar 2015 17:23:06 +0100 Subject: [PATCH] Use gradle witness --- OpenKeychain/build.gradle | 36 +++++++++++++++++++++++++++++++++++- README.md | 2 +- build.gradle | 1 + gradle-witness.jar | Bin 0 -> 21690 bytes 4 files changed, 37 insertions(+), 2 deletions(-) create mode 100644 gradle-witness.jar diff --git a/OpenKeychain/build.gradle b/OpenKeychain/build.gradle index bfbcf7702..4567f54dc 100644 --- a/OpenKeychain/build.gradle +++ b/OpenKeychain/build.gradle @@ -1,4 +1,5 @@ apply plugin: 'com.android.application' +apply plugin: 'witness' dependencies { // NOTE: Always use fixed version codes not dynamic ones, e.g. 0.7.3 instead of 0.7.+, see README for more information @@ -20,7 +21,7 @@ dependencies { compile project(':extern:TokenAutoComplete:library') compile project(':extern:safeslinger-exchange') - // TODO: Pin! + // NOTE: libraries are pinned to a specific build, see below compile 'com.eftimoff:android-patternview:1.0.0@aar' compile 'com.journeyapps:zxing-android-embedded:2.0.1@aar' compile 'com.journeyapps:zxing-android-integration:2.0.1@aar' @@ -31,6 +32,39 @@ dependencies { compile 'com.getbase:floatingactionbutton:1.8.0' } +// Output of ./gradlew -q calculateChecksums +// Comment out the libs referenced as git submodules! +dependencyVerification { + verify = [ + 'com.android.support:support-v4:703572d3015a088cc5604b7e38885af3d307c829d0c5ceaf8654ff41c71cd160', + 'com.android.support:appcompat-v7:5dbeb5316d0a6027d646ae552804c3baa5e3bd53f7f33db50904d51505c8a0e5', + 'com.android.support:recyclerview-v7:e525ad3f33c84bb12b73d2dc975b55364a53f0f2d0697e043efba59ba73e22d2', + 'com.android.support:cardview-v7:45c48c2ab056bc7a8573970b10f8902742c5d443f180dae43c56557397ac39af', + //'OpenKeychain.extern:openpgp-api-lib:b17bb282321351e4b00b4cd6422a57aadc13decae264019a88707bcb556439ea', + //'OpenKeychain.extern:openkeychain-api-lib:5f95f01c066069d4bde68992fd8da5faac21510d009b1fdae7a2e28e43e82cf4', + //'OpenKeychain.extern:html-textview:b58e343cf4c145e91f888806d06a2a7770a9e9331a72f08cfcf1128db30dcff3', + //'OpenKeychain.extern.StickyListHeaders:library:24e25da422efc08e4e7a06efbe927fdf17f7a9aa722db2b983385e2bf0004da5', + //'com.madgag.spongycastle:core:a9e4f60afe6b2661e0713190ade92c099b3f74ebbc67c1bc3e3fced0144307f4', + //'com.madgag.spongycastle:pg:29d544ff289fcaafcf6c3904185f5a6fbdb623cf1a1e377fcb239edc31ee9c17', + //'com.madgag.spongycastle:pkix:950d6eac8205c6a24aa87066fbf9cd0af50b95858b8d2b18d53e2fada2dbb2e3', + //'com.madgag.spongycastle:prov:0b78ffd7a59b1b690a05ebe9bb31d43405046a44a18e0529d7c826acb56350b7', + //'OpenKeychain.extern:minidns:cf332e993d7fcdc0a3821f5b997944df40582dc6c9f0ea36b5e20c1e289cb19f', + //'OpenKeychain.extern.KeybaseLib:Lib:af9bff087148e0859430d0b99ece096c41b315c5dc1ed500a68580b9b0e5ab11', + //'OpenKeychain.extern.TokenAutoComplete:library:40d4212a95e947efdb02f2ca66c95a27d49fba848471a6317eca2b9cc18e8780', + //'OpenKeychain.extern:safeslinger-exchange:94a1ce68217af7499579a042758283b1530912c53241bdfa06d1a079a5ae3faf', + 'com.eftimoff:android-patternview:a031eaed3b5cef8ea06c2d4a6e27693937f89ae483598d61b7027eeee0bed408', + 'com.journeyapps:zxing-android-embedded:5d6ba3931bd0b999695e363b571e95bd6bc9956340c1e6ce740cd0bff3d89a50', + 'com.journeyapps:zxing-android-integration:6f50bb07c057ac94319777ddfbb66f5d4f6190393418b2fc861e0e60d06f3c0d', + 'com.google.zxing:core:38c49045765281e4c170062fa3f48e4e988629bf985cab850c7497be5eaa72a1', + 'com.jpardogo.materialtabstrip:library:c6ef812fba4f74be7dc4a905faa4c2908cba261a94c13d4f96d5e67e4aad4aaa', + 'it.neokree:MaterialNavigationDrawer:1174d751a54689fccf53c1fbcdf439745926ae19024f4f1017afb6b29643c57d', + 'com.nispok:snackbar:59dc092a44c877e9ce5f9040c632d99e62d8932b0a4d67ba0ec9e35467d9047c', + 'com.getbase:floatingactionbutton:e63966148212e9685afad2370780ea239b6dbd2a06f6a3f919b98882318e6a32', + 'com.android.support:support-annotations:fdee2354787ef66b268e75958de3f7f6c4f8f325510a6dac9f49c929f83a63de', + 'com.balysv:material-ripple:587f19c1e27f16c7dc67ff9ac73838aa1451086ef05a15cee38bee3e4e1454ae', + ] +} + android { compileSdkVersion rootProject.ext.compileSdkVersion buildToolsVersion rootProject.ext.buildToolsVersion diff --git a/README.md b/README.md index 021a15acb..83655ce01 100644 --- a/README.md +++ b/README.md @@ -130,7 +130,7 @@ ext { #### Add new library * You can add the library as a Maven dependency or as a git submodule (if patches are required) in the "extern" folder. -* If added as a Maven dependency, pin the library using [Gradle Witness](https://github.com/WhisperSystems/gradle-witness) +* If added as a Maven dependency, pin the library using [Gradle Witness](https://github.com/WhisperSystems/gradle-witness) (Do ``./gradlew -q calculateChecksums`` for Trust on First Use) * If added as a git submodule, change the ``compileSdkVersion`` and ``buildToolsVersion`` in build.gradle to use the variables from the root project: ``` android { diff --git a/build.gradle b/build.gradle index 4076ddc6b..6b3eb2c3d 100644 --- a/build.gradle +++ b/build.gradle @@ -6,6 +6,7 @@ buildscript { dependencies { // NOTE: Always use fixed version codes not dynamic ones, e.g. 0.7.3 instead of 0.7.+, see README for more information classpath 'com.android.tools.build:gradle:1.0.0' + classpath files('gradle-witness.jar') } } diff --git a/gradle-witness.jar b/gradle-witness.jar new file mode 100644 index 0000000000000000000000000000000000000000..90d2a364c8a23a6934169eea90c27cca1222c391 GIT binary patch literal 21690 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≶mz|fB3RB9K% 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 BPdESo literal 0 HcmV?d00001