Skip to content
This repository has been archived by the owner on Jul 22, 2024. It is now read-only.

Commit

Permalink
Update Pr: Make contract caches shared (#1071)
Browse files Browse the repository at this point in the history
* Remove `serde_json_pythonic`. (#1047)

* Remove `serde_json_pythonic`.

* Fix JSON formatter on `deprecated_contract_class.rs`.

* Fix hash JSON formatter (non-ascii support).

* Add unwrap reasoning comment.

* Add debug logging. (#1018)

* Add `tracing` and update dependencies.

* Configure the example to use tracing logging (and make it work again).

* Add tracing logging.

* Add error logging.

* Fix error logging.

* Reduce the amount of spam logged.

* Update `README.md`.

* Fix `Makefile` dependencies.

* Remove `Debug` trait dependency.

* Update `Cargo.lock` after merge.

* Fix warnings.

* Fix formatting.

---------

Co-authored-by: Esteve Soler Arderiu <esteve.soler@lambdaclass.com>

* fmt and improvements

* Fix skip validate (#1053)

* update version

* fix skip validation for invoke txs

* run fmt

* fix clippy suggestion

* simplify a bit the execute_tx function variants

* Add documentation to transaction/fee module (#889)

* added comments to src/transaction/fee.rs

* added return and error comments

---------

Co-authored-by: fannyguthmann <fanny.guthmann@post.idc.ac.il>
Co-authored-by: Santiago Pittella <87827390+SantiagoPittella@users.noreply.github.com>
Co-authored-by: Juan Bono <juanbono94@gmail.com>

* Add comments to origin/Document-transactionl1_handler module (#888)

* added comments to origin/Document-transactionl1_handler-module

* modified comments

* Test multi syscall (#687)

* create multy syscall

* remove the replace syscall, it failed because the contract adress didn't match

* added library call_syscall

* wip

* wip

* wip

* wip

* work in progress

* remove .sjon files from starknet_programs

* finished implemented all the syscalls

* reorder code, create one call to syscall

* fix pull bug

* Update tests/multi_syscall_test.rs

Co-authored-by: Matías Ignacio González <maigonzalez@fi.uba.ar>

* Update starknet_programs/cairo1/multi_syscall_test.cairo

Co-authored-by: Matías Ignacio González <maigonzalez@fi.uba.ar>

* Update starknet_programs/cairo1/contract_a.cairo

Co-authored-by: Matías Ignacio González <maigonzalez@fi.uba.ar>

* Update tests/multi_syscall_test.rs

Co-authored-by: Matías Ignacio González <maigonzalez@fi.uba.ar>

* added test syscall for deploy

* make format changes

* corrected make clippy error

* get_caller_address and get_contract_address return a adress

* failed of get_contract_address

* failed of get_contract_address

* wip

* modify the selector entrypoint_selector to be function specific

* wip

* wip

* wip

* add input to cairo functions

* coorect format problem

* wip

* wip

* wip

* remove format problem

* Fix sierra class hash calculation (#886)

* reproduce bug

* use pythonic formatter

* rename test

* fix test

* cargo fmt

* Fail with an Err transactions whose calculated fee exceed `max_fee` (#892)

* Make tx fail when actual_fee exceeds max_fee

* Changed test

* Formatting

* Fix logic

* Leave fail only without charging

* Change test

* Fix test broken by better fee calc

* Fixed test fee

* Update fee on test_deploy_account

* Remove comment

---------

Co-authored-by: Juan Bono <juanbono94@gmail.com>

* Fix test_get_nonce_at (#910)

* Fix test_get_nonce_at

* Rely on another contract

* fix get_sorted_events bug (#912)

* fix get_sorted_events bug

* fmt

* fix clippy

---------

Co-authored-by: Estéfano Bargas <estefano.bargas@fing.edu.uy>

* Added documentations to syscalls/deprecated_syscall_handler module (#883)

* added comments to file syscalls/deprecated_syscall_handler-module'

* Update src/syscalls/deprecated_syscall_handler.rs

Co-authored-by: Matías Ignacio González <maigonzalez@fi.uba.ar>

* Update src/syscalls/deprecated_syscall_handler.rs

Co-authored-by: Matías Ignacio González <maigonzalez@fi.uba.ar>

---------

Co-authored-by: fannyguthmann <fanny.guthmann@post.idc.ac.il>
Co-authored-by: Juan Bono <juanbono94@gmail.com>
Co-authored-by: Matías Ignacio González <maigonzalez@fi.uba.ar>

* wip

* Modify the tests

* fixed clippy errors

---------

Co-authored-by: fannyguthmann <fanny.guthmann@post.idc.ac.il>
Co-authored-by: Matías Ignacio González <maigonzalez@fi.uba.ar>
Co-authored-by: SantiagoPittella <pittellasantiago@gmail.com>
Co-authored-by: Juan Bono <juanbono94@gmail.com>
Co-authored-by: Estéfano Bargas <estefano.bargas@fing.edu.uy>

* Parse internal calls (#915)

* Added comments to core/contract_address module (#900)

Co-authored-by: fannyguthmann <fanny.guthmann@post.idc.ac.il>

* Add more transaction tests and fee investigation (#914)

* add function for getting tx and refactor tests

* improve imports

* separe tests into 2 groups

* fix test

* add comments

* format

* cargo clippy

* add details to every test

* add fee discrepancy to test doc

* cargo fmt

* improve imports

* added safety element

---------

Co-authored-by: fannyguthmann <fanny.guthmann@post.idc.ac.il>
Co-authored-by: Matías Ignacio González <maigonzalez@fi.uba.ar>
Co-authored-by: SantiagoPittella <pittellasantiago@gmail.com>
Co-authored-by: Juan Bono <juanbono94@gmail.com>
Co-authored-by: Estéfano Bargas <estefano.bargas@fing.edu.uy>
Co-authored-by: Santiago Pittella <87827390+SantiagoPittella@users.noreply.github.com>

* remove transactionalstatereader as it is not needed as-is (#1054)

* Fix test (or try to)

* Revert "Fix test (or try to)"

This reverts commit 423052f.

* Implement Clone for CachedState

* Fix conflict in Makefile + run clippy-fix

* Remove empty line

* fmt

* Remove unwraps

* Add clone_for_testing

* Remove clones

* Add cairo native (#943)

* Added cairo native flag

* Added cairo_native as dependency

* Partial progress

* Progress

* Partial progress

* Point to newly created branch on cairo native

* Use updated version of cairo native and make test pass

* Run test with storage_write and storage_read with cairo native

* Tidy up code

* Start unhardcoding stuff

* Handle return values

* Tidy up code a little

* Added sierra programs cache

* Add impl for emit_event and send_l1_message

* Fix tests

* Install LLVM on CI

* Test

* Test CI

* Fix lint step

* Save work in progress

* Unhardcode calldata and entry point

* Unhardcode more stuff

* Fix test

* Add basic implementation for call_contract

* Add call to get_name to integration test

* Make call_contract impl compile

* Fix test

* Pass the correct amount of builtins for every function

* Improve test legibility

* Write call_contract test skeleton

* Finish writing test, still bugs to fix

* implement get_execution_info, make increase_allowance work

* More debugging

* Basic test for call_contract working

* More progress on testing ERC20

* More progress on test

* Add caller and callee contracts

* Fix call_contract test after merge

* Fix callee address in tests

* Polish some details

* Remove use_cairo_native from TransactionExecutionContext

* Write test skeleton

* Add test contracts

* Fix tests

* Readd deleted contracts

* Echo contract test passing

* Update cairo compiler to version 2.2.0

* Calling another contract with events test is passing

* Fix failing tests

* Remove internal_calls field TODO in CallInfo returned by native_execute

* Add event_emitter contract

* Add cairo vm execution to the erc20 test for comparison

* Add simple implementation for panics in native execution

* Add some documentation in code

* Assert equality between events, accessed_storage_keys and l1_l2 messages between native and vm runs

* Add event_emitter contract

* Remove print

* Remove comments

* Move native syscall handler to its own file

* Add felt decode to string when program panics

* Make cairo native an optional dependency behind a feature

* Move execution result to cairo native

* Add a README section explaining how to setup cairo native

* Fix some clippy issues

* Fix test compilation

* CI test

* Revert "CI test"

This reverts commit 4631e5e.

* CI test

* Test

* Test

* Address comment about multiple cfgs

* Remove unnecessary clone

* Test

* Test

* Switch to special workflow for native integration tests

* Fix workflow

* Fix stuff after merge.

* Fix clippy warnings.

* Fix after merge.

* Fix comments.

* Fix `Makefile`.

* Remove unused import.

* Use transactional state.

* update cairo native to llvm 17 and remove nightly requirement

* update ci

* upd ci

* try to fix ci

* use ubuntu on native

* try to fix ci

* not needed?

* fix ci

* update cairo native

* fix nightly usage

* try to fix ci

* dont need a transactional state reader, simply clone the state reader

* try to fix ci

* format

* fix again

* fix if

* values

* force rebuild

* make cache track cairo 2 version to trigger rebuilds

* try no restore key

* update readme

* fix tests on ci

* update cairo native commit

* fix more tests on ci

* fix cairo native interface

* try ci without cache

* setup rustup home

* make param passing to cairo native not obscure

* try

* try again

* remove large packages

* remove large dirs

* remove android too

* polly is needed

* needs sudo

* fix cov

* fix test for now

* format

* cleanup ci file

* use pyenv if available

* nightly not needed in readme

* add .sierra as generated to gitattributes

* fix gitattributes

* add casm too

---------

Co-authored-by: Javier Chatruc <jrchatruc@gmail.com>
Co-authored-by: Mariano Nicolini <mariano.nicolini.91@gmail.com>
Co-authored-by: Esteve Soler Arderiu <esteve.soler@fratilia.com>
Co-authored-by: Edgar Luque <git@edgarluque.com>

* add test to check cairo 2 account contract deploy panic failing properly (#1045)

* add test for account contract execution with panic

* clippy

* update cairo native to latest revision, u128 gas, mut self (#1082)

Co-authored-by: Juan Bono <juanbono94@gmail.com>

* Fix `get_execution_info` syscall (#1081)

* Mark read-only segments

* Move call

* Remove debug prints

* Remove fn

* Add test case

* Add comment

* Restore newlines

* Add function comment

* Fix test values

* Undo changes to makefile

* Undo changes to makefile

* clippy

* cairo-native: implement testing syscalls (#1084)

* cleanup erc20 test (#1087)

* Fix `get_onchain_data_segment_length` (#1085)

* Fix get_onchain_data_segment_length

* Update test values

* Update test values

* fmt

---------

Co-authored-by: Juan Bono <juanbono94@gmail.com>

* Check that running a declare v1 yields a higher fee than simulating it without validation (#1076)

* Reorder DeployAccount::apply

* Revert "Reorder DeployAccount::apply"

This reverts commit 11b0c39.

* Add test

* Add test

* clippy + fmt

---------

Co-authored-by: Juan Bono <juanbono94@gmail.com>

* implement display and debug trait for Address (#1080)

* implement display and debug trait for Address

* hexa fmt

* Add recursive calls tests using `library_call` & `call_contract` syscalls (#1072)

* Add recursive library call test

* Add test programs

* Change base changes

* Add recursive test for call_contract

* fmt + clippy

* Add test for 100 contract calls

* clippy + fmt

* Update test values

---------

Co-authored-by: Juan Bono <juanbono94@gmail.com>

* Fix/Refactor State::count actual storage changes + Support `DeployAccount` in the RpcStateReader (#1096)

* Fix get_onchain_data_segment_length

* Update test values

* Update test values

* fmt

* Fix/Refactor `State::count actual storage changes` (#1086)

* Add StorageChangesCount struct

* Use StorageChangesCount struct in state method

* Fix implicated code

* Update doc

* Update test values

* Rename method for consistency

* Add the ability to execute `DeployAccount` transactions using the `RpcState` (#1089)

* Add test case

* Fix get_onchain_data_segment_length

* Debug setup

* Add StorageChangesCount struct

* Use StorageChangesCount struct in state method

* Fix implicated code

* Update doc

* Update test values

* Rename method for consistency

* Add note comment

* Remove hardcoded contract address

* Remove txt files

* Remove dbg prints

* Remove dbg prints

* Format

* Restore blockifier version

* Restore tests

* Restore newlines

* Restore newlines

* Remove txt file

* fmt

* Fix bug in `From<StarknetRsContractClass> for CompiledClass` implementation (#1090)

* Fix bug in CompiledClass

* Add tests

---------

Co-authored-by: Juan Bono <juanbono94@gmail.com>

* fmt

* Add test cases for `DeployAccount` with popular account contracts using RpcState (#1104)

* Execute `Declare` transactions using the `RpcState` + Various fixes related to `Declare` txs (#1094)

* Add test case

* Fix get_onchain_data_segment_length

* Debug setup

* Fix get_onchain_data_segment_length

* Add StorageChangesCount struct

* Update test values

* Update test values

* fmt

* Use StorageChangesCount struct in state method

* Fix implicated code

* Update doc

* Update test values

* Rename method for consistency

* Add note comment

* Remove hardcoded contract address

* Remove txt files

* Remove dbg prints

* Remove dbg prints

* Format

* Restore blockifier version

* Restore tests

* Restore newlines

* Restore newlines

* Remove txt file

* fmt

* Add test case with declare

* Deserialize Declare transactions

* Create blockifier Declare transaction

* Fix/Refactor `State::count actual storage changes` (#1086)

* Add StorageChangesCount struct

* Use StorageChangesCount struct in state method

* Fix implicated code

* Update doc

* Update test values

* Rename method for consistency

* Add the ability to execute `DeployAccount` transactions using the `RpcState` (#1089)

* Add test case

* Fix get_onchain_data_segment_length

* Debug setup

* Add StorageChangesCount struct

* Use StorageChangesCount struct in state method

* Fix implicated code

* Update doc

* Update test values

* Rename method for consistency

* Add note comment

* Remove hardcoded contract address

* Remove txt files

* Remove dbg prints

* Remove dbg prints

* Format

* Restore blockifier version

* Restore tests

* Restore newlines

* Restore newlines

* Remove txt file

* fmt

* Fix bug in `From<StarknetRsContractClass> for CompiledClass` implementation (#1090)

* Fix bug in CompiledClass

* Add tests

* fetch class hash from the next block in declare tx

* Return an error if a class_hash is not declared + add tests for declare tx

* Fix error msg

* Add support for DeclareV0-1 in sir_tests

* Make Sierra class optional in declare v2 + other changes

* Add support for DeclareV2

* Uncomment test

* fix

* Use new_with_sierra_class_hash_and_tx_hash

* use CompiledClassHash instead of CompiledClass where applicatble

* Handle nonce in declare v2 + run fmt

* Set casm class before counting state changes in declare v2

* Changes

* Make sierra class hash non-optional

* fix + clippy

* Use state_reader instead of creating a state to fetch the next block s contract classes

* Add removed test

* Update test values

---------

Co-authored-by: Juan Bono <juanbono94@gmail.com>

* Execute `L1Handler` transactions using the `RpcState`  (#1103)

* Add test case

* Fix get_onchain_data_segment_length

* Debug setup

* Fix get_onchain_data_segment_length

* Add StorageChangesCount struct

* Update test values

* Update test values

* fmt

* Use StorageChangesCount struct in state method

* Fix implicated code

* Update doc

* Update test values

* Rename method for consistency

* Add note comment

* Remove hardcoded contract address

* Remove txt files

* Remove dbg prints

* Remove dbg prints

* Format

* Restore blockifier version

* Restore tests

* Restore newlines

* Restore newlines

* Remove txt file

* fmt

* Add test case with declare

* Deserialize Declare transactions

* Create blockifier Declare transaction

* Fix/Refactor `State::count actual storage changes` (#1086)

* Add StorageChangesCount struct

* Use StorageChangesCount struct in state method

* Fix implicated code

* Update doc

* Update test values

* Rename method for consistency

* Add the ability to execute `DeployAccount` transactions using the `RpcState` (#1089)

* Add test case

* Fix get_onchain_data_segment_length

* Debug setup

* Add StorageChangesCount struct

* Use StorageChangesCount struct in state method

* Fix implicated code

* Update doc

* Update test values

* Rename method for consistency

* Add note comment

* Remove hardcoded contract address

* Remove txt files

* Remove dbg prints

* Remove dbg prints

* Format

* Restore blockifier version

* Restore tests

* Restore newlines

* Restore newlines

* Remove txt file

* fmt

* Fix bug in `From<StarknetRsContractClass> for CompiledClass` implementation (#1090)

* Fix bug in CompiledClass

* Add tests

* fetch class hash from the next block in declare tx

* Return an error if a class_hash is not declared + add tests for declare tx

* Fix error msg

* Add support for DeclareV0-1 in sir_tests

* Make Sierra class optional in declare v2 + other changes

* Add support for DeclareV2

* Uncomment test

* fix

* Use new_with_sierra_class_hash_and_tx_hash

* use CompiledClassHash instead of CompiledClass where applicatble

* Handle nonce in declare v2 + run fmt

* Set casm class before counting state changes in declare v2

* Changes

* Make sierra class hash non-optional

* fix + clippy

* Use state_reader instead of creating a state to fetch the next block s contract classes

* Add removed test

* Update test values

* Make validate_invocation and fee_transfer_info fields optional + add L1_HANDLER transaction RpcState

* Add L1Handler to blockifier_tests::execute_tx

* Add blockifier test case

* Add L1Handler to sir_tests::execute_tx

* Add one more test case

* fmt

---------

Co-authored-by: Juan Bono <juanbono94@gmail.com>

* Added a usage target to makefile (#1069)

* Added a usage target to makefile

* Fixed typo

* Implement `NativeSyscallHandler::deploy` (#1106)

* wip

* Minor improvements + add test

* Improve make clippy

* Clippy + fmt

* Update error messages

* Add failure flag test

* Fix typo

* Apply suggestions + run formatter

* Add llvm setup so we can run clippy with `cairo-native` feature

* Fix

* Remove todo

* Use a proper class_hash

* Fix test assertion

---------

Co-authored-by: Juan Bono <juanbono94@gmail.com>

* update cairo native to use gas consumed (#1102)

* update cairo native to use gas consumed

* gas consumed

* update native rev

* fix gas consumed

* remove comments

* fixes

---------

Co-authored-by: Juan Bono <juanbono94@gmail.com>

* Fix cairo-native feature-gated code

* clippy

---------

Co-authored-by: MrAzteca <azteca1998@users.noreply.github.com>
Co-authored-by: Esteve Soler Arderiu <esteve.soler@lambdaclass.com>
Co-authored-by: juanbono <juanbono94@gmail.com>
Co-authored-by: Fanny Guthmann <57538139+fguthmann@users.noreply.github.com>
Co-authored-by: fannyguthmann <fanny.guthmann@post.idc.ac.il>
Co-authored-by: Santiago Pittella <87827390+SantiagoPittella@users.noreply.github.com>
Co-authored-by: Matías Ignacio González <maigonzalez@fi.uba.ar>
Co-authored-by: SantiagoPittella <pittellasantiago@gmail.com>
Co-authored-by: Estéfano Bargas <estefano.bargas@fing.edu.uy>
Co-authored-by: Edgar <git@edgarluque.com>
Co-authored-by: ElFantasma <esteban.dimitroff@lambdaclass.com>
Co-authored-by: Javier Chatruc <jrchatruc@gmail.com>
Co-authored-by: Mariano Nicolini <mariano.nicolini.91@gmail.com>
Co-authored-by: Esteve Soler Arderiu <esteve.soler@fratilia.com>
Co-authored-by: Antonio Calvín García <antonio.calvin@lambdaclass.com>
Co-authored-by: Iñaki Garay <igarai@gmail.com>
  • Loading branch information
17 people authored Oct 31, 2023
1 parent 57c52f9 commit 8a11259
Show file tree
Hide file tree
Showing 84 changed files with 17,879 additions and 1,082 deletions.
2 changes: 2 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
*.sierra linguist-generated
*.casm linguist-generated
297 changes: 115 additions & 182 deletions .github/workflows/rust-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,240 +9,169 @@ on:

env:
CARGO_TERM_COLOR: always
RUST_TOOLCHAIN: 1.70.0
CAIRO_PROGRAMS_PATH: |
cairo_programs/**/*.casm
cairo_programs/**/*.sierra
cairo_programs/**/*.json
starknet_programs/**/*.casm
starknet_programs/**/*.sierra
starknet_programs/**/*.json
!starknet_programs/raw_contract_classes/*
RUST_TOOLCHAIN: '1.72.1'

jobs:
build-programs:
strategy:
matrix:
program-target: [
compile-cairo,
compile-starknet,
compile-cairo-1-casm,
compile-cairo-1-sierra,
compile-cairo-2-casm,
compile-cairo-2-sierra,
]
name: Build Cairo programs
runs-on: ubuntu-22.04
build:
name: Build with release profile
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Install Rust $RUST_TOOLCHAIN
uses: dtolnay/rust-toolchain@master
with:
fetch-depth: 0

- name: Fetch from cache
uses: actions/cache@v3
id: cache-programs
with:
path: ${{ env.CAIRO_PROGRAMS_PATH }}
key: ${{ matrix.program-target }}-cache-${{ hashFiles('cairo_programs/**/*.cairo', 'starknet_programs/**/*.cairo') }}
restore-keys: ${{ matrix.program-target }}-cache-

# This is not pretty, but we need `make` to see the compiled programs are
# actually newer than the sources, otherwise it will try to rebuild them
- name: Restore timestamps
uses: chetan/git-restore-mtime-action@v1

toolchain: $RUST_TOOLCHAIN
components: rustfmt, clippy
- name: Python3 Build
if: ${{ steps.cache-programs.outputs.cache-hit != 'true' }}
uses: actions/setup-python@v4
with:
python-version: '3.9'
cache: 'pip'

- name: Install deps
if: ${{ steps.cache-programs.outputs.cache-hit != 'true' }}
run: make deps

- name: Build programs
if: ${{ steps.cache-programs.outputs.cache-hit != 'true' }}
run: make -j ${{ matrix.program-target }}

# NOTE: used to reduce the amount of cache steps we need in later jobs
# TODO: remove this cache once the workflow finishes
merge-caches:
name: Merge Cairo programs cache
runs-on: ubuntu-22.04
needs: build-programs
steps:
- name: Checkout
uses: actions/checkout@v3

- name: Fetch from cache (compile-cairo)
uses: actions/cache/restore@v3
id: cache-programs
with:
path: ${{ env.CAIRO_PROGRAMS_PATH }}
key: compile-cairo-cache-${{ hashFiles('cairo_programs/**/*.cairo', 'starknet_programs/**/*.cairo') }}
fail-on-cache-miss: true

- name: Fetch from cache (compile-starknet)
uses: actions/cache/restore@v3
with:
path: ${{ env.CAIRO_PROGRAMS_PATH }}
key: compile-starknet-cache-${{ hashFiles('cairo_programs/**/*.cairo', 'starknet_programs/**/*.cairo') }}
fail-on-cache-miss: true

- name: Fetch from cache (compile-cairo-1-casm)
uses: actions/cache/restore@v3
with:
path: ${{ env.CAIRO_PROGRAMS_PATH }}
key: compile-cairo-1-casm-cache-${{ hashFiles('cairo_programs/**/*.cairo', 'starknet_programs/**/*.cairo') }}
fail-on-cache-miss: true

- name: Fetch from cache (compile-cairo-1-sierra)
uses: actions/cache/restore@v3
with:
path: ${{ env.CAIRO_PROGRAMS_PATH }}
key: compile-cairo-1-sierra-cache-${{ hashFiles('cairo_programs/**/*.cairo', 'starknet_programs/**/*.cairo') }}
fail-on-cache-miss: true

- name: Fetch from cache (compile-cairo-2-casm)
uses: actions/cache/restore@v3
with:
path: ${{ env.CAIRO_PROGRAMS_PATH }}
key: compile-cairo-2-casm-cache-${{ hashFiles('cairo_programs/**/*.cairo', 'starknet_programs/**/*.cairo') }}
fail-on-cache-miss: true

- name: Fetch from cache (compile-cairo-2-sierra)
uses: actions/cache/restore@v3
with:
path: ${{ env.CAIRO_PROGRAMS_PATH }}
key: compile-cairo-2-sierra-cache-${{ hashFiles('cairo_programs/**/*.cairo', 'starknet_programs/**/*.cairo') }}
fail-on-cache-miss: true

- name: Fetch from cache (compile-cairo-2-sierra)
uses: actions/cache/restore@v3
with:
path: ${{ env.CAIRO_PROGRAMS_PATH }}
key: compile-cairo-2-sierra-cache-${{ hashFiles('cairo_programs/**/*.cairo', 'starknet_programs/**/*.cairo') }}
fail-on-cache-miss: true

- name: Merge caches
uses: actions/cache/save@v3
with:
path: ${{ env.CAIRO_PROGRAMS_PATH }}
key: all-programs-cache-${{ hashFiles('cairo_programs/**/*.cairo', 'starknet_programs/**/*.cairo') }}

build:
name: Build with release profile
needs: merge-caches
runs-on: ubuntu-22.04
steps:
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
toolchain: ${{ env.RUST_TOOLCHAIN }}
components: rustfmt, clippy
- uses: Swatinem/rust-cache@v2
with:
cache-on-failure: true
- name: Checkout
uses: actions/checkout@v3
- name: Fetch programs
uses: actions/cache/restore@v3
with:
path: ${{ env.CAIRO_PROGRAMS_PATH }}
key: all-programs-cache-${{ hashFiles('cairo_programs/**/*.cairo', 'starknet_programs/**/*.cairo') }}
fail-on-cache-miss: true

- name: Install deps
run: make deps
- name: Build
run: cargo build --release --workspace
run: make build

lint:
name: Lint with fmt and clippy
needs: merge-caches
runs-on: ubuntu-22.04
runs-on: ubuntu-latest
env:
MLIR_SYS_170_PREFIX: /usr/lib/llvm-17/
TABLEGEN_170_PREFIX: /usr/lib/llvm-17/
steps:
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
- name: Checkout
uses: actions/checkout@v3
- name: Install Rust $RUST_TOOLCHAIN
uses: dtolnay/rust-toolchain@master
with:
toolchain: $RUST_TOOLCHAIN
components: rustfmt, clippy
- name: Python3 Build
uses: actions/setup-python@v4
with:
toolchain: ${{ env.RUST_TOOLCHAIN }}
components: rustfmt, clippy
python-version: '3.9'
cache: 'pip'
- uses: Swatinem/rust-cache@v2
with:
cache-on-failure: true
- name: Checkout
uses: actions/checkout@v3
- name: Fetch programs
uses: actions/cache/restore@v3
with:
path: ${{ env.CAIRO_PROGRAMS_PATH }}
key: all-programs-cache-${{ hashFiles('cairo_programs/**/*.cairo', 'starknet_programs/**/*.cairo') }}
fail-on-cache-miss: true

- name: check and free hdd space left
run: |
echo "Listing 20 largest packages"
dpkg-query -Wf '${Installed-Size}\t${Package}\n' | sort -n | tail -n 20
df -h
sudo apt-get update
sudo apt-get remove -y '^llvm-.*'
sudo apt-get remove -y 'php.*'
sudo apt-get remove -y '^dotnet-.*'
sudo apt-get remove -y '^temurin-.*'
sudo apt-get remove -y azure-cli google-cloud-cli microsoft-edge-stable google-chrome-stable firefox powershell mono-devel
sudo apt-get autoremove -y
sudo apt-get clean
df -h
echo "Removing large directories"
# deleting 15GB
sudo rm -rf /usr/share/dotnet/
sudo rm -rf /usr/local/lib/android
df -h
- name: add llvm deb repository
uses: myci-actions/add-deb-repo@10
with:
repo: deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-17 main
repo-name: llvm-repo
keys-asc: https://apt.llvm.org/llvm-snapshot.gpg.key
- name: Install LLVM
run: sudo apt-get install llvm-17 llvm-17-dev llvm-17-runtime clang-17 clang-tools-17 lld-17 libpolly-17-dev libmlir-17-dev mlir-17-tools
- name: Install deps
run: make deps
- name: Format
run: cargo fmt --all -- --check
- name: Run clippy
run: cargo clippy --workspace --all-targets -- -D warnings
run: make clippy

tests:
env:
INFURA_API_KEY: ${{ secrets.INFURA_API_KEY }}
MLIR_SYS_170_PREFIX: /usr/lib/llvm-17/
TABLEGEN_170_PREFIX: /usr/lib/llvm-17/
strategy:
fail-fast: false
matrix:
target: [ test-cairo-1, test-cairo-2, test-doctests ]
target: [ test-cairo-1, test-cairo-2, test-doctests, test-cairo-native ]
name: Run tests
needs: merge-caches
runs-on: ubuntu-22.04
runs-on: ubuntu-latest
steps:
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
- name: Checkout
uses: actions/checkout@v3
- name: Install Rust $RUST_TOOLCHAIN
uses: dtolnay/rust-toolchain@master
with:
toolchain: $RUST_TOOLCHAIN
components: rustfmt, clippy
- name: Python3 Build
uses: actions/setup-python@v4
with:
toolchain: ${{ env.RUST_TOOLCHAIN }}
components: rustfmt, clippy
python-version: '3.9'
cache: 'pip'
- uses: Swatinem/rust-cache@v2
with:
cache-on-failure: true
- name: Checkout
uses: actions/checkout@v3

- name: Fetch programs
uses: actions/cache/restore@v3
with:
path: ${{ env.CAIRO_PROGRAMS_PATH }}
key: all-programs-cache-${{ hashFiles('cairo_programs/**/*.cairo', 'starknet_programs/**/*.cairo') }}
fail-on-cache-miss: true

- name: Install deps
run: make deps

- name: Install testing tools
# TODO: remove `if` when nextest adds doctests support
if: ${{ matrix.target != 'test-doctests' }}
uses: taiki-e/install-action@v2
with:
tool: cargo-nextest@0.9.49

- name: check and free hdd space left
run: |
echo "Listing 20 largest packages"
dpkg-query -Wf '${Installed-Size}\t${Package}\n' | sort -n | tail -n 20
df -h
sudo apt-get update
sudo apt-get remove -y '^llvm-.*'
sudo apt-get remove -y 'php.*'
sudo apt-get remove -y '^dotnet-.*'
sudo apt-get remove -y '^temurin-.*'
sudo apt-get remove -y azure-cli google-cloud-cli microsoft-edge-stable google-chrome-stable firefox powershell mono-devel
sudo apt-get autoremove -y
sudo apt-get clean
df -h
echo "Removing large directories"
# deleting 15GB
sudo rm -rf /usr/share/dotnet/
sudo rm -rf /usr/local/lib/android
df -h
- name: add llvm deb repository
uses: myci-actions/add-deb-repo@10
with:
repo: deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-17 main
repo-name: llvm-repo
keys-asc: https://apt.llvm.org/llvm-snapshot.gpg.key
- name: Install LLVM
run: sudo apt-get install llvm-17 llvm-17-dev llvm-17-runtime clang-17 clang-tools-17 lld-17 libpolly-17-dev libmlir-17-dev mlir-17-tools
- name: Run tests (${{ matrix.target }})
run: make ${{ matrix.target }}

coverage:
needs: merge-caches
name: Generate and upload coverage report
runs-on: ubuntu-22.04
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Install Rust
uses: dtolnay/rust-toolchain@nightly
with:
toolchain: ${{ env.RUST_TOOLCHAIN }}

- name: Set nightly as default
run: rustup default nightly

- name: Install testing tools
uses: taiki-e/install-action@v2
- name: Install Rust nightly
uses: dtolnay/rust-toolchain@master
with:
tool: cargo-nextest@0.9.49,cargo-llvm-cov
toolchain: nightly

- uses: Swatinem/rust-cache@v2
with:
Expand All @@ -255,13 +184,17 @@ jobs:
path: lcov.info
key: coverage-cache-${{ github.sha }}

- name: Fetch programs
if: steps.restore-report.outputs.cache-hit != 'true'
uses: actions/cache/restore@v3
- name: Python3 Build
uses: actions/setup-python@v4
with:
path: ${{ env.CAIRO_PROGRAMS_PATH }}
key: all-programs-cache-${{ hashFiles('cairo_programs/**/*.cairo', 'starknet_programs/**/*.cairo') }}
fail-on-cache-miss: true
python-version: '3.9'
cache: 'pip'
- uses: Swatinem/rust-cache@v2
with:
cache-on-failure: true

- name: Install deps
run: make deps

- name: Generate coverage report
if: steps.restore-report.outputs.cache-hit != 'true'
Expand Down
Loading

0 comments on commit 8a11259

Please sign in to comment.