Skip to content

format: stamp info, resources and program objects with their schema and specification version #129

format: stamp info, resources and program objects with their schema and specification version

format: stamp info, resources and program objects with their schema and specification version #129

Workflow file for this run

name: ETHDebug
on:
pull_request:
paths:
- ".github/workflows/ethdebug.yml"
- "package.json"
- "yarn.lock"
- "tsconfig*.json"
- "schemas/**"
- "packages/format/**"
- "packages/conformance/**"
workflow_dispatch:
inputs:
solidity_ref:
description: Solidity ref to build for solc
default: develop
required: true
soldb_ref:
description: SolDB ref to build
default: v0.3.0
required: true
concurrency:
group: ethdebug-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
FOUNDRY_VERSION: v1.0.0
SOLIDITY_REF: ${{ github.event.inputs.solidity_ref || 'develop' }}
SOLDB_REF: ${{ github.event.inputs.soldb_ref || 'v0.3.0' }}
jobs:
conformance:
name: solc + soldb conformance
runs-on: ubuntu-24.04
steps:
- name: Checkout ethdebug/format
uses: actions/checkout@v4
with:
path: format
- name: Checkout SolDB
uses: actions/checkout@v4
with:
repository: walnuthq/soldb
ref: ${{ env.SOLDB_REF }}
path: soldb
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: yarn
cache-dependency-path: format/yarn.lock
- name: Install format dependencies
run: yarn install --frozen-lockfile
working-directory: format
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Fetch prebuilt solc with ETHDebug support
id: fetch-solc
continue-on-error: true
env:
CIRCLECI_TOKEN: ${{ secrets.CIRCLECI_TOKEN }}
GITHUB_TOKEN: ${{ github.token }}
run: |
python -m pip install git+https://github.com/argotorg/solc-bench.git
solc-bench fetch "${SOLIDITY_REF}" \
--output "${GITHUB_WORKSPACE}/solidity/build/solc/solc" \
--force
- name: Install Rust toolchain
run: |
rustup toolchain install stable --profile minimal
rustup default stable
- name: Cache Cargo build
uses: actions/cache@v4
with:
path: |
~/.cargo/git
~/.cargo/registry
soldb/target
key: ${{ runner.os }}-soldb-cargo-${{ hashFiles('soldb/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-soldb-cargo-
- name: Build SolDB
run: cargo build --bin soldb
working-directory: soldb
- name: Checkout Solidity
if: steps.fetch-solc.outcome != 'success'
uses: actions/checkout@v4
with:
repository: argotorg/solidity
ref: ${{ env.SOLIDITY_REF }}
path: solidity
submodules: recursive
- name: Install Solidity build dependencies
if: steps.fetch-solc.outcome != 'success'
run: |
sudo apt-get update
sudo apt-get install -y \
build-essential \
ccache \
cmake \
libboost-filesystem-dev \
libboost-program-options-dev \
libboost-system-dev \
libboost-test-dev \
libcln-dev \
ninja-build
- name: Cache Solidity ccache
if: steps.fetch-solc.outcome != 'success'
uses: actions/cache@v4
with:
path: ~/.ccache
key: ${{ runner.os }}-solidity-ccache-${{ github.run_id }}
restore-keys: |
${{ runner.os }}-solidity-ccache-
- name: Build solc with ETHDebug support
if: steps.fetch-solc.outcome != 'success'
run: |
cmake \
-S solidity \
-B solidity/build \
-G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DTESTS=OFF \
-DTOOLS=OFF \
-DPEDANTIC=OFF \
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache
cmake --build solidity/build --target solc --parallel 2
- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1
with:
version: ${{ env.FOUNDRY_VERSION }}
- name: Show external tool versions
run: |
solidity/build/solc/solc --version
soldb/target/debug/soldb --version
anvil --version
cast --version
- name: Run ETHDebug conformance tests
env:
ETHDEBUG_CONFORMANCE_SOLC: ${{ github.workspace }}/solidity/build/solc/solc
ETHDEBUG_CONFORMANCE_SOLDB: ${{ github.workspace }}/soldb/target/debug/soldb
ETHDEBUG_CONFORMANCE_ANVIL: anvil
ETHDEBUG_CONFORMANCE_CAST: cast
run: yarn --cwd packages/conformance test:external
working-directory: format