Haskell
RaspberryPi
raspbian
stack

Raspberry Pi 3 Model B に Haskell 開発環境を構築する

この文章は Raspberry Pi 上に Haskell 開発環境を構築する際のメモです。内容としては OS のインストールから stack new したプロジェクトをビルド、実行できるところまでの最小構成です。Mac を使用して開発環境を構築していますが、PC が Windows や Linux の場合は該当箇所を読み替えてください。

TL;DR

Mac 上での作業:

$ brew install ddrescue
$ curl -LO https://downloads.raspberrypi.org/raspbian_lite_latest
$ unzip raspbian_lite_latest
$ diskutil list  # SD カードがどのデバイスかを目視確認する(ここでは /dev/disk3 として進める)
$ diskutil unmountDisk /dev/disk3  # このコマンドはコピペしちゃダメ
$ sudo ddrescue 2017-11-29-raspbian-stretch-lite.img /dev/disk3 --force  # このコマンドはコピペしちゃダメ
$ touch /Volumes/boot/ssh  # ssh を有効にする
$ diskutil eject disk3  # このコマンドはコピペしちゃダメ
$ ssh pi@raspberrypi.local -o PreferredAuthentications=password  # Raspbery 起動後、しばらくしてから実行

Raspberry Pi 上での作業:

$ sudo apt-get update
$ sudo apt-get -y upgrade
$ sudo apt-get -y install llvm-3.7
$ sudo ln -s /usr/bin/opt-3.7 /usr/bin/opt
$ sudo ln -s /usr/bin/llc-3.7 /usr/bin/llc
$ mkdir -p ~/.local/bin
$ echo 'export PATH=$HOME/.local/bin:$PATH' >> ~/.profile
$ echo 'export PATH=$PATH:$HOME/.stack/programs/arm-linux/ghc-8.0.2/bin' >> ~/.profile
$ source ~/.profile
$ curl -sSL https://get.haskellstack.org/ | sh
$ stack setup
$ stack new sample
$ cd sample
$ stack build
$ stack exec sample-exe  # someFunc と表示される
$ cd ..
$ sudo dd if=/dev/zero of=/var/swap.extended bs=1M count=2048
$ sudo mkswap /var/swap.extended
$ sudo chmod 600 /var/swap.extended
$ sudo swapon /var/swap.extended
$ sudo sh -c 'echo "/var/swap.extended swap         swap    defaults          0       0" >> /etc/fstab'
$ stack install cabal-install
$ cabal update
$ stack --version
Version 1.3.2, Git revision 3f675146590da4f3edf768b89355f798229da2a5 (4395 commits) arm hpack-0.15.0
$ ghc --version
The Glorious Glasgow Haskell Compilation System, version 8.0.2
$ cabal --version
cabal-install version 1.24.0.2
compiled using version 1.24.2.0 of the Cabal library

最新の Stack、最新の GHC、最新の Cabal が Raspberry Pi にインストールできました 🎉

備考

2018 年 2 月現在、Raspberry Pi は Debian Stretch ベースになり、普通に以下のように Stack が入れられるようになりました。

$ sudo apt-get install haskell-stack

2017 年 4 月 21 日現在、https://get.haskellstack.org のスクリプトでは stack をインストールできません。代わりに以下サイトよりバイナリをダウンロードしてください。

参考サイト