-
Notifications
You must be signed in to change notification settings - Fork 168
Description
What is the context of this problem?
When trying to fill certain static tests using e.g. uv run fill -k "MCOPY_memory_expansion_costFiller" --fill-static-tests --evm-bin=/home/$USER/Documents/evmone/build/bin/evmone-t8n -vv -s
a different solc version might be used than intended. This matters because I can fill these tests with solc 0.8.24 but it fails to fill with solc 0.8.29 (there are good reasons for this but this is not the scope of this issue).
How to reproduce the issue?
Put the solc 0.8.29 binary to .venv/bin/solc
and ensure it has +x permission. Now ensure your config is to use 0.8.24 with uv run solc-select use 0.8.24
(you might have to install it first if you have not done so already). If you run uv run solc-select versions
it should tell you: 0.8.24 (current, ...)
. Now run the fill command shown above. It will log that solc 0.8.24 is used (both in terminal and in html report) but in fact it uses the 0.8.29 binary, this can be detected e.g. by modifying './src/ethereum_test_specs/static_state/common/compile_yul.py' with sth like
result2 = subprocess.run(
["solc", "--version"],
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT,
text=True,
check=True,
)
print(f"\nsolc version check: {result2.stdout}")
What should the fix be?
solc-select must be enforced, it should not silently choose the solc binary from .venv/bin/
. The logging must be consistent with what is actually being used.