An enterprise-grade Java-based, Apache 2.0 licensed Ethereum client https://wiki.hyperledger.org/display/besu
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
besu/docs/development/building.md

81 lines
2.0 KiB

# Checkout code and build it
## Prerequisites
* Java 11+
## Quick start
```sh
git clone --recursive https://github.com/PegasysEng/pantheon
cd pantheon
./gradlew build
./gradlew integrationTest
```
## Checkout source code
```
git clone --recursive git@github.com:PegasysEng/pantheon.git
```
OR
```
git clone --recursive https://github.com/PegasysEng/pantheon
```
## See what tasks are available
To see all of the gradle tasks that are available:
```
cd pantheon
./gradlew tasks
```
## Build from source
After you have checked out the code, this will build the distribution binaries.
```
cd pantheon
./gradlew build
```
## Run tests
All the unit tests are run as part of the build, but can be explicitly triggered with:
```
./gradlew test
```
The integration tests can be triggered with:
```
./gradlew integrationTest
```
The reference tests (described below) can be triggered with:
```
./gradlew referenceTest
```
The system tests can be triggered with:
```
./gradlew smokeTest
```
The acceptance tests can be triggered with:
```
./gradlew acceptanceTest
```
### Ethereum reference tests
On top of the project proper unit tests, specific unit tests are provided to
run the Ethereum reference tests available at https://github.com/ethereum/tests
and described at http://ethereum-tests.readthedocs.io/en/latest/. Those are run
as part of the unit test suite as described above, but for debugging, it is
often convenient to run only a subset of those tests, for which a few convenience
as provided. For instance, one can run only "Frontier" general state tests with
```
./gradlew :ethereum:tech.pegasys.pantheon.ethereum.vm:referenceTest -Dtest.single=GeneralStateTest -Dtest.ethereum.state.eip=Frontier
```
or only the tests that match a particular pattern with something like:
```
gradle :ethereum:tech.pegasys.pantheon.ethereum.vm:test -Dtest.single=GeneralStateTest -Dtest.ethereum.include='^CALLCODE.*-Frontier'
```
Please see the comment on the `test` target in the top level `build.gradle`
file for more details.