EVM Tool ======== EVM Tool is a stand alone EVM executor and test execution tool. The principal purpose of the tool is for testing and validation of the EVM and enclosing data structures. Using EVM Tool in execution-specification-tests ----------------------------------------------- ### Building Execution Tests on macOS Current as of 26 Jun 2024. MacOS users will typically encounter two problems,one relating to the version of Python used and one relating to zsh. Homebrew will only install the most recent version of Python as `python3`, and that is 3.11. The execution tests require 3.10. The solution is to use a 3.10 version of python to set up the virtual environment. ```zsh python3.10 -m venv ./venv/ ``` Zsh requires braces to be escaped in the command line, so the step to install python packages needs to escape the brackets ```zsh pip install -e .\[docs,lint,test\] ``` An all-in-one script, using homebrew, would look like ```zsh brew install ethereum solidity git clone https://github.com/ethereum/execution-spec-tests cd execution-spec-tests python3 -m venv ./venv/ source ./venv/bin/activate pip install -e .\[docs,lint,test\] ``` ### Building EvmTool on macOS First you need a Java 21+ JDK installed, if not already installed. It is recommended you install [SDKMAN](https://sdkman.io/install) to manage the jvm install. ```zsh sdk install java 21.0.3-tem sdk use java 21.0.3-tem ``` Once a JVM is installed you use the gradle target: ```zsh ./gradlew installDist -x test ``` The resulting binary is `build/install/besu/bin/evmtool` If the testing repository and besu are installed in the same parent directory, the command to run the execution tests is ```zsh fill -v tests --evm-bin ../besu/build/install/besu/bin/evmtool ``` Assuming homebrew and SDKMan are both installed, the complete script is ```zsh sdk install java 21.0.3-tem sdk use java 21.0.3-tem git clone https://github.com/hyperledger/besu cd besu ./gradlew installDist -x test cd .. brew install ethereum solidity solc-select install latest solc-select use latest git clone https://github.com/ethereum/execution-spec-tests cd execution-spec-tests python3 -m venv ./venv/ source ./venv/bin/activate pip install -e .\[docs,lint,test\] fill -v tests --evm-bin ../besu/build/install/besu/bin/evmtool ```