SummerWind

Web, Photography, Space Development

Tinker Board で Bazel をビルドする

ASUS が販売している Tinker Board をいくつか買ってきて、サーバーとして利用している。これには Rockchip RK3288 という Arm ベースの CPU がのっているのだけど、OSS プロジェクトで配布されているバイナリは x86 向けが大半で Arm 向けのバイナリは配布されていないケースが多く、使いたいソフトウェアはだいたい自分でビルドすることになる。

今回は Tinker Board 上で Bazel (バーゼルと読むっぽい) を使う必要があったのでバイナリを探してみたところ、やはり Arm 向けの配布はないようだったので、自分でビルドすることにした。Tinker Board には既に Docker をインストールしてあるので、ビルドはコンテナ内で実行し、ドキュメントに従って進めた。ビルドに成功した Dockerfile は以下のようになる。

FROM ubuntu:16.04

ENV BAZEL_VERSION=0.9.0

RUN apt-get update \
  && apt-get upgrade -y \
  && apt-get install -y build-essential openjdk-8-jdk python zip

RUN curl -L -o bazel.zip https://github.com/bazelbuild/bazel/releases/download/$BAZEL_VERSION/bazel-$BAZEL_VERSION-dist.zip \
  && unzip -d bazel bazel.zip

# Restrict the memory usage.
RUN sed -i 's/-encoding UTF-8/-encoding UTF-8 -J-Xms256m -J-Xmx512m/g' bazel/scripts/bootstrap/compile.sh

RUN cd bazel \
  && ./compile.sh \
  && cp output/bazel /usr/local/bin/bazel

ドキュメントの手順に従ってビルドを実行したら Out of memory になってしまいビルドできなかった。bazel/scripts/bootstrap/compile.sh 内のコマンドにメモリーの使用を制限するフラグを追加したところ、ビルドが成功した。Tinker Board ではビルドの完了までに40分ぐらいかかってしまったけど、こんなものかな。

Moto Ishizawa

Moto Ishizawa
ソフトウェアエンジニア。ロケットの打上げを見学するために、たびたびフロリダや種子島にでかけるなど、宇宙開発分野のファンでもある。