From 17d109a15ece76a5b5127ca97d254cddb847c5fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C5=99emek=20Vyhnal?= <1145361+premek@users.noreply.github.com> Date: Sun, 6 Feb 2022 17:36:58 +0100 Subject: [PATCH] replace witness plugin with gradle dependency checksum verification (#223) * replace witness plugin with gradle builtin dependency checksum verification I noticed that a recent dependency change didn't needed checksum change. It was because the witness plugin only checked the listed checksums, not all the dependencies. If the dependency was not on the list, the new checksum was not verified. Gradle now has its own verification mechanism, see https://docs.gradle.org/current/userguide/dependency_verification.html After a dependency is added or a version is changed, the checksums could be regenerated using the following command. ``` gradle --write-verification-metadata sha256 help ```` The help task is just used to discover as much as possible dependencies, and if subsequent builds fail with a verification error, you can re-execute generation with the appropriate tasks to "discover" more dependencies I verified that all the checksums from the removed file are present in the new one. jcenter repository (used only for gradle shadow plugin) is replaced with gradlePluginPortal. jcenter is shutting down anyway and the checksums for shadow plugin and its dependencies were not added automatically to the xml file for some reason. * add javadoc and source as trusted artifacts Co-authored-by: woodser --- build.gradle | 10 +- gradle/verification-metadata.xml | 2167 ++++++++++++++++++++++++++ gradle/witness/gradle-witness.gradle | 89 -- gradle/witness/gradle-witness.jar | Bin 18967 -> 0 bytes 4 files changed, 2171 insertions(+), 95 deletions(-) create mode 100644 gradle/verification-metadata.xml delete mode 100644 gradle/witness/gradle-witness.gradle delete mode 100644 gradle/witness/gradle-witness.jar diff --git a/build.gradle b/build.gradle index afab45bdef..22b31b20d9 100644 --- a/build.gradle +++ b/build.gradle @@ -1,12 +1,11 @@ buildscript { repositories { - jcenter() + gradlePluginPortal() } dependencies { classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.10' classpath 'com.google.gradle:osdetector-gradle-plugin:1.6.0' classpath 'com.github.jengelman.gradle.plugins:shadow:5.2.0' - classpath files('gradle/witness/gradle-witness.jar') classpath 'org.springframework.boot:spring-boot-gradle-plugin:1.5.10.RELEASE' } } @@ -280,9 +279,9 @@ configure(project(':common')) { annotationProcessor "org.projectlombok:lombok:$lombokVersion" testCompile "org.hamcrest:hamcrest-all:$hamcrestVersion" - // override transitive dependency version from 1.5 to the same version just identified by commit number. + // override transitive dependency version from 1.5 to the same version just identified by commit number. // Remove this if transitive dependency is changed to something else than 1.5 - compile( group: 'com.github.JesusMcCloud', name: 'jtorctl') { version { strictly "[9b5ba2036b]" } } + compile(group: 'com.github.JesusMcCloud', name: 'jtorctl') { version { strictly "[9b5ba2036b]" } } } } @@ -347,6 +346,7 @@ configure(project(':core')) { exclude(module: 'jackson-annotations') exclude(module: 'jackson-databind') exclude(module: 'bcprov-jdk15on') + exclude(group: 'org.slf4j', module: 'slf4j-simple') } implementation("org.apache.httpcomponents.client5:httpclient5:$httpclient5Version") implementation "com.google.protobuf:protobuf-java:$protobufVersion" @@ -407,8 +407,6 @@ configure(project(':cli')) { configure(project(':desktop')) { apply plugin: 'com.github.johnrengelman.shadow' - apply plugin: 'witness' - apply from: '../gradle/witness/gradle-witness.gradle' apply from: 'package/package.gradle' version = '1.6.2-SNAPSHOT' diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml new file mode 100644 index 0000000000..c6c685f4e4 --- /dev/null +++ b/gradle/verification-metadata.xml @@ -0,0 +1,2167 @@ + + + + false + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/gradle/witness/gradle-witness.gradle b/gradle/witness/gradle-witness.gradle deleted file mode 100644 index f15486889d..0000000000 --- a/gradle/witness/gradle-witness.gradle +++ /dev/null @@ -1,89 +0,0 @@ -// To update the `dependencyVerification` block below (we don't add local bisq modules and org.openjfx libraries as -// those cause problems): -// -// 1. Remove the block entirely -// 2. Replace the block with the following command: -// -// ./gradlew -q calculateChecksums | grep -v 'bisq:\|org.openjfx:' >> gradle/witness/gradle-witness.gradle -// -// 3. Run `git diff` to verify that expected hashes have changed -// 4. Commit the changes -// -// Note: The checksums are SHA-256. -// -// See https://github.com/signalapp/gradle-witness#using-witness for further details. - -dependencyVerification { - verify = [ - 'aopalliance:aopalliance:0addec670fedcd3f113c5c8091d783280d23f75e3acb841b61a9cdb079376a08', - 'ch.qos.logback:logback-classic:86a0268c3c96888d4e49d8a754b5b2173286aee100559e803efcbb0df676c66e', - 'ch.qos.logback:logback-core:58738067842476feeae5768e832cd36a0e40ce41576ba5739c3632d376bd8c86', - 'com.fasterxml.jackson.core:jackson-annotations:203cefdfa6c81e6aa84e11f292f29ca97344a3c3bc0293abea065cd837592873', - 'com.fasterxml.jackson.core:jackson-core:cc899cb6eae0c80b87d590eea86528797369cc4feb7b79463207d6bb18f0c257', - 'com.fasterxml.jackson.core:jackson-databind:f2ca3c28ebded59c98447d51afe945323df961540af66a063c015597af936aa0', - 'com.github.JesusMcCloud:jtorctl:b2bdfe9758e4c82ff1b10e7c3098981bf55ea3e5f161ee7990ac125003a6cdbe', - 'com.github.bisq-network.netlayer:tor.external:e1d6b8fe73891207701c6b14317be789fd4acd25f7b499425d2471598d9a22ac', - 'com.github.bisq-network.netlayer:tor.native:aa3edf9c27071fdc2b7d55b00dbc7c6cd5dc9aa9f87aafa4be0805f818a466be', - 'com.github.bisq-network.netlayer:tor:37198bc56e8fe112f8c80441544a2b9731929dae586bda841a4a926fdc04f457', - 'com.github.bisq-network.tor-binary:tor-binary-geoip:cfefbf2d8591b5dd321ec17a02a3682d21763cf50525fa5496c9ec8968413c4e', - 'com.github.bisq-network.tor-binary:tor-binary-linux32:b82b6595f78ef52a44e58000fe5d7f679681739451872f5bbd123e5dbd2af050', - 'com.github.bisq-network.tor-binary:tor-binary-linux64:d5c1d54b2c2323ac1124435be633c7822a28e6fe9160486d03102cc2b444df24', - 'com.github.bisq-network.tor-binary:tor-binary-macos:6216d66241e020fec1a55648d7176ef64959e094c493df8f49e7e8e8f62fe1e1', - 'com.github.bisq-network.tor-binary:tor-binary-windows:28a1031d7610863f774eedbd00b83b06b132781c31077b805033299de3e3a263', - 'com.github.bisq-network:bitcoinj:65ed08fa5777ea4a08599bdd575e7dc1f4ba2d4d5835472551439d6f6252e68a', - 'com.github.bisq-network:jsonrpc4j:842b4a660440ef53cd436da2e21c3e1fed939b620a3fc7542307deb3e77fdeb6', - 'com.github.ravn:jsocks:3c71600af027b2b6d4244e4ad14d98ff2352a379410daebefff5d8cd48d742a4', - 'com.google.android:annotations:ba734e1e84c09d615af6a09d33034b4f0442f8772dec120efb376d86a565ae15', - 'com.google.api.grpc:proto-google-common-protos:bd60cd7a423b00fb824c27bdd0293aaf4781be1daba6ed256311103fb4b84108', - 'com.google.code.findbugs:jsr305:766ad2a0783f2687962c8ad74ceecc38a28b9f72a2d085ee438b7813e928d0c7', - 'com.google.code.gson:gson:233a0149fc365c9f6edbd683cfe266b19bdc773be98eabdaf6b3c924b48e7d81', - 'com.google.errorprone:error_prone_annotations:baf7d6ea97ce606c53e11b6854ba5f2ce7ef5c24dddf0afa18d1260bd25b002c', - 'com.google.guava:failureaccess:a171ee4c734dd2da837e4b16be9df4661afab72a41adaf31eb84dfdaf936ca26', - 'com.google.guava:guava:fc3aa363ad87223d1fbea584eee015a862150f6d34c71f24dc74088a635f08ef', - 'com.google.guava:listenablefuture:b372a037d4230aa57fbeffdef30fd6123f9c0c2db85d0aced00c91b974f33f99', - 'com.google.inject:guice:d258ff1bd9b8b527872f8402648226658ad3149f1f40e74b0566d69e7e042fbc', - 'com.google.j2objc:j2objc-annotations:21af30c92267bd6122c0e0b4d20cccb6641a37eaf956c6540ec471d584e64a7b', - 'com.google.protobuf:protobuf-java:161d7d61a8cb3970891c299578702fd079646e032329d6c2cabf998d191437c9', - 'com.google.zxing:core:11aae8fd974ab25faa8208be50468eb12349cd239e93e7c797377fa13e381729', - 'com.google.zxing:javase:0ec23e2ec12664ddd6347c8920ad647bb3b9da290f897a88516014b56cc77eb9', - 'com.googlecode.jcsv:jcsv:73ca7d715e90c8d2c2635cc284543b038245a34f70790660ed590e157b8714a2', - 'com.jfoenix:jfoenix:8060235fec5eb49617ec8d81d379e8c945f6cc722d0645e97190045100de2084', - 'commons-codec:commons-codec:61f7a3079e92b9fdd605238d0295af5fd11ac411a0a0af48deace1f6c5ffa072', - 'commons-io:commons-io:f877d304660ac2a142f3865badfc971dec7ed73c747c7f8d5d2f5139ca736513', - 'commons-logging:commons-logging:daddea1ea0be0f56978ab3006b8ac92834afeefbd9b7e4e6316fca57df0fa636', - 'de.jensd:fontawesomefx-commons:5539bb3335ecb822dbf928546f57766eeb9f1516cc1417a064b5709629612149', - 'de.jensd:fontawesomefx-materialdesignfont:dbad8dfdd1c85e298d5bbae25b2399aec9e85064db57b2427d10f3815aa98752', - 'de.jensd:fontawesomefx:73bacc991a0a6f5cf0f911767c8db161e0949dbca61e8371eb4342e3da96887b', - 'io.github.microutils:kotlin-logging:4992504fd3c6ecdf9ed10874b9508e758bb908af9e9d7af19a61e9afb6b7e27a', - 'io.grpc:grpc-api:a269094009588213ab5386a6fb92426b8056a130b2653d3b4e59e971f2f1ef08', - 'io.grpc:grpc-context:f4c8f878c320f6fb56c1c14692618f6df8253314b556176e32727afbc5921a73', - 'io.grpc:grpc-core:d67fa113fd9cc45a02710f9c41dda9c15191448c14e9e96fcc21839a41345d4c', - 'io.grpc:grpc-netty-shaded:9edfd45da473d2efbb5683fc3eaf1857e82d2148033d82dd558a7ac38731ea33', - 'io.grpc:grpc-protobuf-lite:9ba9aaa3e6997a04c707793c25e3ec88c6bad86f8d6f6b8b7a1a0c33ea2429d8', - 'io.grpc:grpc-protobuf:454dae7e246dac25526ed5b795d97a5dafedd3cc2042cfc810f02051d7d3e3cb', - 'io.grpc:grpc-stub:1532e291c0e9fd8230a6416c8ebbd902d99c7e2760241ae638ea761aa3dd5f43', - 'io.opencensus:opencensus-api:8e2cb0f6391d8eb0a1bcd01e7748883f0033b1941754f4ed3f19d2c3e4276fc8', - 'io.opencensus:opencensus-contrib-grpc-metrics:29fc79401082301542cab89d7054d2f0825f184492654c950020553ef4ff0ef8', - 'io.perfmark:perfmark-api:b734ba2149712409a44eabdb799f64768578fee0defe1418bb108fe32ea43e1a', - 'javax.inject:javax.inject:91c77044a50c481636c32d916fd89c9118a72195390452c81065080f957de7ff', - 'net.glxn:qrgen:c85d9d8512d91e8ad11fe56259a7825bd50ce0245447e236cf168d1b17591882', - 'net.jcip:jcip-annotations:be5805392060c71474bf6c9a67a099471274d30b83eef84bfc4e0889a4f1dcc0', - 'net.sf.jopt-simple:jopt-simple:df26cc58f235f477db07f753ba5a3ab243ebe5789d9f89ecf68dd62ea9a66c28', - 'org.apache.commons:commons-compress:5f2df1e467825e4cac5996d44890c4201c000b43c0b23cffc0782d28a0beb9b0', - 'org.apache.commons:commons-lang3:4ee380259c068d1dbe9e84ab52186f2acd65de067ec09beff731fca1697fdb16', - 'org.apache.httpcomponents:httpclient:bc5f065aba5dd815ee559dd24d9bcb797fb102ff9cfa036f5091ebc529bd3b93', - 'org.apache.httpcomponents:httpcore:e06e89d40943245fcfa39ec537cdbfce3762aecde8f9c597780d2b00c2b43424', - 'org.bouncycastle:bcpg-jdk15on:dc4f51adfc46583c2543489c82708fef5660202bf264c7cd453f081a117ea536', - 'org.bouncycastle:bcprov-jdk15on:28155c8695934f666fabc235f992096e40d97ecb044d5b6b0902db6e15a0b72f', - 'org.bouncycastle:bcprov-jdk15to18:82c28318b178da751d174b1adf6c43e0199f0fcf80a7bf6483caa226ae0d30b3', - 'org.checkerframework:checker-qual:d261fde25d590f6b69db7721d469ac1b0a19a17ccaaaa751c31f0d8b8260b894', - 'org.fxmisc.easybind:easybind:666af296dda6de68751668a62661571b5238ac6f1c07c8a204fc6f902b222aaf', - 'org.jetbrains.kotlin:kotlin-stdlib-common:6c91dea17d7dce5f0b550c3de3305767e5fb46247b6d1eb7eca0ca1fe18458de', - 'org.jetbrains.kotlin:kotlin-stdlib-jdk7:25e2409aba0ec37d2fd7c77727d7835b511879de8d9bf4862af0b493aabbe39e', - 'org.jetbrains.kotlin:kotlin-stdlib-jdk8:f7dbbaee3e0841758187a213c052388a4e619e11c87ab16f4bc229cfe7ce5fed', - 'org.jetbrains.kotlin:kotlin-stdlib:6ea3d0921b26919b286f05cbdb906266666a36f9a7c096197114f7495708ffbc', - 'org.jetbrains:annotations:ace2a10dc8e2d5fd34925ecac03e4988b2c0f851650c94b8cef49ba1bd111478', - 'org.slf4j:slf4j-api:cdba07964d1bb40a0761485c6b1e8c2f8fd9eb1d19c53928ac0d7f9510105c57', - 'org.tukaani:xz:a594643d73cc01928cf6ca5ce100e094ea9d73af760a5d4fb6b75fa673ecec96', - ] -} diff --git a/gradle/witness/gradle-witness.jar b/gradle/witness/gradle-witness.jar deleted file mode 100644 index 028ea7eda71e3c215669f4c524beabbb37b04f48..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18967 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 Xk}Smg>?a5a>if^YyTmX0$AAAHlzzb1