845f336a59
* Implement more flexible beacon chain genesis * Fix compile issues from rebase on master * Rename CLI flag * Adds initial documentation for TOML files * Update docs readme * Add first version of cli_util * Dont write cache fields in serde * Tidy cli_util * Add code to load genesis YAML file * Move serde_utils out of tests in `types` * Update logging text * Fix serde YAML for Fork * Make yaml hex decoding more strict * Update deterministic key generate for interop * Set deposit count on testing genesis state * Make some fixes for deposit count * Remove code fragements * Large restructure of docs * Tidy docs * Fix readme link * Add interop docs * Tidy README
53 lines
2.3 KiB
Markdown
53 lines
2.3 KiB
Markdown
# Development Environment Setup
|
|
|
|
_This document describes how to setup a development environment. It is intended
|
|
for software developers and researchers who wish to contribute to development._
|
|
|
|
Lighthouse is a Rust project and [`cargo`](https://doc.rust-lang.org/cargo/) is
|
|
used extensively. As such, you'll need to install Rust in order to build the
|
|
project. Generally, Rust is installed using the
|
|
[rustup](https://www.rust-lang.org/tools/install) tool-chain manager.
|
|
|
|
## Steps
|
|
|
|
A fully-featured development environment can be achieved with the following
|
|
steps:
|
|
|
|
1. Install [rustup](https://rustup.rs/).
|
|
1. Use the command `rustup show` to get information about the Rust
|
|
installation. You should see that the active tool-chain is the stable
|
|
version.
|
|
- Updates can be performed using` rustup update`, Lighthouse generally
|
|
requires a recent version of Rust.
|
|
1. Install build dependencies (Arch packages are listed here, your
|
|
distribution will likely be similar):
|
|
- `clang`: required by RocksDB.
|
|
- `protobuf`: required for protobuf serialization (gRPC).
|
|
- `cmake`: required for building protobuf
|
|
- `git-lfs`: The Git extension for [Large File
|
|
Support](https://git-lfs.github.com/) (required for Ethereum Foundation
|
|
test vectors).
|
|
1. Clone the repository with submodules: `git clone --recursive
|
|
https://github.com/sigp/lighthouse`. If you're already cloned the repo,
|
|
ensure testing submodules are present: `$ git submodule init; git
|
|
submodule update`
|
|
1. Change directory to the root of the repository.
|
|
1. Run the test suite with `cargo test --all --release`. The build and test
|
|
process can take several minutes. If you experience any failures on
|
|
`master`, please raise an
|
|
[issue](https://github.com/sigp/lighthouse/issues).
|
|
|
|
## Notes:
|
|
|
|
Lighthouse targets Rust `stable` but generally runs on `nightly` too.
|
|
|
|
### Note for Windows users:
|
|
|
|
Perl may also be required to build lighthouse. You can install [Strawberry
|
|
Perl](http://strawberryperl.com/), or alternatively use a choco install command
|
|
`choco install strawberryperl`.
|
|
|
|
Additionally, the dependency `protoc-grpcio v0.3.1` is reported to have issues
|
|
compiling in Windows. You can specify a known working version by editing
|
|
version in `protos/Cargo.toml` section to `protoc-grpcio = "<=0.3.0"`.
|