Create and publish Besu BOM (Bill of Materials) (#7615)

Signed-off-by: Fabio Di Fabio <fabio.difabio@consensys.net>
pull/7795/head
Fabio Di Fabio 1 month ago committed by GitHub
parent 111aadcb0c
commit 9a7744763a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 1
      CHANGELOG.md
  2. 15
      acceptance-tests/tests/build.gradle
  3. 34
      build.gradle
  4. 1
      ethereum/referencetests/build.gradle
  5. 532
      gradle/verification-metadata.xml
  6. 249
      gradle/versions.gradle
  7. 218
      platform/build.gradle
  8. 1
      settings.gradle

@ -9,6 +9,7 @@
### Additions and Improvements
- Fine tune already seen txs tracker when a tx is removed from the pool [#7755](https://github.com/hyperledger/besu/pull/7755)
- Create and publish Besu BOM (Bill of Materials) [#7615](https://github.com/hyperledger/besu/pull/7615)
### Bug fixes

@ -106,7 +106,8 @@ task acceptanceTest(type: Test) {
setSystemProperties(test.getSystemProperties())
systemProperty 'acctests.runBesuAsProcess', 'true'
systemProperty 'java.security.properties', "${buildDir}/resources/test/acceptanceTesting.security"
mustRunAfter rootProject.subprojects*.test
def javaProjects = rootProject.subprojects - project(':platform')
mustRunAfter javaProjects.test
description = 'Runs ALL Besu acceptance tests (mainnet and non-mainnet).'
group = 'verification'
@ -135,7 +136,8 @@ task acceptanceTestNotPrivacy(type: Test) {
setSystemProperties(test.getSystemProperties())
systemProperty 'acctests.runBesuAsProcess', 'true'
systemProperty 'java.security.properties', "${buildDir}/resources/test/acceptanceTesting.security"
mustRunAfter rootProject.subprojects*.test
def javaProjects = rootProject.subprojects - project(':platform')
mustRunAfter javaProjects.test
description = 'Runs MAINNET Besu acceptance tests (excluding specific non-mainnet suites).'
group = 'verification'
@ -163,7 +165,8 @@ task acceptanceTestCliqueBft(type: Test) {
setSystemProperties(test.getSystemProperties())
systemProperty 'acctests.runBesuAsProcess', 'true'
systemProperty 'java.security.properties', "${buildDir}/resources/test/acceptanceTesting.security"
mustRunAfter rootProject.subprojects*.test
def javaProjects = rootProject.subprojects - project(':platform')
mustRunAfter javaProjects.test
description = 'Runs Clique and BFT Besu acceptance tests.'
group = 'verification'
@ -192,7 +195,8 @@ task acceptanceTestBftSoak(type: Test) {
// Set to any time > 60 minutes to run the soak test for longer
// systemProperty 'acctests.soakTimeMins', '120'
systemProperty 'java.security.properties', "${buildDir}/resources/test/acceptanceTesting.security"
mustRunAfter rootProject.subprojects*.test
def javaProjects = rootProject.subprojects - project(':platform')
mustRunAfter javaProjects.test
description = 'Runs BFT soak test.'
group = 'verification'
@ -219,7 +223,8 @@ task acceptanceTestPermissioning(type: Test) {
setSystemProperties(test.getSystemProperties())
systemProperty 'acctests.runBesuAsProcess', 'true'
systemProperty 'java.security.properties', "${buildDir}/resources/test/acceptanceTesting.security"
mustRunAfter rootProject.subprojects*.test
def javaProjects = rootProject.subprojects - project(':platform')
mustRunAfter javaProjects.test
description = 'Runs Permissioning Besu acceptance tests.'
group = 'verification'

@ -27,7 +27,6 @@ plugins {
id 'com.github.ben-manes.versions' version '0.51.0'
id 'com.github.jk1.dependency-license-report' version '2.9'
id 'com.jfrog.artifactory' version '5.2.5'
id 'io.spring.dependency-management' version '1.1.6'
id 'me.champeau.jmh' version '0.7.2' apply false
id 'net.ltgt.errorprone' version '4.0.1'
id 'maven-publish'
@ -120,12 +119,10 @@ licenseReport {
]
}
allprojects {
configure(allprojects - project(':platform')) {
apply plugin: 'java-library'
apply plugin: 'io.spring.dependency-management'
apply plugin: 'jacoco'
apply plugin: 'net.ltgt.errorprone'
apply from: "${rootDir}/gradle/versions.gradle"
version = calculateVersion()
@ -185,6 +182,12 @@ allprojects {
}
dependencies {
api platform(project(':platform'))
annotationProcessor(platform(project(':platform')))
testAnnotationProcessor(platform(project(':platform')))
components.all(BouncyCastleCapability)
errorprone 'com.google.errorprone:error_prone_core'
// https://github.com/hyperledger/besu-errorprone-checks/
@ -442,14 +445,16 @@ task checkMavenCoordinateCollisions {
doLast {
def coordinates = [:]
getAllprojects().forEach {
if (it.properties.containsKey('publishing') && it.jar?.enabled) {
def coordinate = it.publishing?.publications[0].coordinates
if (coordinate.toString().startsWith("org") && coordinates.containsKey(coordinate)) {
throw new GradleException("Duplicate maven coordinates detected, ${coordinate} is used by " +
"both ${coordinates[coordinate]} and ${it.path}.\n" +
"Please add a `publishing` script block to one or both subprojects.")
if (it.properties.containsKey('publishing')) {
if(!it.properties.containsKey('jar') || it.jar.enabled) {
def coordinate = it.publishing?.publications[0].coordinates
if (coordinate.toString().startsWith("org") && coordinates.containsKey(coordinate)) {
throw new GradleException("Duplicate maven coordinates detected, ${coordinate} is used by " +
"both ${coordinates[coordinate]} and ${it.path}.\n" +
"Please add a `publishing` script block to one or both subprojects.")
}
coordinates[coordinate] = it.path
}
coordinates[coordinate] = it.path
}
}
}
@ -597,7 +602,9 @@ subprojects {
configurations {
testSupportAnnotationProcessor.extendsFrom annotationProcessor
testSupportImplementation.extendsFrom implementation
integrationTestAnnotationProcessor.extendsFrom annotationProcessor
integrationTestImplementation.extendsFrom implementation
testSupportArtifacts
}
@ -622,7 +629,10 @@ subprojects {
duplicateClassesStrategy = DuplicatesStrategy.WARN
}
dependencies { jmh 'org.slf4j:slf4j-api' }
dependencies {
jmhAnnotationProcessor(platform(project(':platform')))
jmh 'org.slf4j:slf4j-api'
}
}
// making sure assemble task invokes integration test compile

@ -14,6 +14,7 @@
*/
configurations {
referenceTestAnnotationProcessor.extendsFrom testAnnotationProcessor
// we need this because referenceTestImplementation defaults to 'canBeResolved=false'.
tarConfig.extendsFrom referenceTestImplementation
tarConfig {

File diff suppressed because it is too large Load Diff

@ -1,249 +0,0 @@
/*
* Copyright ConsenSys AG.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
*
* SPDX-License-Identifier: Apache-2.0
*/
dependencyManagement {
dependencies {
applyMavenExclusions = false
dependencySet(group:'com.fasterxml.jackson.core', version:'2.17.2') {
entry 'jackson-databind'
entry 'jackson-datatype'
entry 'jackson-datatype-jdk8'
}
dependency 'com.github.ben-manes.caffeine:caffeine:3.1.8'
dependency 'com.google.protobuf:protobuf-java:3.25.5'
dependency 'org.bitbucket.b_c:jose4j:0.9.4'
dependency 'com.github.oshi:oshi-core:6.6.3'
dependency 'com.google.auto.service:auto-service:1.1.1'
dependencySet(group: 'com.google.dagger', version: '2.52') {
entry'dagger-compiler'
entry'dagger'
}
dependency 'org.hyperledger.besu:besu-errorprone-checks:1.0.0'
dependency 'com.google.guava:guava:33.3.0-jre'
dependency 'com.graphql-java:graphql-java:22.2'
dependency 'com.splunk.logging:splunk-library-javalogging:1.11.8'
dependency 'com.squareup.okhttp3:okhttp:4.12.0'
dependency 'commons-codec:commons-codec:1.16.0'
dependency 'commons-io:commons-io:2.16.1'
dependency 'commons-net:commons-net:3.11.1'
dependency 'dnsjava:dnsjava:3.6.1'
dependencySet(group: 'info.picocli', version: '4.7.6') {
entry 'picocli'
entry 'picocli-codegen'
}
dependencySet(group: 'io.grpc', version: '1.66.0') {
entry 'grpc-all'
entry 'grpc-core'
entry 'grpc-netty'
entry 'grpc-stub'
}
dependency 'io.kubernetes:client-java:18.0.1'
dependency 'io.netty:netty-all:4.1.112.Final'
dependency 'io.netty:netty-tcnative-boringssl-static:2.0.66.Final'
dependency group: 'io.netty', name: 'netty-transport-native-epoll', version:'4.1.112.Final', classifier: 'linux-x86_64'
dependency group: 'io.netty', name: 'netty-transport-native-kqueue', version:'4.1.112.Final', classifier: 'osx-x86_64'
dependency 'io.netty:netty-transport-native-unix-common:4.1.112.Final'
dependency 'io.opentelemetry:opentelemetry-api:1.41.0'
dependency 'io.opentelemetry:opentelemetry-exporter-otlp:1.41.0'
dependency 'io.opentelemetry:opentelemetry-extension-trace-propagators:1.41.0'
dependency 'io.opentelemetry:opentelemetry-sdk-metrics:1.41.0'
dependency 'io.opentelemetry:opentelemetry-sdk-trace:1.41.0'
dependency 'io.opentelemetry:opentelemetry-sdk:1.41.0'
dependency 'io.opentelemetry:opentelemetry-sdk-extension-autoconfigure:1.41.0'
dependency 'io.opentelemetry.instrumentation:opentelemetry-okhttp-3.0:2.7.0-alpha'
dependency 'io.opentelemetry.proto:opentelemetry-proto:1.3.2-alpha'
dependency 'io.opentelemetry.semconv:opentelemetry-semconv:1.27.0-alpha'
dependency 'io.opentracing.contrib:opentracing-okhttp3:3.0.0'
dependency 'io.opentracing:opentracing-api:0.33.0'
dependency 'io.opentracing:opentracing-util:0.33.0'
dependency 'io.pkts:pkts-core:3.0.10'
dependencySet(group: 'io.prometheus', version: '0.16.0') {
entry 'simpleclient'
entry 'simpleclient_common'
entry 'simpleclient_hotspot'
entry 'simpleclient_pushgateway'
entry 'simpleclient_guava'
}
dependency 'io.reactivex.rxjava2:rxjava:2.2.21'
dependencySet(group: 'io.tmio', version: '2.4.2') {
entry 'tuweni-bytes'
entry 'tuweni-config'
entry 'tuweni-concurrent'
entry 'tuweni-crypto'
entry 'tuweni-devp2p'
entry 'tuweni-io'
entry 'tuweni-net'
entry 'tuweni-rlp'
entry 'tuweni-toml'
entry 'tuweni-units'
}
dependencySet(group: 'io.vertx', version: '4.5.9') {
entry 'vertx-auth-jwt'
entry 'vertx-codegen'
entry 'vertx-core'
entry 'vertx-junit5'
entry 'vertx-unit'
entry 'vertx-web'
entry 'vertx-web-client'
entry 'vertx-auth-jwt'
}
dependency 'junit:junit:4.13.2'
dependency 'net.java.dev.jna:jna:5.14.0'
dependencySet(group: 'org.antlr', version: '4.11.1') {
entry 'antlr4'
entry 'antlr4-runtime'
}
dependency 'org.apache.commons:commons-collections4:4.4'
dependency 'org.apache.commons:commons-compress:1.27.1'
dependency 'org.apache.commons:commons-lang3:3.17.0'
dependency 'org.apache.commons:commons-text:1.12.0'
dependencySet(group: 'org.apache.logging.log4j', version: '2.23.1') {
entry 'log4j-api'
entry 'log4j-core'
entry 'log4j-jul'
entry 'log4j-slf4j2-impl'
}
dependency 'org.assertj:assertj-core:3.26.3'
dependency 'org.awaitility:awaitility:4.2.2'
dependencySet(group: 'org.bouncycastle', version: '1.78.1') {
entry'bcpkix-jdk18on'
entry'bcprov-jdk18on'
}
dependency 'org.fusesource.jansi:jansi:2.4.1'
dependencySet(group: 'org.hyperledger.besu', version: '0.9.7') {
entry 'arithmetic'
entry 'ipa-multipoint'
entry 'bls12-381'
entry 'secp256k1'
entry 'secp256r1'
entry 'blake2bf'
entry 'gnark'
}
dependencySet(group: 'org.immutables', version: '2.10.1') {
entry 'value-annotations'
entry 'value'
}
dependency 'org.java-websocket:Java-WebSocket:1.5.7'
dependencySet(group: 'org.jacoco', version: '0.8.12') {
entry 'org.jacoco.agent'
entry 'org.jacoco.core'
}
dependency 'org.jetbrains.kotlin:kotlin-stdlib:2.0.20'
dependencySet(group: 'org.junit.jupiter', version: '5.11.0') {
entry 'junit-jupiter'
entry 'junit-jupiter-api'
entry 'junit-jupiter-engine'
entry 'junit-jupiter-params'
}
dependency 'org.openjdk.jol:jol-core:0.17'
dependency 'org.junit.platform:junit-platform-runner:1.9.2'
dependency 'org.junit.vintage:junit-vintage-engine:5.10.1'
dependencySet(group: 'org.jupnp', version:'3.0.2') {
entry 'org.jupnp.support'
entry 'org.jupnp'
}
dependencySet(group: 'org.mockito', version:'5.13.0') {
entry 'mockito-core'
entry 'mockito-junit-jupiter'
}
dependencySet(group: 'org.openjdk.jmh', version:'1.37') {
entry 'jmh-core'
entry 'jmh-generator-annprocess'
}
dependency 'org.owasp.encoder:encoder:1.3.1'
dependency 'org.rocksdb:rocksdbjni:8.3.2' // 8.9.1 causes a bug with a FOREST canary
dependencySet(group: 'org.slf4j', version:'2.0.16') {
entry 'slf4j-api'
entry 'slf4j-nop'
}
dependency 'org.springframework.security:spring-security-crypto:6.3.3'
dependency 'org.testcontainers:testcontainers:1.20.1'
dependency 'org.web3j:quorum:4.10.0'
dependencySet(group: 'org.web3j', version: '4.12.1') {
entry 'abi'
entry 'besu'
entry 'core'
entry 'crypto'
}
dependencySet(group: 'org.wiremock', version: '3.9.1') {
entry 'wiremock'
}
dependency 'org.xerial.snappy:snappy-java:1.1.10.6'
dependency 'org.yaml:snakeyaml:2.0'
dependency 'org.apache.maven:maven-artifact:3.9.6'
dependency 'tech.pegasys:jc-kzg-4844:1.0.0'
dependency 'tech.pegasys.discovery:discovery:24.6.0'
}
}

@ -0,0 +1,218 @@
/*
* Copyright contributors to Hyperledger Besu.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
*
* SPDX-License-Identifier: Apache-2.0
*/
plugins {
id 'java-platform'
id 'com.diffplug.spotless'
id 'maven-publish'
}
repositories {
mavenCentral()
}
javaPlatform {
allowDependencies()
}
dependencies {
api platform('com.fasterxml.jackson:jackson-bom:2.17.2')
api platform('io.grpc:grpc-bom:1.66.0')
api platform('io.netty:netty-bom:4.1.112.Final')
api platform('io.opentelemetry:opentelemetry-bom:1.41.0')
api platform('io.prometheus:simpleclient_bom:0.16.0')
api platform('io.vertx:vertx-stack-depchain:4.5.9')
api platform('org.apache.logging.log4j:log4j-bom:2.23.1')
api platform('org.assertj:assertj-bom:3.26.3')
api platform('org.immutables:bom:2.10.1')
api platform('org.junit:junit-bom:5.11.0')
api platform('org.mockito:mockito-bom:5.13.0')
api platform('org.slf4j:slf4j-bom:2.0.16')
constraints {
api project(':acceptance-tests:dsl')
api project(':besu')
api project(':config')
api project(':crypto:algorithms')
api project(':crypto:services')
api project(':ethereum:api')
api project(':ethereum:blockcreation')
api project(':ethereum:core')
api project(':ethereum:eth')
api project(':ethereum:p2p')
api project(':ethereum:permissioning')
api project(':ethereum:referencetests')
api project(':ethereum:rlp')
api project(':evm')
api project(':datatypes')
api project(':plugin-api')
api 'com.github.ben-manes.caffeine:caffeine:3.1.8'
api 'org.bitbucket.b_c:jose4j:0.9.4'
api 'com.github.oshi:oshi-core:6.6.3'
api 'com.google.auto.service:auto-service:1.1.1'
api 'com.google.dagger:dagger-compiler:2.52'
api 'com.google.dagger:dagger:2.52'
api 'com.google.guava:guava:33.3.0-jre'
api 'com.google.protobuf:protobuf-java:3.25.5'
api 'com.graphql-java:graphql-java:22.2'
api 'com.splunk.logging:splunk-library-javalogging:1.11.8'
api 'com.squareup.okhttp3:okhttp:4.12.0'
api 'commons-io:commons-io:2.16.1'
api 'commons-net:commons-net:3.11.1'
api 'dnsjava:dnsjava:3.6.1'
api 'info.picocli:picocli:4.7.6'
api 'info.picocli:picocli-codegen:4.7.6'
api 'io.kubernetes:client-java:18.0.1'
api 'io.opentelemetry.instrumentation:opentelemetry-okhttp-3.0:2.7.0-alpha'
api 'io.opentelemetry.proto:opentelemetry-proto:1.3.2-alpha'
api 'io.opentelemetry.semconv:opentelemetry-semconv:1.27.0-alpha'
api 'io.opentracing:opentracing-api:0.33.0'
api 'io.opentracing:opentracing-util:0.33.0'
api 'io.opentracing.contrib:opentracing-okhttp3:3.0.0'
api 'io.pkts:pkts-core:3.0.10'
api 'io.tmio:tuweni-bytes:2.4.2'
api 'io.tmio:tuweni-config:2.4.2'
api 'io.tmio:tuweni-concurrent:2.4.2'
api 'io.tmio:tuweni-crypto:2.4.2'
api 'io.tmio:tuweni-devp2p:2.4.2'
api 'io.tmio:tuweni-io:2.4.2'
api 'io.tmio:tuweni-net:2.4.2'
api 'io.tmio:tuweni-rlp:2.4.2'
api 'io.tmio:tuweni-toml:2.4.2'
api 'io.tmio:tuweni-units:2.4.2'
api 'junit:junit:4.13.2'
api 'net.java.dev.jna:jna:5.14.0'
api 'org.antlr:antlr4:4.11.1'
api 'org.antlr:antlr4-runtime:4.11.1'
api 'org.apache.commons:commons-collections4:4.4'
api 'org.apache.commons:commons-compress:1.27.1'
api 'org.apache.commons:commons-lang3:3.17.0'
api 'org.apache.commons:commons-text:1.12.0'
api 'org.apache.maven:maven-artifact:3.9.6'
api 'org.awaitility:awaitility:4.2.2'
api 'org.bouncycastle:bcpkix-jdk18on:1.78.1'
api 'org.bouncycastle:bcprov-jdk18on:1.78.1'
api 'org.fusesource.jansi:jansi:2.4.1'
api 'org.hyperledger.besu:arithmetic:0.9.7'
api 'org.hyperledger.besu:blake2bf:0.9.7'
api 'org.hyperledger.besu:bls12-381:0.9.7'
api 'org.hyperledger.besu:gnark:0.9.7'
api 'org.hyperledger.besu:ipa-multipoint:0.9.7'
api 'org.hyperledger.besu:secp256k1:0.9.7'
api 'org.hyperledger.besu:secp256r1:0.9.7'
api 'org.hyperledger.besu:besu-errorprone-checks:1.0.0'
api 'org.jacoco:org.jacoco.agent:0.8.12'
api 'org.jacoco:org.jacoco.core:0.8.12'
api 'org.junit.platform:junit-platform-runner:1.9.2'
api 'org.junit.vintage:junit-vintage-engine:5.10.1'
api 'org.jupnp:org.jupnp:3.0.2'
api 'org.jupnp:org.jupnp.support:3.0.2'
api 'org.openjdk.jmh:jmh-core:1.37'
api 'org.openjdk.jmh:jmh-generator-annprocess:1.37'
api 'org.openjdk.jol:jol-core:0.17'
api 'org.owasp.encoder:encoder:1.3.1'
api 'org.rocksdb:rocksdbjni:8.3.2'
api 'org.springframework.security:spring-security-crypto:6.3.3'
api 'org.testcontainers:testcontainers:1.20.1'
api 'org.wiremock:wiremock:3.9.1'
api 'org.web3j:abi:4.12.1'
api 'org.web3j:besu:4.12.1'
api 'org.web3j:core:4.12.1'
api 'org.web3j:crypto:4.12.1'
api 'org.web3j:quorum:4.10.0'
api 'org.xerial.snappy:snappy-java:1.1.10.6'
api 'tech.pegasys:jc-kzg-4844:1.0.0'
api 'tech.pegasys.discovery:discovery:24.6.0'
}
}
spotless {
// spotless check applied to build.gradle (groovy) files
groovyGradle {
target '*.gradle'
greclipse('4.31').configFile(rootProject.file('gradle/spotless/greclipse.properties'))
endWithNewline()
}
}
publishing {
publications {
mavenPlatform(MavenPublication) {
from components.javaPlatform
groupId "org.hyperledger.besu"
artifactId 'bom'
version calculateVersion()
pom {
name = "Besu BOM"
url = 'http://github.com/hyperledger/besu'
licenses {
license {
name = 'The Apache License, Version 2.0'
url = 'http://www.apache.org/licenses/LICENSE-2.0.txt'
}
}
scm {
connection = 'scm:git:git://github.com/hyperledger/besu.git'
developerConnection = 'scm:git:ssh://github.com/hyperledger/besu.git'
url = 'https://github.com/hyperledger/besu'
}
}
}
}
}

@ -62,6 +62,7 @@ include 'metrics:core'
include 'metrics:rocksdb'
include 'nat'
include 'pki'
include 'platform'
include 'plugin-api'
include 'plugins:rocksdb'
include 'privacy-contracts'

Loading…
Cancel
Save