Skip to content

RFC: allow to concretize dynamic arrays in calldata up to N values #42

RFC: allow to concretize dynamic arrays in calldata up to N values

RFC: allow to concretize dynamic arrays in calldata up to N values #42

---
name: Echidna Compatibility Check
on:
pull_request:
types: [opened, synchronize, reopened]
branches: [main]
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
echidna-build:
name: Build Echidna with local HEVM
runs-on: ubuntu-latest
steps:
- name: Checkout Echidna
uses: actions/checkout@v4
with:
repository: crytic/echidna
path: echidna-src
- name: Checkout HEVM
uses: actions/checkout@v4
with:
path: echidna-src/hevm
- name: Setup uv
uses: astral-sh/setup-uv@v7
with:
enable-cache: false
- name: Patch stack.yaml
working-directory: echidna-src
shell: uv run --script {0}
run: |
# /// script
# requires-python = ">=3.12"
# dependencies = ["pyyaml"]
# ///
import yaml
with open('stack.yaml', 'r') as f:
data = yaml.safe_load(f)
deps = data.get('extra-deps', [])
deps = [d for d in deps if not (isinstance(d, str) and 'hevm' in d)
and not (isinstance(d, dict) and 'git' in d and 'hevm' in d['git'])]
deps.insert(0, './hevm')
data['extra-deps'] = deps
with open('stack.yaml', 'w') as f:
yaml.dump(data, f)
print("==== Patched stack.yaml ====")
with open('stack.yaml', 'r') as f:
print(f.read())
- name: Install Nix
uses: nixbuild/nix-quick-install-action@v34
- name: Build Echidna
working-directory: echidna-src
run: |
# --fast skips optimizations since we only
# care about compilation, not runtime perf.
nix-shell \
-I nixpkgs=channel:nixpkgs-unstable \
-p secp256k1 libff gmp ncurses zlib pkg-config stack \
'haskell.compiler.ghc984' \
--run 'stack build --fast \
--test --no-run-tests \
--system-ghc --skip-ghc-check &&
stack exec --system-ghc --skip-ghc-check \
-- echidna --help'