Skip to content
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

feat(ci): fix make clippy script and clippy CI job #220

Merged
merged 18 commits into from
Jun 19, 2024
Merged
Show file tree
Hide file tree
Changes from 16 commits
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
94 changes: 47 additions & 47 deletions .github/workflows/ci-build-test-reusable.yml
Original file line number Diff line number Diff line change
@@ -1,56 +1,56 @@
name: CI Build and Test - Reusable

on:
workflow_call:
inputs:
version_name:
type: string
required: true
version_toolchain:
type: string
required: true
workflow_call:
inputs:
version_name:
type: string
required: true
version_toolchain:
type: string
required: true

env:
CARGO_TERM_COLOR: always
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

jobs:
build-test:
name: Build and test
runs-on: [taiko-runner]
timeout-minutes: 120

env:
TARGET: ${{ inputs.version_name}}
CI: 1
MOCK: 1
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- uses: actions-rs/toolchain@v1
with:
toolchain: ${{ inputs.version_toolchain }}
profile: minimal
- name: Install cargo-binstall
uses: cargo-bins/[email protected]
- name: Setup sccache
if: ${{ inputs.version_name }} == risc0
uses: risc0/risc0/.github/actions/[email protected]
- name: Install ${{ inputs.version_name }}
run: make install
- name: Build ${{ inputs.version_name }} prover
run: make build
- name: Test ${{ inputs.version_name }} prover
run: make test
- name: Build with tracer
if: ${{ inputs.version_name }} == native
run: cargo build -F tracer
build-test:
name: Build and test
runs-on: [taiko-runner]
timeout-minutes: 120

env:
TARGET: ${{ inputs.version_name }}
CI: 1
MOCK: 1

steps:
- uses: actions/checkout@v4
with:
submodules: recursive

- uses: actions-rs/toolchain@v1
with:
toolchain: ${{ inputs.version_toolchain }}
profile: minimal

- name: Install cargo-binstall
uses: cargo-bins/[email protected]

- name: Setup sccache
if: ${{ inputs.version_name }} == risc0
uses: risc0/risc0/.github/actions/[email protected]

- name: Install ${{ inputs.version_name }}
run: make install

- name: Build ${{ inputs.version_name }} prover
run: make build

- name: Test ${{ inputs.version_name }} prover
run: make test

- name: Build with tracer
if: ${{ inputs.version_name }} == native
run: cargo build -F tracer
11 changes: 2 additions & 9 deletions .github/workflows/ci-lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,8 @@ jobs:
steps:
- uses: actions/checkout@v4

- uses: risc0/risc0/.github/actions/[email protected]

- uses: risc0/risc0/.github/actions/[email protected]

- uses: risc0/clippy-action@main
with:
reporter: 'github-pr-check'
fail_on_error: true
clippy_flags: --workspace --all-targets --all-features -- -D warnings
- name: Run clippy check for all targets
run: make clippy

fmt:
name: fmt
Expand Down
2 changes: 1 addition & 1 deletion core/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,7 @@ pub fn merge(a: &mut Value, b: &Value) {
merge(a.entry(k).or_insert(Value::Null), v);
}
}
(a, b) if !b.is_null() => *a = b.to_owned(),
(a, b) if !b.is_null() => b.clone_into(a),
// If b is null, just keep a (which means do nothing).
_ => {}
}
Expand Down
4 changes: 4 additions & 0 deletions harness/core/src/assert.rs
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,10 @@ impl AssertionLog {
self.assertions.len()
}

pub fn is_empty(&self) -> bool {
self.len() == 0
}

pub fn display_failures(&self, start: usize, end: usize) {
for i in start..end {
if let Some(assertion) = self.assertions.get(i) {
Expand Down
68 changes: 39 additions & 29 deletions harness/macro/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,9 +1,39 @@
extern crate proc_macro;
use proc_macro::TokenStream;
use quote::quote;
use syn::{parse_macro_input, punctuated::Punctuated, Ident, Item, ItemFn, ItemMod, Path, Token};
use syn::{parse_macro_input, Item, ItemFn, ItemMod};

#[cfg(any(feature = "sp1", feature = "risc0"))]
use syn::{punctuated::Punctuated, Ident, Path, Token};

// Helper struct to parse input
#[cfg(any(feature = "sp1", feature = "risc0"))]
struct EntryArgs {
main_entry: Ident,
test_modules: Option<Punctuated<Path, Token![,]>>,
}

#[cfg(any(feature = "sp1", feature = "risc0"))]
impl syn::parse::Parse for EntryArgs {
fn parse(input: syn::parse::ParseStream) -> syn::Result<Self> {
let main_entry: Ident = input.parse()?;
let test_modules: Option<Punctuated<Path, Token![,]>> = if input.peek(Token![,]) {
input.parse::<Token![,]>()?; // Parse and consume the comma
// Now parse a list of module paths if they are present
Some(input.parse_terminated(Path::parse)?)
} else {
None
};

Ok(EntryArgs {
main_entry,
test_modules,
})
}
}

#[proc_macro]
#[cfg(any(feature = "sp1", feature = "risc0"))]
pub fn entrypoint(input: TokenStream) -> TokenStream {
let input = parse_macro_input!(input as EntryArgs);
let main_entry = input.main_entry;
Expand Down Expand Up @@ -70,41 +100,21 @@ pub fn entrypoint(input: TokenStream) -> TokenStream {
}
};

#[cfg(all(not(feature = "sp1"), not(feature = "risc0")))]
let output = quote! {
output.into()
}

#[proc_macro]
#[cfg(not(any(feature = "sp1", feature = "risc0")))]
pub fn entrypoint(_input: TokenStream) -> TokenStream {
quote! {
mod generated_main {
#[no_mangle]
fn main() {
super::ENTRY()
}
}
};

output.into()
}

// Helper struct to parse input
struct EntryArgs {
main_entry: Ident,
test_modules: Option<Punctuated<Path, Token![,]>>,
}

impl syn::parse::Parse for EntryArgs {
fn parse(input: syn::parse::ParseStream) -> syn::Result<Self> {
let main_entry: Ident = input.parse()?;
let test_modules: Option<Punctuated<Path, Token![,]>> = if input.peek(Token![,]) {
input.parse::<Token![,]>()?; // Parse and consume the comma
// Now parse a list of module paths if they are present
Some(input.parse_terminated(Path::parse)?)
} else {
None
};

Ok(EntryArgs {
main_entry,
test_modules,
})
}
.into()
}

#[proc_macro]
Expand Down
17 changes: 13 additions & 4 deletions lib/src/builder/finalize.rs
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,11 @@ impl BlockFinalizeStrategy<MemDb> for MemDbBlockFinalizeStrategy {
fn finalize(mut block_builder: BlockBuilder<MemDb>) -> Result<(AlloyConsensusHeader, MptNode)> {
let db: MemDb = block_builder.db.take().expect("DB not initialized");

let mut account_touched = 0;
let mut storage_touched = 0;
#[cfg(feature = "sp1-cycle-tracker")]
{
let mut account_touched = 0;
let mut storage_touched = 0;
}

// apply state updates
let mut state_trie = mem::take(&mut block_builder.input.parent_state_trie);
Expand All @@ -62,7 +65,10 @@ impl BlockFinalizeStrategy<MemDb> for MemDbBlockFinalizeStrategy {
continue;
}

account_touched += 1;
#[cfg(feature = "sp1-cycle-tracker")]
{
account_touched += 1;
}

// otherwise, compute the updated storage root for that account
let state_storage = &account.storage;
Expand All @@ -88,7 +94,10 @@ impl BlockFinalizeStrategy<MemDb> for MemDbBlockFinalizeStrategy {
storage_trie.insert_rlp(&storage_trie_index, *value)?;
}

storage_touched += 1;
#[cfg(feature = "sp1-cycle-tracker")]
{
storage_touched += 1;
}
}

storage_trie.hash()
Expand Down
30 changes: 24 additions & 6 deletions lib/src/builder/initialize.rs
Original file line number Diff line number Diff line change
Expand Up @@ -62,8 +62,14 @@ impl DbInitStrategy<MemDb> for MemDbInitStrategy {
.map(|bytes| (keccak(&bytes).into(), bytes))
.collect();

let mut account_touched = 0;
let mut storage_touched = 0;
#[cfg(all(
all(target_os = "zkvm", target_vendor = "succinct"),
feature = "sp1-cycle-tracker"
))]
{
let mut account_touched = 0;
let mut storage_touched = 0;
}

// Load account data into db
let mut accounts = HashMap::with_capacity(block_builder.input.parent_storage.len());
Expand All @@ -85,7 +91,13 @@ impl DbInitStrategy<MemDb> for MemDbInitStrategy {
storage_trie.hash()
);
}
account_touched += 1;
#[cfg(all(
all(target_os = "zkvm", target_vendor = "succinct"),
feature = "sp1-cycle-tracker"
))]
{
account_touched += 1;
}

// load the corresponding code
let code_hash = state_account.code_hash;
Expand All @@ -106,7 +118,13 @@ impl DbInitStrategy<MemDb> for MemDbInitStrategy {
.get_rlp(&keccak(slot.to_be_bytes::<32>()))?
.unwrap_or_default();
storage.insert(slot, value);
storage_touched += 1;
#[cfg(all(
all(target_os = "zkvm", target_vendor = "succinct"),
feature = "sp1-cycle-tracker"
))]
{
storage_touched += 1;
}
}

let mem_account = DbAccount {
Expand All @@ -129,8 +147,8 @@ impl DbInitStrategy<MemDb> for MemDbInitStrategy {
feature = "sp1-cycle-tracker"
))]
{
println!("initialize_db Account touch {:?}", account_touched);
println!("initialize_db Storage touch {:?}", storage_touched);
println!("initialize_db Account touch {account_touched:?}");
println!("initialize_db Storage touch {storage_touched:?}");
}

// prepare block hash history
Expand Down
16 changes: 8 additions & 8 deletions lib/src/consts.rs
Original file line number Diff line number Diff line change
Expand Up @@ -250,14 +250,14 @@ pub enum Network {
TaikoMainnet,
}

impl ToString for Network {
fn to_string(&self) -> String {
match self {
Network::Ethereum => "ethereum".to_string(),
Network::Holesky => "holesky".to_string(),
Network::TaikoA7 => "taiko_a7".to_string(),
Network::TaikoMainnet => "taiko_mainnet".to_string(),
}
impl std::fmt::Display for Network {
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
f.write_str(match self {
Network::Ethereum => "ethereum",
Network::Holesky => "holesky",
Network::TaikoA7 => "taiko_a7",
Network::TaikoMainnet => "taiko_mainnet",
})
}
}

Expand Down
1 change: 1 addition & 0 deletions lib/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@ mod time {
}

pub struct CycleTracker {
#[allow(dead_code)]
title: String,
}

Expand Down
2 changes: 1 addition & 1 deletion lib/src/protocol_instance.rs
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ impl ProtocolInstance {
let aligned_data_size = (data_size + 3) / 4 * 4;
let layout = Layout::from_size_align(aligned_data_size, 4).unwrap();
// Allocate aligned memory
let raw_ptr = unsafe { alloc(layout) as *mut u8 };
let raw_ptr = unsafe { alloc(layout) };
if raw_ptr.is_null() {
panic!("Failed to allocate memory with aligned pointer");
}
Expand Down
4 changes: 2 additions & 2 deletions makefile
Original file line number Diff line number Diff line change
Expand Up @@ -16,5 +16,5 @@ fmt:
@cargo fmt --all --check

clippy:
@cargo +nightly-2024-04-18 check --features "sgx,sp1,risc0"
@cargo +nightly-2024-04-18 clippy --workspace --features "sgx,sp1,risc0" --all-targets -- -Dwarnings
./script/install.sh $(TARGET)
./script/clippy.sh $(TARGET)
4 changes: 2 additions & 2 deletions provers/risc0/builder/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ impl Pipeline for Risc0Pipeline {
.execute()
.expect("Execution failed")
.risc0_placement(dest)
.expect("Failed to export Sp1 artifacts");
.expect("Failed to export Risc0 artifacts");
}

fn tests(&self, names: &[&str], dest: &str) {
Expand All @@ -81,6 +81,6 @@ impl Pipeline for Risc0Pipeline {
.execute()
.expect("Execution failed")
.risc0_placement(dest)
.expect("Failed to export Sp1 artifacts");
.expect("Failed to export Risc0 artifacts");
}
}
Loading
Loading