つまりなにしたの?
諸事情でBazelを使ったほうが便利なことがありそうなのでBazelをUbuntu16.04にインストールしてみた。
Bazelってなんぞ?
Bazel - a fast, scalable, multi-language and extensible build system" - Bazel
Google先生がmakeなんてやってられっか!ってなったのか社内向けに開発したビルドツールをベースに開発されているビルドツール。
makeはシェルスクリプトみたいに順番に諸々書いていくことは割とやりやすかった。
ただ、並列処理だったりルールが煩雑になってくると記述も煩雑になってきて辛い。
そこでBazelってことらしい。
ワークスペースを用意してくれる。
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