Skip to content

docs(getting_started,fill): add solc instructions for arm64 users with fill issues #1217

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 4 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 19 additions & 8 deletions docs/getting_started/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,16 +22,27 @@ The latest version of `uv` can be installed via `curl` (recommended; can self-up

If installed via `curl`, `uv` will download Python for your target platform if one of the required versions (Python 3.10, 3.11 or 3.12) is not available natively.

## Installation
## Installation Commands

Clone [execution-spec-tests](https://github.com/ethereum/execution-spec-tests) and install its dependencies:
Clone [execution-spec-tests](https://github.com/ethereum/execution-spec-tests) and install its dependencies. If you are using an ARM64 OS ensure that you select the ARM64 tab below.

```console
git clone https://github.com/ethereum/execution-spec-tests
cd execution-spec-tests
uv sync --all-extras
uv run solc-select use 0.8.24 --always-install
```
=== "x86-64"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
=== "x86-64"
=== "All x86-64 platforms and ARM64 macOS"


```console
git clone https://github.com/ethereum/execution-spec-tests
cd execution-spec-tests
uv sync --all-extras
uv run solc-select use 0.8.24 --always-install
```

=== "ARM64"

```console
git clone https://github.com/ethereum/execution-spec-tests
cd execution-spec-tests
uv sync --all-extras
```
Follow [this guide](./installation_troubleshooting.md#problem-exception-failed-to-compile-yul-source) to build the `solc` binary from source.

## Installation Troubleshooting

Expand Down
28 changes: 28 additions & 0 deletions docs/getting_started/installation_troubleshooting.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ This page provides guidance on how to troubleshoot common issues that may arise

## Problem: `solc` Installation issues

### Problem: `CERTIFICATE_VERIFY_FAILED`

!!! danger "Problem: `Failed to install solc ... CERTIFICATE_VERIFY_FAILED`"
When running either `uv run solc-select use 0.8.24 --always-install` or `fill` you encounter the following error:

Expand All @@ -62,6 +64,32 @@ This page provides guidance on how to troubleshoot common issues that may arise
/Applications/Python\ 3.11/Install\ Certificates.command
```

### Problem: `Exception: failed to compile yul source`

!!! danger "Problem: `Running fill fails with tests that contain yul source code` on ARM platforms"
If you're using `x86_64`, try to manually run `solc-select` to install the required version of the `solc` binary:

```shell
uv run solc-select use 0.8.24 --always-install
```

Otherwise, this can happen when you're using an ARM64 OS but followed the x86-64 installation guide.
To resolve the issue you must build solidity from source (avoid 0.8.24 as it might require building z3 from source as well).

!!! success "Solution: Build solc from source"
The following steps have been tested on Ubuntu 24.04.2 LTS ARM64:
```bash
git clone --branch v0.8.28 --depth 1 https://github.com/ethereum/solidity.git
cd solidity && mkdir build && cd build
sudo apt install build-essential libboost-all-dev z3
cmake ..
make
mv $HOME/Documents/execution-spec-tests/.venv/bin/solc $HOME/Documents/execution-spec-tests/.venv/bin/solc-x86-64
cp ./solc/solc $HOME/Documents/execution-spec-tests/.venv/bin/
chmod +x $HOME/Documents/execution-spec-tests/.venv/bin/solc
```
Running `uv run solc --version` should now return the expected version. Verify that `fill` works by running `uv run fill -m yul_test` in the execution-spec-tests root folder.

## Problem: `ValueError: unsupported hash type ripemd160`

!!! danger "Problem: `Running fill fails with tests that use the RIPEMD160 precompile (0x03)`"
Expand Down
1 change: 1 addition & 0 deletions whitelist.txt
Original file line number Diff line number Diff line change
Expand Up @@ -276,6 +276,7 @@ listdir
lll
lllc
london
LTS
macOS
mainnet
makefiles
Expand Down
Loading