RustでArduinoやりたくて、Lチカするまでのエラー

途中で飽きちゃったんだけど、下書きにあっても邪魔なので投稿しときます




RustでArduinoを動かして見たいと思い、avr-rustというAVRをサポートしたRustがあるので、使って見ようと思いました。

### 環境はMacOS

# avr-rustのビルドとインストール
```:avr-rustのソースをとってくる
$ git clone https://github.com/avr-rust/rust.git
```

```:buildディレクトリを作る
$ cd rust
$ mkdir build && cd build
```

```:Makefileを作る
$ ../rust/configure \
  --enable-debug \
  --disable-docs \
  --enable-llvm-assertions \
  --enable-debug-assertions \
  --enable-optimize \
  --prefix=/opt/avr-rust
```

```:コンパイラをbuild
$ make
$ make install
```

```:toolchainを登録
$ rustup toolchain link avr-toolchain $(realpath $(find . -name 'stage1'))
```

```:avr-toolchainを有効に
rustup default avr-toolchain
```
## 私はmakeでエラーが出ました。
```shell-session
haruka:rust haru$ make
Updating submodules
    Finished dev [unoptimized] target(s) in 0.0 secs
Building stage0 std artifacts (x86_64-apple-darwin -> x86_64-apple-darwin)
    Finished release [optimized] target(s) in 0.0 secs
Copying stage0 std from stage0 (x86_64-apple-darwin -> x86_64-apple-darwin / x86_64-apple-darwin)
Building stage0 test artifacts (x86_64-apple-darwin -> x86_64-apple-darwin)
    Finished release [optimized] target(s) in 0.0 secs
Copying stage0 test from stage0 (x86_64-apple-darwin -> x86_64-apple-darwin / x86_64-apple-darwin)
Building LLVM for x86_64-apple-darwin
running: "cmake" "/Users/haru/rust/src/llvm" "-DLLVM_ENABLE_ASSERTIONS=ON" "-DLLVM_TARGETS_TO_BUILD=X86;ARM;AArch64;Mips;PowerPC;SystemZ;JSBackend;MSP430;Sparc;NVPTX;Hexagon" "-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=AVR" "-DLLVM_INCLUDE_EXAMPLES=OFF" "-DLLVM_INCLUDE_TESTS=OFF" "-DLLVM_INCLUDE_DOCS=OFF" "-DLLVM_ENABLE_ZLIB=OFF" "-DWITH_POLLY=OFF" "-DLLVM_ENABLE_TERMINFO=OFF" "-DLLVM_ENABLE_LIBEDIT=OFF" "-DLLVM_PARALLEL_COMPILE_JOBS=4" "-DLLVM_TARGET_ARCH=x86_64" "-DLLVM_DEFAULT_TARGET_TRIPLE=x86_64-apple-darwin" "-DLLVM_LINK_LLVM_DYLIB=ON" "-DCMAKE_C_COMPILER=cc" "-DCMAKE_CXX_COMPILER=c++" "-DCMAKE_C_FLAGS=-ffunction-sections -fdata-sections -fPIC -m64 -stdlib=libc++" "-DCMAKE_CXX_FLAGS=-ffunction-sections -fdata-sections -fPIC -m64 -stdlib=libc++" "-DCMAKE_INSTALL_PREFIX=/Users/haru/rust/build/x86_64-apple-darwin/llvm" "-DCMAKE_BUILD_TYPE=Release"
CMake Deprecation Warning at CMakeLists.txt:15 (cmake_policy):
  The OLD behavior for policy CMP0051 will be removed from a future version
  of CMake.

  The cmake-policies(7) manual explains that the OLD behaviors of all
  policies are deprecated and that a policy should be set to OLD only under
  specific short-term circumstances.  Projects should be ported to the NEW
  behavior and not rely on setting a policy to OLD.


-- Found libtool - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool
CMake Warning at CMakeLists.txt:140 (message):
  Job pooling is only available with Ninja generators.


-- Native target architecture is X86
-- Threads enabled.
-- Doxygen disabled.
-- Sphinx disabled.
-- Go bindings enabled.
-- Found ld64 - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld
-- Could NOT find OCaml (missing: OCAMLFIND OCAML_VERSION OCAML_STDLIB_PATH)
-- Could NOT find OCaml (missing: OCAMLFIND OCAML_VERSION OCAML_STDLIB_PATH)
-- OCaml bindings disabled.
-- LLVM host triple: x86_64-apple-darwin17.5.0
-- LLVM default target triple: x86_64-apple-darwin
-- Building with -fPIC
CMake Error at CMakeLists.txt:612 (message):
  Python 2.7 or newer is required


-- Configuring incomplete, errors occurred!
See also "/Users/haru/rust/build/x86_64-apple-darwin/llvm/build/CMakeFiles/CMakeOutput.log".
See also "/Users/haru/rust/build/x86_64-apple-darwin/llvm/build/CMakeFiles/CMakeError.log".
thread 'main' panicked at '
command did not execute successfully, got: exit code: 1

build script failed, must exit now', /Users/haru/.cargo/registry/src/github.com-1ecc6299db9ec823/cmake-0.1.25/src/lib.rs:599:4
note: Run with `RUST_BACKTRACE=1` for a backtrace.
	finished in 0.975
failed to run: /Users/haru/rust/build/bootstrap/debug/bootstrap build
Build completed unsuccessfully in 0:00:10
make: *** [all] Error 1
```

`Python 2.7 or newer is required`と書いていますが、Python3だからPython2.7よりは新しいからいいじゃんと思って、原因が不明でした。

しかし、[avr-rustのRUST_README.md](https://github.com/avr-rust/rust/blob/avr-support/RUST_README.md)を見ると、`python 2.7 (but not 3.x)`と書いてあったので、Python3だめじゃんとなり、
ちょうどPyenvで2.7がローカルにあったので2.7でやって見るとうまくいきました。
## 原因は　Pythonのバージョン

## toolchainの登録でもエラー
```:toolchainを登録
$ rustup toolchain link avr-toolchain $(realpath $(find . -name 'stage1'))
```
realpathコマンドがMacOSにはないのでインストール

```
$ brew install coreutils
```

これで、avr-rustのインストールはおっけー。

# Lチカをしたい

多分できるんだよな