Slide 1

Slide 1 text

Try Cross Compile Then Fail
 Powered by DMM Blockchain Labs

Slide 2

Slide 2 text

自己紹介
 @ DMM.com Shinohara Wataru ・DMM.com Blockchain Engineer ・Rollercoaster @shinanonozenji_

Slide 3

Slide 3 text

書籍紹介
 @ DMM.com

Slide 4

Slide 4 text

Substrate
 @ DMM.com 自分のブロックチェーンを作ることができる
 Rustで書かれている
 関数はマクロで定義し、WebAssemblyで保持する
 コンパイルが激重い(私のマシンがMacbook12だから)
 paritytech/substrate 6. Building https://github.com/paritytech/substrate#building

Slide 5

Slide 5 text

こうなるともっと遅い
 @ DMM.com

Slide 6

Slide 6 text

リモートビルドしよう
 @ DMM.com CLion(IntelliJ)にはSFTP経由のリモートデプロイがある
 自動で変更があったファイルをアップロードしてくれる
 GCPハイパワーインスタンスにビルドさせよう
 GDBデバッグもできる
 Remote Development and Debugging of Rust with CLion https://medium.com/nearprotocol/remote-development-and-debugging-of-rust-with-clio n-39c38ced7cc1

Slide 7

Slide 7 text

SSHの躓き
 @ DMM.com OpenSSH 7.8以降はデフォルトでOpenSSH形式の鍵を生成する
 私のMac(Mojave) -> ssh -V -> OpenSSH_7.9p1, LibreSSL 2.7.3
 OpenSSH形式の鍵はIntelliJは未対応
 PEMフォーマットで鍵を生成して登録し直す
 Support OpenSSH format private keys https://youtrack.jetbrains.com/issue/PY-33521

Slide 8

Slide 8 text

リモートビルドすごい
 @ DMM.com ビルド高速化成功
 Macbookがパフォーマンス低下しない
 ただ、手元で確認するには他の環境用も欲しい


Slide 9

Slide 9 text

Ubuntu以外でも動かしたい
 @ DMM.com 作成するバイナリにWebSocketで接続したい
 ローカルmacOSで動かしたい
 異なる環境のノードでP2P通信したい(ユーザーにビルドさせたくない)
 手始めにLinuxでmacOSのバイナリをCross Compile


Slide 10

Slide 10 text

簡易的なものをCross Compile
 @ DMM.com jp(Like jq, but with json pointers)で検証
 諸々clangなどを入れて `rustup target add x86_64-apple-darwin`
 .cargo/configにlinkerの設定をしてビルド
 成果物はmacOSで動く(嬉しい)
 Cross compiling Rust from Linux to macOS https://wapl.es/rust/2019/02/17/rust-cross-compile-linux-to-macos.ht ml OS X cross toolchain for Linux, *BSD and Windows (Cygwin) https://github.com/tpoechtrager/osxcross

Slide 11

Slide 11 text

SubstrateをCross Compile
 @ DMM.com cargo build --target x86_64-apple-darwin
 error: linking with `cc` failed: exit code: 1
 fatal error: 'os/availability.h' file not foundとか
 OpenSSLのバージョンがあかんとか
 胆力が足りず諦めた


Slide 12

Slide 12 text

お悩み
 @ DMM.com ベストプラクティスは?
 https://github.com/japaric/rust-cross

Slide 13

Slide 13 text

Thank you for the attention.
 Powered by DMM Blockchain Labs