risc0 / risc0

RISC Zero is a zero-knowledge verifiable general computing platform based on zk-STARKs and the RISC-V microarchitecture.

Home Page:https://risczero.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[BUG] Cannot compile new starter-template

rakanalh opened this issue · comments

Bug Report

The starter template would not compile.

guest_code_for_quick_start: error[E0519]: the current crate is indistinguishable from one of its dependencies: it has the same crate-name `paste` and was compiled with the same `-C metadata` arguments. This will result in symbol conflicts between the two.
guest_code_for_quick_start:   --> /home/rakan/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rrs-lib-0.1.0/src/instruction_executor.rs:46:5
guest_code_for_quick_start:    |
guest_code_for_quick_start: 46 | use paste::paste;
guest_code_for_quick_start:    |     ^^^^^
guest_code_for_quick_start:
guest_code_for_quick_start: error[E0519]: the current crate is indistinguishable from one of its dependencies: it has the same crate-name `paste` and was compiled with the same `-C metadata` arguments. This will result in symbol conflicts between the two.
guest_code_for_quick_start:   --> /home/rakan/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rrs-lib-0.1.0/src/instruction_string_outputter.rs:23:5
guest_code_for_quick_start:    |
guest_code_for_quick_start: 23 | use paste::paste;
guest_code_for_quick_start:    |     ^^^^^
guest_code_for_quick_start:
guest_code_for_quick_start: error: cannot determine resolution for the macro `paste`
guest_code_for_quick_start:    --> /home/rakan/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rrs-lib-0.1.0/src/instruction_executor.rs:231:9
guest_code_for_quick_start:     |
guest_code_for_quick_start: 231 |         paste! {
guest_code_for_quick_start:     |         ^^^^^
guest_code_for_quick_start: ...
guest_code_for_quick_start: 346 |     make_alu_op_fns! {add, |a, b| a.wrapping_add(b)}
guest_code_for_quick_start:     |     ------------------------------------------------ in this macro invocation
guest_code_for_quick_start:     |
guest_code_for_quick_start:     = note: import resolution is stuck, try simplifying macro imports
guest_code_for_quick_start:     = note: this error originates in the macro `make_alu_op_reg_fn` which comes from the expansion of the macro `make_alu_op_fns` (in Nightly builds, run with -Z macro-backtrace for more info)
guest_code_for_quick_start: error[E0046]: not all trait items implemented, missing: `process_add`, `process_sub`, `process_sll`, `process_slt`, `process_sltu`, `process_xor`, `process_srl`, `process_sra`, `process_or`, `process_and`, `process_addi`, `process_slli`, `process_slti`, `process_sltui`, `process_xori`, `process_srli`, `process_srai`, `process_ori`, `process_andi`, `process_beq`, `process_bne`, `process_blt`, `process_bltu`, `process_bge`, `process_bgeu`, `process_lb`, `process_lbu`, `process_lh`, `process_lhu`, `process_lw`, `process_sb`, `process_sh`, `process_sw`, `process_mul`, `process_mulh`, `process_mulhu`, `process_mulhsu`, `process_div`, `process_divu`, `process_rem`, `process_remu`
guest_code_for_quick_start:    --> /home/rakan/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rrs-lib-0.1.0/src/instruction_executor.rs:340:1
guest_code_for_quick_start:     |
guest_code_for_quick_start: 340 |   impl<'a, M: Memory> InstructionProcessor for InstructionExecutor<'a, M> {
guest_code_for_quick_start:     |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ missing `process_add`, `process_sub`, `process_sll`, `process_slt`, `process_sltu`, `process_xor`, `process_srl`, `process_sra`, `process_or`, `process_and`, `process_addi`, `process_slli`, `process_slti`, `process_sltui`, `process_xori`, `process_srli`, `process_srai`, `process_ori`, `process_andi`, `process_beq`, `process_bne`, `process_blt`, `process_bltu`, `process_bge`, `process_bgeu`, `process_lb`, `process_lbu`, `process_lh`, `process_lhu`, `process_lw`, `process_sb`, `process_sh`, `process_sw`, `process_mul`, `process_mulh`, `process_mulhu`, `process_mulhsu`, `process_div`, `process_divu`, `process_rem`, `process_remu` in implementation
guest_code_for_quick_start:     |
guest_code_for_quick_start:    ::: /home/rakan/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rrs-lib-0.1.0/src/lib.rs:29:5
guest_code_for_quick_start:     |
guest_code_for_quick_start: 29  |       fn process_add(&mut self, dec_insn: instruction_formats::RType) -> Self::InstructionResult;
guest_code_for_quick_start:     |       ------------------------------------------------------------------------------------------- `process_add` from trait
guest_code_for_quick_start: 30  |       fn process_sub(&mut self, dec_insn: instruction_formats::RType) -> Self::InstructionResult;
guest_code_for_quick_start:     |       ------------------------------------------------------------------------------------------- `process_sub` from trait
guest_code_for_quick_start: 31  |       fn process_sll(&mut self, dec_insn: instruction_formats::RType) -> Self::InstructionResult;
guest_code_for_quick_start:     |       ------------------------------------------------------------------------------------------- `process_sll` from trait
guest_code_for_quick_start: 32  |       fn process_slt(&mut self, dec_insn: instruction_formats::RType) -> Self::InstructionResult;
guest_code_for_quick_start:     |       ------------------------------------------------------------------------------------------- `process_slt` from trait
guest_code_for_quick_start: 33  |       fn process_sltu(&mut self, dec_insn: instruction_formats::RType) -> Self::InstructionResult;
guest_code_for_quick_start:     |       -------------------------------------------------------------------------------------------- `process_sltu` from trait
guest_code_for_quick_start: 34  |       fn process_xor(&mut self, dec_insn: instruction_formats::RType) -> Self::InstructionResult;
guest_code_for_quick_start:     |       ------------------------------------------------------------------------------------------- `process_xor` from trait
guest_code_for_quick_start: 35  |       fn process_srl(&mut self, dec_insn: instruction_formats::RType) -> Self::InstructionResult;
guest_code_for_quick_start:     |       ------------------------------------------------------------------------------------------- `process_srl` from trait
guest_code_for_quick_start: 36  |       fn process_sra(&mut self, dec_insn: instruction_formats::RType) -> Self::InstructionResult;
guest_code_for_quick_start:     |       ------------------------------------------------------------------------------------------- `process_sra` from trait
guest_code_for_quick_start: 37  |       fn process_or(&mut self, dec_insn: instruction_formats::RType) -> Self::InstructionResult;
guest_code_for_quick_start:     |       ------------------------------------------------------------------------------------------ `process_or` from trait
guest_code_for_quick_start: 38  |       fn process_and(&mut self, dec_insn: instruction_formats::RType) -> Self::InstructionResult;
guest_code_for_quick_start:     |       ------------------------------------------------------------------------------------------- `process_and` from trait
guest_code_for_quick_start: 39  |
guest_code_for_quick_start: 40  |       fn process_addi(&mut self, dec_insn: instruction_formats::IType) -> Self::InstructionResult;
guest_code_for_quick_start:     |       -------------------------------------------------------------------------------------------- `process_addi` from trait
guest_code_for_quick_start: 41  | /     fn process_slli(
guest_code_for_quick_start: 42  | |         &mut self,
guest_code_for_quick_start: 43  | |         dec_insn: instruction_formats::ITypeShamt,
guest_code_for_quick_start: 44  | |     ) -> Self::InstructionResult;
guest_code_for_quick_start:     | |_________________________________- `process_slli` from trait
guest_code_for_quick_start: 45  |       fn process_slti(&mut self, dec_insn: instruction_formats::IType) -> Self::InstructionResult;
guest_code_for_quick_start:     |       -------------------------------------------------------------------------------------------- `process_slti` from trait
guest_code_for_quick_start: 46  |       fn process_sltui(&mut self, dec_insn: instruction_formats::IType) -> Self::InstructionResult;
guest_code_for_quick_start:     |       --------------------------------------------------------------------------------------------- `process_sltui` from trait
guest_code_for_quick_start: 47  |       fn process_xori(&mut self, dec_insn: instruction_formats::IType) -> Self::InstructionResult;
guest_code_for_quick_start:     |       -------------------------------------------------------------------------------------------- `process_xori` from trait
guest_code_for_quick_start: 48  | /     fn process_srli(
guest_code_for_quick_start: 49  | |         &mut self,
guest_code_for_quick_start: 50  | |         dec_insn: instruction_formats::ITypeShamt,
guest_code_for_quick_start: 51  | |     ) -> Self::InstructionResult;
guest_code_for_quick_start:     | |_________________________________- `process_srli` from trait
guest_code_for_quick_start: 52  | /     fn process_srai(
guest_code_for_quick_start: 53  | |         &mut self,
guest_code_for_quick_start: 54  | |         dec_insn: instruction_formats::ITypeShamt,
guest_code_for_quick_start: 55  | |     ) -> Self::InstructionResult;
guest_code_for_quick_start:     | |_________________________________- `process_srai` from trait
guest_code_for_quick_start: 56  |       fn process_ori(&mut self, dec_insn: instruction_formats::IType) -> Self::InstructionResult;
guest_code_for_quick_start:     |       ------------------------------------------------------------------------------------------- `process_ori` from trait
guest_code_for_quick_start: 57  |       fn process_andi(&mut self, dec_insn: instruction_formats::IType) -> Self::InstructionResult;
guest_code_for_quick_start:     |       -------------------------------------------------------------------------------------------- `process_andi` from trait
guest_code_for_quick_start: ...
guest_code_for_quick_start: 62  |       fn process_beq(&mut self, dec_insn: instruction_formats::BType) -> Self::InstructionResult;
guest_code_for_quick_start:     |       ------------------------------------------------------------------------------------------- `process_beq` from trait
guest_code_for_quick_start: 63  |       fn process_bne(&mut self, dec_insn: instruction_formats::BType) -> Self::InstructionResult;
guest_code_for_quick_start:     |       ------------------------------------------------------------------------------------------- `process_bne` from trait
guest_code_for_quick_start: 64  |       fn process_blt(&mut self, dec_insn: instruction_formats::BType) -> Self::InstructionResult;
guest_code_for_quick_start:     |       ------------------------------------------------------------------------------------------- `process_blt` from trait
guest_code_for_quick_start: 65  |       fn process_bltu(&mut self, dec_insn: instruction_formats::BType) -> Self::InstructionResult;
guest_code_for_quick_start:     |       -------------------------------------------------------------------------------------------- `process_bltu` from trait
guest_code_for_quick_start: 66  |       fn process_bge(&mut self, dec_insn: instruction_formats::BType) -> Self::InstructionResult;
guest_code_for_quick_start:     |       ------------------------------------------------------------------------------------------- `process_bge` from trait
guest_code_for_quick_start: 67  |       fn process_bgeu(&mut self, dec_insn: instruction_formats::BType) -> Self::InstructionResult;
guest_code_for_quick_start:     |       -------------------------------------------------------------------------------------------- `process_bgeu` from trait
guest_code_for_quick_start: 68  |
guest_code_for_quick_start: 69  |       fn process_lb(&mut self, dec_insn: instruction_formats::IType) -> Self::InstructionResult;
guest_code_for_quick_start:     |       ------------------------------------------------------------------------------------------ `process_lb` from trait
guest_code_for_quick_start: 70  |       fn process_lbu(&mut self, dec_insn: instruction_formats::IType) -> Self::InstructionResult;
guest_code_for_quick_start:     |       ------------------------------------------------------------------------------------------- `process_lbu` from trait
guest_code_for_quick_start: 71  |       fn process_lh(&mut self, dec_insn: instruction_formats::IType) -> Self::InstructionResult;
guest_code_for_quick_start:     |       ------------------------------------------------------------------------------------------ `process_lh` from trait
guest_code_for_quick_start: 72  |       fn process_lhu(&mut self, dec_insn: instruction_formats::IType) -> Self::InstructionResult;
guest_code_for_quick_start:     |       ------------------------------------------------------------------------------------------- `process_lhu` from trait
guest_code_for_quick_start: 73  |       fn process_lw(&mut self, dec_insn: instruction_formats::IType) -> Self::InstructionResult;
guest_code_for_quick_start:     |       ------------------------------------------------------------------------------------------ `process_lw` from trait
guest_code_for_quick_start: 74  |
guest_code_for_quick_start: 75  |       fn process_sb(&mut self, dec_insn: instruction_formats::SType) -> Self::InstructionResult;
guest_code_for_quick_start:     |       ------------------------------------------------------------------------------------------ `process_sb` from trait
guest_code_for_quick_start: 76  |       fn process_sh(&mut self, dec_insn: instruction_formats::SType) -> Self::InstructionResult;
guest_code_for_quick_start:     |       ------------------------------------------------------------------------------------------ `process_sh` from trait
guest_code_for_quick_start: 77  |       fn process_sw(&mut self, dec_insn: instruction_formats::SType) -> Self::InstructionResult;
guest_code_for_quick_start:     |       ------------------------------------------------------------------------------------------ `process_sw` from trait
guest_code_for_quick_start: ...
guest_code_for_quick_start: 82  |       fn process_mul(&mut self, dec_insn: instruction_formats::RType) -> Self::InstructionResult;
guest_code_for_quick_start:     |       ------------------------------------------------------------------------------------------- `process_mul` from trait
guest_code_for_quick_start: 83  |       fn process_mulh(&mut self, dec_insn: instruction_formats::RType) -> Self::InstructionResult;
guest_code_for_quick_start:     |       -------------------------------------------------------------------------------------------- `process_mulh` from trait
guest_code_for_quick_start: 84  |       fn process_mulhu(&mut self, dec_insn: instruction_formats::RType) -> Self::InstructionResult;
guest_code_for_quick_start:     |       --------------------------------------------------------------------------------------------- `process_mulhu` from trait
guest_code_for_quick_start: 85  |       fn process_mulhsu(&mut self, dec_insn: instruction_formats::RType) -> Self::InstructionResult;
guest_code_for_quick_start:     |       ---------------------------------------------------------------------------------------------- `process_mulhsu` from trait
guest_code_for_quick_start: 86  |
guest_code_for_quick_start: 87  |       fn process_div(&mut self, dec_insn: instruction_formats::RType) -> Self::InstructionResult;
guest_code_for_quick_start:     |       ------------------------------------------------------------------------------------------- `process_div` from trait
guest_code_for_quick_start: 88  |       fn process_divu(&mut self, dec_insn: instruction_formats::RType) -> Self::InstructionResult;
guest_code_for_quick_start:     |       -------------------------------------------------------------------------------------------- `process_divu` from trait
guest_code_for_quick_start: 89  |       fn process_rem(&mut self, dec_insn: instruction_formats::RType) -> Self::InstructionResult;
guest_code_for_quick_start:     |       ------------------------------------------------------------------------------------------- `process_rem` from trait
guest_code_for_quick_start: 90  |       fn process_remu(&mut self, dec_insn: instruction_formats::RType) -> Self::InstructionResult;
guest_code_for_quick_start:     |       -------------------------------------------------------------------------------------------- `process_remu` from trait

Steps to Reproduce

  1. cargo risczero new quick_start --guest-name guest_code_for_quick_start
  2. cd quick_start
  3. cargo run

Expected behavior

Should be able to run without compilation issues.

Your Environment

  • risc0-zkvm version: 0.21.0
  • Rust version: rustc 1.76.0 (07dca489a 2024-02-04)
  • Platform/OS: Linux nixos 6.1.82 #1-NixOS SMP PREEMPT_DYNAMIC Fri Mar 15 18:27:50 UTC 2024 x86_64 GNU/Linux

Additional context

I tried this but I can't reproduce it on my machine. I'm on macOS. I wonder if this is an issue with how some things are handled in NixOs..

Spinned up a vagrant machine with Arch linux and could not reproduce either. Seems like NixOS specific :(