GitHub - Project Serum / Swap を動かしたときのエラー対応メモ。
Agenda
deps配下が見つからないエラー
現象
READMEの手順通りに進めて(あとでわかったが一部手順をスキップしてしまっていた)、anchor testするとdeps配下が見つからないと言われる。
% anchor test
BPF SDK: /Users/user/.local/share/solana/install/releases/1.9.1/solana-release/bin/sdk/bpf
cargo-build-bpf child: rustup toolchain list -v
cargo-build-bpf child: cargo +bpf build --target bpfel-unknown-unknown --release
warning: profiles for the non root package will be ignored, specify profiles at the workspace root:
package: /Users/user/Desktop/blockchain/swap-master/programs/swap/Cargo.toml
workspace: /Users/user/Desktop/blockchain/swap-master/Cargo.toml
Finished release [optimized] target(s) in 0.70s
cargo-build-bpf child: /Users/user/.local/share/solana/install/releases/1.9.1/solana-release/bin/sdk/bpf/dependencies/bpf-tools/llvm/bin/llvm-readelf --dyn-symbols /Users/user/Desktop/blockchain/swap-master/target/deploy/serum_swap.so
To deploy this program:
$ solana program deploy /Users/user/Desktop/blockchain/swap-master/target/deploy/serum_swap.so
The program address will default to this keypair (override with --program-id):
/Users/user/Desktop/blockchain/swap-master/target/deploy/serum_swap-keypair.json
Error: Program in genesis configuration does not exist at path: ./deps/serum-dex/dex/target/deploy/serum_dex.so
原因
以下の手順をスキップしてしまっていた。
git submodule init
git submodule update
詳しく調べてはいないが、おそらくAnchor Swapを動かすためには、Anchor DEXのプログラムも必要で、これはそのDEXを動かすための対応(?)という推測。
対応
git cloneして手順通りに進める。
% git clone https://github.com/project-serum/swap.git
% git submodule init
% git submodule update
・・・
備考
なお、Anchor Swapは、GitHubから直接ファイルDLしてしまうと、.gitが見つからないと言われるので、必ずgit cloneすること。
fatal: not a git repository (or any of the parent directories): .git
Error: Cannot find module XXXエラー
現象
anchor testするとmoduleが見つからないと言われる。
% anchor test
Error: Cannot find module '@project-serum/anchor'
・・・
% anchor test
Error: Cannot find module '@project-serum/serum'
・・・
% anchor test
Error: Cannot find module '@project-serum/common'
・・・
原因
Anchor Swapはpackage.jsonを用意していないので、個別にインストールする必要がある。git cloneした状態だとモジュールがなにも含まれていない(=package.jsonで定義されていない)。
対応
モジュールを追加してインストールする。
% yarn add @project-serum/anchor
% yarn add @project-serum/serum
% yarn add @project-serum/common