4b6cb3db2c
## Issue Addressed
CI is plagued by `AddrAlreadyInUse` failures, which are caused by race conditions in allocating free ports.
This PR removes all usages of the `unused_port` crate for Lighthouse's HTTP API, in favour of passing `:0` as the listen address. As a result, the listen address isn't known ahead of time and must be read from the listening socket after it binds. This requires tying some self-referential knots, which is a little disruptive, but hopefully doesn't clash too much with Deneb 🤞
There are still a few usages of `unused_tcp4_port` left in cases where we start external processes, like the `watch` Postgres DB, Anvil, Geth, Nethermind, etc. Removing these usages is non-trivial because it's hard to read the port back from an external process after starting it with `--port 0`. We might be able to do something on Linux where we read from `/proc/`, but I'll leave that for future work.
73 lines
2.4 KiB
TOML
73 lines
2.4 KiB
TOML
[package]
|
|
name = "beacon_chain"
|
|
version = "0.2.0"
|
|
authors = ["Paul Hauner <paul@paulhauner.com>", "Age Manning <Age@AgeManning.com>"]
|
|
edition = "2021"
|
|
autotests = false # using a single test binary compiles faster
|
|
|
|
[features]
|
|
default = ["participation_metrics"]
|
|
write_ssz_files = [] # Writes debugging .ssz files to /tmp during block processing.
|
|
participation_metrics = [] # Exposes validator participation metrics to Prometheus.
|
|
fork_from_env = [] # Initialise the harness chain spec from the FORK_NAME env variable
|
|
|
|
[dev-dependencies]
|
|
maplit = "1.0.2"
|
|
environment = { path = "../../lighthouse/environment" }
|
|
serde_json = "1.0.58"
|
|
|
|
[dependencies]
|
|
merkle_proof = { path = "../../consensus/merkle_proof" }
|
|
store = { path = "../store" }
|
|
parking_lot = "0.12.0"
|
|
lazy_static = "1.4.0"
|
|
smallvec = "1.6.1"
|
|
lighthouse_metrics = { path = "../../common/lighthouse_metrics" }
|
|
operation_pool = { path = "../operation_pool" }
|
|
rayon = "1.4.1"
|
|
serde = "1.0.116"
|
|
serde_derive = "1.0.116"
|
|
ethereum_serde_utils = "0.5.0"
|
|
slog = { version = "2.5.2", features = ["max_level_trace"] }
|
|
sloggers = { version = "2.1.1", features = ["json"] }
|
|
slot_clock = { path = "../../common/slot_clock" }
|
|
ethereum_hashing = "1.0.0-beta.2"
|
|
ethereum_ssz = "0.5.0"
|
|
ssz_types = "0.5.3"
|
|
ethereum_ssz_derive = "0.5.0"
|
|
state_processing = { path = "../../consensus/state_processing" }
|
|
tree_hash_derive = "0.5.0"
|
|
tree_hash = "0.5.0"
|
|
types = { path = "../../consensus/types" }
|
|
tokio = "1.14.0"
|
|
tokio-stream = "0.1.3"
|
|
eth1 = { path = "../eth1" }
|
|
futures = "0.3.7"
|
|
genesis = { path = "../genesis" }
|
|
int_to_bytes = { path = "../../consensus/int_to_bytes" }
|
|
rand = "0.8.5"
|
|
proto_array = { path = "../../consensus/proto_array" }
|
|
lru = "0.7.1"
|
|
tempfile = "3.1.0"
|
|
bitvec = "0.20.4"
|
|
bls = { path = "../../crypto/bls" }
|
|
safe_arith = { path = "../../consensus/safe_arith" }
|
|
fork_choice = { path = "../../consensus/fork_choice" }
|
|
task_executor = { path = "../../common/task_executor" }
|
|
derivative = "2.1.1"
|
|
itertools = "0.10.0"
|
|
slasher = { path = "../../slasher" }
|
|
eth2 = { path = "../../common/eth2" }
|
|
strum = { version = "0.24.0", features = ["derive"] }
|
|
logging = { path = "../../common/logging" }
|
|
execution_layer = { path = "../execution_layer" }
|
|
sensitive_url = { path = "../../common/sensitive_url" }
|
|
superstruct = "0.5.0"
|
|
hex = "0.4.2"
|
|
exit-future = "0.2.0"
|
|
oneshot_broadcast = { path = "../../common/oneshot_broadcast" }
|
|
|
|
[[test]]
|
|
name = "beacon_chain_tests"
|
|
path = "tests/main.rs"
|