## Issue Addressed As discussed on last-night's consensus call, the testnets next week will target the [Kiln Spec v2](https://hackmd.io/@n0ble/kiln-spec). Presently, we support Kiln V1. V2 is backwards compatible, except for renaming `random` to `prev_randao` in: - https://github.com/ethereum/execution-apis/pull/180 - https://github.com/ethereum/consensus-specs/pull/2835 With this PR we'll no longer be compatible with the existing Kintsugi and Kiln testnets, however we'll be ready for the testnets next week. I raised this breaking change in the call last night, we are all keen to move forward and break things. We now target the [`merge-kiln-v2`](https://github.com/MariusVanDerWijden/go-ethereum/tree/merge-kiln-v2) branch for interop with Geth. This required adding the `--http.aauthport` to the tester to avoid a port conflict at startup. ### Changes to exec integration tests There's some change in the `merge-kiln-v2` version of Geth that means it can't compile on a vanilla Github runner. Bumping the `go` version on the runner solved this issue. Whilst addressing this, I refactored the `testing/execution_integration` crate to be a *binary* rather than a *library* with tests. This means that we don't need to run the `build.rs` and build Geth whenever someone runs `make lint` or `make test-release`. This is nice for everyday users, but it's also nice for CI so that we can have a specific runner for these tests and we don't need to ensure *all* runners support everything required to build all execution clients. ## More Info - [x] ~~EF tests are failing since the rename has broken some tests that reference the old field name. I have been told there will be new tests released in the coming days (25/02/22 or 26/02/22).~~
67 lines
1.8 KiB
Rust
67 lines
1.8 KiB
Rust
use std::env;
|
|
use std::fs;
|
|
use std::path::{Path, PathBuf};
|
|
use std::process::Command;
|
|
|
|
const GETH_BRANCH: &str = "merge-kiln-v2";
|
|
const GETH_REPO_URL: &str = "https://github.com/MariusVanDerWijden/go-ethereum";
|
|
|
|
pub fn build() {
|
|
let manifest_dir: PathBuf = env::var("CARGO_MANIFEST_DIR").unwrap().into();
|
|
let execution_clients_dir = manifest_dir.join("execution_clients");
|
|
|
|
if !execution_clients_dir.exists() {
|
|
fs::create_dir(&execution_clients_dir).unwrap();
|
|
}
|
|
|
|
build_geth(&execution_clients_dir);
|
|
}
|
|
|
|
fn build_geth(execution_clients_dir: &Path) {
|
|
let repo_dir = execution_clients_dir.join("go-ethereum");
|
|
|
|
if !repo_dir.exists() {
|
|
// Clone the repo
|
|
assert!(Command::new("git")
|
|
.arg("clone")
|
|
.arg(GETH_REPO_URL)
|
|
.current_dir(&execution_clients_dir)
|
|
.output()
|
|
.expect("failed to clone geth repo")
|
|
.status
|
|
.success());
|
|
}
|
|
|
|
// Checkout the correct branch
|
|
assert!(Command::new("git")
|
|
.arg("checkout")
|
|
.arg(GETH_BRANCH)
|
|
.current_dir(&repo_dir)
|
|
.output()
|
|
.expect("failed to checkout geth branch")
|
|
.status
|
|
.success());
|
|
|
|
// Update the branch
|
|
assert!(Command::new("git")
|
|
.arg("pull")
|
|
.current_dir(&repo_dir)
|
|
.output()
|
|
.expect("failed to update geth branch")
|
|
.status
|
|
.success());
|
|
|
|
// Build geth
|
|
let make_result = Command::new("make")
|
|
.arg("geth")
|
|
.current_dir(&repo_dir)
|
|
.output()
|
|
.expect("failed to make geth");
|
|
|
|
if !make_result.status.success() {
|
|
dbg!(String::from_utf8_lossy(&make_result.stdout));
|
|
dbg!(String::from_utf8_lossy(&make_result.stderr));
|
|
panic!("make failed");
|
|
}
|
|
}
|