EnsekiTT Blog

EnsekiTTが書くブログです。

近いうちに使うことになりそうなのでBazelのインストールしてみた話

つまりなにしたの?

諸事情でBazelを使ったほうが便利なことがありそうなのでBazelをUbuntu16.04にインストールしてみた。
f:id:ensekitt:20170926202630j:plain

Bazelってなんぞ?

Bazel - a fast, scalable, multi-language and extensible build system" - Bazel
Google先生がmakeなんてやってられっか!ってなったのか社内向けに開発したビルドツールをベースに開発されているビルドツール。
makeはシェルスクリプトみたいに順番に諸々書いていくことは割とやりやすかった。
ただ、並列処理だったりルールが煩雑になってくると記述も煩雑になってきて辛い。
そこでBazelってことらしい。

各言語や環境におけるビルドとテストを記述できる。

ava, C++, Android, iOS, GoをはじめDockerコンテナとかもあるみたい。

ワークスペースを用意してくれる。

MakeでビルドするとCloneして持ってきたリポジトリ内にbuildとかが出来上がって、適切にGitignoreとかされてないとビルドしただけですごい量の変更が突っ込まれたりする。(もちろんこれはオペレーションの問題)Bazelだとワークスペースを用意してビルドディレクトリにはシンボリックリンクしか作らないから嬉しい。

並列ビルド

なにやら自動的に並列化してビルドしてくれるらしい。すごい。

ただ万能ツールってわけではなくてサポートされていない言語もあったり、Makeみたいに中身が明瞭ってわけでもないのでどこでトラブったのかわかりにくいって問題がある様子。
今回は、Googleのプロジェクトを自前でビルドしてみることがありそうなので入れてみたってところです。

環境

Ubuntu Linux(16.04)

インストール作業

JDK 8をインストールする

sudo apt-get install openjdk-8-jdk

BazelディストリビューションURIをパッケージ管理ソフトに追加する

echo "deb [arch=amd64] http://storage.googleapis.com/bazel-apt stable jdk1.8" | sudo tee /etc/apt/sources.list.d/bazel.list
curl https://bazel.build/bazel-release.pub.gpg | sudo apt-key add -

Bazelのインストール

sudo apt-get update && sudo apt-get install bazel
sudo apt-get upgrade bazel

無事、インストールできたみたい。
先日、CPUによるDeepLearningにどれだけ時間がかかるのか?記事を書いたときにフォークしたTensorFlowのmodelsリポジトリ
Bazelを使ってビルドしているものが入っていたのでそれに使ってみて動作確認しました。
ちなみに、今朝ついに止まってました概ねまる2日くらい()
ensekitt.hatenablog.com